@gobing-ai/spur 0.3.41 → 0.3.43

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 (185) hide show
  1. package/.claude-plugin/marketplace.json +15 -0
  2. package/README.md +15 -1
  3. package/config/templates/AGENTS.md +5 -3
  4. package/config/workflows/task-pipeline.yaml +113 -12
  5. package/package.json +15 -12
  6. package/plugins/README.md +655 -0
  7. package/plugins/sp/README.md +621 -0
  8. package/plugins/sp/agents/expert-spur.md +109 -0
  9. package/plugins/sp/agents/super-coder.md +126 -0
  10. package/plugins/sp/agents/super-planner.md +283 -0
  11. package/plugins/sp/agents/super-reviewer.md +154 -0
  12. package/plugins/sp/commands/dev-arch.md +30 -0
  13. package/plugins/sp/commands/dev-brainstorm.md +40 -0
  14. package/plugins/sp/commands/dev-changelog.md +28 -0
  15. package/plugins/sp/commands/dev-daily.md +29 -0
  16. package/plugins/sp/commands/dev-debug.md +29 -0
  17. package/plugins/sp/commands/dev-dogfood.md +33 -0
  18. package/plugins/sp/commands/dev-featurechange.md +130 -0
  19. package/plugins/sp/commands/dev-find-conflict.md +51 -0
  20. package/plugins/sp/commands/dev-find-issue.md +76 -0
  21. package/plugins/sp/commands/dev-find-next.md +60 -0
  22. package/plugins/sp/commands/dev-fixall.md +33 -0
  23. package/plugins/sp/commands/dev-gitmsg.md +28 -0
  24. package/plugins/sp/commands/dev-gtd.md +97 -0
  25. package/plugins/sp/commands/dev-handover.md +26 -0
  26. package/plugins/sp/commands/dev-idea.md +50 -0
  27. package/plugins/sp/commands/dev-next.md +31 -0
  28. package/plugins/sp/commands/dev-parallel.md +30 -0
  29. package/plugins/sp/commands/dev-plan.md +46 -0
  30. package/plugins/sp/commands/dev-refine.md +48 -0
  31. package/plugins/sp/commands/dev-refineall.md +65 -0
  32. package/plugins/sp/commands/dev-refresh.md +32 -0
  33. package/plugins/sp/commands/dev-reverse.md +32 -0
  34. package/plugins/sp/commands/dev-review.md +31 -0
  35. package/plugins/sp/commands/dev-run.md +63 -0
  36. package/plugins/sp/commands/dev-runall.md +83 -0
  37. package/plugins/sp/commands/dev-simplify.md +39 -0
  38. package/plugins/sp/commands/dev-unit.md +29 -0
  39. package/plugins/sp/commands/dev-verify.md +48 -0
  40. package/plugins/sp/commands/dev-verifyall.md +72 -0
  41. package/plugins/sp/commands/dev-wrap.md +48 -0
  42. package/plugins/sp/commands/dev-wrapall.md +51 -0
  43. package/plugins/sp/commands/rule-add.md +18 -0
  44. package/plugins/sp/commands/rule-refine.md +18 -0
  45. package/plugins/sp/commands/rule-scan.md +18 -0
  46. package/plugins/sp/commands/spur-init.md +22 -0
  47. package/plugins/sp/commands/workflow-add.md +18 -0
  48. package/plugins/sp/commands/workflow-refine.md +18 -0
  49. package/plugins/sp/hooks/agent-hint.ts +60 -0
  50. package/plugins/sp/hooks/careful-guard.ts +147 -0
  51. package/plugins/sp/hooks/context-post-tool.ts +325 -0
  52. package/plugins/sp/hooks/context-session-start.ts +182 -0
  53. package/plugins/sp/hooks/context-session-stop.ts +95 -0
  54. package/plugins/sp/hooks/hooks.json +51 -0
  55. package/plugins/sp/hooks/pi/guard-extension.ts +341 -0
  56. package/plugins/sp/hooks/task-write-guard.ts +84 -0
  57. package/plugins/sp/plugin.json +8 -0
  58. package/plugins/sp/scripts/batch-preflight.ts +204 -0
  59. package/plugins/sp/scripts/daily-summary/daily-summary.ts +606 -0
  60. package/plugins/sp/scripts/daily-summary/logger.ts +28 -0
  61. package/plugins/sp/scripts/dogfood-testing/detect-pipeline-driving.ts +363 -0
  62. package/plugins/sp/scripts/dogfood-testing/validate-report.ts +168 -0
  63. package/plugins/sp/scripts/feature-sync-bounded.ts +451 -0
  64. package/plugins/sp/scripts/stage-registry-adapter.ts +1341 -0
  65. package/plugins/sp/scripts/task-size-precheck.ts +202 -0
  66. package/plugins/sp/scripts/validate-commands.ts +651 -0
  67. package/plugins/sp/scripts/validate-flag-contracts.ts +875 -0
  68. package/plugins/sp/skills/brainstorm/SKILL.md +361 -0
  69. package/plugins/sp/skills/brainstorm/agents/openai.yaml +14 -0
  70. package/plugins/sp/skills/brainstorm/examples/ideation-example.md +209 -0
  71. package/plugins/sp/skills/brainstorm/metadata.openclaw +7 -0
  72. package/plugins/sp/skills/brainstorm/references/grilling-interview.md +68 -0
  73. package/plugins/sp/skills/brainstorm/references/workflows.md +255 -0
  74. package/plugins/sp/skills/branch-workflow/SKILL.md +109 -0
  75. package/plugins/sp/skills/branch-workflow/references/branch-lifecycle.md +69 -0
  76. package/plugins/sp/skills/branch-workflow/references/worktree-patterns.md +100 -0
  77. package/plugins/sp/skills/code-implementation/SKILL.md +203 -0
  78. package/plugins/sp/skills/code-implementation/references/debugging.md +64 -0
  79. package/plugins/sp/skills/code-implementation/references/implementation-patterns.md +113 -0
  80. package/plugins/sp/skills/code-improvement/SKILL.md +231 -0
  81. package/plugins/sp/skills/code-improvement/references/deepening-signals.md +205 -0
  82. package/plugins/sp/skills/code-review/SKILL.md +112 -0
  83. package/plugins/sp/skills/code-review/references/receiving-code-review.md +70 -0
  84. package/plugins/sp/skills/code-review/references/review-lenses.md +117 -0
  85. package/plugins/sp/skills/code-review/references/self-review-checklist.md +53 -0
  86. package/plugins/sp/skills/code-review/references/verification-before-completion.md +68 -0
  87. package/plugins/sp/skills/code-simplification/SKILL.md +225 -0
  88. package/plugins/sp/skills/code-testing/SKILL.md +108 -0
  89. package/plugins/sp/skills/code-testing/references/stacks/bun-ts.md +165 -0
  90. package/plugins/sp/skills/code-testing/references/stacks/go.md +88 -0
  91. package/plugins/sp/skills/code-testing/references/stacks/python.md +117 -0
  92. package/plugins/sp/skills/code-testing/references/test-loop-breaker.md +37 -0
  93. package/plugins/sp/skills/code-testing/references/test-output-discipline.md +52 -0
  94. package/plugins/sp/skills/code-testing/references/unit-testing.md +212 -0
  95. package/plugins/sp/skills/code-verification/SKILL.md +535 -0
  96. package/plugins/sp/skills/code-verification/references/code-improvement.md +39 -0
  97. package/plugins/sp/skills/code-verification/references/secu-review.md +94 -0
  98. package/plugins/sp/skills/code-verification/references/verdict-schema.md +141 -0
  99. package/plugins/sp/skills/conflict-finding/SKILL.md +254 -0
  100. package/plugins/sp/skills/conflict-finding/references/authority-resolution.md +258 -0
  101. package/plugins/sp/skills/conflict-finding/references/comparison-protocol.md +277 -0
  102. package/plugins/sp/skills/conflict-finding/references/finding-contract.md +346 -0
  103. package/plugins/sp/skills/conflict-finding/references/remediation-routing.md +276 -0
  104. package/plugins/sp/skills/daily-summary/SKILL.md +171 -0
  105. package/plugins/sp/skills/daily-summary/agents/openai.yaml +13 -0
  106. package/plugins/sp/skills/doc-evolve/SKILL.md +175 -0
  107. package/plugins/sp/skills/doc-evolve/references/operations.md +93 -0
  108. package/plugins/sp/skills/dogfood-testing/SKILL.md +608 -0
  109. package/plugins/sp/skills/dogfood-testing/references/monitor-ledger.md +211 -0
  110. package/plugins/sp/skills/dogfood-testing/references/report-template.md +351 -0
  111. package/plugins/sp/skills/doubt-driven-development/SKILL.md +136 -0
  112. package/plugins/sp/skills/functional-review/SKILL.md +364 -0
  113. package/plugins/sp/skills/functional-review/references/verdict-schema.md +133 -0
  114. package/plugins/sp/skills/indexed-context/SKILL.md +164 -0
  115. package/plugins/sp/skills/issue-finding/SKILL.md +442 -0
  116. package/plugins/sp/skills/issue-finding/agents/openai.yaml +15 -0
  117. package/plugins/sp/skills/issue-finding/examples/expected-findings.json +27 -0
  118. package/plugins/sp/skills/issue-finding/examples/session-test-loop.jsonl +23 -0
  119. package/plugins/sp/skills/issue-finding/references/session-formats.md +151 -0
  120. package/plugins/sp/skills/next-feature/SKILL.md +125 -0
  121. package/plugins/sp/skills/next-feature/references/handoff-routing.md +92 -0
  122. package/plugins/sp/skills/next-feature/references/proposal-contract.md +49 -0
  123. package/plugins/sp/skills/next-feature/references/ranking-rubric.md +52 -0
  124. package/plugins/sp/skills/next-feature/references/signal-derivation.md +67 -0
  125. package/plugins/sp/skills/next-router/SKILL.md +181 -0
  126. package/plugins/sp/skills/next-router/references/messages.md +90 -0
  127. package/plugins/sp/skills/next-router/references/routing-table.md +216 -0
  128. package/plugins/sp/skills/parallel-execution/SKILL.md +148 -0
  129. package/plugins/sp/skills/parallel-execution/references/dispatch-surface.md +109 -0
  130. package/plugins/sp/skills/parallel-execution/references/fan-out-patterns.md +101 -0
  131. package/plugins/sp/skills/parallel-execution/references/result-synthesis.md +94 -0
  132. package/plugins/sp/skills/reverse-engineering/SKILL.md +375 -0
  133. package/plugins/sp/skills/reverse-engineering/agents/openai.yaml +18 -0
  134. package/plugins/sp/skills/source-driven-development/SKILL.md +124 -0
  135. package/plugins/sp/skills/spec-decomposition/SKILL.md +117 -0
  136. package/plugins/sp/skills/spec-decomposition/references/decomposition.md +539 -0
  137. package/plugins/sp/skills/spur-cli/SKILL.md +133 -0
  138. package/plugins/sp/skills/spur-cli/references/agent.md +179 -0
  139. package/plugins/sp/skills/spur-cli/references/features/acceptance-criteria.md +82 -0
  140. package/plugins/sp/skills/spur-cli/references/features/hierarchy-mece.md +177 -0
  141. package/plugins/sp/skills/spur-cli/references/features/roadmap-priority.md +84 -0
  142. package/plugins/sp/skills/spur-cli/references/features/verbs.md +122 -0
  143. package/plugins/sp/skills/spur-cli/references/features.md +234 -0
  144. package/plugins/sp/skills/spur-cli/references/init.md +119 -0
  145. package/plugins/sp/skills/spur-cli/references/message.md +98 -0
  146. package/plugins/sp/skills/spur-cli/references/rules/authoring-rules.md +212 -0
  147. package/plugins/sp/skills/spur-cli/references/rules/fine-tuning.md +148 -0
  148. package/plugins/sp/skills/spur-cli/references/rules/operations.md +228 -0
  149. package/plugins/sp/skills/spur-cli/references/rules/validation-and-extension.md +129 -0
  150. package/plugins/sp/skills/spur-cli/references/rules.md +209 -0
  151. package/plugins/sp/skills/spur-cli/references/serve.md +58 -0
  152. package/plugins/sp/skills/spur-cli/references/tasks/l3-guard-cheatsheet.md +98 -0
  153. package/plugins/sp/skills/spur-cli/references/tasks/section-editing.md +95 -0
  154. package/plugins/sp/skills/spur-cli/references/tasks/verbs.md +361 -0
  155. package/plugins/sp/skills/spur-cli/references/tasks.md +280 -0
  156. package/plugins/sp/skills/spur-cli/references/team.md +133 -0
  157. package/plugins/sp/skills/spur-cli/references/workflows/authoring-workflows.md +226 -0
  158. package/plugins/sp/skills/spur-cli/references/workflows/operations.md +211 -0
  159. package/plugins/sp/skills/spur-cli/references/workflows/validation-and-extension.md +129 -0
  160. package/plugins/sp/skills/spur-cli/references/workflows.md +355 -0
  161. package/plugins/sp/skills/spur-dev/SKILL.md +224 -0
  162. package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +196 -0
  163. package/plugins/sp/skills/spur-dev/references/cross-cutting.md +680 -0
  164. package/plugins/sp/skills/spur-dev/references/decision-brief.md +80 -0
  165. package/plugins/sp/skills/spur-dev/references/dev-operations.md +546 -0
  166. package/plugins/sp/skills/spur-dev/references/done-housekeeping.md +164 -0
  167. package/plugins/sp/skills/spur-dev/references/execution-batch.md +790 -0
  168. package/plugins/sp/skills/spur-dev/references/execution-workflow.md +352 -0
  169. package/plugins/sp/skills/spur-dev/references/feature-link-helper.md +191 -0
  170. package/plugins/sp/skills/spur-dev/references/flag-glossary.md +417 -0
  171. package/plugins/sp/skills/spur-dev/references/gate-checklists.md +171 -0
  172. package/plugins/sp/skills/spur-dev/references/glossary.md +95 -0
  173. package/plugins/sp/skills/spur-dev/references/idea-evaluation.md +80 -0
  174. package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +120 -0
  175. package/plugins/sp/skills/spur-dev/references/planning-workflow.md +302 -0
  176. package/plugins/sp/skills/spur-dev/references/product-planning.md +206 -0
  177. package/plugins/sp/skills/spur-dev/references/section-batching.md +24 -0
  178. package/plugins/sp/skills/sys-architecture/SKILL.md +155 -0
  179. package/plugins/sp/skills/sys-architecture/references/decision-method.md +137 -0
  180. package/plugins/sp/skills/sys-architecture/references/upkeep-survey.md +75 -0
  181. package/plugins/sp/skills/sys-debugging/SKILL.md +228 -0
  182. package/plugins/sp/skills/sys-debugging/references/debugging-protocol.md +62 -0
  183. package/plugins/sp/skills/test-driven-development/SKILL.md +248 -0
  184. package/plugins/sp/skills/wayfinder/SKILL.md +292 -0
  185. package/spur.js +6035 -4963
@@ -0,0 +1,164 @@
1
+ # Done-Time Housekeeping
2
+
3
+ Shared done-time contract for sp plugin agents. Every agent that drives a task to completion -
4
+ whether manually or via pipeline - MUST honor the following obligations. A subagent spawns cold
5
+ (no session context); this reference makes the obligations explicit so the launch prompt need not
6
+ restate them.
7
+
8
+ Agents cite this reference by file path - never by cross-file section anchor (anchor links break
9
+ silently when a heading is renamed or a file body is replaced; a path citation to a dedicated file
10
+ breaks loudly if the target moves).
11
+
12
+ ## F1 - Flip completed checklist boxes
13
+
14
+ When a Plan/Requirements/AC item is completed, flip `[ ]` -> `[x]` in the same `--section` update
15
+ that lands the section content. Never let a `done` task ship with unchecked boxes on completed
16
+ work - a reader cannot tell `done` from `abandoned` by the boxes alone.
17
+
18
+ Stray template-placeholder boxes (e.g. the standard template's `- [ ] Acceptance checklist item`
19
+ or `- [ ] Implementation step`) that you did **not** author as real work must either be replaced
20
+ with real items or removed - do not leave them as `[ ]` in a `done` task. "I only checked the real
21
+ ones" is not compliant; the invariant is **zero** `- [ ]` lines remain.
22
+
23
+ Invariant: zero `- [ ]` entries (real or placeholder) anywhere in a `done` task at transition time.
24
+
25
+ ## F2 - Honest lifecycle transitions
26
+
27
+ Drive the real `task-pipeline.yaml` FSM where applicable:
28
+
29
+ ```
30
+ spur workflow run .spur/workflows/task-pipeline.yaml --vars '{"wbs":"<wbs>"}'
31
+ ```
32
+
33
+ If you hand-walk lifecycle statuses (manual `spur task update <wbs> <status>` without the
34
+ pipeline), you MUST state so explicitly in your final message and name the gate you verified:
35
+
36
+ ```
37
+ Transitioned manually. Gate verified: spur task check <wbs> --strict-core -> PASS
38
+ ```
39
+
40
+ Silent manual transitions are the anti-pattern to forbid. Either the pipeline ran (name the
41
+ run-id) or you walked it manually (name the gate you checked).
42
+
43
+ ## F4 - Raw gate evidence for high-stakes tasks
44
+
45
+ Threshold is by **change type**, not priority: a task is high-stakes if it touches code, tests, or
46
+ shared infrastructure. Priority (P1/P2) is advisory - it does not by itself force raw paste on a
47
+ pure doc/markdown edit. For high-stakes tasks, paste the **raw tail output** of every verification
48
+ gate that applies - not a one-line "green" summary. Include:
49
+
50
+ - `bun run lint` tail (last 20 lines minimum)
51
+ - `bun run test` tail (last 20 lines minimum)
52
+ - `bun run test-cf` tail (last 20 lines minimum)
53
+ - `bun run build` tail (last 20 lines minimum)
54
+
55
+ A one-line "all gates green" summary is acceptable only for doc-only changes with no code impact.
56
+
57
+ ## F5 - Clean staging files after landing sections
58
+
59
+ After `spur task update <wbs> --section <name> --from-file /tmp/<file>` succeeds, immediately
60
+ `rm /tmp/<file>`. Do not accumulate staging files in `/tmp`. Cross-reference: this is step 3 of
61
+ the section-editing workflow in `cross-cutting.md` - follow it without exception.
62
+
63
+ Invariant: no `--from-file` staging files left in `/tmp` after the task is done.
64
+
65
+ ## F6 - Recovering from a pipeline `agent.run` timeout
66
+
67
+ When an `agent.run` step is killed at the timeout wall, the run is dead but the work may be
68
+ partly on disk. Force-done with a provenance override is the sanctioned recovery - it bypasses
69
+ the verify FSM, so it carries obligations. Added by task 0398 R5 after the H6 batch used this
70
+ path six times as tribal knowledge.
71
+
72
+ **Prefer resume over force-done when the implement step timed out with substantial partial
73
+ work (task 0424):** instead of discarding the partial tree and force-doning, follow the
74
+ timed-out-implement resume runbook in
75
+ [`execution-workflow.md`](execution-workflow.md#large-tasks-and-timed-out-implement-resume-task-0424)
76
+ — establish green from the partial files, complete the remaining requirements against that
77
+ tree, and only then force-done if the pipeline is not worth re-driving. F6 below remains the
78
+ recovery when the partial work is not worth keeping or the manual path is already complete.
79
+
80
+ **1. Recognise it.** A timeout leaves `.spur/run/<runId>-<step>-partial.md` and the run reports
81
+ `exited with code 3`. That is a killed subprocess, not a failed assertion - do not read the
82
+ partial file as a verdict.
83
+
84
+ ```bash
85
+ ls -la .spur/run/*-partial.md # handoff files, newest last
86
+ spur workflow trace <run-id> # confirm the terminal state
87
+ ```
88
+
89
+ **2. Establish green by hand.** The pipeline's `test` step never ran to completion, so nothing
90
+ has verified the tree. You must:
91
+
92
+ ```bash
93
+ bun run lint
94
+ bun run test
95
+ ```
96
+
97
+ Both must pass before you go further. Establish the environmental baseline first if you are in a
98
+ restricted sandbox - port-binding and `ps` denials produce failures that are not yours (see the
99
+ project's sandbox notes). Real regressions are *additional* failures.
100
+
101
+ **3. Finish the work the step abandoned.** Write the sections the killed step would have written
102
+ (`## Solution`, `## Testing`, and the `## Review` P1-P4 table - the L3 `review-priority-table`
103
+ gate will reject the task without it). Use the normal `--section --from-file` contract.
104
+
105
+ **4. Force-done with an honest reason.**
106
+
107
+ ```bash
108
+ SPUR_PROVENANCE_OVERRIDE=1 spur task update <wbs> done --force-done \
109
+ --reason "<step> agent.run timed out at <N>s; recovered manually: lint clean, <suite> pass, sections authored by hand"
110
+ ```
111
+
112
+ The reason is persisted as `done_reason` and is the only record that this task did not earn its
113
+ `done` through the FSM. Name the step, the timeout, and the manual evidence. "Completed" is not
114
+ an acceptable reason.
115
+
116
+ **5. Regenerate the verdict.** Force-done skips verdict generation, so the task lands `done` with
117
+ no artifact and `spur feature check` will read the scenario as unverified:
118
+
119
+ ```bash
120
+ spur task verdict <wbs> --from-answer .spur/run/<wbs>-verify-answer.txt
121
+ ```
122
+
123
+ Author the answer file with **both** tables - a `| Req | Status | Evidence |` table covering every
124
+ `R{n}`, and an `| AC | Status | Evidence Type | Evidence |` table covering **every declared
125
+ scenario**, not just the ones needed to clear `spur feature check`. The feature gate only requires
126
+ one matching MET row per *feature* scenario; satisfying just those leaves per-task AC coverage
127
+ silently incomplete (H6 shipped at 23/48 that way, with one verdict carrying an empty
128
+ `acceptanceCriteria` array and still reading PASS). See `ac-style-guide.md` §
129
+ "Verdict AC ↔ feature scenario linkage" for the id forms and evidence vocabulary.
130
+
131
+ **Invariant:** a force-done task has a non-empty `done_reason` naming the timeout, a verdict
132
+ artifact whose AC rows cover every declared scenario, and a green lint/test run recorded in
133
+ `## Testing`.
134
+
135
+ ## Before you report done - terminal gate (run this every time)
136
+
137
+ This is the enforcement mechanism for the Definition of Done Housekeeping above. The sections
138
+ above describe the obligations; **this checklist makes you execute them at the moment of
139
+ completion.** Before you write your final message for ANY task you drove to `done`, run each
140
+ check below as an actual command and answer it explicitly **in your final message** - not silently.
141
+
142
+ You MUST run check #1 as the literal command and paste its numeric output. Do not eyeball the Plan
143
+ section and conclude "boxes checked" - the check is over the **whole task file**, including stray
144
+ template placeholders in sections you never used (`### Acceptance Criteria`, `### Design`). "I
145
+ checked the real ones" is the failure mode this gate exists to stop; the only passing answer is the
146
+ command printing `0`.
147
+
148
+ | # | Check | Command to run (literal - paste the output) | Pass condition |
149
+ |---|-------|----------------------------------------------|----------------|
150
+ | 1 | F1 - no unchecked boxes anywhere | `grep -c '^\s*- \[ \]' <task-file>` | output is exactly `0` (whole file, not just Plan) |
151
+ | 2 | F2 - honest transition | (state it) | named a pipeline run-id, OR "manual + `spur task check <wbs> --strict-core` PASS" |
152
+ | 3 | F4 - gate evidence | (recall change type) | raw gate tails pasted if code/test/infra touched; one-liner only if pure-doc |
153
+ | 4 | F5 - no `/tmp` residue | `ls /tmp/<wbs>-* 2>/dev/null \| wc -l` | output is `0` |
154
+ | 5 | Dogfood (only if in dogfood mode) | `rg -c '^### 3\. Monitor Ledger' <report> && rg -c '── Dogfood Summary ──' <report> && rg -c '^status: (complete\|aborted)' <report>` | all three counts are `>= 1` (report exists under `docs/dogfood/` AND carries the mandatory ledger section AND the mandatory summary footer AND terminal frontmatter status - not just any file matching the slug) |
155
+
156
+ If check #1 prints anything other than `0`, you are **not done**: find each `- [ ]` line and either
157
+ check it (real completed work), replace it with a real item, or remove it (stray placeholder in an
158
+ unused section). Re-run the grep until it prints `0`.
159
+
160
+ If any check fails, **fix it before reporting done** - do not report a task complete with a failed
161
+ terminal-gate line. In your final message, include a short "Terminal gate" block showing each check
162
+ **and its actual command output** (e.g. `F1: grep -> 0 ✓ · F5: ls -> 0 ✓ · dogfood: docs/dogfood/<file> ✓`).
163
+ A cold-spawned agent that skips this block, or reports a check passed without showing its output,
164
+ has not finished the task.