Backprop

juliusbrussee/cavekit/skills/backprop

作者 juliusbrussee7421e87d5b51無授權條款1.1K 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫7 週前更新

Bug → spec protocol. When a bug is found or a test fails, trace the cause, decide whether a new §V invariant would catch recurrence, append to §B. This is the one non-obvious thing SDD does that plan-then-execute doesn't. Triggers on test failure, bug report, post-mortem, or explicit user ask.

AI 產生的概覽

將缺陷或失敗的測試轉化為規格不變量、回歸測試與程式碼修正,並一起提交。

功能
此技能定義了一套六步的「缺陷到規格」流程:追蹤失敗的根本原因,分析新的規格不變量是否能捕捉這類缺陷,提出規格修改,產生以該不變量命名的失敗測試,驗證修正及完整測試套件,最後將全部內容記錄為一次提交。它產出規格條目、通常還有不變量條目、測試檔案與程式碼修正。它僅為說明性內容,不附帶指令碼。
適用情境
適用於驗證階段測試失敗、使用者回報缺陷、生產事故後檢討,或檢查發現違規且已定位根本原因的情況。它適合那些希望修正程式碼的同時更新規格、避免同類故障再次發生的作業流程。
執行需求
除代理程式外不需要任何工具、套件或憑證;它僅為說明性內容,不附帶指令碼。它假定專案已有規格文件與版本控制,因為產出是規格修改、測試與程式碼修正合併為一次提交。

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 /build verification.
  • User reports bug.
  • Post-mortem after production incident.
  • /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 caveman 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: B3|2026-04-20|refund job ran twice on retry|V7§V line: V7: ∀ 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: TestV7_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>.

WHAT MAKES A GOOD INVARIANT

  • Testable in code (grep-able or assert-able).
  • Scoped to a behavior, not a file.
  • Stated positively when possible (! hold over ⊥ forbid).
  • References §I surface where it applies.

Bad: V8: code should be correct. Good: V8: ∀ pg_query ! params interpolated via driver, ⊥ string concat.

WHEN NOT TO ADD §V

  • Bug was purely mechanical typo with no class (i++ vs i-- in throwaway).
  • Fix is a one-time migration.
  • Root cause is external dep (upgrade deps instead, note in §C).

Still append §B entry — record that this failure mode was considered. Future bug with same smell → §B search shows precedent.

OUTPUT SHAPE

Every backprop run produces:

  1. §B entry (always).
  2. §V entry (usually).
  3. Test file (when §V added).
  4. Code fix.
  5. One commit.

No dashboards. No log files. SPEC.md + git is the full history.

來源與署名

來源:juliusbrussee/cavekit位於skills/backprop提交7421e87

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架