Skip to content

feat: itd-80 phase 3 — reconcile on spec close + spec_lifecycle lint - #24

Merged
REPPL merged 1 commit into
mainfrom
auto/itd-80-phase3-reconcile
Jul 11, 2026
Merged

feat: itd-80 phase 3 — reconcile on spec close + spec_lifecycle lint#24
REPPL merged 1 commit into
mainfrom
auto/itd-80-phase3-reconcile

Conversation

@REPPL

@REPPL REPPL commented Jul 11, 2026

Copy link
Copy Markdown
Owner

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 intent planned → shipped. intent.Reconcile uses 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).
  • Fail-closed, no partial move on a missing / malformed / ambiguous intent ↔ spec link or an unexpected bucket; ## Audit Notes are untouched (the fidelity audit is Phase 4).
  • New spec_lifecycle record-lint rule — cross-checks the bidirectional link (a spec's intent: and that intent's spec_id must agree), registered in .abcd/record-lint.json.
  • One moveIntentToBucket helper backs both Plan and Reconcile (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).
  • Test-first (fail-closed + idempotency + a full drafts→planned→shipped cycle asserting both lint rules find nothing). make preflight + make record-lint green. No new dependencies.

Not in this PR

  • Phase 4 — verdict-ingest transport → ## Audit Notes (security-reviewed).
  • Phase 5 — dogfood itd-80 through the whole pipeline.

Assisted-by: Claude:claude-opus-4-8

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
@REPPL
REPPL merged commit 2f740da into main Jul 11, 2026
12 checks passed
@REPPL
REPPL deleted the auto/itd-80-phase3-reconcile branch July 11, 2026 17:19
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant