Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
131 commits
Select commit Hold shift + click to select a range
6d780e3
docs: background-verdict-dispatch spec, plan, and glossary terms
vircung Aug 17, 2026
d4433c8
feat(working-process): verdict-agent dispatch sequence in workflow rule
vircung Aug 17, 2026
7923ee7
feat(working-process): architect runs in background with self-describ…
vircung Aug 17, 2026
d02e83e
feat(working-process): plan-adversary runs in background with subject…
vircung Aug 17, 2026
8b19d2e
feat(working-process): relay-then-stamp ordering in lifecycle rule
vircung Aug 17, 2026
93ec7c5
docs(working-process): background verdict dispatch in README
vircung Aug 17, 2026
a564247
chore(working-process): dogfood version for background-verdict-dispatch
vircung Aug 17, 2026
bacd398
fix(working-process): narrow lost-round recovery claim, drop provenan…
vircung Aug 17, 2026
084bcd4
docs: reconcile spec and plan with dogfood round-5 findings
vircung Aug 17, 2026
ffea357
chore(working-process): re-mint dogfood discriminator after round-5 f…
vircung Aug 17, 2026
0ec1aa0
fix(working-process): verdict agents across the plugin identity surfaces
vircung Aug 17, 2026
6efcdd9
chore(working-process): re-mint dogfood discriminator after round-7 f…
vircung Aug 17, 2026
6d40269
docs: close background-verdict-dispatch spec and plan
vircung Aug 17, 2026
977075a
feat(working-process): publish the unfinished-work list as a named se…
vircung Aug 25, 2026
e2a8e01
fix(working-process): tolerate a relocated field in the ticket sweep
vircung Aug 25, 2026
d8d3d5e
feat(working-process): offer a code review after implementation
vircung Aug 25, 2026
d178a84
feat(working-process): add the process-status skill
vircung Aug 25, 2026
9e98424
fix(project-memory): state the field's write place and a tolerant read
vircung Aug 25, 2026
9d986a3
fix(project-memory): read a relocated status in the grooming audit
vircung Aug 25, 2026
e05a3bd
docs(working-process): sync identity surfaces and README for process-…
vircung Aug 25, 2026
08a118d
chore(working-process): dogfood version for process-status-riders
vircung Aug 25, 2026
d95a57a
docs: close the process-status riders spec and plan
vircung Aug 25, 2026
0b46669
docs(working-process): match Grilling pending citation to its publish…
vircung Aug 25, 2026
4b79b0b
docs: record the developer's go-ahead for the Task 9 executor change
vircung Aug 25, 2026
92b1eb8
merge: process-status riders — unfinished-work list, code-review offe…
vircung Aug 25, 2026
c539408
fix(working-process): quote hash-leading ticket values and bound the …
vircung Aug 25, 2026
5ac0347
fix(project-memory): anchor the adr-candidate grep per the rule's own…
vircung Aug 25, 2026
8123f77
chore(working-process): start review-loop-audits topic, re-mint dev v…
vircung Aug 29, 2026
c6ec1a5
docs: review-loop and audit-agents specs, plan and glossary entries
vircung Aug 29, 2026
46765ed
feat(working-process): add propagation-auditor audit agent
vircung Aug 29, 2026
906fd9b
feat(working-process): add integrity-auditor audit agent
vircung Aug 29, 2026
6f03cc4
feat(working-process): narrow architect card, integrity class defers …
vircung Aug 29, 2026
42e14fa
feat(working-process): disposition ledger, integrity stamp and ledger…
vircung Aug 29, 2026
2fd6fcd
feat(working-process): review loop, audit offers and the relay-except…
vircung Aug 29, 2026
ec3ab88
docs: add *-auditor to the component naming conventions
vircung Aug 29, 2026
77bb9bb
docs(working-process): identity surfaces for the audit agents and the…
vircung Aug 29, 2026
a998161
docs: apply two integrity-audit dispositions to the loop spec and glo…
vircung Aug 29, 2026
80b9ea6
fix(working-process): close the final review's gate, anchor and attri…
vircung Aug 29, 2026
39613ba
merge: autonomous review loop and audit agents
vircung Aug 29, 2026
c51c007
docs: mark the review-loop and audit-agents spec pair and plan as imp…
vircung Aug 29, 2026
c31d915
chore: mint release versions - working-process 0.14.0, project-memory…
vircung Aug 29, 2026
f9ae0b8
merge: reconcile with released state before the 0.14.0 release
vircung Aug 29, 2026
eb5758e
chore: scope the standards-rule-tags rule to plugins/
vircung Aug 31, 2026
6e4687a
docs: give the integrity audit report a home under docs/audits
vircung Sep 1, 2026
483fc27
feat(working-process): errata wave one - gate lines, revises field, l…
vircung Sep 1, 2026
03f7fcb
docs: wave-two spec draft - the disposition ledger as finding state
vircung Sep 2, 2026
b90cc32
docs: grill the wave-two spec - ledger vocabulary enters the glossary
vircung Sep 2, 2026
bdc6270
docs: wave-two round one - fold production, ledger scope for diff-sco…
vircung Sep 2, 2026
f4cbce3
docs: wave-two round two - conditional fold, severity omitted where n…
vircung Sep 2, 2026
f46860a
docs: wave-two round three and loop close - definition-site precision
vircung Sep 2, 2026
814ea2b
docs: record the gate dismissal that measured the episode-identity re…
vircung Sep 2, 2026
4f70745
docs: apply the integrity audit's licensed dispositions
vircung Sep 2, 2026
87f6840
docs: settle the integrity audit's seven implementer questions
vircung Sep 2, 2026
98c7079
docs: stamp the integrity audit on the wave-two spec
vircung Sep 2, 2026
375e69f
docs: implementation plan for the ledger-as-finding-state spec
vircung Sep 2, 2026
bbb8197
fix: plan phrase checks are multi-line, per the gate's two hits
vircung Sep 2, 2026
00b3eac
fix: prose checks go multi-line, the blocking check can actually fail
vircung Sep 2, 2026
107dec0
docs: plan round one fix wave - check mechanics, retired-token consum…
vircung Sep 2, 2026
4041e4f
docs: paired anchors on every check, close the vacuous verification step
vircung Sep 2, 2026
825fb17
docs: record the propagation gate episode and its self-report gap
vircung Sep 2, 2026
c5339e6
docs: round two fix wave - prose sweep pattern, scoped before/after r…
vircung Sep 2, 2026
776ee75
docs: record the third gate run and the auditor's self-report gap
vircung Sep 2, 2026
2698ccf
docs: round three fix wave - evidence-newness base, un-specced deleti…
vircung Sep 2, 2026
e91da57
docs: round four fix - move task 3 insertion point to preserve the an…
vircung Sep 2, 2026
3d5bbb1
docs: close the plan review loop with the resolution annotation
vircung Sep 2, 2026
ae07b3d
docs: approve the ledger-as-finding-state plan
vircung Sep 2, 2026
34f5ceb
feat(working-process): four ledger states, authorizer as a clause
vircung Sep 2, 2026
3b77f4f
feat(working-process): the ledger's clause table
vircung Sep 2, 2026
ae3439d
feat(working-process): retain historical ledger shapes, permit prose
vircung Sep 2, 2026
5048eb4
fix(working-process): the hit token discriminates a gate line, not th…
vircung Sep 2, 2026
04e17fb
feat(working-process): relitigation branches on the authorizer clause
vircung Sep 2, 2026
a10d1ff
fix(working-process): ledger close names the merged tokens
vircung Sep 2, 2026
77910eb
feat(working-process): move workflow.md off the retired resolved token
vircung Sep 2, 2026
2af7897
feat(working-process): define developer contact, state the cap is bes…
vircung Sep 2, 2026
fb1f601
feat(working-process): the ledger is standing context for a diff-scop…
vircung Sep 2, 2026
330528e
docs: normalize wave one's bare gate line to the shape it defined
vircung Sep 2, 2026
bb1bdd6
docs: record the implementation run and correct task 5's before-value
vircung Sep 2, 2026
870e0a1
docs: mark wave two spec and plan implemented
vircung Sep 2, 2026
faf2dd0
fix(working-process): the self-report survives both auditors' early-e…
vircung Sep 7, 2026
8ea01a3
docs: record the auditor self-report errata and its falsifiable predi…
vircung Sep 7, 2026
3cc00d6
docs: record the confirmed self-report prediction and the closed gate…
vircung Sep 7, 2026
c9f7b1e
docs: spec the diff-scoped chain debt, its anchor and its discharge t…
vircung Sep 7, 2026
6944961
docs: grill the chain-debt spec, mint Chain debt and correct five glo…
vircung Sep 7, 2026
3b68db9
docs: drop a frozen count from the token rationale
vircung Sep 7, 2026
bacc329
docs: architect round one - name the second token site, drop an unsup…
vircung Sep 7, 2026
9f08fb7
docs: correct the self-report prediction from confirmed to partly held
vircung Sep 7, 2026
3026a23
docs: architect round two LGTM, merge the mislabelled gate line, clos…
vircung Sep 7, 2026
3712972
docs: third post-fix run puts the self-report tally at one in three
vircung Sep 7, 2026
f8d5f32
docs: apply the integrity audit's dispositions and stamp the gate
vircung Sep 7, 2026
092a3b9
docs: write the chain-debt implementation plan
vircung Sep 7, 2026
4a858c6
docs: record the developer's rulings on the backfill and on completed…
vircung Sep 7, 2026
9734977
docs: rule out a process-status edit and close the plan's open questions
vircung Sep 7, 2026
bcc123d
docs: stamp plan-adversary round one and apply its six licensed fixes
vircung Sep 7, 2026
6655b1c
docs: stamp plan-adversary round two and make the class counts contin…
vircung Sep 7, 2026
2d5c5f8
docs: stamp the confirming round and apply its six licensed fixes
vircung Sep 7, 2026
e0955e3
docs: close the plan-adversary loop by resolution annotation
vircung Sep 7, 2026
c5d38be
docs: approve the chain-debt plan
vircung Sep 7, 2026
a247a27
feat(working-process): add the Chain debt Unfinished-work class
vircung Sep 7, 2026
74606db
fix(working-process): the Unresolved-verdict owner leg no longer lice…
vircung Sep 7, 2026
0645a08
feat(working-process): replace the decline-only chain token with the …
vircung Sep 7, 2026
9a109d5
fix(working-process): order the debt annotation before the integrity …
vircung Sep 7, 2026
646bf5f
fix(working-process): ground the annotation-before-hash ordering in t…
vircung Sep 7, 2026
1cc6d6b
style(working-process): rewrap the integrity bullet after the orderin…
vircung Sep 7, 2026
aac9a40
feat(working-process): give a reviewer's stop signal a ledger line shape
vircung Sep 7, 2026
de9f38c
fix(working-process): state the list's anchor and payload properties …
vircung Sep 7, 2026
f101c09
feat(working-process): price the gate's two arms and move the decline…
vircung Sep 7, 2026
0b4ecf5
feat(working-process): count a plan's confirming round against the ro…
vircung Sep 7, 2026
0593f2a
feat(working-process): record a reviewer's stop signal in the ledger
vircung Sep 7, 2026
0dceba8
fix(working-process): restore the concurrency limit's reasoning and n…
vircung Sep 7, 2026
8d5c11c
docs: discharge the audit-agents spec's chain debt by recorded decline
vircung Sep 7, 2026
bf9ed96
docs: annotate this spec's discharged chain debt and re-stamp its int…
vircung Sep 7, 2026
86f899a
docs: mark the chain-debt spec and plan implemented and sync the inst…
vircung Sep 7, 2026
ca9f93e
feat(working-process): per-round commits on a document branch
vircung Sep 7, 2026
ace38a3
fix(working-process): part the commit suggestion from the per-round c…
vircung Sep 7, 2026
0d15b22
docs(working-process): name what a local document branch costs
vircung Sep 7, 2026
6fee2e4
chore: mint release version - working-process 0.15.0
vircung Sep 7, 2026
b57f1e2
merge: working-process 0.15.0 — chain debt, auditor self-report, per-…
vircung Sep 7, 2026
6bb9a25
fix(working-process): scope the decline-path sentence to documents in…
vircung Sep 7, 2026
8b78cab
feat(working-process): verify a reviewer's citation before it enters …
vircung Sep 7, 2026
fdbbba6
fix(working-process): name the citation check in the dispatch turn's …
vircung Sep 7, 2026
f63df23
fix(working-process): name what the paired ordering sentences bind
vircung Sep 7, 2026
81c7021
fix(working-process): part a prescribed block from a reported one in …
vircung Sep 7, 2026
51987c3
docs(working-process): name the report/prescribe partition on both id…
vircung Sep 7, 2026
9c5f150
feat(working-process): an audit report's body governs, never its clos…
vircung Sep 7, 2026
3b4b6aa
fix(working-process): scope the body-governs reading to agents that r…
vircung Sep 7, 2026
442d45d
fix(working-process): keep the body-governs rule where its evidence is
vircung Sep 7, 2026
bb27388
docs(working-process): state the auditor's measurements as facts rath…
vircung Sep 7, 2026
1ebb3ad
fix(working-process): keep each duty's motivating fact when its count…
vircung Sep 7, 2026
4bd441f
docs(working-process): drop the threshold magnitudes from the integri…
vircung Sep 7, 2026
cc22bff
chore: mint release version - working-process 0.16.0
vircung Sep 7, 2026
f807bcc
merge: working-process 0.16.0 — citation verification, report-body re…
vircung Sep 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
{
"name": "working-process",
"source": "./plugins/working-process",
"description": "Spec-driven working process on top of superpowers: grilling-session, architect-session, system-designer-session and sync-rules skills, architect and plan-adversary review agents, architect-consult and system-designer-consult consultation agents, plus distributed process rules"
"description": "Spec-driven working process on top of superpowers: grilling-session, architect-session, system-designer-session, process-status and sync-rules skills, architect and plan-adversary verdict agents, architect-consult and system-designer-consult consultation agents, propagation-auditor and integrity-auditor audit agents, plus distributed process rules"
},
{
"name": "python-standards",
Expand Down
5 changes: 3 additions & 2 deletions .claude/rules/plugin-authoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ paths:
- Names are kebab-case. Skills whose content is an open-ended
conversation are named `*-session`; formal reviews that end in a verdict
are agents; verdict-free consultation agents — one briefing in, one
contribution out, from a fresh isolated context — are named `*-consult`.
Operational skills may prompt for decisions without being
contribution out, from a fresh isolated context — are named `*-consult`;
audit agents returning material for the dispatcher's disposition are named
`*-auditor`. Operational skills may prompt for decisions without being
sessions — they are named for what they do (e.g. `sync-rules`).
- Author skills with the `skill-creator` skill when it is available —
scaffolding, `description:` tuning, and evals; it complements
Expand Down
5 changes: 5 additions & 0 deletions .claude/rules/standards-rule-tags.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
---
paths:
- "plugins/**"
---

# Standards plugins — rule tags and severity

Binding for every Standards plugin in this repo (`salesforce-standards`,
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Marketplace of [Claude Code](https://code.claude.com) plugins by Missing Bits.

| Plugin | Docs | Description |
|--------|------|-------------|
| `working-process` | [README](plugins/working-process/README.md) | Spec-driven working process: grilling-session, architect-session, system-designer-session and sync-rules skills, architect and plan-adversary review agents, two verdict-free consultation agents, distributed process rules |
| `working-process` | [README](plugins/working-process/README.md) | Spec-driven working process: grilling-session, architect-session, system-designer-session, process-status and sync-rules skills, architect and plan-adversary verdict agents, two verdict-free consultation agents, propagation-auditor and integrity-auditor audit agents, distributed process rules |
| `python-standards` | [README](plugins/python-standards/README.md) | Python coding standards for uv + ruff + pytest + pyright: area skills, code-review stack, plan-review checklist, distributed toolchain rule |
| `salesforce-standards` | [README](plugins/salesforce-standards/README.md) | Salesforce coding standards for the sf CLI toolchain: area skills (Apex, LWC, Flow, data/security model, legacy UI), code-review stack, plan-review checklist, distributed toolchain rule |
| `project-memory` | [README](plugins/project-memory/README.md) | In-repo project memory: committed Team memory (`docs/memory/`) and per-user Private memory (`.claude/memory/`), with `memory-review-session`, `migrate-memory`, and `redirect-memory` skills, distributed as a Rules payload |
Expand Down
170 changes: 170 additions & 0 deletions docs/audits/2026-08-29-autonomous-review-loop-integrity-audit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
---
ticket: none
date: 2026-08-29
agent: integrity-auditor
model: claude-opus-5
target: ../specs/2026-08-17-autonomous-review-loop-design.md
coverage: 429/429
---

# Integrity audit — the autonomous review loop spec

An `integrity-auditor` dispatch read
`docs/specs/2026-08-17-autonomous-review-loop-design.md` on a fresh
context and returned eleven defects and ten ranked implementer
questions at full coverage. The spec had already closed five architect
rounds, and the plan implementing it had closed thirteen plan-adversary
rounds. The audit therefore measures what a closed review loop leaves
behind, which is the claim the two-lens fresh-context design rests on.

This file is the report's home. The report lived only in the
dispatching session's transcript, so `process-status` read the repo
clean while nine of the eleven defects waited on a decision.

## Provenance

The dispatch disabled the installed `working-process` plugin and ran
the unreleased agent from the working tree:

```
claude -p --plugin-dir plugins/working-process --agent integrity-auditor \
--model opus \
"Audit target: docs/specs/2026-08-17-autonomous-review-loop-design.md — this
bundle's most churned document (a restored draft plus five architect rounds
and thirteen plan-adversary waves in two days). Its sibling is
docs/specs/2026-08-27-audit-agents-design.md; the shipped surfaces are under
plugins/working-process/. Run both lenses and report."
```

- Ran 2026-08-29 at 14:22 UTC on branch `feature/review-loop-audits`,
working tree clean.
- The same run's `propagation-auditor` returned CLEAN on the sibling
spec and one contested hit, verified false, on the target.
- The dispatched string records what ran. The agent's self-report holds
at the rung and fails at the version, so it settles nothing finer.
- Local transcript: session `60d835b8-2000-46ad-9e24-81abca81b4d6`.

## Dispositions

The auditor clustered the eleven defects into five decisions. The
release applied D and E in `a998161`, which edited the spec and the
glossary. A, B and C stay open — they are design questions the audit
raised, not defects the release carries.

| # | Defect, in the order reported below | Cluster | State |
|---|---|---|---|
| 1 | `resolved <date>` closes a `held` line the document never writes | A | open |
| 2 | `blocking` rounds record `fixed`, which the same section forbids | A | open |
| 3 | The propagation gate raises a held line after the only delivery moment | C | fixed on `feature/audit-errata` |
| 4 | The all-Minor signal prescribes fixing by grade | B | fixed on `feature/audit-errata` |
| 5 | `concerns (resolved <date>)` is autonomous in one passage, offered in the next | B | fixed on `feature/audit-errata` |
| 6 | `held` carries no slot for the counter-evidence two passages require | A | slot landed on `feature/audit-errata`; the fuller `held` contract stays open |
| 7 | The closed grammar carries no deviation marker | A | open |
| 8 | The confirming round's durable marker has no anchor and no command | D | applied in `a998161` |
| 9 | The new Unfinished-work class contradicts a recorded property of the list | E | applied in `a998161` |
| 10 | The reviewer's stop signal covers all-Minor rounds only | B | fixed on `feature/audit-errata` |
| 11 | `resolved (declined)` appears in two forms | A | open |

The three open clusters read: **A** — the ledger grammar does not cover
what the loop does, five defects. **B** — three termination passages
contradict Triage and each other, three defects. **C** — the gate breaks
the one-interruption contract, one defect.

Four of the ten questions remain spec gaps rather than reading errors:
1, 2, 3 and 5. Question 1 closed with the errata below; 2, 3 and 5 stay
open.

Wave one landed on `feature/audit-errata`: all three B defects, the C
defect, the `counter:` slot of defect 6, and question 1's answer — the
previous round's `fixed` lines and their `<what changed>` clauses are
what a diff-scoped brief is taken against. Dropping the `[hit]` ledger
variant narrows a published convention, so the release carrying it is a
minor bump. Cluster A's remaining five defects belong to a follow-up
spec that treats the ledger as loop state.

## The report

Verbatim, as returned.

---

Preconditions: working tree is clean (`git status --porcelain` empty), so every conversation edit is on disk. The brief does not state a propagation-audit result; nothing in it reports hits, so I proceeded rather than stopping.

---

model: claude opus 5

---

## Defects

**"The disposition ledger", ledger grammar vs. `## Review rounds` — the `resolved <date>` token is defined for one state and used for another, leaving `fixed` and `resolved` interchangeable with no stated rule.**
quote A: "`resolved <date>` — closes a held line once the answer lands. The answer's substance goes into the document's design text; the ledger line points at it and never duplicates it."
quote B: "- resolved 2026-08-27 — [Important] the ledger anchors joined the Unfinished-work list whose shipped invariant counts frontmatter hits only; landed in "The disposition ledger" (section-scoped match semantics, hardened command, one entry naming both owners)"
*(No `held` line exists anywhere in the document, so no `resolved` line can be closing one; round 2 then carries `fixed` and `resolved 2026-08-27` side by side for the same class of session-applied fix.)*

**"Termination" vs. `## Review rounds` — the grammar has no token for a developer-directed fix, so the document's own `blocking` rounds record `fixed` (defined as self-fixed) lines, which the same section forbids.**
quote A: "`blocking` suspends autonomy entirely: relay, stamp, stop — no self-fixes from a blocking round."
quote B: "### 2026-08-27 — architect, fable 5, blocking (round 2, diff-scoped)" … "- fixed — [Important] the document state between a plan's diff-scoped LGTM and its confirming round was undefined, each reading breaking a recorded convention; license: this spec's own recovery philosophy"
*(`fixed` is defined at "The disposition ledger" as "self-fixed"; rounds 1, 2 and 3 are all `blocking`.)*

**"Sequencing" — the propagation gate runs after the relay turn but can produce a held line, and the only stated delivery moment for held questions is the relay turn that has already passed.**
quote A: "Held set non-empty: batch the held questions into one message at the relay turn — per item: a one-line claim, why it is held, the question, and options with the session's recommendation — and wait."
quote B: "Before any re-dispatch — held set empty or developer-ordered — the propagation-auditor (audit-agents spec) gates the round when it is available … a hit the session believes is wrong escalates as held, like any contested finding — its held line carries the marker `[hit]` in the severity slot"
*(The same section states "the developer is interrupted exactly once per round"; a gate escalation is a second interruption in the same round, or none.)*

**"Termination" vs. "Triage" — the all-Minor bullet prescribes fixing findings by grade, which the license test explicitly rules out as the basis for a fix.**
quote A: "All-Minor signal: two consecutive rounds whose findings are all Minor end the unattended run — fix the residue, annotate `concerns (resolved <date>)`, and escalate with a fresh-round offer instead of dispatching again."
quote B: "Severity is not the line. A Minor finding can be decision-shaped (a naming call the developer already ruled on); a Critical can be self-fixable (a contradiction with a recorded ADR — the ADR is the license). Triage reads the fix's license, never the finding's grade."

**"Termination" vs. "Termination" (loop closure) — the `concerns (resolved <date>)` annotation is an autonomous act in one passage and an offered choice in the next.**
quote A: "All-Minor signal: two consecutive rounds whose findings are all Minor end the unattended run — fix the residue, annotate `concerns (resolved <date>)`, and escalate with a fresh-round offer instead of dispatching again."
quote B: "Loop closure reuses existing machinery: after answers land, the session offers a fresh round (replacing the verdict as usual) or the lifecycle rule's `concerns (resolved <date>)` annotation with its body note"
*(Under "Re-dispatch briefs" an annotation close also "ends the loop", so the difference decides whether a session may close a loop without the developer.)*

**"The disposition ledger" vs. the grammar block — the `held` shape has no slot for the counter-evidence two other passages require it to carry.**
quote A: "`held` — needs the developer; the line carries the concrete question (or the dispute plus counter-evidence), phrased so one short answer resolves it."
quote B: " - held — [<severity>] <claim>; question: <one short question>"
*("Triage" states the same requirement independently: "A finding the session believes is wrong is held with the session's counter-evidence attached".)*

**"Re-dispatch briefs" vs. the grammar block — the next round's brief must read deviations back out of the ledger, but the closed grammar carries no deviation marker.**
quote A: "When the ledger records a deviation from a reviewer's suggestion, the next round's brief invites refutation of the recorded rationale — the rationale is not a defence to be protected."
quote B: " - fixed — [<severity>] <claim>; license: <citation>; <what changed>"
*(The grammar's variants are enumerated as closed: "the grammar's one severity-token variant" and "the grammar's one heading annotation".)*

**"Re-dispatch briefs" vs. "The disposition ledger" — the heading that marks a plan's owed confirming round is named the durable marker, but no anchor or command detects it.**
quote A: "the `### <ISO date> — <agent>, <model self-report>, LGTM (round N, diff-scoped)` heading is the durable marker that a confirming round is owed"
quote B: "Two greppable anchors join the lifecycle rule's unfinished-work discipline: `open` lines (a stamped round whose remediation never ran) and `held` lines (pending developer questions)."
*(The mandated command is `rg -n --no-ignore --crlf '^- (open|held) —' docs/`, which matches no heading; the recovery clause itself concedes "an annotation-closed or previously-approved document is grep-clean there".)*

**"The disposition ledger" / "Changes by file" vs. the glossary's Unfinished-work list entry — the new class is given non-frontmatter match semantics and costs a consumer edit, contradicting a recorded property of the list, and no glossary edit is routed.**
quote A: "The entry deliberately re-scopes the list's frontmatter-only invariant for itself: its hits count inside a `## Review rounds` section and nowhere else" … "`plugins/working-process/skills/process-status/SKILL.md` — the hit-confirmation step takes an entry's own published match scope when the entry re-scopes it"
quote B (`docs/domain/glossary.md`, **Unfinished-work list**): "the single definition site for which classes exist, so a new class costs one edit in the rule and none in the consumers that run it. A command's output is hits to confirm against the frontmatter block, never Findings."

**"Re-dispatch briefs" vs. `## Review rounds` closing paragraph — the reviewer's stop signal is defined only for an all-Minor round, and the document's own loop closes on it after a round whose single finding is Important.**
quote A: "asks the reviewer for its own stop signal: when the round's remaining findings are all Minor wording residue, say so and judge whether another round is worth its cost."
quote B: "Loop closed 2026-08-27 by the resolution annotation, on round 5's own alternative: the single finding was a two-clause routing edit with no design content, fixed as suggested, and the whole-text backstop is the consumption gate's integrity audit this release ships"
*(Round 5's only line reads "- fixed — [Important] the round-4 gate behavior was fully designed in the body and routed to no file edit".)*

**"The disposition ledger" — the declined-resolution token is given two forms, one dated and one not, in the same section that calls the shape canonical.**
quote A: "`resolved (declined)` records the developer keeping the document as it was."
quote B: " - resolved <date> (declined) — [<severity>] <claim>; <why the document stands>"

---

## Ranked implementer questions

1. **What is a diff-scoped brief's diff taken against?** "briefed on what changed since the round it follows" names no source for the previous state — no snapshot, no commit, no recorded hash — and the lifecycle rule keeps these documents deliberately uncommitted through the review rounds. Without an answer the central mechanism of "Re-dispatch briefs" cannot be built.
2. **How do the two release-mates' consumption-gate offers compose in `workflow.md`?** The audit-agents spec fires the integrity-audit offer only on an `integrity:` body-hash mismatch ("a match meaning the standing stamp satisfies the gate"); this spec fires the pair question on any diff-scoped-chain LGTM. Which governs a spec carrying both a matching stamp and a diff-chain LGTM?
3. **Is the confirming full-document round after a plan's diff-scoped LGTM autonomous, and does it count against the three-round cap?** It is prescribed as mandatory ("one full-document confirming round follows"), which sits oddly with both the cap and the every-step-is-an-offer ethos.
4. **When a contested `[hit]` escalates at the propagation gate, does the round wait for the answer, and does that escalation reset the cap count?** The gate is specified to "repeat until the audit comes back clean", a state a contested hit never reaches.
5. **What counts as "developer contact" for the cap reset?** A held batch the developer has not yet answered, a relay the developer read silently, and the cap escalation itself are all candidates, and the choice decides whether the cap can ever bind.
6. **What is the exact vocabulary and case of the `[<severity>]` slot?** The glossary fixes `critical | important | minor` in lowercase; the document's own ledger writes `[Important]` and `[Minor]`, and the one variant `[hit]` is lowercase. The deferred grammar lint depends on this.
7. **What shape does a single Unfinished-work entry with two owners take?** The list's entry format is "class name, grep command, and the owner of the next move" (singular); this spec routes one entry "whose entry text names both owners", and `process-status` must render it.
8. **What distinguishes "not now" from "not in this session" in the consent question,** given the same sentence says the session "asks once per Claude Code session … and honours the answer without re-asking"?
9. **What closes the loop when a held answer lands and the developer accepts neither the fresh round nor the annotation?** Both arms are offers; the document names no third state and no `resolved` line can be written without one of them.
10. **Are ledger lines flush-left or indented?** The canonical block is presented indented four spaces while the mandated command anchors on `^-`; the difference decides whether the document's own grammar block is self-matching.

---

coverage: 429 lines; highest line cited 429
Loading
Loading