@haposoft/cafekit 0.16.7 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/README.md +14 -22
  2. package/bin/__tests__/codex-hooks-ownership.test.js +2 -2
  3. package/bin/__tests__/codex-hooks.test.js +0 -36
  4. package/bin/__tests__/codex-native.test.js +46 -88
  5. package/bin/__tests__/develop-contract.test.js +26 -57
  6. package/bin/__tests__/docs-sync-on-demand.test.js +93 -0
  7. package/bin/__tests__/grok-envelope.test.js +0 -56
  8. package/bin/__tests__/hook-payload.test.js +4 -6
  9. package/bin/__tests__/legacy-authority-decoupled.test.js +159 -0
  10. package/bin/__tests__/legacy-hooks-retired.test.js +221 -0
  11. package/bin/__tests__/omp-bridge.test.js +20 -17
  12. package/bin/__tests__/omp-hooks.test.js +0 -19
  13. package/bin/__tests__/optional-skill-inventory.test.js +112 -4
  14. package/bin/__tests__/orca-session.test.js +0 -2
  15. package/bin/__tests__/package-inventory.test.js +100 -541
  16. package/bin/__tests__/runtime-dir.test.js +0 -3
  17. package/bin/__tests__/runtime-schema.test.js +3 -2
  18. package/bin/__tests__/skill-routing-source.test.js +27 -15
  19. package/bin/__tests__/spec-narrowing.test.js +0 -27
  20. package/bin/__tests__/specs-v2-execution-closeout.test.js +4 -69
  21. package/bin/__tests__/ui-ux-skill.test.js +101 -0
  22. package/bin/__tests__/usage-hook-retired.test.js +114 -0
  23. package/bin/__tests__/validator-grounding.test.js +9 -28
  24. package/bin/phases/codex-runtime.js +24 -0
  25. package/bin/phases/omp-runtime.js +22 -0
  26. package/package.json +1 -1
  27. package/src/claude/CLAUDE.md +3 -10
  28. package/src/claude/agents/brainstormer.md +7 -3
  29. package/src/claude/agents/code-auditor.md +35 -50
  30. package/src/claude/agents/debugger.md +5 -79
  31. package/src/claude/agents/deployer.md +3 -5
  32. package/src/claude/agents/docs-keeper.md +2 -7
  33. package/src/claude/agents/implementer.md +6 -9
  34. package/src/claude/agents/inspector.md +2 -3
  35. package/src/claude/agents/project-manager.md +7 -15
  36. package/src/claude/agents/researcher.md +9 -3
  37. package/src/claude/agents/spec-maker.md +11 -11
  38. package/src/claude/hooks/__tests__/fixtures/statusline-default.golden +1 -1
  39. package/src/claude/hooks/__tests__/spec-gate.test.js +74 -3
  40. package/src/claude/hooks/__tests__/spec-state-touched.test.js +134 -0
  41. package/src/claude/hooks/__tests__/state.test.js +68 -0
  42. package/src/claude/hooks/__tests__/statusline.test.js +140 -11
  43. package/src/claude/hooks/agent.cjs +2 -1
  44. package/src/claude/hooks/lib/context.cjs +0 -89
  45. package/src/claude/hooks/lib/hook-payload.cjs +2 -2
  46. package/src/claude/hooks/rules.cjs +2 -1
  47. package/src/claude/hooks/session.cjs +0 -1
  48. package/src/claude/hooks/spec-gate.cjs +17 -28
  49. package/src/claude/hooks/spec-state.cjs +95 -1
  50. package/src/claude/hooks/state.cjs +21 -2
  51. package/src/claude/migration-manifest.json +30 -15
  52. package/src/claude/rules/ai-dev-rules.md +1 -1
  53. package/src/claude/rules/hook-protocols.md +8 -15
  54. package/src/claude/rules/manage-docs.md +9 -23
  55. package/src/claude/rules/orchestrator.md +3 -4
  56. package/src/claude/rules/review-audit-self-decision.md +3 -3
  57. package/src/claude/rules/skill-domain-routing.md +1 -3
  58. package/src/claude/rules/skill-workflow-routing.md +4 -5
  59. package/src/claude/rules/state-sync.md +3 -12
  60. package/src/claude/rules/workflow.md +10 -18
  61. package/src/claude/runtime.schema.json +5 -3
  62. package/src/claude/scripts/generate-skill-catalog.cjs +7 -6
  63. package/src/claude/scripts/provenance.cjs +23 -5
  64. package/src/claude/scripts/spec-receipt.cjs +24 -7
  65. package/src/claude/scripts/spec-resolver.cjs +1 -2
  66. package/src/claude/scripts/validate-spec-output.cjs +5 -32
  67. package/src/claude/settings/settings.json +1 -32
  68. package/src/claude/skills/{question → ask}/SKILL.md +9 -75
  69. package/src/claude/skills/brainstorm/SKILL.md +43 -131
  70. package/src/claude/skills/code-review/SKILL.md +48 -17
  71. package/src/claude/skills/code-review/references/spec-compliance-review.md +2 -3
  72. package/src/claude/skills/code-review/references/verification-gate.md +22 -27
  73. package/src/claude/skills/debug/SKILL.md +29 -149
  74. package/src/claude/skills/develop/SKILL.md +27 -36
  75. package/src/claude/skills/develop/references/parallel-waves.md +0 -8
  76. package/src/claude/skills/develop/references/quality-gate.md +15 -13
  77. package/src/claude/skills/docs/SKILL.md +2 -2
  78. package/src/claude/skills/docs/references/update-workflow.md +1 -1
  79. package/src/claude/skills/fix/SKILL.md +153 -0
  80. package/src/claude/skills/{hotfix → fix}/references/diagnosis-protocol.md +2 -2
  81. package/src/claude/skills/{hotfix → fix}/references/parallel-patterns.md +2 -2
  82. package/src/claude/skills/{hotfix → fix}/references/prevention-gate.md +3 -3
  83. package/src/claude/skills/{hotfix → fix}/references/review-cycle.md +1 -1
  84. package/src/claude/skills/git/SKILL.md +48 -9
  85. package/src/claude/skills/git/references/commit-protocols.md +35 -16
  86. package/src/claude/skills/git/references/worktree-blueprint.md +42 -6
  87. package/src/claude/skills/orca/SKILL.md +9 -8
  88. package/src/claude/skills/research/SKILL.md +2 -0
  89. package/src/claude/skills/scout/SKILL.md +61 -0
  90. package/src/claude/skills/{inspect → scout}/references/internal-inspection.md +26 -10
  91. package/src/claude/skills/specs/SKILL.md +22 -29
  92. package/src/claude/skills/specs/references/review.md +8 -6
  93. package/src/claude/skills/specs/references/templates.md +34 -41
  94. package/src/claude/skills/sync/SKILL.md +8 -15
  95. package/src/claude/skills/sync/references/rebind-and-audit.md +59 -0
  96. package/src/claude/skills/sync/references/sync-protocols.md +4 -13
  97. package/src/claude/skills/test/SKILL.md +22 -3
  98. package/src/claude/skills/test/references/execution-strategy.md +83 -0
  99. package/src/claude/skills/test/references/failure-triage.md +1 -1
  100. package/src/claude/skills/ui-ux/LICENSE +21 -0
  101. package/src/claude/skills/ui-ux/SKILL.md +497 -0
  102. package/src/claude/skills/ui-ux/references/brand-tokens.md +90 -0
  103. package/src/claude/skills/ui-ux/references/budgets.md +113 -0
  104. package/src/claude/skills/ui-ux/references/checklist.md +271 -0
  105. package/src/claude/skills/ui-ux/references/components/accordion.md +246 -0
  106. package/src/claude/skills/ui-ux/references/components/avatar.md +153 -0
  107. package/src/claude/skills/ui-ux/references/components/banner.md +43 -0
  108. package/src/claude/skills/ui-ux/references/components/breadcrumb.md +201 -0
  109. package/src/claude/skills/ui-ux/references/components/button.md +142 -0
  110. package/src/claude/skills/ui-ux/references/components/card.md +113 -0
  111. package/src/claude/skills/ui-ux/references/components/charts.md +376 -0
  112. package/src/claude/skills/ui-ux/references/components/chat.md +132 -0
  113. package/src/claude/skills/ui-ux/references/components/choice-controls.md +369 -0
  114. package/src/claude/skills/ui-ux/references/components/comment-thread.md +17 -0
  115. package/src/claude/skills/ui-ux/references/components/description-list.md +116 -0
  116. package/src/claude/skills/ui-ux/references/components/empty-state.md +98 -0
  117. package/src/claude/skills/ui-ux/references/components/file-upload.md +107 -0
  118. package/src/claude/skills/ui-ux/references/components/inline-edit.md +128 -0
  119. package/src/claude/skills/ui-ux/references/components/input.md +161 -0
  120. package/src/claude/skills/ui-ux/references/components/list-row.md +56 -0
  121. package/src/claude/skills/ui-ux/references/components/loading.md +198 -0
  122. package/src/claude/skills/ui-ux/references/components/logo.md +147 -0
  123. package/src/claude/skills/ui-ux/references/components/otp-input.md +43 -0
  124. package/src/claude/skills/ui-ux/references/components/quantity-input.md +100 -0
  125. package/src/claude/skills/ui-ux/references/components/range-slider.md +16 -0
  126. package/src/claude/skills/ui-ux/references/components/small-controls.md +340 -0
  127. package/src/claude/skills/ui-ux/references/components/sortable-header.md +86 -0
  128. package/src/claude/skills/ui-ux/references/components/tag-input.md +14 -0
  129. package/src/claude/skills/ui-ux/references/components/timeline.md +38 -0
  130. package/src/claude/skills/ui-ux/references/components/tree.md +30 -0
  131. package/src/claude/skills/ui-ux/references/design-process.md +650 -0
  132. package/src/claude/skills/ui-ux/references/layouts/app-kanban.html +303 -0
  133. package/src/claude/skills/ui-ux/references/layouts/app.md +1369 -0
  134. package/src/claude/skills/ui-ux/references/layouts/form.md +430 -0
  135. package/src/claude/skills/ui-ux/references/layouts/overlay.md +552 -0
  136. package/src/claude/skills/ui-ux/references/layouts/pricing.md +204 -0
  137. package/src/claude/skills/ui-ux/references/locked-rules.md +35 -0
  138. package/src/claude/skills/ui-ux/references/principles.md +408 -0
  139. package/src/claude/skills/ui-ux/references/refactor.md +245 -0
  140. package/src/claude/skills/ui-ux/references/responsive.md +195 -0
  141. package/src/claude/skills/ui-ux/references/review.md +528 -0
  142. package/src/claude/skills/ui-ux/references/rules-color.md +623 -0
  143. package/src/claude/skills/ui-ux/references/rules-form.md +235 -0
  144. package/src/claude/skills/ui-ux/references/rules-state.md +680 -0
  145. package/src/claude/skills/ui-ux/references/rules-type.md +369 -0
  146. package/src/claude/skills/ui-ux/references/styles.md +311 -0
  147. package/src/claude/skills/ui-ux/references/system.md +219 -0
  148. package/src/claude/skills/ui-ux/references/tailwind-v4-traps.md +237 -0
  149. package/src/claude/skills/ui-ux/references/tokens.css +362 -0
  150. package/src/claude/skills/ui-ux/scripts/lint-skill.mjs +216 -0
  151. package/src/claude/skills/ui-ux/scripts/package.json +9 -0
  152. package/src/claude/skills/ui-ux/scripts/probe.mjs +4447 -0
  153. package/src/claude/skills/ui-ux-pro-max/SKILL.md +1 -1
  154. package/src/claude/status.cjs +149 -144
  155. package/src/codex/AGENTS.md +8 -13
  156. package/src/codex/hooks/agent.cjs +2 -1
  157. package/src/codex/hooks/lib/spec-receipt.cjs +2 -2
  158. package/src/codex/hooks/lib/spec-utils.cjs +0 -7
  159. package/src/codex/hooks/rules.cjs +2 -1
  160. package/src/codex/hooks/session.cjs +0 -2
  161. package/src/codex/hooks/spec-gate.cjs +7 -18
  162. package/src/codex/hooks.json +0 -20
  163. package/src/codex/rules/state-sync.md +3 -12
  164. package/src/common/AGENTS.md +2 -2
  165. package/src/omp/extensions/cafekit-bridge.mjs +6 -6
  166. package/src/claude/hooks/__tests__/completion-authority.test.js +0 -990
  167. package/src/claude/hooks/__tests__/semantic-review-authority.test.js +0 -259
  168. package/src/claude/hooks/completion-authority-check.cjs +0 -56
  169. package/src/claude/hooks/completion-authority-state.cjs +0 -527
  170. package/src/claude/hooks/completion-authority.cjs +0 -163
  171. package/src/claude/hooks/semantic-review-authority.cjs +0 -154
  172. package/src/claude/hooks/task-scaffold-guard.cjs +0 -114
  173. package/src/claude/hooks/usage.cjs +0 -197
  174. package/src/claude/skills/delegate/SKILL.md +0 -124
  175. package/src/claude/skills/delegate/references/codex-delegation.md +0 -71
  176. package/src/claude/skills/delegate/references/grok-delegation.md +0 -84
  177. package/src/claude/skills/hotfix/SKILL.md +0 -289
  178. package/src/claude/skills/inspect/SKILL.md +0 -142
  179. package/src/claude/skills/loop/SKILL.md +0 -114
  180. package/src/claude/skills/loop/references/bounded-loop-protocol.md +0 -104
  181. package/src/claude/skills/loop/references/metric-and-guard-contract.md +0 -76
  182. package/src/claude/skills/route/SKILL.md +0 -94
  183. package/src/claude/skills/route/references/agent-timing.md +0 -46
  184. package/src/claude/skills/route/references/chaining-patterns.md +0 -53
  185. package/src/claude/skills/route/references/task-taxonomy.md +0 -48
  186. package/src/codex/hooks/completion-authority-check.cjs +0 -67
  187. package/src/codex/hooks/completion-authority-state.cjs +0 -527
  188. package/src/codex/hooks/completion-authority.cjs +0 -109
  189. package/src/codex/hooks/semantic-review-authority.cjs +0 -130
  190. package/src/codex/hooks/task-scaffold-guard.cjs +0 -63
  191. /package/src/claude/skills/{question → ask}/templates/question.md +0 -0
  192. /package/src/claude/skills/{hotfix → fix}/references/escalation-tactics.md +0 -0
  193. /package/src/claude/skills/{hotfix → fix}/references/workflow-specialized.md +0 -0
@@ -16,164 +16,61 @@ Debugging is diagnosis, not repair. Find the source of the failure before changi
16
16
 
17
17
  ## Arguments
18
18
 
19
- - `--quick` - Abbreviated path for syntax, lint, type, or single-test failures with obvious local scope
20
- - `--ci` - Focus on CI/CD logs, runner environment, dependency versions, and pipeline setup
21
- - `--frontend` - Include browser console, screenshot, accessibility tree, network, and responsive checks
22
- - `--perf` - Include baseline measurements, bottleneck layer, profiling, and before/after targets
19
+ - `--quick` - obvious local syntax, lint, type, or single-test failure
20
+ - `--ci` - CI/CD logs, runner environment, dependency versions, pipeline setup
21
+ - `--frontend` - browser console, screenshot, accessibility tree, network, responsive checks
22
+ - `--perf` - baseline measurements, bottleneck layer, profiling, before/after targets
23
23
 
24
- Default: systematic diagnosis with no product-code edits, scout first.
24
+ Flags are optional hints. Without one, choose the depth yourself from the evidence below.
25
25
 
26
26
  ## Proportional depth
27
27
 
28
- - **Quick/local:** one deterministic syntax, lint, type, or isolated-test failure. Keep the six-step flow, but omit an incident timeline and recurrence analysis when they cannot change the diagnosis or handoff.
28
+ - **Quick/local:** one deterministic syntax, lint, type, or isolated-test failure.
29
+ - **Standard:** a reproducible failure inside one component or service that fits neither other depth.
29
30
  - **Incident/deep:** production impact, multiple components, intermittent behavior, data/security risk, environment drift, concurrency, or two refuted hypotheses. Add a cross-source timeline, explicit elimination path, trigger/root-cause/contributing-factor separation, and recurrence-prevention gaps.
30
31
 
31
- Depth changes evidence breadth, never the diagnostic-only gate or root-cause standard. Do not make a routine local failure perform incident ceremony merely because more tools are available.
32
+ Quick/local and Standard reports write the root-cause contract, the confirmed hypothesis, the verification plan, and the fix direction; when the root cause is unknown, they list every hypothesis tested instead. Only Incident/deep reports add `Evidence Timeline`, the other hypotheses tested, `### Elimination Path`, and `### Recurrence-Prevention Handoff`. A shorter report omits those sections; it does not write them as skipped.
33
+
34
+ Depth changes evidence breadth and report length, never the standards below, the diagnostic-only gate, or the root-cause standard. Do not make a routine local failure perform incident ceremony merely because more tools are available.
32
35
 
33
36
  <DIAGNOSTIC-ONLY-GATE>
34
37
  `cf:debug` is read-only for product code.
35
38
  Do NOT edit product code, apply fixes, create migrations, or add regression tests as implementation.
36
39
  Do NOT change config, dependency versions, generated assets, or test snapshots to make the failure disappear.
40
+ Do NOT run heavy or costly reads — table scans, bulk exports, load or stress runs — against shared staging or production without the user's explicit permission; prefer local or fixture data.
37
41
  Temporary instrumentation is allowed only when it is the minimal way to observe hidden state; record the file/line, capture the proof, remove it before finishing, and report `Temporary instrumentation: removed`.
38
42
  </DIAGNOSTIC-ONLY-GATE>
39
43
 
40
44
  <HARD-GATE-SCOUT-FIRST>
41
45
  Before hypotheses, inspect the actual codebase context.
42
- You must identify:
43
- - project type, language, framework, runtime, and test runner
44
- - affected files/modules and exact symptom location
45
- - direct callers, dependents, and data/config boundaries
46
- - related tests and reproduction commands
47
- - recent commits touching affected paths
48
- - adjacent known-good implementation patterns
49
-
46
+ You must identify the project type, language, framework, runtime, and test runner; the affected files/modules and exact symptom location; direct callers, dependents, and data/config boundaries; related tests and reproduction commands; recent commits touching affected paths; and adjacent known-good implementation patterns.
50
47
  After scout, provide a 3-6 bullet codebase-context summary before evidence capture.
51
48
  Do not ask generic questions before this step unless the issue cannot be located from the prompt or repository.
52
49
  </HARD-GATE-SCOUT-FIRST>
53
50
 
54
51
  <ROOT-CAUSE-GATE>
55
52
  Do NOT recommend a fix until the root-cause contract is complete.
56
- Do NOT stop at the first plausible explanation. Test hypotheses against evidence.
53
+ Do NOT stop at the first plausible explanation unless evidence directly confirms it. Test hypotheses against evidence.
57
54
  If 2+ hypotheses are refuted, change strategy before continuing.
58
55
  If evidence is insufficient, report `Root cause: unknown`, `Missing Evidence`, and `Next Diagnostic Action`; do not hand off to `cf:fix` as ready.
56
+ Report confidence `high` only when the cause was reproduced or observed at runtime — the failing command run, a log or probe read. From static reading alone, report at most `medium`.
59
57
  Answer each item in one concrete sentence.
60
58
  If any answer contains 'probably', 'I think', 'something with', or 'maybe' — it is not an answer; gather evidence instead.
61
59
  </ROOT-CAUSE-GATE>
62
60
 
63
- If the user asks to fix while still inside `cf:debug`, finish the debug report first. Then hand off only the completed root-cause contract to `cf:fix`.
64
-
65
- ## Process Flow
66
-
67
- ```mermaid
68
- flowchart TD
69
- A[Issue Input] --> B[Step 1: Scout via cf:scout]
70
- B --> C[Step 2: Capture Evidence]
71
- C --> D[Step 3: Pattern Analysis]
72
- D --> E[Step 4: Hypothesis Tests]
73
- E --> F[Step 5: Root Cause Trace]
74
- F --> G[Step 6: Verification + Prevention Handoff]
75
- G --> H[Diagnostic Report]
76
- H --> I{Fix requested?}
77
- I -->|Yes| J[Hand off to cf:fix]
78
- I -->|No| K[Stop after diagnosis]
79
- ```
80
-
81
- **This diagram is the authoritative workflow.** `cf:debug` stops at diagnosis unless the user explicitly asks to fix.
82
-
83
- ---
84
-
85
- ## Step 1: Scout
86
-
87
- Understand the affected code before forming hypotheses.
88
-
89
- **Action:** Activate `cf:scout` for the relevant scope.
90
- If `cf:scout` is unavailable, use direct read-only reconnaissance (`rg`, file reads, test discovery, and `git log`) and state that fallback.
91
-
92
- **Checklist:**
93
- - [ ] Project type, language, framework, runtime, and test runner identified
94
- - [ ] Affected files and modules identified
95
- - [ ] Direct dependencies and call paths mapped
96
- - [ ] Inputs/outputs, data boundaries, and config/env boundaries mapped
97
- - [ ] Related tests located
98
- - [ ] Recent changes checked: `git log --oneline -10 -- <affected-files>`
99
- - [ ] Existing working examples or adjacent patterns identified
100
-
101
- **Output:** `✓ Step 1: Scouted - [N] files, [M] deps, [K] tests` plus a 3-6 bullet context summary.
102
-
103
- ---
61
+ `cf:debug` stops at diagnosis unless the user explicitly asks to fix. If the user asks to fix while still inside `cf:debug`, finish the debug report first. Then hand off only the completed root-cause contract to `cf:fix`.
104
62
 
105
- ## Step 2: Capture Evidence
63
+ ## Standards
106
64
 
107
- Create a baseline that can later prove whether the issue changed.
65
+ **Scout.** Invoke the `scout` skill (`cf:scout`) for the affected scope and fold its findings into the codebase-context summary the scout-first gate requires, including `git log --oneline -10 -- <affected-files>`. If `cf:scout` is not installed, use direct read-only reconnaissance (`rg`, file reads, test discovery, and `git log`) and say so.
108
66
 
109
- **Capture:**
110
- - Exact command, URL, user flow, or trigger
111
- - Exact error message, stack trace, failing assertion, or visual symptom
112
- - Expected vs actual behavior
113
- - Relevant logs with timestamps
114
- - Environment facts: runtime, dependency versions, OS, browser, CI runner, config
115
- - Whether the issue reproduces consistently or intermittently
116
-
117
- For Incident/deep work, build an `Evidence Timeline` from timestamped facts across relevant sources. Normalize timezones, preserve request/trace/run IDs, and distinguish observed ordering from inferred causation. Quick/local work records `Timeline: skipped - local deterministic failure`.
118
-
119
- For frontend issues, use `.claude/references/debugger/frontend-verification.md`.
120
- For CI/log issues, use `.claude/references/debugger/log-ci-analysis.md`.
121
- For performance issues, use `.claude/references/debugger/performance-diagnostics.md`.
122
-
123
- **Output:** `✓ Step 2: Evidence captured - baseline command/symptom recorded`
124
-
125
- ---
126
-
127
- ## Step 3: Pattern Analysis
128
-
129
- Before proposing a cause, compare against known-good patterns.
130
-
131
- **Check:**
132
- - Similar implementation that works
133
- - Similar tests that pass
134
- - Recent code that changed the same contract
135
- - Config/env differences between passing and failing contexts
136
- - Dependency/API contract changes
137
-
138
- **Output:** `✓ Step 3: Patterns compared - [working reference] vs [failing path]`
139
-
140
- ---
67
+ **Evidence baseline.** Capture what can later prove whether the issue changed: the exact command, URL, user flow, or trigger; the exact error, stack trace, failing assertion, or visual symptom; expected vs actual behavior; relevant logs with timestamps; environment facts (runtime, dependency versions, OS, browser, CI runner, config); and whether it reproduces consistently or intermittently. For Incident/deep work, build an `Evidence Timeline` from timestamped facts across relevant sources. Normalize timezones, preserve request/trace/run IDs, and distinguish observed ordering from inferred causation. When no source carries timestamps, the timeline says so in one line and names the sources checked. For frontend issues, use `.claude/references/debugger/frontend-verification.md`; for CI/log issues, `.claude/references/debugger/log-ci-analysis.md`; for performance issues, `.claude/references/debugger/performance-diagnostics.md`.
141
68
 
142
- ## Step 4: Hypothesis Tests
69
+ **Known-good comparison.** Before proposing a cause, compare against known-good patterns: a similar implementation that works, similar tests that pass, recent code that changed the same contract, config/env differences between passing and failing contexts, and dependency/API contract changes.
143
70
 
144
- Create 2-3 competing hypotheses. Test one variable at a time.
71
+ **Hypotheses.** When evidence does not directly confirm the first explanation, create 2-3 competing hypotheses. Test one variable at a time, each stated as `Hypothesis:`, `Confirm if:` (evidence that proves it), `Refute if:` (evidence that disproves it), `Quick test:` (command/search/log/query), and `Result: confirmed | refuted | inconclusive`. Never batch unrelated changes as a test. Prefer read-only evidence: logs, grep, stack traces, DB queries, browser traces. For flaky async tests, use `.claude/references/debugger/condition-based-waiting.md`. If 2+ hypotheses are refuted, use inversion: ask what evidence would make the current explanation impossible. Preserve an elimination path: for every confirmed, refuted, or inconclusive hypothesis, cite the observation and explain why it changes the candidate set. Quick/local and Standard reports fold it into the confirmed hypothesis's evidence; only Incident/deep reports write it under `### Elimination Path`.
145
72
 
146
- ```text
147
- Hypothesis: [statement]
148
- Confirm if: [evidence that proves it]
149
- Refute if: [evidence that disproves it]
150
- Quick test: [command/search/log/query]
151
- Result: confirmed | refuted | inconclusive
152
- ```
153
-
154
- Rules:
155
- - Never batch unrelated changes as a test.
156
- - Prefer read-only evidence: logs, grep, stack traces, DB queries, browser traces.
157
- - For flaky async tests, use `.claude/references/debugger/condition-based-waiting.md`.
158
- - If 2+ hypotheses are refuted, use inversion: ask what evidence would make the current explanation impossible.
159
- - Preserve an elimination path: for every confirmed, refuted, or inconclusive hypothesis, cite the observation and explain why it changes the candidate set.
160
-
161
- **Output:** `✓ Step 4: Hypotheses tested - [confirmed/refuted counts]`
162
-
163
- ---
164
-
165
- ## Step 5: Root Cause Trace
166
-
167
- Trace backward from symptom to origin.
168
-
169
- ```text
170
- Symptom
171
- <- immediate cause
172
- <- contributing factor
173
- <- ROOT CAUSE
174
- ```
175
-
176
- **Exact root-cause contract:**
73
+ **Root cause.** Trace backward from the symptom through the immediate cause and contributing factors to the root cause, and complete the exact root-cause contract:
177
74
  - Symptom: exact observable failure
178
75
  - Reproduction: command/user flow/log trigger
179
76
  - Expected vs actual behavior
@@ -186,35 +83,18 @@ Symptom
186
83
 
187
84
  Do not collapse correlation into causation. The root cause must explain the mechanism from trigger to symptom and identify the earliest owned invariant whose correction would prevent recurrence. Read `.claude/references/debugger/root-cause-tracing.md` for deep call/data flow or test-pollution cases.
188
85
 
189
- **Output:** `✓ Step 5: Root cause traced - [file:line/config/env]`
190
-
191
- ---
192
-
193
- ## Step 6: Blast Radius + Verification And Prevention Plan
194
-
195
- Prepare the handoff to `cf:fix` or the user.
196
-
197
- **Verification plan must include:**
198
- - Original failing command or reproduction path
199
- - Targeted regression test or scenario
200
- - Affected-module tests
201
- - Typecheck/lint/build commands when relevant
202
- - UI screenshot/console/network checks when relevant
203
- - Side-effect sweep from `.claude/references/debugger/side-effect-gate.md`
204
-
205
- For Incident/deep work, add recurrence-prevention candidates: missing invariant or validation layer, observability/alerting gap, and one regression scenario. These are evidence-backed handoff directions only; `cf:debug` does not implement them.
206
-
207
- **Output:** `✓ Step 6: Verification planned - [commands/scenarios]`
208
-
209
- ---
86
+ **Verification and prevention plan.** Prepare the handoff to `cf:fix` or the user. Verification plan must include: the original failing command or reproduction path; a targeted regression test or scenario; affected-module tests; typecheck/lint/build commands when relevant; UI screenshot/console/network checks when relevant; and the side-effect sweep from `.claude/references/debugger/side-effect-gate.md`. For Incident/deep work, add recurrence-prevention candidates: missing invariant or validation layer, observability/alerting gap, and one regression scenario. These are evidence-backed handoff directions only; `cf:debug` does not implement them.
210
87
 
211
88
  ## Diagnostic Report Format
212
89
 
90
+ Open the final answer with `## Debug Report` in this shape, keeping only the sections its depth requires under Proportional depth. Write `Temporary Instrumentation` only when instrumentation was added, and `Missing Evidence` and `Next Diagnostic Action` only when the root cause is unknown.
91
+
213
92
  ```markdown
214
93
  ## Debug Report
215
94
 
216
95
  **Issue:** [one-line summary]
217
96
  **Mode:** quick | standard | ci | frontend | perf
97
+ **Depth:** quick/local | standard | incident/deep
218
98
  **Root cause confidence:** high | medium | low | unknown
219
99
 
220
100
  ### Root Cause Contract
@@ -229,12 +109,12 @@ For Incident/deep work, add recurrence-prevention candidates: missing invariant
229
109
  - Evidence chain:
230
110
  - Blast radius:
231
111
 
232
- ### Evidence Timeline
233
- - skipped: [reason] | [timestamp/source/id/event]
234
-
235
112
  ### Hypotheses Tested
236
113
  1. [confirmed/refuted/inconclusive] [hypothesis] - [evidence]
237
114
 
115
+ ### Evidence Timeline
116
+ - [timestamp/source/id/event]
117
+
238
118
  ### Elimination Path
239
119
  - [candidate removed or retained] - [decisive observation]
240
120
 
@@ -249,7 +129,7 @@ For Incident/deep work, add recurrence-prevention candidates: missing invariant
249
129
  - Regression scenario:
250
130
 
251
131
  ### Temporary Instrumentation
252
- - none | removed: [file:line, purpose, proof captured]
132
+ - removed: [file:line, purpose, proof captured]
253
133
 
254
134
  ### Recommended Fix Direction
255
135
  [Smallest root-cause fix, or "insufficient evidence"]
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: cf:develop
3
- description: "Implement an explicitly requested process-first feature or task, run its real verification, and close it with one evidence owner. Also supports existing legacy Specs packets."
3
+ description: "Implement an explicitly requested process-first feature or task, run its real verification, and close it with one evidence owner."
4
4
  user-invocable: true
5
5
  when_to_use: "Use to implement a ready feature packet, one named task, or a clear low-risk change."
6
6
  category: utilities
@@ -42,7 +42,7 @@ The pair exits `2` before a task edit, receipt, worktree, subagent, or commit. D
42
42
  ## Resolve the work packet
43
43
 
44
44
  1. Resolve one `specs/<feature>/plan.md` plus flat `task-NN-*.md`; an explicit task path wins.
45
- 2. Read C1 scope, exclusions, acceptance mapping, ownership, and task order.
45
+ 2. Read GATE-SCOPE scope, exclusions, acceptance mapping, ownership, and task order.
46
46
  3. A task is unblocked only when every named dependency is `done` with a valid current inline Receipt.
47
47
  4. Without a packet, work directly only when the change is clear, isolated, reversible, and low-risk.
48
48
 
@@ -50,16 +50,16 @@ Ambiguity, overlapping ownership, a dependency cycle, or a missing Verification
50
50
 
51
51
  ### Accepted process-first fast path
52
52
 
53
- When line two is `Specs-Contract: process-first-ready-v1`, reuse the accepted C1/C2.
53
+ When line two is `Specs-Contract: process-first-ready-v1`, reuse the accepted GATE-SCOPE/GATE-REVIEW.
54
54
  Perform only a narrow freshness scout for target revision, scope drift, ownership
55
- conflict, and dependency/state changes. Reopen C1 only for evidenced scope drift;
56
- do not research, replan, or add a routine user gate before a real blocker or C3.
55
+ conflict, and dependency/state changes. Reopen GATE-SCOPE only for evidenced scope drift;
56
+ do not research, replan, or add a routine user gate before a real blocker or GATE-DONE.
57
57
  This is a source instruction contract, not a parser/runtime or live-model guarantee;
58
58
  live-model adherence is `[UNVERIFIED]` without a host invocation.
59
59
 
60
60
  Load the plan index into working context once. Later byte rereads are narrow drift
61
61
  checks; load only the active task's referenced coverage-profile rows, Outcome,
62
- Scope, Ownership, Acceptance, Dependencies, Verification Plan, owned code, and consumers.
62
+ Scope, Ownership, Steps, Acceptance, Dependencies, Verification Plan, Failure Protocol, owned code, and consumers.
63
63
 
64
64
  ## Current-byte selection
65
65
 
@@ -78,7 +78,7 @@ before any Status or Receipt write.
78
78
  | Status is missing, duplicate, or unknown | Stop as malformed state. | Stop as malformed state. |
79
79
 
80
80
  Feature mode repeats this selection only after the current task closes. Specific-task
81
- mode never touches a sibling and returns after its successful sync without chaining or C3.
81
+ mode never touches a sibling and returns after its successful sync without chaining or GATE-DONE.
82
82
 
83
83
  ## Modes
84
84
 
@@ -95,25 +95,20 @@ isolated worktrees, a bounded wave, and one controller writer; otherwise work se
95
95
 
96
96
  ### Flash (`--flash`)
97
97
 
98
- Flash is an explicit speed trade-off, never completion:
99
-
100
- - run only an available cheap syntax, typecheck, or compile preflight;
101
- - skip dedicated tests, extended manual checks, and review retry loops;
102
- - keep `Status: in_progress` and record `FLASH_UNVERIFIED` plus blocker
103
- `awaiting /cf:test <feature>`;
104
- - do not unblock dependents or report Test PASS, Evidence PASS, production-ready, or done;
105
- - stop this invocation without chaining.
106
-
107
- Only a later explicit non-Flash invocation may recover the task. It treats Flash
108
- output as ephemeral, inspects current bytes and the owned diff, and obtains fresh
109
- canonical proof through the trusted sync-finalize path. Never weaken, delete, or
110
- rewrite tests to make Flash look complete.
98
+ Load `references/quality-gate.md`. Flash is an explicit speed trade-off, never completion: run a
99
+ cheap preflight, skip dedicated tests, keep `Status: in_progress` with `FLASH_UNVERIFIED` and the
100
+ blocker `awaiting /cf:test <feature>`, do not unblock dependents or report PASS, and
101
+ stop this invocation without chaining.
102
+ Only a later explicit non-Flash invocation may recover the task.
103
+ It treats Flash output as ephemeral, inspects current bytes and the owned diff, and obtains fresh
104
+ canonical proof through the trusted sync-finalize path. Never weaken, delete, or rewrite tests to make Flash look complete.
111
105
 
112
106
  ## Task cycle
113
107
 
114
108
  ### 1. Scout
115
109
 
116
110
  Trace entrypoints, callers, dependents, registration, errors, and owned files.
111
+ Read the test or probe that will judge this task before implementing against it.
117
112
  Compilation does not prove an unmounted UI, unregistered route, uncalled service,
118
113
  or missing consumer.
119
114
 
@@ -124,8 +119,11 @@ mutation. Resume only unmet work, then run fresh verification.
124
119
 
125
120
  ### 2. Implement
126
121
 
122
+ Unless under `--flash` or the command costs money or writes artifacts, run the task's exact Verification Plan command once before changing anything and expect it to fail; this pre-change run is not a repair round.
123
+ Passing before any change, outside a resumed task, means the plan cannot judge the work and is a blocker; so is a failure naming something other than the unmet Acceptance, which is a blocker to raise, not a defect to work around while implementing. A failure from the command itself — a wrong path, a missing tool or module, the environment — is BLOCKED, not FAIL, even when the runner reports `not ok` and even when the Acceptance or a test file shows the right command: set the task's single `Status:` to `blocked` with a `Blocker:` line naming the command and its error, write no Receipt, revert any edit made in this run, and report; you may suggest a corrected command for the plan, but never run it as proof.
124
+
127
125
  Honor Scope, Ownership, Acceptance, and Dependencies. Do not silently replace named contracts;
128
- scope expansion requires evidence and a return to C1, not implementation convenience.
126
+ scope expansion requires evidence and a return to GATE-SCOPE, not implementation convenience.
129
127
  Load `references/subagent-patterns.md` when dispatch helps; only the controller writes Status or Receipt.
130
128
 
131
129
  ### 3. Verify, review, and close
@@ -134,12 +132,14 @@ The test owner executes each exact Verification Plan and records real output. Th
134
132
  review owner evaluates correctness, security, scope, and reachability without
135
133
  manufacturing proof. Use `PASS | PASS_WITH_WARNINGS | FAIL | BLOCKED`; only literal PASS can close.
136
134
 
137
- Load `references/quality-gate.md`. Remediate an observed failure, then rerun only
138
- affected proof/review. Do not blind-retry a blocked environment. After three failed
139
- repair rounds, stop and ask the user.
135
+ Load `references/quality-gate.md`. Remediate an observed failure (a blocked Command is not a failure to remediate), then rerun only
136
+ affected proof/review. Do not blind-retry a blocked environment. One repair round is one
137
+ observed failure plus its repair and rerun, from proof or from review alike. After three
138
+ failed repair rounds, stop and ask the user.
140
139
 
141
- After a real pass, the controller writes the task's final inline `## Receipt` with
142
- `Verification: PASS`, exact `Command`, `Exit: 0`, runtime-derived `Base:` and `Head:`,
140
+ **The Receipt is written last, after proof and review have both passed**; writing it earlier
141
+ and reopening the task is a defect, not a shortcut. After a real pass, the controller writes the task's final inline `## Receipt` with
142
+ `Verification: PASS`, exact `Command`, `Exit: 0`, `Base:` and `Head:` copied from the `Base` and `Head` fields of `node .claude/scripts/provenance.cjs --project-root . --specs-root specs --spec-file <task file> --feature-name <feature> --session <any label> --json` run after the last change outside the specs root (never typed or computed by hand),
143
143
  non-empty current output, and required negative/reachability/artifact proof; then it
144
144
  sets `Status: done` and only implemented checkboxes. Missing, stale, contradictory,
145
145
  zero-test, placeholder, marker-only, skipped, or remembered proof is unfinished.
@@ -148,7 +148,7 @@ zero-test, placeholder, marker-only, skipped, or remembered proof is unfinished.
148
148
 
149
149
  Reread the task after sync and recompute the queue from current bytes. Specific-task
150
150
  mode has already returned. Full-feature mode continues one task at a time, then runs
151
- the named feature-level integration and reachability checks. Before C3, apply the
151
+ the named feature-level integration and reachability checks. Before GATE-DONE, apply the
152
152
  quality-gate final-Head fixed point; show current evidence and limitations, and let
153
153
  the user decide completion.
154
154
 
@@ -167,12 +167,3 @@ stable Base/Head binding, resolved blocking review findings, and no scope substi
167
167
  - `references/parallel-waves.md` — opt-in isolated worktree waves.
168
168
  - `references/subagent-patterns.md` — task-local briefs and controller-only handoff.
169
169
  - `references/implementation-notes-template.html` — only with `--notes`.
170
-
171
- ## Legacy workflow compatibility
172
-
173
- If the selected feature contains `spec.json`, use its persisted `workflow_policy`,
174
- `task_registry`, nested task paths, typed boundaries, separate task receipts, and
175
- feature closeout receipt exactly as legacy adapters require. Preserve `planning_depth`,
176
- `assurance_level`, derived lane, and read-only `execution_tier`; do not project these
177
- fields into a new v3 packet. Keep JSON and Markdown status synchronized, and use the
178
- existing completion-authority path for final closeout.
@@ -70,11 +70,3 @@ After the final wave, run feature integration and reachability proof. The contro
70
70
  then writes inline Receipts and Status one task at a time. Worker reports and range
71
71
  metadata are inputs, not completion authority; incomplete workers cannot be hidden
72
72
  by successful siblings.
73
-
74
- ## Legacy workflow compatibility
75
-
76
- For an existing `spec.json` feature, readiness and dependencies come from the
77
- persisted `task_registry` and typed `coordination.boundaries`. Workers still do
78
- not edit that state. The controller writes the legacy separate task receipt,
79
- synchronizes registry plus nested task Markdown, and creates the required final
80
- feature receipt only after integrated proof.
@@ -26,7 +26,10 @@ Before completion, verify:
26
26
  4. negative/failure behavior named by Acceptance;
27
27
  5. artifact bytes and SHA-256 when the task declares an artifact;
28
28
  6. an inline `## Receipt` with `Verification: PASS`, exact `Command`, `Exit: 0`,
29
- runtime-bound Base/Head, and non-empty fenced command output;
29
+ runtime-bound Base/Head, and non-empty fenced command output; take Base and Head
30
+ from the `Base` and `Head` fields printed by
31
+ `node .claude/scripts/provenance.cjs --project-root . --specs-root specs --spec-file <task file> --feature-name <feature> --session <any label> --json`,
32
+ run after the last change outside the specs root, and never type, abbreviate, or compute them by hand;
30
33
  7. correctness/security/scope review at the required depth.
31
34
 
32
35
  `PRECHECK_FAIL` outranks no-tests. Missing, pending, placeholder, contradictory,
@@ -74,19 +77,25 @@ manufacture a green result.
74
77
 
75
78
  ## Final-Head fixed point
76
79
 
77
- Before C3, repeat within the same three-round repair cap:
80
+ Before GATE-DONE, repeat within the same three-round repair cap:
78
81
 
79
82
  1. Capture runtime Head and list every `done` task whose Receipt is stale or
80
83
  bound to a different Head.
81
84
  2. Run each stale task's exact proof freshly and let only the controller replace
82
- its inline Receipt. If proof changes any non-Specs byte, stop as BLOCKED;
85
+ its inline Receipt. A Receipt that declares artifacts with `sha256` may instead be
86
+ rebound to the current Head once every declared hash is recomputed and matches, and only
87
+ when no file the proof reads changed between its recorded Head and the current one and
88
+ every claim in the Receipt is derived from those artifacts; matching bytes prove the
89
+ artifacts did not move, not that the proof would still produce them. Otherwise, and for a
90
+ Receipt with no artifact, re-run; only the controller rebinds.
91
+ If proof changes any non-Specs byte, stop as BLOCKED;
83
92
  remediation must settle those bytes before proof can bind them.
84
93
  3. Capture runtime Head again and rescan all `done` Receipts.
85
94
 
86
95
  Stop only when consecutive Head captures are identical and every `done` Receipt
87
96
  names that current Head. A single pass, remembered result, copied Receipt, or
88
97
  proof promoted from another level is not a fixed point. If Head keeps moving or
89
- the repair cap is reached, report the blocker instead of opening C3.
98
+ the repair cap is reached, report the blocker instead of opening GATE-DONE.
90
99
 
91
100
  ## Flash gate
92
101
 
@@ -106,16 +115,9 @@ report production readiness. Only a later explicit non-Flash invocation may
106
115
  recover it: discard Flash output as canonical evidence, inspect current bytes
107
116
  and the owned diff, and run fresh proof under the same sync-finalize contract.
108
117
 
109
- ## Docs impact and C3
118
+ ## Docs impact and GATE-DONE
110
119
 
111
120
  After proof and review, classify docs impact as `none`, `minor`, or `major`.
112
121
  Update only affected existing docs when impact is not none. Show the user the
113
- current command evidence and limitations at C3; do not infer approval from a
122
+ current command evidence and limitations at GATE-DONE; do not infer approval from a
114
123
  receipt.
115
-
116
- ## Legacy workflow compatibility
117
-
118
- Existing kernel packets keep their separate `receipts/<task-basename>.md`, task
119
- identity/path metadata, final `feature-receipt.md`, persisted independent-audit
120
- obligations, and completion-authority checks. The same proof/review ownership
121
- applies. Do not copy that storage shape into a flat process-first task.
@@ -125,7 +125,7 @@ Create the standard project docs set from the current source code.
125
125
  Use when:
126
126
  - the repository has code but no useful docs
127
127
  - the user asks to create project docs
128
- - SessionStart docs-sync reports missing documentation
128
+ - `echo '{}' | node .claude/hooks/docs-sync.cjs` reports missing documentation
129
129
 
130
130
  Load:
131
131
  - `references/standard-docs-workflow.md`
@@ -138,7 +138,7 @@ Refresh existing docs after code changes.
138
138
  Use when:
139
139
  - docs exist and source code changed
140
140
  - the user asks to update or refresh docs
141
- - docs-sync reports stale docs
141
+ - `echo '{}' | node .claude/hooks/docs-sync.cjs` reports stale docs
142
142
 
143
143
  Load:
144
144
  - `references/standard-docs-workflow.md`
@@ -24,7 +24,7 @@ Refresh existing living docs after code or project-state changes without rewriti
24
24
  4. Identify update focus:
25
25
  - user-named module or doc
26
26
  - recent source diff
27
- - docs-sync stale hash signal
27
+ - docs-sync stale hash signal (run `echo '{}' | node .claude/hooks/docs-sync.cjs` from the project root)
28
28
  - a full docs refresh only when user asks for it
29
29
 
30
30
  ### Phase 1: Source Change Scout