← ClaudeAtlas

backproplisted

Bug → spec protocol. On bug found ∨ test fail → trace cause, decide if new §V invariant catches recurrence, append to §B. Triggers: test failure, bug report, post-mortem, explicit user ask. Phrasings: "X broke", "we got bit by", "post-mortem on Y", "this should never recur", "add a §V for". ⊥ for mechanical typo ∨ one-off fix w/ ⊥ recurrence class — pure code fix only.
kborovik/pilot-skills · ★ 4 · Testing & QA · score 70
Install: claude install-skill kborovik/pilot-skills
# backprop — bug → spec Plan-then-execute fixes the code ∧ forgets. SDD fixes the code AND edits spec so recurrence is impossible. That edit is backprop. ## WHEN TO BACKPROP - Test failed at `/sdd:build` verification. - User reports bug. - Post-mortem after production incident. - `/sdd:check` flags VIOLATE with root cause found. ## SIX STEPS ### 1. TRACE Read failure output / bug report. Find exact file:line of wrong behavior. Name root cause in one math-glyph sentence. ### 2. ANALYZE Ask three questions: - Would a new §V invariant catch this class of bug? (most common: yes) - Is §I wrong — did spec claim shape the code cannot deliver? (sometimes) - Is §T wrong — did we build the wrong thing? (rare but real) ### 3. PROPOSE Draft the spec change. Never skip §B; §V/§I/§T are case-by-case. Template: ``` §B row: B<next>|<date>|<root cause>|V<N> §V line: V<next>: <testable rule that would have caught it> ``` Example: ``` §B row: B<n>|<date>|refund job ran twice on retry|V<N> §V line: V<N>: ∀ refund → idempotency key check before charge reversal ``` ### 4. GENERATE TEST New invariant without test = lie. Add failing test first. Name test so it cites the invariant: `TestV<N>_RefundIdempotent`. ### 5. VERIFY Fix code. Run test. Must pass. Run full suite. Must not regress. ### 6. LOG Commit spec edit + test + code fix together. Commit msg: `backprop §B.<n> + §V.<N>: <one-line cause>`. ## WORKED EXAMPLE Walks the six steps end-to-end on one bug. Numbers fictional; demonstr