Skip to content

Propagate: reconcile obligations against tests after generation - #56

Merged
yavorpanayotov merged 1 commit into
mainfrom
propagate-obligation-reconciliation
Jul 22, 2026
Merged

Propagate: reconcile obligations against tests after generation#56
yavorpanayotov merged 1 commit into
mainfrom
propagate-obligation-reconciliation

Conversation

@yavorpanayotov

Copy link
Copy Markdown
Collaborator

What

Adds an explicit obligation reconciliation step to the propagate skill: after generating tests, walk the full obligation list from allium plan (or the manual derivation) and confirm every obligation maps to a covering test — generated this run or pre-existing.

Why

The skill gathered obligation coverage information (discovery checklist) and gestured at completeness checking in "Reusing existing tests", but the process ended at "verify tests compile/run" — the reconciliation never actually happened. Tests passing says nothing about whether the test set is complete against the spec's obligations.

How

  • New process step 8 and a dedicated Obligation reconciliation section.
  • Reconciliation is silent on the happy path — obligations are internal working data; the user sees a single closing line (N obligations, M covered, K uncovered).
  • Uncovered obligations are auto-covered in a guarded mini-loop: 2 attempts per obligation plus a no-progress cap, mirroring the convergence guards in driving-the-loop.md.
  • Only the residue is user-facing, classified with a one-line reason: infrastructure gap (no clock seam, no fixture) or unmappable construct (code-first, no correlate found).
  • Missing implementation is explicitly not a residue category: in spec-first flows a written-but-failing test covers its obligation, and the loop's implement phase turns it green.
  • The summary line feeds the Allium loop's consolidated report; the loop must not converge while obligations remain uncovered without a reported reason.

Testing

node scripts/test-skills.mjs — 88 passed, 0 failed (same script CI runs). node hooks/allium-check.test.mjs — 95 passed, 0 failed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01D6FTVnDrei6nNse624pG3w

Add an explicit reconciliation step to the propagate process: after
generating tests, walk the full obligation list from `allium plan` and
map each obligation to a covering test. Uncovered obligations are
auto-covered in a guarded mini-loop (2 attempts per obligation plus a
no-progress cap, mirroring the outer loop's convergence rules).

Reconciliation is silent on the happy path — the user sees only a
one-line summary and any obligations that could not be covered, each
classified as an infrastructure gap or unmappable construct. Missing
implementation is explicitly not a residue category: in spec-first
flows a written-but-failing test covers its obligation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D6FTVnDrei6nNse624pG3w
@yavorpanayotov
yavorpanayotov merged commit a622c76 into main Jul 22, 2026
1 check passed
@yavorpanayotov
yavorpanayotov deleted the propagate-obligation-reconciliation branch July 22, 2026 09:53
yavorpanayotov added a commit that referenced this pull request Jul 22, 2026
Minor bump for the obligation reconciliation step added to the
propagate skill in #56: new backward-compatible behaviour, no
breaking changes.


Claude-Session: https://claude.ai/code/session_01D6FTVnDrei6nNse624pG3w

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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.

2 participants