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). 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 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 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 result exists for the commit under review, or when the diff since that result cannot affect
fixes invalidate. 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, 3. Merge the PR (standing authorization, this repo only), check the box in `todo.md`, report,
stop. The next chunk gets a fresh session. 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 with JSON string escaping (`\"` `\\` `\n` `\t` `\uXXXX`, …) — total over
Unicode, and raw newlines never appear inside quotes. All values are strings at the grammar 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 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 values bare wherever allowed, inside quotes escapes only what it must using the shortest escape
escape form. 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 **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 directive syntax — the leading `:` of a would-be directive, `]` inside content; a backslash
before `:` in input always yields a literal colon. before `:` in input always yields a literal colon.
**Malformed directives are error results**, named: an unclosed container at end of input, a body **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 fence line of the container's length or longer, a bare colon-run line outside any container or
inline `[content]` or `{attrs}` left unclosed at end of line, unparseable or duplicate-keyed shorter than the fence it would close, an inline `[content]` or `{attrs}` left unclosed at end of
attrs, invalid JSON in an opaque carry. Never a silent literal-text fallback — a typo that 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. reparses as prose is the silent loss §2 refuses.
## The opaque carry (AGENTS.md §3) ## The opaque carry (AGENTS.md §3)