Development record
the-intent-audit-says-audit-abcd-intent-review-becomes-abcd
Summary
Delivers adr-40's first named rename: abcd intent review → abcd intent audit (and review ingest → audit ingest), the intent-fidelity-reviewer
agent → intent-auditor, the intent_review task-class token →
intent_audit. Clean break, no aliases. Ships only after spc-27's extended
surface_coverage is armed; the table row flips in the same change, so the
gate proves the migration complete.
Scope — the live sweep (verified inventory, 2026-08-16)
Code and surface:
internal/core/intent/review.go(+review_test.go) →audit.go/audit_test.go; exportedReview*identifiers →Audit*; thereview_emit_errorJSON key (ReviewEmitError, intent.go) →audit_emit_error;create.go's references follow.internal/surface/cli/cli.go— thereviewsub-command underintent→audit; help text; JSON rendering.agents/intent-fidelity-reviewer.md→agents/intent-auditor.md(name, frontmatter, prompt body,capability_scope.task_classes);agents/ README.mdroster row.commands/intent.md— the Review/ingest section,argument-hint.docs/reference/cli/commands.md— regenerate.
Record (current-state surfaces only):
- Brief:
01-product/01-press-release.md,01-product/03-mental-model.md,02-constraints/04-naming.md(the task-class enum row:intent_review→intent_audit),04-surfaces/README.md,04-surfaces/05-intent.md,04-surfaces/06-capture.md,04-surfaces/09-reflect.md,05-internals/README.md,01-agents.md,02-adapters.md,03-configuration.md,04-universal-patterns.md,05-prompt-quality.md,06-lint.md,06-delivery/02-verification-matrix.md. - The
intentsub-verb table row (spc-27's format):review→audit, same change. CHANGELOG.md— breaking entry.
Not swept (historical, append-only, or dated — AC 3): ADRs, dated
research notes, dated plans, resolved/wontfix issues, shipped/superseded
intents, DECISIONS.md, review-store artefacts, git history. A test or grep
in the PR description demonstrates remaining occurrences are all in these
classes. Amendment (2026-08-26): intents/disciplines/ appeared in neither
the swept inventory nor this list and was swept late (iss-2608261437043634) —
it is live state with no reachable reconciliation event, since intent audit
refuses a non-shipped intent; drafts/ and planned/ stay deliberately
unswept under the iss-94 convention (each reconciles when next planned).
Stored artefact formats (abcd-review: markers, review-<ts> receipt
directories) keep their frozen spellings.
Approach
- Precondition check first: assert spc-27's sub-verb check is armed
(the extended rule enabled and the
intenttable present). If not armed, STOP — the ordering is the plan's non-negotiable constraint. - Rename code path (
Audit,AuditIngest,audit_emit_error), watching the renamed tests fail under the old spelling first, then pass. - Rename the agent file and roster; the task-class token in the agent frontmatter and the naming registry move together (the schema cross-check test in the binary must be updated in the same commit — the enum is PR-to-extend and no shipped check reads stored artefacts, so previously ingested verdicts stay valid; assert by re-running the ingest parser over an existing stored verdict fixture).
- Sweep the brief and command surfaces; flip the sub-verb table row.
- Regenerate
surface.json(go generate ./internal/surface/cli) and the CLI reference;record-lint,docs-lint, and the surface drift test exit 0 — that is the proof of completeness. - Old spelling behaviour:
abcd intent reviewexits as an unknown sub-command (cobra default); a surface test pins this.
Acceptance-criteria mapping
- New spellings, old gone — steps 2, 6; surface tests for
audit,audit ingest, and the unknown-command refusal ofreview. - Live sweep total — the Scope inventory; step 5's gates prove it.
- Historical records untouched — the Not-swept list; PR shows the residual grep classified.
- Armed-gate ordering — step 1; the run stops if spc-27 is not armed.
- Stored artefacts still parse — step 3's fixture assertion.
- Breaking CHANGELOG — Scope; version derivation reads it.
Every behaviour change lands with a test watched fail before the change.
Frontmatter
| id | spc-28 |
|---|---|
| type | spec |
| lifecycle | closed |
.abcd/development/specs/closed/spc-28-the-intent-audit-says-audit-abcd-intent.md
open on GitHub ↗ · commit history ↗
References1
- itd-123The Intent Audit Says Auditimplements
mentions13
- adr-40Review, audit, lint, and gate are four buckets, separated by what each compares
- dcn-26082400000000012026-08-24 — bughunt round 5 (state #368): corrected the shipped-intents
- dcn-26082600000000062026-08-26 — Bug-hunt round 9 (bughunt-a): baseline green after unshallowing
- dcn-26082600000000072026-08-26 — Bug-hunt round 9 (bughunt-b): baseline green on the unshallowed
- iss-94The intent corpus still specifies the pre-adr-35 lifeboat model: itd-2, itd-8, itd-9, itd-10, itd-13, itd-15, itd-19, itd-22 and itd-24 variously use the retired 'disembark to home' signature, the in-tree .abcd/lifeboat/ home, or the in-tree .abcd/development/voyage/ path (itd-9's acceptance writes voyage provenance in-tree — the exact path that would fail abcd's own privacy-hygiene audit rule). The brief, glossary and roadmap were reconciled to adr-35; the intents were deliberately NOT rewritten, because an intent is a proposal with its own lifecycle and silently rewriting nine of them inside an unrelated change is worse than tracking the drift. Each reconciles when it is next planned.
- iss-26502-constraints/04-naming.md's task_classes enum row claims 'Machine-readable source of truth: the Go binary's task_classes schema (internal/core/...) — a cross-check test fails if this table and the schema diverge', but no task_classes schema or cross-check test exists anywhere in the Go tree (grep confirms zero Go references). spc-28's step 3 instructed updating that test in the same commit as the intent_review→intent_audit token flip; nothing existed to update. Either build the cross-check the row promises or reword the row to name the real source of truth (agent frontmatter + this table).
- iss-334intents/README.md teaches the v0.6.0-retired intent review verb and the intent-fidelity-reviewer agent (retired to intent audit / intent-auditor by adr-40); the intents store front door documents an invocation that exits non-zero and an agent absent from the tree, and its template block is copied into new intents while contradicting create.go
- iss-2608240815453131shipped-intents README names the retired intent-fidelity-reviewer agent (renamed to intent-auditor per spc-28); the sibling front-door the iss-334 sweep of the parent index missed
- iss-2608261437043634the live disciplines bucket was never swept for the spc-28 intent-auditor rename
- iss-2609261536147903Planned intents and disciplines still cite specs of the retired predecessor store unqualified, and such an id at or below spc-70 resolves to a live spec on another subject (spc-12, for one, is live as the disembark grounding spec): itd-48, itd-50 and itd-53 name spc-12, spc-28, spc-29, spc-31, spc-33, spc-43 and spc-52 for the fidelity reviewer, lifecycle hook and cleanup work (which of these are predecessor ids is itself the reading this record owes); itd-24 names spc-66 as the phase-audit receipt; itd-1 and itd-37 name spc-12 as the manual reviewer. The specs charter (Two spc-N Namespaces) rules that every predecessor citation carries the '(predecessor store)' qualifier; iss-239 applied it to the draft corpus only. Each site needs a reading to tell a predecessor citation from a live one, which is why the sweep was not folded into iss-239.
- itd-50The Audit Loop Drives An Intent To Acceptance — Or Calls For A Replan
- itd-53A Shipped Intent No Longer Drifts Out Of Audit Just Because Nobody Ran The Review
- spc-27the-registry-cannot-wave-its-hands-every-surface-file-carrie