feat: itd-80 phase 3 — reconcile on spec close + spec_lifecycle lint - #24
Merged
Conversation
abcd spec close <spc-N> now reconciles the linked intent planned->shipped via intent.Reconcile: intent-move-first / spec-close-last ordering makes any mid-failure recoverable, and it is idempotent (already-shipped intent is a clean no-op). Fail-closed with no partial move on a missing/malformed/ambiguous link or an unexpected bucket; ## Audit Notes untouched (the fidelity audit is phase 4). New spec_lifecycle record-lint rule cross-checks the bidirectional intent<->spec link. A single moveIntentToBucket helper backs both Plan and Reconcile (no new copy). security-reviewer: PASS (no blockers). Its low-severity notes (intermediate-dir symlink, rename TOCTOU, intent dup-id, lint symlink-read) are out of the trusted- worktree threat model and flagged as follow-ups; the two dir-guard comments were tightened so they no longer overclaim (enforcement-claims-are-facts). Part of itd-80. Assisted-by: Claude:claude-opus-4-8
This was referenced Jul 11, 2026
REPPL
added a commit
that referenced
this pull request
Jul 12, 2026
The acceptance test for itd-80's own slice: itd-80 driven drafts->planned-> shipped by the machinery it specifies, not by hand. Live cycle on the on-main pipeline (PRs #22/#24/#26): abcd intent plan itd-80 -> mints spc-2 (spc-1 reserved by itd-3 skipped), links, moves drafts->planned abcd spec close spc-2 -> reconcile ships itd-80 planned->shipped, parks OWED review rcp-1c213fa02f85 abcd intent review ingest -> machine fidelity audit written to ## Audit Notes; re-ingest is a verified no-op Rollup 6 MET / 1 MET_WITH_CONCERNS / 0 NOT_MET / 0 INCONCLUSIVE. The one concern (ac-3): the review request references the delivered diff as host-supplied rather than abcd-captured — a deliberate adr-25 transport-agnostic divergence. Adds the spc-2 native spec record (closed). record-lint green throughout (spec_lifecycle cross-check on the new spc-2<->itd-80 link passes). Assisted-by: Claude:claude-opus-4-8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 3 of the intent-lifecycle automation (itd-80), on top of #22 (merged). The lifecycle now advances itself.
What's in this PR
abcd spec close <spc-N>reconciles the linked intentplanned → shipped.intent.Reconcileuses intent-move-first / spec-close-last ordering, so any mid-failure is recoverable, and it is idempotent (an already-shipped intent is a clean no-op).intent ↔ speclink or an unexpected bucket;## Audit Notesare untouched (the fidelity audit is Phase 4).spec_lifecyclerecord-lint rule — cross-checks the bidirectional link (a spec'sintent:and that intent'sspec_idmust agree), registered in.abcd/record-lint.json.moveIntentToBuckethelper backs bothPlanandReconcile(no new copy).Review
security-reviewer: PASS, no blockers (this phase mutates the committed design record — the declared trust boundary). It could not force a wrong-file move, path escape, torn state, or lint bypass. Its four low-severity notes (intermediate-dir symlink, rename TOCTOU, intent dup-id, lint symlink-read) are out of the trusted-worktree threat model and flagged as follow-ups; the two dir-guard comments were tightened so they no longer overclaim (enforcement-claims-are-facts).make preflight+make record-lintgreen. No new dependencies.Not in this PR
## Audit Notes(security-reviewed).Assisted-by: Claude:claude-opus-4-8