Short-closer named error, empty-attrs omission rule, gate-reuse covers docs-only deltas
CI / gate (push) Successful in 7s

This commit is contained in:
2026-08-24 00:42:41 +02:00
parent f0a3db3004
commit a549f10ae8
2 changed files with 8 additions and 7 deletions
+2 -2
View File
@@ -137,8 +137,8 @@ into sub-items in `todo.md` before starting it. Per chunk:
1. Fresh worktree off updated `origin/main`; implement tests-first (§10).
2. Run the larv-review flow until it passes and CI is green. A reviewer launch states the latest
gate result (commit and outcome); a reviewer does not re-run `ci.sh` or the tests when a
result for the commit under review already exists — re-run only what its own findings or
fixes invalidate.
result exists for the commit under review, or when the diff since that result cannot affect
it (docs-only) — re-run only what its own findings or fixes invalidate.
3. Merge the PR (standing authorization, this repo only), check the box in `todo.md`, report,
stop. The next chunk gets a fresh session.
+6 -5
View File
@@ -76,17 +76,18 @@ valid — no attributes. A bare value matches `[A-Za-z0-9_-]+`; any other value
with JSON string escaping (`\"` `\\` `\n` `\t` `\uXXXX`, …) — total over
Unicode, and raw newlines never appear inside quotes. All values are strings at the grammar
level; each node's section assigns types. Canonical form orders keys alphabetically, spells
values bare wherever allowed, and inside quotes escapes only what it must, using the shortest
escape form.
values bare wherever allowed, inside quotes escapes only what it must using the shortest escape
form, and omits empty `{attrs}` except where the `{` itself claims the directive
(`:hardBreak{}`).
**Escaping**: the emitter backslash-escapes whatever literal text would otherwise parse as
directive syntax — the leading `:` of a would-be directive, `]` inside content; a backslash
before `:` in input always yields a literal colon.
**Malformed directives are error results**, named: an unclosed container at end of input, a body
fence line of the container's length or longer, a bare colon-run line outside any container, an
inline `[content]` or `{attrs}` left unclosed at end of line, unparseable or duplicate-keyed
attrs, invalid JSON in an opaque carry. Never a silent literal-text fallback — a typo that
fence line of the container's length or longer, a bare colon-run line outside any container or
shorter than the fence it would close, an inline `[content]` or `{attrs}` left unclosed at end of
line, unparseable or duplicate-keyed attrs, invalid JSON in an opaque carry. Never a silent literal-text fallback — a typo that
reparses as prose is the silent loss §2 refuses.
## The opaque carry (AGENTS.md §3)