@thebassclef/lite 1.0.4 → 1.1.1

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 (275) hide show
  1. package/dist/cli.cjs +298 -55
  2. package/dist/cli.js +298 -55
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/lite/.claude/agents/architect.md +70 -0
  7. package/dist/lite/.claude/agents/builder.md +114 -0
  8. package/dist/lite/.claude/agents/designer.md +156 -0
  9. package/dist/lite/.claude/agents/reviewer.md +88 -0
  10. package/dist/lite/.claude/hooks/bassclef-sync.sh +85 -27
  11. package/dist/lite/.claude/hooks/longrun-prep-compounding-axis-check.sh +492 -0
  12. package/dist/lite/.claude/hooks/longrun-prep-render-check.sh +236 -0
  13. package/dist/lite/.claude/hooks/persona-name-scrub-check.sh +105 -0
  14. package/dist/lite/.claude/hooks/skill-step-list-check.sh +171 -0
  15. package/dist/lite/.claude/luminaries/alan-cooper.md +170 -0
  16. package/dist/lite/.claude/luminaries/alistair-cockburn.md +140 -0
  17. package/dist/lite/.claude/luminaries/amazon-pr-faq.md +34 -0
  18. package/dist/lite/.claude/luminaries/andreas-zeller.md +74 -0
  19. package/dist/lite/.claude/luminaries/ash-maurya.md +121 -0
  20. package/dist/lite/.claude/luminaries/bill-buxton.md +210 -0
  21. package/dist/lite/.claude/luminaries/charles-sanders-peirce.md +150 -0
  22. package/dist/lite/.claude/luminaries/david-ogilvy.md +192 -0
  23. package/dist/lite/.claude/luminaries/don-norman.md +173 -0
  24. package/dist/lite/.claude/luminaries/edward-tufte.md +179 -0
  25. package/dist/lite/.claude/luminaries/eric-evans.md +160 -0
  26. package/dist/lite/.claude/luminaries/frederick-brooks.md +50 -0
  27. package/dist/lite/.claude/luminaries/gang-of-four.md +157 -0
  28. package/dist/lite/.claude/luminaries/glenford-myers.md +230 -0
  29. package/dist/lite/.claude/luminaries/hunt-thomas.md +115 -0
  30. package/dist/lite/.claude/luminaries/hyrum-wright.md +94 -0
  31. package/dist/lite/.claude/luminaries/jason-fried-dhh.md +46 -0
  32. package/dist/lite/.claude/luminaries/jesse-james-garrett.md +154 -0
  33. package/dist/lite/.claude/luminaries/john-ousterhout.md +94 -0
  34. package/dist/lite/.claude/luminaries/karl-popper.md +132 -0
  35. package/dist/lite/.claude/luminaries/kent-beck.md +168 -0
  36. package/dist/lite/.claude/luminaries/linus-torvalds.md +218 -0
  37. package/dist/lite/.claude/luminaries/martin-fowler.md +164 -0
  38. package/dist/lite/.claude/luminaries/michael-feathers.md +125 -0
  39. package/dist/lite/.claude/luminaries/michael-nygard.md +118 -0
  40. package/dist/lite/.claude/luminaries/robert-c-martin.md +164 -0
  41. package/dist/lite/.claude/luminaries/saltzer-schroeder.md +194 -0
  42. package/dist/lite/.claude/luminaries/sophia-prater.md +193 -0
  43. package/dist/lite/.claude/luminaries/stephen-toulmin.md +131 -0
  44. package/dist/lite/.claude/luminaries/tony-hoare.md +170 -0
  45. package/dist/lite/.claude/luminaries/vaughn-vernon.md +50 -0
  46. package/dist/lite/.claude/luminaries/w-edwards-deming.md +158 -0
  47. package/dist/lite/.claude/rules/accessor-library-discipline.md +110 -0
  48. package/dist/lite/.claude/rules/adr-discipline.md +96 -0
  49. package/dist/lite/.claude/rules/api-conventions.md +115 -0
  50. package/dist/lite/.claude/rules/artifact-ingestion.md +137 -0
  51. package/dist/lite/.claude/rules/assert-only-after-verify.md +111 -0
  52. package/dist/lite/.claude/rules/blocked-items.md +139 -0
  53. package/dist/lite/.claude/rules/bootstrap-pair-discipline.md +106 -0
  54. package/dist/lite/.claude/rules/branching.md +28 -0
  55. package/dist/lite/.claude/rules/cold-adopter-harness-discipline.md +93 -0
  56. package/dist/lite/.claude/rules/commit-conventions.md +22 -0
  57. package/dist/lite/.claude/rules/compounding-axis-fresh-analysis.md +173 -0
  58. package/dist/lite/.claude/rules/compounding-sequence-fresh-analysis.md +173 -0
  59. package/dist/lite/.claude/rules/context-engineering.md +155 -0
  60. package/dist/lite/.claude/rules/context-management.md +85 -0
  61. package/dist/lite/.claude/rules/defensive-bash.md +52 -0
  62. package/dist/lite/.claude/rules/deferred-actions.md +233 -0
  63. package/dist/lite/.claude/rules/destructive-operations.md +69 -0
  64. package/dist/lite/.claude/rules/diagnosis.md +38 -0
  65. package/dist/lite/.claude/rules/github-issue-flash-tweet.md +114 -0
  66. package/dist/lite/.claude/rules/guardrails.md +73 -0
  67. package/dist/lite/.claude/rules/hook-wire-on-author.md +77 -0
  68. package/dist/lite/.claude/rules/identifier-leak-prevention.md +73 -0
  69. package/dist/lite/.claude/rules/iteration-bet-brief-completeness.md +43 -0
  70. package/dist/lite/.claude/rules/lite-manifest-schema-change-discipline.md +79 -0
  71. package/dist/lite/.claude/rules/longrun-prep-plan-doc-compression.md +77 -0
  72. package/dist/lite/.claude/rules/loop-discipline.md +71 -0
  73. package/dist/lite/.claude/rules/manual-prod-approval.md +100 -0
  74. package/dist/lite/.claude/rules/marker-enrichment-discipline.md +72 -0
  75. package/dist/lite/.claude/rules/mobile-ephemeral-session.md +109 -0
  76. package/dist/lite/.claude/rules/new-dependency-check.md +44 -0
  77. package/dist/lite/.claude/rules/oo-ad-entry-point.md +95 -0
  78. package/dist/lite/.claude/rules/operator-facing-prose.md +177 -0
  79. package/dist/lite/.claude/rules/option-label-discipline.md +82 -0
  80. package/dist/lite/.claude/rules/pattern-annotation.md +83 -0
  81. package/dist/lite/.claude/rules/persona-name-leak-scrub.md +90 -0
  82. package/dist/lite/.claude/rules/plain-english-discipline.md +132 -0
  83. package/dist/lite/.claude/rules/plan-enumeration-needs-value-props.md +177 -0
  84. package/dist/lite/.claude/rules/pr-body-shape.md +195 -0
  85. package/dist/lite/.claude/rules/pr-strategy.md +142 -0
  86. package/dist/lite/.claude/rules/pr-title-shape.md +90 -0
  87. package/dist/lite/.claude/rules/prototype-workflow.md +53 -0
  88. package/dist/lite/.claude/rules/reserved-skill-names.md +103 -0
  89. package/dist/lite/.claude/rules/schema-management.md +42 -0
  90. package/dist/lite/.claude/rules/sdlc-gates.md +149 -0
  91. package/dist/lite/.claude/rules/security.md +37 -0
  92. package/dist/lite/.claude/rules/session-artifacts.md +236 -0
  93. package/dist/lite/.claude/rules/skill-composition-declarations.md +105 -0
  94. package/dist/lite/.claude/rules/skill-description-clarity.md +196 -0
  95. package/dist/lite/.claude/rules/skill-procedure-step-list.md +119 -0
  96. package/dist/lite/.claude/rules/sprint-prep-preset-picker.md +76 -0
  97. package/dist/lite/.claude/rules/state-schema-validation.md +156 -0
  98. package/dist/lite/.claude/rules/stuck-signal-diagnostic.md +111 -0
  99. package/dist/lite/.claude/rules/substrate-config-schema.md +85 -0
  100. package/dist/lite/.claude/rules/test-list-discipline.md +129 -0
  101. package/dist/lite/.claude/rules/test-sufficiency.md +186 -0
  102. package/dist/lite/.claude/rules/testing-tier-config.md +125 -0
  103. package/dist/lite/.claude/rules/testing.md +38 -0
  104. package/dist/lite/.claude/rules/turn-estimate-grounding.md +82 -0
  105. package/dist/lite/.claude/rules/visual-hierarchy.md +427 -0
  106. package/dist/lite/.claude/rules/we-dont-break-adopters.md +103 -0
  107. package/dist/lite/.claude/rules/whereami-load-bearing.md +184 -0
  108. package/dist/lite/.claude/rules/writing-craft-discipline.md +72 -0
  109. package/dist/lite/.claude/rules/wu-sequencing-compounds.md +119 -0
  110. package/dist/lite/.claude/skills/build/SKILL.md +640 -0
  111. package/dist/lite/.claude/skills/chronicle/SKILL.md +55 -0
  112. package/dist/lite/.claude/skills/clean-artifacts/SKILL.md +249 -0
  113. package/dist/lite/.claude/skills/decompose/SKILL.md +280 -0
  114. package/dist/lite/.claude/skills/diagnose/SKILL.md +297 -0
  115. package/dist/lite/.claude/skills/feynman/SKILL.md +90 -0
  116. package/dist/lite/.claude/skills/howdoi/SKILL.md +105 -0
  117. package/dist/lite/.claude/skills/ia-model/SKILL.md +108 -0
  118. package/dist/lite/.claude/skills/interaction-design/SKILL.md +112 -0
  119. package/dist/lite/.claude/skills/interpret-input/SKILL.md +180 -0
  120. package/dist/lite/.claude/skills/journal/SKILL.md +209 -0
  121. package/dist/lite/.claude/skills/kiss/SKILL.md +449 -0
  122. package/dist/lite/.claude/skills/launch/SKILL.md +915 -0
  123. package/dist/lite/.claude/skills/lean-canvas/SKILL.md +332 -0
  124. package/dist/lite/.claude/skills/longrun/SKILL.md +512 -0
  125. package/dist/lite/.claude/skills/luminary/SKILL.md +481 -0
  126. package/dist/lite/.claude/skills/ogilvy-writing-audit/SKILL.md +177 -0
  127. package/dist/lite/.claude/skills/onboard-repo/SKILL.md +1640 -0
  128. package/dist/lite/.claude/skills/pattern-review/SKILL.md +99 -0
  129. package/dist/lite/.claude/skills/personas/SKILL.md +207 -0
  130. package/dist/lite/.claude/skills/promote/SKILL.md +283 -0
  131. package/dist/lite/.claude/skills/requirement/SKILL.md +98 -0
  132. package/dist/lite/.claude/skills/retro/SKILL.md +117 -0
  133. package/dist/lite/.claude/skills/riff/SKILL.md +114 -0
  134. package/dist/lite/.claude/skills/roadmap-reconcile/SKILL.md +163 -0
  135. package/dist/lite/.claude/skills/session-end/SKILL.md +309 -0
  136. package/dist/lite/.claude/skills/session-log/SKILL.md +299 -0
  137. package/dist/lite/.claude/skills/skills/SKILL.md +228 -0
  138. package/dist/lite/.claude/skills/spec/SKILL.md +105 -0
  139. package/dist/lite/.claude/skills/sprint/SKILL.md +418 -0
  140. package/dist/lite/.claude/skills/stage/SKILL.md +384 -0
  141. package/dist/lite/.claude/skills/state-a-problem/SKILL.md +185 -0
  142. package/dist/lite/.claude/skills/temperance/SKILL.md +108 -0
  143. package/dist/lite/.claude/skills/use-case/SKILL.md +417 -0
  144. package/dist/lite/.claude/skills/user-stories/SKILL.md +268 -0
  145. package/dist/lite/.claude/skills/value-prop/SKILL.md +251 -0
  146. package/dist/lite/.claude/skills/verify/SKILL.md +160 -0
  147. package/dist/lite/.claude/skills/visual-review/SKILL.md +503 -0
  148. package/dist/lite/.claude/skills/whats-the-plan/SKILL.md +202 -0
  149. package/dist/lite/.claude/skills/whereami/SKILL.md +307 -0
  150. package/dist/lite/AGENTS.md +79 -0
  151. package/dist/lite/CLAUDE-lite.md +85 -0
  152. package/dist/lite/CODE_OF_CONDUCT.md +28 -0
  153. package/dist/lite/CONTRIBUTING.md +177 -0
  154. package/dist/lite/README.md +173 -0
  155. package/dist/lite/SECURITY.md +19 -0
  156. package/dist/lite/architecture/decisions/ADR-029-release-pipeline.md +79 -0
  157. package/dist/lite/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +139 -0
  158. package/dist/lite/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +192 -0
  159. package/dist/lite/architecture/decisions/ADR-039-release-tagging-scheme.md +145 -0
  160. package/dist/lite/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +155 -0
  161. package/dist/lite/architecture/decisions/ADR-044-unified-skill-body-template.md +162 -0
  162. package/dist/lite/lib/clean-artifacts-sweep.sh +112 -0
  163. package/dist/lite/lib/code-comment-discipline.sh +144 -0
  164. package/dist/lite/lib/composer-preflight.sh +459 -0
  165. package/dist/lite/lib/deferred-actions.sh +146 -0
  166. package/dist/lite/lib/hook-header-parser.sh +61 -0
  167. package/dist/lite/lib/hook-heartbeat.sh +152 -0
  168. package/dist/lite/lib/hook-inject.sh +255 -0
  169. package/dist/lite/lib/hook-installer.sh +195 -0
  170. package/dist/lite/lib/luminary-pick.sh +96 -0
  171. package/dist/lite/lib/output-discipline.sh +143 -0
  172. package/dist/lite/lib/prose-scan-boundary.sh +171 -0
  173. package/dist/lite/lib/rewrite-check.sh +214 -0
  174. package/dist/lite/lib/session-rescue.sh +151 -0
  175. package/dist/lite/lib/source-graph-walker.sh +277 -0
  176. package/dist/lite/lib/state.sh +1372 -0
  177. package/dist/lite/lib/telemetry.sh +205 -0
  178. package/dist/lite/lib/tier-check.sh +187 -0
  179. package/dist/lite/lib/tier-dependency-audit.sh +1088 -0
  180. package/dist/lite/presence/install/bassclef-hook-connect.sh +178 -0
  181. package/dist/lite/presence/install/bassclef-sync.dispatcher.template.sh +841 -0
  182. package/dist/lite/presence/install/bassclef-sync.template.sh +2278 -0
  183. package/dist/lite/presence/install/schedule-auto-save.cron.sh +88 -0
  184. package/dist/lite/presence/install/schedule-auto-save.taskscheduler.md +122 -0
  185. package/dist/lite/scripts/aggregate-telemetry.sh +217 -0
  186. package/dist/lite/scripts/analyze-tier-dependencies.sh +239 -0
  187. package/dist/lite/scripts/generate-lite-manifest.sh +505 -0
  188. package/dist/lite/scripts/generate-tier-manifest.sh +28 -0
  189. package/dist/lite/scripts/intent-drift-check.sh +456 -0
  190. package/dist/lite/scripts/lite-manifest-drift-check.sh +146 -0
  191. package/dist/lite/scripts/render-lite-manifest-doc.sh +150 -0
  192. package/dist/lite/standards/adr-template.md +86 -0
  193. package/dist/lite/standards/api-conventions/nextjs.md +84 -0
  194. package/dist/lite/standards/artifact-composition.md +209 -0
  195. package/dist/lite/standards/bash-hook-safety.md +246 -0
  196. package/dist/lite/standards/bassclef-configs-schema.md +232 -0
  197. package/dist/lite/standards/bassclef-evolution.md +143 -0
  198. package/dist/lite/standards/bassclef-internal-jargon.md +244 -0
  199. package/dist/lite/standards/bassclef-managed-sentinel.md +96 -0
  200. package/dist/lite/standards/bassclef-source-config.md +228 -0
  201. package/dist/lite/standards/branch-stacking.md +408 -0
  202. package/dist/lite/standards/code-safety-principles.md +176 -0
  203. package/dist/lite/standards/composer-prerequisites.md +155 -0
  204. package/dist/lite/standards/deferred-actions-schema.md +204 -0
  205. package/dist/lite/standards/dependency-discipline/cargo.md +39 -0
  206. package/dist/lite/standards/dependency-discipline/gem.md +43 -0
  207. package/dist/lite/standards/dependency-discipline/go-mod.md +41 -0
  208. package/dist/lite/standards/dependency-discipline/npm.md +42 -0
  209. package/dist/lite/standards/dependency-discipline/pip.md +42 -0
  210. package/dist/lite/standards/deployment-topology/ec2-tailscale.md +225 -0
  211. package/dist/lite/standards/deployment-topology.md +69 -0
  212. package/dist/lite/standards/docs-sync-allowlist.md +76 -0
  213. package/dist/lite/standards/domain-and-dns.md +145 -0
  214. package/dist/lite/standards/frontend-stack.md +67 -0
  215. package/dist/lite/standards/frontmatter-schema.md +154 -0
  216. package/dist/lite/standards/graceful-exit.md +227 -0
  217. package/dist/lite/standards/hook-idempotency.md +102 -0
  218. package/dist/lite/standards/hook-injection-discipline.md +202 -0
  219. package/dist/lite/standards/hook-install-class.md +215 -0
  220. package/dist/lite/standards/input-handler-interface.md +152 -0
  221. package/dist/lite/standards/lite-manifest-schema-changes.md +180 -0
  222. package/dist/lite/standards/lite-manifest.json +2797 -0
  223. package/dist/lite/standards/luminary-matching.md +105 -0
  224. package/dist/lite/standards/luminary-problem-patterns.md +481 -0
  225. package/dist/lite/standards/migration-discipline/active-record.md +50 -0
  226. package/dist/lite/standards/migration-discipline/alembic.md +43 -0
  227. package/dist/lite/standards/migration-discipline/gorm.md +50 -0
  228. package/dist/lite/standards/migration-discipline/prisma.md +53 -0
  229. package/dist/lite/standards/migration-discipline/sqlalchemy.md +51 -0
  230. package/dist/lite/standards/mobile-ephemeral-session.md +167 -0
  231. package/dist/lite/standards/model-routing-discipline.md +160 -0
  232. package/dist/lite/standards/ogilvy-writing-rules.md +225 -0
  233. package/dist/lite/standards/opener-discipline.md +96 -0
  234. package/dist/lite/standards/operator-facing-prose-discipline.md +201 -0
  235. package/dist/lite/standards/persona-schema.md +229 -0
  236. package/dist/lite/standards/pluggable-luminaries.md +323 -0
  237. package/dist/lite/standards/pr-body-discipline.md +115 -0
  238. package/dist/lite/standards/preview-state-schema.md +189 -0
  239. package/dist/lite/standards/project-directory-layout.md +276 -0
  240. package/dist/lite/standards/release-tagging.md +137 -0
  241. package/dist/lite/standards/reserved-skill-names.md +120 -0
  242. package/dist/lite/standards/scannable-multi-option-output.md +265 -0
  243. package/dist/lite/standards/sdlc-compliance.md +286 -0
  244. package/dist/lite/standards/sdlc-gates/typescript.md +57 -0
  245. package/dist/lite/standards/secrets-lifecycle.md +210 -0
  246. package/dist/lite/standards/security-scanner-adapter.md +145 -0
  247. package/dist/lite/standards/session-board.md +256 -0
  248. package/dist/lite/standards/skill-output-discipline.md +121 -0
  249. package/dist/lite/standards/state-spine-contract.md +255 -0
  250. package/dist/lite/standards/state-spine.md +511 -0
  251. package/dist/lite/standards/steering-hints/kiss-words.md +11 -0
  252. package/dist/lite/standards/substrate-config-schema.md +267 -0
  253. package/dist/lite/standards/tech-stack-config.md +109 -0
  254. package/dist/lite/standards/tier-dependency-analysis.md +167 -0
  255. package/dist/lite/standards/tier-runtime-deps/lite.md +57 -0
  256. package/dist/lite/standards/tier-tag-schema.md +155 -0
  257. package/dist/lite/standards/two-layer-config.md +99 -0
  258. package/dist/lite/standards/use-case-format.md +292 -0
  259. package/dist/lite/standards/user-story-invest.md +268 -0
  260. package/dist/lite/standards/velocity-and-appetite.md +229 -0
  261. package/dist/lite/standards/voice-input-pattern.md +119 -0
  262. package/dist/lite/standards/whereami-schema.md +301 -0
  263. package/dist/lite/standards/worktree-management.md +211 -0
  264. package/dist/lite/standards/writing-guide.md +213 -0
  265. package/dist/lite/templates/chronicle-template.md +75 -0
  266. package/dist/lite/templates/deferred-action-template.md +45 -0
  267. package/dist/lite/templates/memory-proposal-template.md +77 -0
  268. package/dist/lite/templates/persona-template.md +200 -0
  269. package/dist/lite/templates/pr-faq.md +45 -0
  270. package/dist/lite/templates/secret-rotation-template.md +162 -0
  271. package/dist/lite/templates/spec-template.md +131 -0
  272. package/dist/lite/templates/use-case-template.md +194 -0
  273. package/dist/lite/templates/user-story-template.md +107 -0
  274. package/dist/lite/templates/whereami-template.md +101 -0
  275. package/package.json +12 -5
@@ -0,0 +1,512 @@
1
+ ---
2
+ name: longrun
3
+ description: "Run a long autonomous session that paces itself. Prepares scope. Checkpoints at phase boundaries. Closes with session log and retrospective. Three modes: prep, checkpoint, closeout."
4
+ problem: "Sessions over 50 turns drift. Context compacts and the goal disappears."
5
+ value: "A long autonomous session that paces itself. Prep and checkpoint and closeout \u2014 clean state every wake."
6
+ inputs: [prep or checkpoint or closeout mode plus scope hints]
7
+ outputs: [Goal doc with time budget, Checkpoint status at phase boundaries, Session log at closeout]
8
+ tier: lite
9
+ modes: [prep, checkpoint, closeout]
10
+ composes_with: [value-prop, kiss, temperance, luminary, roadmap-reconcile, retro, promote, session-end, chronicle, pattern-review]
11
+ authoring_luminaries:
12
+ primary:
13
+ - john-ousterhout
14
+ - sophia-prater
15
+ supporting:
16
+ - alistair-cockburn
17
+ - don-norman
18
+ - edward-tufte
19
+ - jason-fried-dhh
20
+ - amazon-pr-faq
21
+ - kent-beck
22
+ - linus-torvalds
23
+ ---
24
+
25
+ # /longrun
26
+
27
+ ## What you get
28
+
29
+ A long autonomous session that stays on track. You type `/longrun prep` once at session start. I set up scope, land the goal doc, touch gate markers, and start work. I checkpoint at every phase boundary, after each compaction, and every 25 steps. At close I write the session log, update whereami, run the retrospective, and open the PR. You get one clean landing when I finish — not a session that drifts mid-way.
30
+
31
+ ## When to use it
32
+
33
+ Use `/longrun` when any of these hold:
34
+
35
+ - Two or more goals in flight this session
36
+ - Estimated more than 50 steps of work
37
+ - The session will cross at least one context compaction
38
+ - You state "longrun" explicitly
39
+
40
+ <!-- FKGL-EXEMPT: mirrors precedent shape from /shape /spec /build /launch /decompose per bassclef-upstream#1363 — literal header + prose required by scripts/tests/adr-consult-step.test.sh -->
41
+ ## ADR-consult — fire before scope confirmation (per bassclef-upstream#424)
42
+
43
+ Read every relevant ADR in `architecture/decisions/` before confirming scope. If your scope deviates from any ADR's decision or constraints, surface the deviation as the first agenda item — operator decides amend-ADR vs. revise-scope.
44
+
45
+ Per `.claude/rules/adr-discipline.md`. Mechanism: `adr-discipline-check.sh` fires on substantive architectural edits (wired in `.claude/settings.json` since goal 28a Step 1). The Tier 0 test for this step greps for the literal header `## ADR-consult — fire before scope confirmation` in each of `/build /launch /spec /decompose /shape /longrun`.
46
+ <!-- /FKGL-EXEMPT -->
47
+
48
+ ## Tier gate (bassclef#740 Task 1.4; amended bassclef#1383)
49
+
50
+ `/roadmap-reconcile` and `/retro` both flipped to `tier: lite` as deep modules per canvas 2026-07-19-bassclef-lite Q6 Option E. Both run identically at every tier. Prep Step 0.5 and Closeout Step 2 run as documented for every adopter — lite, standard, and ultra.
51
+
52
+ The tier-check pattern below stays available for future skills that need per-tier branching:
53
+
54
+ ```bash
55
+ source lib/tier-check.sh
56
+ tier=$(resolve_adopter_tier)
57
+ ```
58
+
59
+ Per canvas 2026-07-19-bassclef-lite Q6 Option E — one SKILL.md file, same name in both tiers. When a skill's body genuinely diverges per tier, the body carries runtime tier awareness with graceful degrade. Skills that share behavior across tiers stay simple and drop the branch.
60
+
61
+ For single-goal sessions under 50 steps with no compaction risk, use `/autonomous start` directly. `/longrun` adds prep and checkpoint discipline whose overhead exceeds value on shorter work.
62
+
63
+ ## Composes with — cluster shape
64
+
65
+ `/longrun` sits at the center of a larger cluster. Skills around it feed in, close out, or fire mid-session as helpers.
66
+
67
+ **Upstream — feed the session:**
68
+
69
+ - Discovery layer (Sam bootstrap, Louis kickoff): `/interview-me`, `/extract-intent`, `/interpret-input`, `/empathy-map`, `/jtbd-tasks`, `/lean-canvas`, `/value-prop-canvas`, `/personas`
70
+ - Strategy authoring (mid-session per persona): `/state-a-problem`, `/value-prop`, `/requirement`, `/use-case`, `/user-stories`, `/spec`, `/ticket`
71
+
72
+ **Downstream — close the session:**
73
+
74
+ - `/session-log` — write the session's log entry
75
+ - `/session-end` — tiered obligations (must + should + may)
76
+
77
+ **Helpers — fire mid-session across every stage:**
78
+
79
+ - 5 gates — `/temperance`, `/verify`, `/diagnose`, `/kiss`, `/luminary`
80
+
81
+ The verb is porcelain (Git's word for a small user-typed command). All discipline runs by composition inside — you type `/longrun` and the cluster runs itself.
82
+
83
+ Strategy skills serve Sam AND Louis directly. Sam types `/state-a-problem` when a ticket needs a problem opener. Louis types `/lean-canvas` when designing a business shape. They stand alone at lite. `/longrun` composes them per stage of a spec-authoring session.
84
+
85
+ ## FAQ
86
+
87
+ ### What are the three modes?
88
+
89
+ - **prep** — you type this once at session start. I set up scope, mount the goal doc, touch markers, and confirm ready state.
90
+ - **checkpoint** — I fire this on my own at phase boundaries, after compaction events, every ~25 steps, or when a step exceeds 1.5× its time budget. Updates the session board; audits for `/promote` candidates; reports status.
91
+ - **closeout** — I fire this when the Stop hook fires or you invoke `/session-end`. Runs `/retro`, files missed `/promote` items, extracts insights, updates whereami, then runs `/session-end`.
92
+
93
+ ### What is the default configuration?
94
+
95
+ Orchestrator-gated and sequential. You only step in at real decision points — phase boundaries, PR merges, scope beyond time budget (the steps you'll spend at your current pace before cutting scope), hard ceilings, production deploy approvals. Everything else runs on its own.
96
+
97
+ I read `longrun.orchestrator_merge.mode` from `.claude/bassclef-configs.jsonc`:
98
+
99
+ - `operator-gated` (default) — every PR pauses for your review.
100
+ - `agent-merges-within-scope` — I merge PRs on my own when the change stays inside the goal's scope and does not hit a hard ceiling.
101
+
102
+ Hard ceilings are not overridable: `auth`, `schema`, `security`, `prod-deploy`, `blast-radius-floor`.
103
+
104
+ ### What are the checkpoint triggers?
105
+
106
+ - **Phase boundary** — the last step in a phase lands. I re-fire session `/temperance`. I update the session board.
107
+ - **Post-compaction** — a compaction event fires. I re-read the survival kit and re-anchor on the goal.
108
+ - **Turn-counter** — every ~25 steps. Verify no scope drift; surface budget status.
109
+ - **Context saturation** — I self-check for context pressure (large file reads, broad codebase exploration, test output accumulation). Fires proactively before the system compacts.
110
+ - **Scope drift** — a step exceeds its time budget × 1.5. Pause and re-anchor.
111
+ - **/promote audit** — I detected a bug in the rules or a pattern to file. Do it now; do not defer to closeout.
112
+
113
+ ### How does /longrun compose with other skills?
114
+
115
+ | Skill | Where it fires |
116
+ |---|---|
117
+ | `/temperance` | Prep (scope anchor), checkpoint (re-anchor) |
118
+ | `/luminary` | Prep (pick lenses), applied at authoring |
119
+ | `/retro` | Closeout (retrospective) |
120
+ | `/promote` | Checkpoint (proactive), closeout (audit backstop) |
121
+ | `/session-end` | Closeout (extends; does not replace) |
122
+ | `/whereami` | Closeout (update at session end) |
123
+ | `/sprint` | Post-compaction checkpoint (re-orient) |
124
+ | `/session-log` (formerly `/chronicle`) | Closeout (write narrative record) |
125
+ | `/autonomous start` | Prep delegates after pre-flight clears |
126
+
127
+ ### How is /longrun distinct from /retro, /autonomous start, and /session-end?
128
+
129
+ - `/retro` covers a single goal at end only. No `/promote` audit; no insight extraction. `/longrun closeout` builds on `/retro` and adds those two.
130
+ - `/autonomous start` boots agents but does not manage the reflection cycle. `/longrun prep` delegates to `/autonomous start` AFTER installing the reflection scaffolding.
131
+ - `/session-end` covers tiered obligations (MUST/SHOULD/MAY). `/longrun closeout` runs `/retro`, files `/promote` items, extracts insights, then runs `/session-end`.
132
+
133
+ ### How does the operator dispatch each mode?
134
+
135
+ You type `/longrun prep` once. Checkpoint and closeout fire on their own. Overrides:
136
+
137
+ - `/longrun checkpoint --now` — you noticed a pattern and want to anchor before the next auto-firing.
138
+ - `/longrun closeout --now` — you want to end deliberately before Stop fires.
139
+
140
+ Unknown args are rejected with a helpful message. `/longrun` does NOT silently proceed with defaults.
141
+
142
+ ## Details below the fold
143
+
144
+ ### Prep procedure — you type once at session start
145
+
146
+ **Step 0** — Open with a `/value-prop tweet` claim and a `/kiss words` grade-10 summary before any tables land. The operator scans on mobile; the tables come after.
147
+
148
+ **Step 0.4** — Read `docs/whereami.md` before scope confirmation. Post the line that shows the read landed: `**Whereami read:** docs/whereami.md at <ISO timestamp>`. Whereami is the source of truth for in-flight work.
149
+
150
+ **Step 0.5** — Dispatch `/roadmap-reconcile --dry-run`. Silent when no drift. Surface the diff inline when drift is detected; wait for operator acknowledgement, canvas amend, or explicit deferral.
151
+
152
+ **Step 0.6** — Read related goals across repos. Read the active goal's `parent_drivers`, `acceptance`, and `out_of_scope`. Read each parent goal up the chain until there is no parent. Read `parent_roadmap` if any goal in the chain has one. Touch `state/markers/orientation-gate/<branch-slug>.marker`.
153
+
154
+ **Step 0.65** — Complete lookback. List every open item before you pick scope. `parent_drivers` names what the parent knew. This step names what is open now. Closes bassclef-upstream#776.
155
+
156
+ Cover each class:
157
+
158
+ - Every ticket named in whereami recap sections. The `operator_recap` and `prior_operator_recap` blocks list them by number.
159
+ - Every entry from a grade audit that reads above the ceiling.
160
+ - Every deferred, paused, or stuck item from a prior recap.
161
+ - Every canvas at `docs/canvases/` and curation doc at `docs/curation/`.
162
+ - Every consultation output at `docs/operator-private/consultations/` tied to open threads.
163
+ - Chained skills that lite skills dispatch. Read tier tags of skills the active goal calls. Lite work needs to know which chained skills need inlining or tagging.
164
+
165
+ Silence on any class is not deferral. Enumerate the items or state which classes are out of scope this session and why.
166
+
167
+ **Step 0.66** — Read active canvases. List `docs/canvases/*.md`. For each canvas whose frontmatter carries `verification_status: draft` or `accepted`, Read the full body before proposing options. Cite the canvas file path plus the Q number that informs each option. Whereami recap is a summary. Read the canvas file for the source. Closes bassclef-upstream#813.
168
+
169
+ <!-- FKGL-EXEMPT: Steps 0.7 + 0.75 technical procedure blocks — short SVO loses precision on the git-log check and release-pipeline surfaces (per bassclef-upstream#1589) -->
170
+ **Step 0.7** — Release pipeline status check (bassclef-upstream only). Surface open release PRs older than 24 hours, CI failures, or commits ahead of public before scope confirmation. Stuck PRs get first priority.
171
+
172
+ **Step 0.75 — Shipped-state check (per bassclef-upstream#1589).** Before compressed prep fires, run `git log` on every path named in the plan doc `## Recommended` section. Cite the top commit inline. Classify per path:
173
+
174
+ - **NEW** — no prior commit; work is fresh
175
+ - **EXTENDS** — prior commit exists but does not cover the recommended scope; extend on top
176
+ - **SHIPPED** — prior commit references the recommendation; work already landed; reshape prep
177
+
178
+ Format for the block:
179
+
180
+ ```
181
+ Shipped-state check:
182
+ - <artifact path> → <top commit SHA> <title> — <NEW|EXTENDS|SHIPPED>
183
+ ```
184
+
185
+ When any path lands SHIPPED, prep reshapes: skip that recommendation. Propose the closing ticket for that scope OR route to the exploratory preset. Silence is not skip.
186
+
187
+ Detection command per path:
188
+
189
+ ```bash
190
+ git log --all --oneline -1 -- <plan-doc-artifact-path>
191
+ ```
192
+
193
+ Rule: `.claude/rules/longrun-prep-plan-doc-compression.md`. Anchor luminary: @luminary michael-feathers — pin actual behavior via source of record before naming it.
194
+ <!-- /FKGL-EXEMPT -->
195
+
196
+ **Step 0.8** — Run the pre-flight helper for code work. Source the helper. Call it with the /longrun name and turn estimate. Skip when the session plans no code. Fire when the session plans to touch app code, hooks, libs, or scripts. The helper runs Check 7. Check 7 looks for a use case, spec, or decomposition on disk. The floor per code class lives at `.claude/rules/oo-ad-entry-point.md`.
197
+
198
+ ```bash
199
+ source "${BASSCLEF_DIR:-$REPO_ROOT}/lib/composer-preflight.sh"
200
+ composer_preflight_check "longrun" "${ESTIMATED_TURNS:-100}" | composer_preflight_render "longrun"
201
+ ```
202
+
203
+ The helper stays advisory through 2026-10-31 per ADR-031. Old hooks and libs land without a retrofit brief use case. New hooks and libs merit one per Cockburn tiering.
204
+
205
+ <!-- FKGL-EXEMPT: Step 0.85 preset picker — technical procedure block; short SVO loses precision on the picker logic per bassclef-upstream#1598 -->
206
+ **Step 0.85 — Preset picker (per bassclef-upstream#1598).** Prep renders in the shape that fits the mode. Three presets ship. The picker reads signals + writes a marker + fires the matching shape:
207
+
208
+ | Preset | Fires when | Rendered shape |
209
+ |---|---|---|
210
+ | **converged** | Plan doc newer than 48h + carries `## Recommended` section, OR fresh `/state-a-problem` marker present | Lean canvas — Problem + Value + Solution + options table + card on ask |
211
+ | **exploratory** | No plan doc + operator typed `/longrun` alone + no fresh problem marker | Scan-table dominant — options table + one line per row + recommend row marker |
212
+ | **reversible-small** | Small scope stated in the invocation + won't break other work | Three-chunk compact — one line per option, one recommend line, one action line |
213
+
214
+ Ambiguous cases: picker asks the operator directly — `Converged / Exploratory / Small? (c/e/s/skip)`.
215
+
216
+ Detection commands:
217
+
218
+ ```bash
219
+ # Converged signal — plan doc present + fresh
220
+ find docs -maxdepth 1 -name 'next-session-plan-*.md' -mtime -2 -type f 2>/dev/null | head -1
221
+
222
+ # Fresh problem statement
223
+ find state/markers/state-a-problem -type f -mtime -2 2>/dev/null | head -1
224
+ ```
225
+
226
+ The picker writes the preset marker at `state/markers/longrun-preset/<branch>.marker`. Downstream Stop hook reads the marker + applies the per-preset axis set from `.claude/rules/compounding-sequence-fresh-analysis.md` § Per-preset axis sets.
227
+
228
+ Converged preset triggers Step 0.75 shipped-state check first. When any recommended path lands SHIPPED, prep reshapes to exploratory automatically.
229
+
230
+ Operator override: at any point, type `browse` (force exploratory) or `quick fix` (force reversible-small) or `full` (force full ceremony with 6-axis default).
231
+
232
+ Rule: `.claude/rules/longrun-prep-plan-doc-compression.md`. Anchor luminaries: @luminary don-norman (obvious action — picker names the mode + reshape path); @luminary ash-maurya (lean canvas shape for converged); @luminary sophia-prater (progressive disclosure — cards behind on-ask expansion).
233
+
234
+ Rationale: `/longrun prep` output ran too long. One shape did not fit every situation. Operator asked for a shape that reads clean in under 15 seconds. #1598 filed 2026-09-10; design session at 2026-09-12 picked the three presets under Path 2.
235
+ <!-- /FKGL-EXEMPT -->
236
+
237
+ **Step 0.87 — Amendment A1: OOAD chain read at pre-flight (per #1150 + #1167 + #1414).** When the goal doc references touch adopter app paths (`src/`, `apps/`, `packages/`, `app/`) OR substrate paths (`lib/`, `scripts/`, `.claude/hooks/`, `.claude/skills/`, `.claude/rules/`, `.claude/luminaries/`, `standards/state-spine/schemas/`, `presence/install/`) OR scope prose names UI or code work, read the design chain per `.claude/bassclef-orientation.md` L100-108. Ceremony depth scales per `.claude/rules/oo-ad-entry-point.md` matrix — script bug fix = skip tier; script extension = brief use case; hook + lib = fully-dressed:
238
+
239
+ ```
240
+ Canvas → Spec → Personas → JTBD → Task-scenarios / Use-case → IA-model → Interaction-design → Decompose
241
+ ```
242
+
243
+ For each of the 9 chain steps, check whether a matching artifact exists on disk:
244
+
245
+ - Canvas — `docs/canvases/*.md`
246
+ - Spec — `docs/specs/*.md`
247
+ - Personas — `docs/personas/*.md`
248
+ - JTBD — `docs/jtbd/*.md`
249
+ - Task-scenarios — `docs/task-scenarios/*.md`
250
+ - Use-case — `docs/use-cases/*.md`
251
+ - IA-model — `docs/ia-models/*.md`
252
+ - Interaction-design — `docs/interaction-designs/*.md`
253
+ - Decomposition — `docs/decompositions/*.md`
254
+
255
+ Emit one-line note per gap. Do not BLOCK. Operator picks fold-or-skip per gap. Skip this step when the scope is prose only. This keeps the adopter contract per ADR-031. Old prose sessions see no new dispatches.
256
+
257
+ The step trigger reads two sources. First the goal doc frontmatter `references` array. Second the scope prose from the goal's Problem and Goal sections. Scope signal present means chain read fires. Absent means chain read skips. Vernon anti-corruption layer per pattern annotation. Bug-fix scope does not fire the chain. Prose-only scope does not fire the chain.
258
+
259
+ **Step 1** — Pre-flight check:
260
+
261
+ - Parent roadmap state read via `state_roadmap_get`
262
+ - Recursive parent-goal walk complete
263
+ - BLOCKED items resolved or explicit deferral stated
264
+ - Stack manifests written upfront (one per goal)
265
+ - Session board written if two or more goals or phases are active
266
+ - Survival kit declared (paths to re-read after compaction)
267
+ - Time budget grounded per `.claude/rules/turn-estimate-grounding.md` — cite past goal actuals, range not point, name the shape driver
268
+ - Orchestrator merge mode surfaced
269
+
270
+ **Step 1.4b** — Name the option-set shape (per bassclef-upstream#832). Two choices:
271
+
272
+ - **MECE** — each option covers a different scope. No overlap.
273
+ - **Nested** — option a is smallest. Option b builds on a. Option c builds on b.
274
+
275
+ Pick one shape. Do not mix them.
276
+
277
+ **Step 1.4c** — Section-anchor rule (per bassclef-upstream#853; Norman + Garrett). Every table in prep output ships under a distinct `###` header. One anchor per concern:
278
+
279
+ - `### Options` — the option-set table
280
+ - `### Compounding value — recommended only` — the 6-axis block (Step 1.5; new default per bassclef-upstream#1555 PR-2. Legacy 5-axis accepted through 2026-10-31 grace window)
281
+ - `### Adopter benefit per option` — the 3-axis block (Step 1.6)
282
+ - `### Step sequencing` — the step table (Step 1.7)
283
+ - `### Per-step compounding` — the axis-per-step block (Step 1.7a; 6-axis default, 5-axis grace)
284
+
285
+ Between top-level `###` anchors, use at least 2 blank lines OR a horizontal rule (`---`). Never stack two tables under one anchor. See the Norman + Garrett debate below. It carries the design principles.
286
+
287
+ <!-- FKGL-EXEMPT: worked example — code fence + heading hierarchy per bassclef-upstream#1535 -->
288
+ **Worked example — H2 / H3 / H4 hierarchy** (per bassclef-upstream#1535; Norman signifier + Feathers sprout). The `### Compounding value — recommended only` anchor names the section. Individual options nest at H4 (`#### Option a`) beneath it. The hook regex accepts H2 through H6 or bold prefix (`**Option a`) since PR #1534; H4 nested under H3 is the canonical shape adopters most often reach for.
289
+
290
+ Copy this shape and the hook clears first-shot:
291
+
292
+ ```markdown
293
+ ### Compounding value — recommended only
294
+
295
+ #### Option a — <label>
296
+
297
+ - Where the payoff shows up: <value>
298
+ - How often it fires: <value>
299
+ - What must be true first: <value>
300
+ - Does this teach a shape later work reuses: <value>
301
+ - What breaks if we ship this half-done: <value>
302
+
303
+ #### Option b — <label>
304
+
305
+ - Where the payoff shows up: <value>
306
+ - How often it fires: <value>
307
+ - What must be true first: <value>
308
+ - Does this teach a shape later work reuses: <value>
309
+ - What breaks if we ship this half-done: <value>
310
+ ```
311
+
312
+ Same H3 container + H4 options shape applies to `### Adopter benefit per option` (Step 1.6) and `### Per-step compounding` (Step 1.7a). Do NOT stack two options under one H4 header. Do NOT skip the container anchor. See fixture `.claude/hooks/tests/fixtures/2026-09-08-step-1-4c-worked-example/prep-message.txt` (pinned by Test 28 in `longrun-prep-compounding-sequence-check.test.sh`) for the exact body the hook accepts.
313
+ <!-- /FKGL-EXEMPT -->
314
+
315
+ **Step 1.4d** — Delta-rendering rule (per bassclef-upstream#853; Norman feedback loop). When the operator asks for a refinement (add column, change filter, reshape one option), render ONLY the delta. Cite the source anchor by name.
316
+
317
+ Anti-pattern — silent rebuild:
318
+
319
+ > Operator: "add a change-class column"
320
+ > Agent re-renders all 4-5 tables verbatim plus one new column
321
+
322
+ Correct pattern — named delta:
323
+
324
+ > Operator: "add a change-class column"
325
+ > Agent: "Adding column to § Options above:"
326
+ > [renders only the new column with the option labels]
327
+
328
+ Full re-render is only correct when the operator asks for it explicitly ("show me the full picture again") OR the underlying option set changed.
329
+
330
+ **Step 1.4e** — Card + scan-table shape (per goal 24e; Tufte + Prater). Multi-option output has three parts. First, a compact scan-table on top. Second, one card per option. Third, step cards for the recommended option only. See `standards/scannable-multi-option-output.md` § Card template + § Glyph legend + § Progressive disclosure.
331
+
332
+ <!-- FKGL-EXEMPT: Step 1.5 preset note — technical procedure reference to the picker per bassclef-upstream#1598 -->
333
+ **Step 1.5 preset note (per bassclef-upstream#1598).** The axis rendering below applies to the FULL ceremony path (no preset picked, or `full` override). When Step 0.85 picker fires a converged / exploratory / reversible-small preset, the axis set adjusts per `.claude/rules/compounding-sequence-fresh-analysis.md` § Per-preset axis sets. Stop hook reads the preset marker and applies the matching check.
334
+ <!-- /FKGL-EXEMPT -->
335
+
336
+ **Step 1.5** — Recommendation lands FIRST at the top of Step 1.5 (per bassclef-web#152 R1). One sentence naming the recommended option, its scope, turn range, and risk. Reader sees the pick before scrolling. Format:
337
+
338
+ > **Recommend:** Option a (scope X · N-M turns · risk 🟢/🟡/🔴) because Y.
339
+
340
+ <!-- FKGL-EXEMPT: procedure body — 6-axis default + 5-axis grace window reference per bassclef-web#325 -->
341
+ Then under `### Compare options`, render a compact scan-table. Then under `### Compounding value — recommended only`, render the 6-axis block for the recommended option only (5-axis legacy accepted through 2026-10-31 grace window per ADR-031; hook accepts both shapes per PR #1591). Per bassclef-upstream#1376. Non-recommended options carry axis values as cells in the scan-table row above. One cell per axis per option. Reader lands the recommended card fast. Other options stay auditable from the scan-table row.
342
+ <!-- /FKGL-EXEMPT -->
343
+
344
+ <!-- FKGL-EXEMPT: column enumeration + glyph-legend cross-ref -->
345
+ Scan-table columns: `Option`, `Scope`, `Turns`, `Compounds`, `Risk`, `Why not (non-rec.)`. Glyphs encode risk (🟢/🟡/🔴). Words carry compounding rate. The `Why not` column carries one line per non-recommended option — what the operator gives up. The recommended option's cell reads `—` (recommended). Fresh analysis per option; do not copy from other docs.
346
+ <!-- /FKGL-EXEMPT -->
347
+
348
+ Then the axis block under `### Compounding value — recommended only`. Bullets carry each axis for the recommended option. Per `.claude/rules/compounding-sequence-fresh-analysis.md` postcondition. The section satisfies the rule and the `longrun-prep-compounding-sequence-check.sh` hook. Cells carry each axis for other options. One cell per axis per option.
349
+
350
+ <!-- FKGL-EXEMPT: axis enumeration + grace-window note -->
351
+ **Recommended option only.** Other options show in the scan-table cells above. Render this block once.
352
+
353
+ The 6-axis default. These read as practical decision fields for Sam and Louis:
354
+
355
+ - **Deliverable** — noun/artifact list (files shipped, PRs opened, tags cut, hooks wired). Not a verb-heavy sentence.
356
+ - **Problem** — user pain the option removes; ≤500 chars.
357
+ - **Value prop** — claim + sharpener; ≤280 chars.
358
+ - **Turns** — grounded range citing past goal actuals.
359
+ - **Risk** — one line: `🟢/🟡/🔴 <severity> — <what could fail; who catches it>`. Three bands:
360
+ - 🟢 low — CI catches it. No adopter impact. Under 15 min to fix.
361
+ - 🟡 med — needs a rebuild cycle. Local rollback. Under 2h to fix.
362
+ - 🔴 high — adopter sees the drift. Compat shim or release rollback. Over 2h to fix.
363
+ Example row: `🟡 med — hook fixture drifts on rewrite; caught by Tier 0 CI`. Bands anchor to Klein premortem plus Tufte data density plus Maurya riskiest assumption.
364
+ - **Shipping priority** — P1 / P2 / P3 / P4 or blank. Blank prompts `Run /eisenhower to prioritize?`. P-prefix differs from Eisenhower Q1-Q4. Matches the bassclef `p1` GitHub label.
365
+
366
+ The 5-axis legacy shape (grace window through 2026-10-31):
367
+
368
+ - **Where the payoff shows up** (was: Compounding surface) — per-PR / per-release / per-session / per-adopter / per-quarter.
369
+ - **How often it fires** (was: Compounding rate) — continuous / frequent / per-session / per-adopter / per-quarter.
370
+ - **What must be true first** (was: Foundation prereq) — none, or specific ticket / config flag / prior goal.
371
+ - **Does this teach a shape later work reuses** (was: Inverse-dependency) — yes (name the later work) / no.
372
+ - **What breaks if we ship this half-done** (was: Risk class) — one line: glyph + severity word + failure mode + detection. See 6-axis Risk definition above for the blast-radius bands.
373
+
374
+ Hook accepts either shape through the grace window. Fresh analysis per option — do not copy from other docs.
375
+ <!-- /FKGL-EXEMPT -->
376
+
377
+ **Step 1.6** — Under `### <label> · <scope> · <turns> · <risk>`, render a full card for recommended-only. Non-recommended options do NOT get a card by default (per #959 + bassclef-web#152 R2; Prater + Tufte + Cooper). They ship their rationale in the Step 1.5 `Why not` column plus the § Compounding value — recommended only block above. Default prep volume drops by roughly half. Operators pick from the scan table. They read the card only for the option they lean toward. Progressive disclosure per Prater. Operator asks "show cards for B and C too" to expand.
378
+
379
+ <!-- FKGL-EXEMPT: card field enumeration + progressive disclosure rule -->
380
+ The recommended card carries `**Problem**`, `**Value**`, `**Compounds**` (one-line summary — 5 axes live in the § Compounding value — recommended only section per Step 1.5), `**Adopter**` (mechanism + visibility + action). Full field spec at `standards/scannable-multi-option-output.md` § Card template.
381
+
382
+ On operator ask ("show cards for B and C too") — render full cards for every option using the same template. Progressive disclosure per Prater.
383
+ <!-- /FKGL-EXEMPT -->
384
+
385
+ **Step 1.7** — Under `### Steps for <recommended option>`, render step cards only for the option this run recommends.
386
+
387
+ <!-- FKGL-EXEMPT: step-card field enumeration + progressive disclosure rule -->
388
+ Each step card carries `**Problem**`, `**Produces**`, `**Consumes**`, `**Teaches**`, risk glyph. Not for all options. Progressive disclosure per Prater. On operator ask ("show steps for B and C too"), expand for all.
389
+ <!-- /FKGL-EXEMPT -->
390
+
391
+ **Step 1.7b** — Recommendation at end. One sentence citing compounding + risk. Reader scans anchors first. Recommendation lands after.
392
+
393
+ **Step 2** — Session `/temperance` fires with the stated scope question: "Am I about to ship X (inside the time budget) — or am I drifting into adjacent scope Y or Z?" Right thing, right way, scope drift trigger declared.
394
+
395
+ **Step 2a — /pre-mortem light BEFORE any code work (per `.claude/rules/loop-discipline.md` Step 0.5).** When the session will ship code or substrate, dispatch `/pre-mortem light` — 3 luminary lenses × 5-8 risks per lens, 30 min per Klein workshop shape. Write the risk ledger to `docs/risk-ledgers/<date>-<slug>.md`. Touch the marker at `state/markers/pre-mortem/<branch-slug>.marker` citing the ledger path. Strongest concerns fold into the plan before edits begin. Skip Step 2a when scope is prose-only or research-only. The pre-commit-gate hook enforces the marker at first Edit on substrate paths per goal 24a / #836.
396
+
397
+ **Step 2b — Amendment A2: /luminary consult on design decision (per #1150 + #1167).** When scope signals a design decision, dispatch /luminary consult. Design decision means new SKILL, new rule, new hook, new lib, structural refactor, or UX surface change. Read the goal doc `authoring_luminaries.primary` frontmatter field. Pass the primary lens to /luminary. Skip Step 2b when scope is a bug-fix or a one-line change per `.claude/rules/oo-ad-entry-point.md` matrix skip tier.
398
+
399
+ **Step 3** — Register checkpoint triggers (phase boundary, compaction detection, turn counter, saturation milestone, scope drift, `/promote` audit).
400
+
401
+ **Step 4** — Register closeout trigger. The Stop hook composes `/longrun closeout` before existing `/session-end` runs.
402
+
403
+ ### Checkpoint procedure — I fire on my own
404
+
405
+ 1. State the trigger.
406
+ 2. Lead with a `/value-prop tweet` claim and a `/kiss words` grade-10 opener.
407
+ 3. Re-read the parent roadmap state via accessor. Detect if another worker released a step.
408
+ 4. Re-anchor `/temperance` with the current scope question.
409
+ 5. Update the session board.
410
+ 6. Audit for `/promote` candidates. File proactively rather than deferring.
411
+ 6.5. **Amendment A3: /pattern-review per step (per #1150 + #1167).** When the current step's goal references a decomposition doc AND that doc names `@pattern` references, dispatch `/pattern-review` with the decomposition path. Skip when the decomposition names no `@pattern`. Contract per `.claude/rules/pattern-annotation.md` L57-62.
412
+ 7. Report status: steps used, time budget remaining, goals in flight, next step, any pivots since last checkpoint.
413
+ 8. Continue vs pause: continue on budget; pause if a step exceeds 1.5× time budget; pause if a hard ceiling is hit.
414
+
415
+ ### Closeout procedure — I fire on my own
416
+
417
+ 1. Lead with a `/value-prop tweet` claim and a `/kiss words` grade-10 opener.
418
+ 2. Run `/retro`.
419
+ 3. Audit for `/promote` candidates. Backstop for anything missed at checkpoints.
420
+ 4. Extract discoveries from the session log. Propose `design/discoveries/` files.
421
+ 4.5. **Amendment A4: OOAD chain-dispatch counter (per #1150 + #1167).** Read the session-wide count of chain-dispatch events fired during this session (A1 chain reads + A2 luminary consults + A3 /pattern-review dispatches). Surface at closeout as: "OOAD chain fired N times across M steps." Audit trail for operator confirming the chain honored the promise.
422
+ 5. Release pipeline status check (bassclef-upstream only). Flag stuck PRs or commits ahead.
423
+ 5.5. Clean up turn-prose-surface markers. Remove any prep + checkpoint markers left in `state/markers/turn-prose-surface/` — `longrun_prep_proposal.marker`, `longrun_checkpoint.marker`, `longrun_closeout.marker`, `status_update.marker`. Per `.claude/rules/compounding-sequence-fresh-analysis.md` § "Remove the surface marker AFTER scope confirmation". The marker's purpose is satisfied once the surface it gates has landed. Leaving it present makes every post-prep Stop event block under V2 strict default. Bootstrap-pair discipline per `.claude/rules/bootstrap-pair-discipline.md` — every touch owes a paired remove.
424
+
425
+ ```bash
426
+ rm -f state/markers/turn-prose-surface/longrun_prep_proposal.marker \
427
+ state/markers/turn-prose-surface/longrun_checkpoint.marker \
428
+ state/markers/turn-prose-surface/longrun_closeout.marker \
429
+ state/markers/turn-prose-surface/status_update.marker
430
+ ```
431
+
432
+ Idempotent — the `-f` flag makes missing markers a no-op. Closes sunj-labs/bassclef-upstream#866.
433
+ 6. Update the session board frontmatter (`session_ended`, `session_outcome`).
434
+ 7. Update `docs/whereami.md` via `state_whereami_set` accessor, or fallback to direct edit.
435
+
436
+ <!-- FKGL-EXEMPT: Step 7.5 references paths + skip criteria per architect-review SKILL; technical dispatch step resists further simplification without losing precision -->
437
+ 7.5. **/architect-review auto-dispatch (per #1437 Step 2 wiring).** Check skip criteria per `.claude/skills/architect-review/SKILL.md` § Skip criteria. If any skip criterion holds (docs-only session, single-file quick-fix, under 10 commits since last review, operator explicit-defer), log a one-line skip note in the session log Step 8 and continue. Otherwise dispatch `/architect-review`. The review writes its own report at `docs/architecture/reviews/YYYY-MM-DD.md` + creates finding tickets. Return summary line into the session log's Work Done section. See `.claude/skills/architect-review/SKILL.md` § Distinct from Reviewer agent for boundary vs the per-PR CodeReviewer agent.
438
+ <!-- /FKGL-EXEMPT -->
439
+
440
+ 8. Run `/session-end` for tiered obligations (session log, journal, etc.).
441
+ 9. Wiki refresh check: did this run produce material surface changes that need a wiki refresh? Discriminator list per `.claude/rules/session-artifacts.md`.
442
+ 10. Retroactive sweep against the newest discipline shipped this run.
443
+
444
+ ### Self-check step — before posting any operator facing prose
445
+
446
+ Before I post any prep, checkpoint, closeout, or status response, I:
447
+
448
+ 1. Touch the surface marker at `state/markers/turn-prose-surface/<surface>.marker`.
449
+ <!-- FKGL-EXEMPT: technical enumeration — prose part list + 6-check list are reference content -->
450
+ 2. Dispatch `/kiss words --rewrite` on the full rendered draft — opener + tables + cards + step details + recommendation + closing prose. Not just the opener. Not an inline BLOCK-term scan. Actual skill dispatch. The two-flag form runs vocabulary substitution AND six heuristic checks (passive voice, hyphen words, long sentences, non-SVO openers, noun stacks, adverb density). The skill reads `standards/bassclef-internal-jargon.md` as single source of truth per bassclef#907.
451
+ <!-- /FKGL-EXEMPT -->
452
+ 3. Apply the rewrite. When /kiss returns no changes, accept the pass.
453
+ 4. Cite the dispatched skill inline per `.claude/rules/operator-facing-prose.md` Rule 3.
454
+ 5. Post the response.
455
+
456
+ The Stop hook `.claude/hooks/turn-prose-kiss-check.sh` is the post-write safety net. This self-check catches misses before you read. The full-draft dispatch closes bassclef-upstream#858 — the opener carried /kiss but tables + cards + steps + recommendations did not.
457
+
458
+ ### Design principles for Steps 1.4c + 1.4d
459
+
460
+ Steps 1.4c and 1.4d encode 6 principles. Norman + Garrett drove them. Sam + Louis are the readers.
461
+
462
+ See `standards/scannable-multi-option-output.md` for the full debate + principle set. Closes bassclef-upstream#853.
463
+
464
+ ### Args reference
465
+
466
+ | Position | Accepted |
467
+ |---|---|
468
+ | mode | `prep`, `checkpoint`, `closeout` |
469
+ | `--now` | modifier on checkpoint or closeout; rejected on prep |
470
+ | `--operator-gated` | modifier on prep; rejected on checkpoint or closeout |
471
+ | `--parallel` | reserved; not implemented today |
472
+
473
+ ### Rules
474
+
475
+ - Never start `/longrun prep` without operator confirmation.
476
+ - Pre-flight items must be resolved or explicitly deferred. Silence is not deferral.
477
+ - Hard ceilings are operator-gated regardless of `/longrun` config.
478
+ - Every checkpoint must update the session board (no silent skips).
479
+ - Closeout must run `/retro` and `/promote` audit and insight extraction. The three are not optional.
480
+ - `/longrun` is not a substitute for `/autonomous`; it composes it.
481
+ - Scope choices presented to the operator carry a value-prop per option per `.claude/rules/plan-enumeration-needs-value-props.md`. Bare names are not options.
482
+
483
+ ### Grace window on old vocabulary
484
+
485
+ Old vocabulary (bet → goal, appetite → time budget, WU → step, parent bet → parent goal, arc → thread, chronicle → session log) still works through 2026-10-31 per ADR-031 and `.claude/rules/we-dont-break-adopters.md`. The old `/chronicle` skill name still resolves alongside the new `/session-log` name during the same window.
486
+
487
+ ### Refs
488
+
489
+ - ADR-040 planning skill vocabulary and lite profile — vocabulary rename table + template shape
490
+ - `.claude/rules/plain-english-discipline.md` — master rule
491
+ - `.claude/rules/we-dont-break-adopters.md` — grace window discipline
492
+ - `.claude/rules/turn-estimate-grounding.md` — time budget grounding
493
+ - `.claude/rules/plan-enumeration-needs-value-props.md` — scope choice discipline
494
+ - `.claude/rules/longrun-prep-plan-doc-compression.md` — Step 0.85 compressed prep discipline (bassclef-upstream#1307 R1)
495
+ - `standards/bassclef-internal-jargon.md` — self-check wordlist
496
+ - `.claude/luminaries/don-norman.md` — signifiers + mapping + feedback lens for Steps 1.4c + 1.4d
497
+ - `.claude/luminaries/jesse-james-garrett.md` — five planes lens for section-anchor discipline
498
+ - `.claude/luminaries/sophia-prater.md` — OOUX + progressive disclosure lens for Steps 1.5-1.7 card format
499
+ - `.claude/luminaries/edward-tufte.md` — data-ink + glyph-encodes-data lens for scan-table + glyph legend
500
+ - `docs/personas/sam.md` — primary reader (15-30 min budget; bounces on friction)
501
+ - `docs/personas/2026-07-12-bet11c-louis.md` — secondary reader (skims group headings first)
502
+ - `standards/scannable-multi-option-output.md` — full 12 principles + card template + glyph legend
503
+ - bassclef-upstream#853 — parent ticket (Steps 1.4c + 1.4d + Norman + Garrett debate)
504
+ - bassclef-upstream#830 — Shape to Option rename (already applied in this file)
505
+ - bassclef-upstream#1150 — auto-inject /decompose + /pattern-review + /architect-review (A1 + A3 chain wiring)
506
+ - bassclef-upstream#1167 — per-step OOAD dispatch chain (A2 + A4 luminary consult + counter)
507
+ - bassclef-web#152 — iterate /longrun prep output shape (R1 + R2 + R3 reshape)
508
+ - `.claude/rules/pattern-annotation.md` L57-62 — @pattern annotation contract (A3 trigger)
509
+ - `.claude/rules/oo-ad-entry-point.md` — ceremony matrix (A2 skip tier)
510
+ - `.claude/bassclef-orientation.md` L100-108 — OOAD chain sequence (A1 canonical list)
511
+ - `.claude/luminaries/john-ousterhout.md` — co-lead (deep modules + narrow interface)
512
+ - `.claude/luminaries/amazon-pr-faq.md` — supporting (decision at top; PR/FAQ working-backwards)