@thebassclef/lite 0.1.3 → 1.0.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 (293) hide show
  1. package/dist/cli.cjs +431 -135
  2. package/dist/cli.js +433 -137
  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/.bassclef-source.json +10 -0
  7. package/{substrate → dist/lite}/.claude/hooks/artifact-ingestion-gate.sh +0 -0
  8. package/{substrate → dist/lite}/.claude/hooks/assert-verify-steering.sh +0 -0
  9. package/{substrate → dist/lite}/.claude/hooks/bassclef-source-config-validate.sh +0 -0
  10. package/{substrate → dist/lite}/.claude/hooks/bassclef-sync.sh +0 -0
  11. package/{substrate → dist/lite}/.claude/hooks/compound-noun-scrub.sh +0 -0
  12. package/{substrate → dist/lite}/.claude/hooks/kiss-expansion-inject.sh +0 -0
  13. package/{substrate → dist/lite}/.claude/hooks/longrun-prep-compounding-sequence-check.sh +0 -0
  14. package/{substrate → dist/lite}/.claude/hooks/plain-english-steering.sh +0 -0
  15. package/{substrate → dist/lite}/.claude/hooks/post-skill-friction-check.sh +0 -0
  16. package/{substrate → dist/lite}/.claude/hooks/post-skill-telemetry.sh +0 -0
  17. package/{substrate → dist/lite}/.claude/hooks/pre-build-gate.sh +0 -0
  18. package/{substrate → dist/lite}/.claude/hooks/pre-commit-gate.sh +0 -0
  19. package/{substrate → dist/lite}/.claude/hooks/session-end.sh +0 -0
  20. package/{substrate → dist/lite}/.claude/hooks/session-reflection.sh +0 -0
  21. package/{substrate → dist/lite}/.claude/hooks/skill-body-grade-gate.sh +0 -0
  22. package/{substrate → dist/lite}/.claude/hooks/skill-body-intent-drift.sh +0 -0
  23. package/{substrate → dist/lite}/.claude/hooks/state-validate.sh +0 -0
  24. package/{substrate → dist/lite}/.claude/hooks/substrate-clarity-gate.sh +0 -0
  25. package/{substrate → dist/lite}/.claude/hooks/temperance-gate.sh +0 -0
  26. package/{substrate → dist/lite}/.claude/hooks/testing-tier-enforce.sh +0 -0
  27. package/{substrate → dist/lite}/.claude/hooks/turn-prose-grade-measure.sh +0 -0
  28. package/{substrate → dist/lite}/.claude/hooks/turn-prose-kiss-check.sh +0 -0
  29. package/{substrate → dist/lite}/.claude/hooks/vocabulary-migration-check.sh +0 -0
  30. package/{substrate → dist/lite}/.claude/hooks/whereami-utc-gate.sh +0 -0
  31. package/dist/lite/.claude/settings.json +212 -0
  32. package/dist/lite/CLAUDE.md +41 -0
  33. package/dist/lite/gitignore +58 -0
  34. package/dist/lite/standards/bassclef-wiring-manifest.json +497 -0
  35. package/dist/lite/whereami.md +24 -0
  36. package/package.json +8 -2
  37. package/substrate/.bassclef/lite-manifest.json +0 -2701
  38. package/substrate/.claude/agents/architect.md +0 -70
  39. package/substrate/.claude/agents/builder.md +0 -114
  40. package/substrate/.claude/agents/designer.md +0 -156
  41. package/substrate/.claude/agents/reviewer.md +0 -88
  42. package/substrate/.claude/hooks/longrun-prep-compounding-axis-check.sh +0 -492
  43. package/substrate/.claude/hooks/skill-step-list-check.sh +0 -171
  44. package/substrate/.claude/luminaries/alan-cooper.md +0 -170
  45. package/substrate/.claude/luminaries/alistair-cockburn.md +0 -140
  46. package/substrate/.claude/luminaries/amazon-pr-faq.md +0 -34
  47. package/substrate/.claude/luminaries/ash-maurya.md +0 -121
  48. package/substrate/.claude/luminaries/bill-buxton.md +0 -210
  49. package/substrate/.claude/luminaries/charles-sanders-peirce.md +0 -150
  50. package/substrate/.claude/luminaries/david-ogilvy.md +0 -192
  51. package/substrate/.claude/luminaries/don-norman.md +0 -173
  52. package/substrate/.claude/luminaries/edward-tufte.md +0 -179
  53. package/substrate/.claude/luminaries/eric-evans.md +0 -160
  54. package/substrate/.claude/luminaries/frederick-brooks.md +0 -50
  55. package/substrate/.claude/luminaries/gang-of-four.md +0 -157
  56. package/substrate/.claude/luminaries/glenford-myers.md +0 -230
  57. package/substrate/.claude/luminaries/hunt-thomas.md +0 -115
  58. package/substrate/.claude/luminaries/hyrum-wright.md +0 -94
  59. package/substrate/.claude/luminaries/jason-fried-dhh.md +0 -46
  60. package/substrate/.claude/luminaries/jesse-james-garrett.md +0 -154
  61. package/substrate/.claude/luminaries/john-ousterhout.md +0 -94
  62. package/substrate/.claude/luminaries/karl-popper.md +0 -132
  63. package/substrate/.claude/luminaries/kent-beck.md +0 -168
  64. package/substrate/.claude/luminaries/linus-torvalds.md +0 -218
  65. package/substrate/.claude/luminaries/martin-fowler.md +0 -164
  66. package/substrate/.claude/luminaries/michael-feathers.md +0 -125
  67. package/substrate/.claude/luminaries/michael-nygard.md +0 -118
  68. package/substrate/.claude/luminaries/robert-c-martin.md +0 -164
  69. package/substrate/.claude/luminaries/saltzer-schroeder.md +0 -194
  70. package/substrate/.claude/luminaries/sophia-prater.md +0 -193
  71. package/substrate/.claude/luminaries/stephen-toulmin.md +0 -131
  72. package/substrate/.claude/luminaries/tony-hoare.md +0 -170
  73. package/substrate/.claude/luminaries/vaughn-vernon.md +0 -50
  74. package/substrate/.claude/luminaries/w-edwards-deming.md +0 -158
  75. package/substrate/.claude/rules/accessor-library-discipline.md +0 -138
  76. package/substrate/.claude/rules/adr-discipline.md +0 -120
  77. package/substrate/.claude/rules/api-conventions.md +0 -125
  78. package/substrate/.claude/rules/artifact-ingestion.md +0 -179
  79. package/substrate/.claude/rules/assert-only-after-verify.md +0 -137
  80. package/substrate/.claude/rules/blocked-items.md +0 -146
  81. package/substrate/.claude/rules/bootstrap-pair-discipline.md +0 -141
  82. package/substrate/.claude/rules/branching.md +0 -28
  83. package/substrate/.claude/rules/cold-adopter-harness-discipline.md +0 -129
  84. package/substrate/.claude/rules/commit-conventions.md +0 -22
  85. package/substrate/.claude/rules/compounding-axis-fresh-analysis.md +0 -188
  86. package/substrate/.claude/rules/compounding-sequence-fresh-analysis.md +0 -188
  87. package/substrate/.claude/rules/context-engineering.md +0 -202
  88. package/substrate/.claude/rules/context-management.md +0 -85
  89. package/substrate/.claude/rules/defensive-bash.md +0 -68
  90. package/substrate/.claude/rules/deferred-actions.md +0 -233
  91. package/substrate/.claude/rules/destructive-operations.md +0 -69
  92. package/substrate/.claude/rules/diagnosis.md +0 -38
  93. package/substrate/.claude/rules/github-issue-flash-tweet.md +0 -156
  94. package/substrate/.claude/rules/guardrails.md +0 -73
  95. package/substrate/.claude/rules/hook-wire-on-author.md +0 -103
  96. package/substrate/.claude/rules/identifier-leak-prevention.md +0 -104
  97. package/substrate/.claude/rules/iteration-bet-brief-completeness.md +0 -54
  98. package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +0 -98
  99. package/substrate/.claude/rules/longrun-prep-plan-doc-compression.md +0 -89
  100. package/substrate/.claude/rules/loop-discipline.md +0 -81
  101. package/substrate/.claude/rules/manual-prod-approval.md +0 -100
  102. package/substrate/.claude/rules/marker-enrichment-discipline.md +0 -99
  103. package/substrate/.claude/rules/mobile-ephemeral-session.md +0 -109
  104. package/substrate/.claude/rules/new-dependency-check.md +0 -51
  105. package/substrate/.claude/rules/oo-ad-entry-point.md +0 -117
  106. package/substrate/.claude/rules/operator-facing-prose.md +0 -196
  107. package/substrate/.claude/rules/option-label-discipline.md +0 -108
  108. package/substrate/.claude/rules/pattern-annotation.md +0 -100
  109. package/substrate/.claude/rules/plain-english-discipline.md +0 -156
  110. package/substrate/.claude/rules/plan-enumeration-needs-value-props.md +0 -211
  111. package/substrate/.claude/rules/pr-body-shape.md +0 -317
  112. package/substrate/.claude/rules/pr-strategy.md +0 -167
  113. package/substrate/.claude/rules/pr-title-shape.md +0 -161
  114. package/substrate/.claude/rules/prototype-workflow.md +0 -65
  115. package/substrate/.claude/rules/reserved-skill-names.md +0 -123
  116. package/substrate/.claude/rules/schema-management.md +0 -49
  117. package/substrate/.claude/rules/sdlc-gates.md +0 -149
  118. package/substrate/.claude/rules/security.md +0 -37
  119. package/substrate/.claude/rules/session-artifacts.md +0 -236
  120. package/substrate/.claude/rules/skill-composition-declarations.md +0 -124
  121. package/substrate/.claude/rules/skill-description-clarity.md +0 -247
  122. package/substrate/.claude/rules/skill-procedure-step-list.md +0 -137
  123. package/substrate/.claude/rules/state-schema-validation.md +0 -162
  124. package/substrate/.claude/rules/stuck-signal-diagnostic.md +0 -140
  125. package/substrate/.claude/rules/substrate-config-schema.md +0 -98
  126. package/substrate/.claude/rules/test-list-discipline.md +0 -175
  127. package/substrate/.claude/rules/test-sufficiency.md +0 -210
  128. package/substrate/.claude/rules/testing-tier-config.md +0 -145
  129. package/substrate/.claude/rules/testing.md +0 -38
  130. package/substrate/.claude/rules/turn-estimate-grounding.md +0 -134
  131. package/substrate/.claude/rules/visual-hierarchy.md +0 -437
  132. package/substrate/.claude/rules/we-dont-break-adopters.md +0 -126
  133. package/substrate/.claude/rules/whereami-load-bearing.md +0 -202
  134. package/substrate/.claude/rules/writing-craft-discipline.md +0 -92
  135. package/substrate/.claude/rules/wu-sequencing-compounds.md +0 -145
  136. package/substrate/.claude/skills/build/SKILL.md +0 -640
  137. package/substrate/.claude/skills/chronicle/SKILL.md +0 -55
  138. package/substrate/.claude/skills/clean-artifacts/SKILL.md +0 -249
  139. package/substrate/.claude/skills/decompose/SKILL.md +0 -280
  140. package/substrate/.claude/skills/diagnose/SKILL.md +0 -297
  141. package/substrate/.claude/skills/feynman/SKILL.md +0 -90
  142. package/substrate/.claude/skills/howdoi/SKILL.md +0 -105
  143. package/substrate/.claude/skills/ia-model/SKILL.md +0 -108
  144. package/substrate/.claude/skills/interaction-design/SKILL.md +0 -112
  145. package/substrate/.claude/skills/interpret-input/SKILL.md +0 -180
  146. package/substrate/.claude/skills/journal/SKILL.md +0 -209
  147. package/substrate/.claude/skills/kiss/SKILL.md +0 -449
  148. package/substrate/.claude/skills/launch/SKILL.md +0 -915
  149. package/substrate/.claude/skills/lean-canvas/SKILL.md +0 -332
  150. package/substrate/.claude/skills/longrun/SKILL.md +0 -463
  151. package/substrate/.claude/skills/luminary/SKILL.md +0 -481
  152. package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +0 -177
  153. package/substrate/.claude/skills/onboard-repo/SKILL.md +0 -1624
  154. package/substrate/.claude/skills/pattern-review/SKILL.md +0 -99
  155. package/substrate/.claude/skills/personas/SKILL.md +0 -207
  156. package/substrate/.claude/skills/promote/SKILL.md +0 -283
  157. package/substrate/.claude/skills/requirement/SKILL.md +0 -98
  158. package/substrate/.claude/skills/retro/SKILL.md +0 -117
  159. package/substrate/.claude/skills/riff/SKILL.md +0 -114
  160. package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +0 -163
  161. package/substrate/.claude/skills/session-end/SKILL.md +0 -309
  162. package/substrate/.claude/skills/session-log/SKILL.md +0 -299
  163. package/substrate/.claude/skills/skills/SKILL.md +0 -228
  164. package/substrate/.claude/skills/spec/SKILL.md +0 -105
  165. package/substrate/.claude/skills/sprint/SKILL.md +0 -392
  166. package/substrate/.claude/skills/stage/SKILL.md +0 -384
  167. package/substrate/.claude/skills/state-a-problem/SKILL.md +0 -185
  168. package/substrate/.claude/skills/temperance/SKILL.md +0 -108
  169. package/substrate/.claude/skills/use-case/SKILL.md +0 -417
  170. package/substrate/.claude/skills/user-stories/SKILL.md +0 -268
  171. package/substrate/.claude/skills/value-prop/SKILL.md +0 -251
  172. package/substrate/.claude/skills/verify/SKILL.md +0 -160
  173. package/substrate/.claude/skills/visual-review/SKILL.md +0 -503
  174. package/substrate/.claude/skills/whats-the-plan/SKILL.md +0 -202
  175. package/substrate/.claude/skills/whereami/SKILL.md +0 -307
  176. package/substrate/AGENTS.md +0 -79
  177. package/substrate/CLAUDE-lite.md +0 -85
  178. package/substrate/CODE_OF_CONDUCT.md +0 -28
  179. package/substrate/CONTRIBUTING.md +0 -177
  180. package/substrate/README.md +0 -173
  181. package/substrate/SECURITY.md +0 -19
  182. package/substrate/architecture/decisions/ADR-029-release-pipeline.md +0 -79
  183. package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +0 -139
  184. package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +0 -192
  185. package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +0 -145
  186. package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +0 -155
  187. package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +0 -162
  188. package/substrate/lib/clean-artifacts-sweep.sh +0 -112
  189. package/substrate/lib/code-comment-discipline.sh +0 -144
  190. package/substrate/lib/composer-preflight.sh +0 -459
  191. package/substrate/lib/hook-inject.sh +0 -255
  192. package/substrate/lib/luminary-pick.sh +0 -96
  193. package/substrate/lib/output-discipline.sh +0 -143
  194. package/substrate/lib/prose-scan-boundary.sh +0 -171
  195. package/substrate/lib/rewrite-check.sh +0 -214
  196. package/substrate/lib/state.sh +0 -1372
  197. package/substrate/lib/telemetry.sh +0 -205
  198. package/substrate/lib/tier-check.sh +0 -187
  199. package/substrate/lib/tier-dependency-audit.sh +0 -1088
  200. package/substrate/presence/install/bassclef-hook-connect.sh +0 -178
  201. package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +0 -841
  202. package/substrate/presence/install/bassclef-sync.template.sh +0 -2076
  203. package/substrate/presence/install/schedule-auto-save.cron.sh +0 -88
  204. package/substrate/presence/install/schedule-auto-save.taskscheduler.md +0 -122
  205. package/substrate/scripts/aggregate-telemetry.sh +0 -217
  206. package/substrate/scripts/analyze-tier-dependencies.sh +0 -239
  207. package/substrate/scripts/generate-lite-manifest.sh +0 -505
  208. package/substrate/scripts/generate-tier-manifest.sh +0 -28
  209. package/substrate/scripts/intent-drift-check.sh +0 -456
  210. package/substrate/scripts/lite-manifest-drift-check.sh +0 -146
  211. package/substrate/scripts/render-lite-manifest-doc.sh +0 -150
  212. package/substrate/standards/adr-template.md +0 -86
  213. package/substrate/standards/api-conventions/nextjs.md +0 -84
  214. package/substrate/standards/artifact-composition.md +0 -209
  215. package/substrate/standards/bash-hook-safety.md +0 -246
  216. package/substrate/standards/bassclef-configs-schema.md +0 -232
  217. package/substrate/standards/bassclef-evolution.md +0 -143
  218. package/substrate/standards/bassclef-internal-jargon.md +0 -244
  219. package/substrate/standards/bassclef-managed-sentinel.md +0 -96
  220. package/substrate/standards/bassclef-source-config.md +0 -228
  221. package/substrate/standards/branch-stacking.md +0 -408
  222. package/substrate/standards/code-safety-principles.md +0 -176
  223. package/substrate/standards/composer-prerequisites.md +0 -155
  224. package/substrate/standards/deferred-actions-schema.md +0 -204
  225. package/substrate/standards/dependency-discipline/cargo.md +0 -39
  226. package/substrate/standards/dependency-discipline/gem.md +0 -43
  227. package/substrate/standards/dependency-discipline/go-mod.md +0 -41
  228. package/substrate/standards/dependency-discipline/npm.md +0 -42
  229. package/substrate/standards/dependency-discipline/pip.md +0 -42
  230. package/substrate/standards/deployment-topology/ec2-tailscale.md +0 -225
  231. package/substrate/standards/deployment-topology.md +0 -69
  232. package/substrate/standards/docs-sync-allowlist.md +0 -76
  233. package/substrate/standards/domain-and-dns.md +0 -145
  234. package/substrate/standards/frontend-stack.md +0 -67
  235. package/substrate/standards/frontmatter-schema.md +0 -154
  236. package/substrate/standards/graceful-exit.md +0 -227
  237. package/substrate/standards/hook-idempotency.md +0 -102
  238. package/substrate/standards/hook-injection-discipline.md +0 -202
  239. package/substrate/standards/hook-install-class.md +0 -215
  240. package/substrate/standards/input-handler-interface.md +0 -152
  241. package/substrate/standards/lite-manifest-schema-changes.md +0 -135
  242. package/substrate/standards/luminary-matching.md +0 -105
  243. package/substrate/standards/luminary-problem-patterns.md +0 -481
  244. package/substrate/standards/migration-discipline/active-record.md +0 -50
  245. package/substrate/standards/migration-discipline/alembic.md +0 -43
  246. package/substrate/standards/migration-discipline/gorm.md +0 -50
  247. package/substrate/standards/migration-discipline/prisma.md +0 -53
  248. package/substrate/standards/migration-discipline/sqlalchemy.md +0 -51
  249. package/substrate/standards/mobile-ephemeral-session.md +0 -167
  250. package/substrate/standards/model-routing-discipline.md +0 -160
  251. package/substrate/standards/ogilvy-writing-rules.md +0 -225
  252. package/substrate/standards/opener-discipline.md +0 -96
  253. package/substrate/standards/operator-facing-prose-discipline.md +0 -201
  254. package/substrate/standards/persona-schema.md +0 -229
  255. package/substrate/standards/pluggable-luminaries.md +0 -323
  256. package/substrate/standards/pr-body-discipline.md +0 -115
  257. package/substrate/standards/preview-state-schema.md +0 -189
  258. package/substrate/standards/project-directory-layout.md +0 -276
  259. package/substrate/standards/release-tagging.md +0 -137
  260. package/substrate/standards/reserved-skill-names.md +0 -120
  261. package/substrate/standards/scannable-multi-option-output.md +0 -261
  262. package/substrate/standards/sdlc-compliance.md +0 -286
  263. package/substrate/standards/sdlc-gates/typescript.md +0 -57
  264. package/substrate/standards/secrets-lifecycle.md +0 -210
  265. package/substrate/standards/security-scanner-adapter.md +0 -145
  266. package/substrate/standards/session-board.md +0 -256
  267. package/substrate/standards/skill-output-discipline.md +0 -90
  268. package/substrate/standards/state-spine-contract.md +0 -255
  269. package/substrate/standards/state-spine.md +0 -511
  270. package/substrate/standards/steering-hints/kiss-words.md +0 -11
  271. package/substrate/standards/substrate-config-schema.md +0 -267
  272. package/substrate/standards/tech-stack-config.md +0 -109
  273. package/substrate/standards/tier-dependency-analysis.md +0 -167
  274. package/substrate/standards/tier-runtime-deps/lite.md +0 -57
  275. package/substrate/standards/tier-tag-schema.md +0 -155
  276. package/substrate/standards/two-layer-config.md +0 -99
  277. package/substrate/standards/use-case-format.md +0 -292
  278. package/substrate/standards/user-story-invest.md +0 -268
  279. package/substrate/standards/velocity-and-appetite.md +0 -229
  280. package/substrate/standards/voice-input-pattern.md +0 -119
  281. package/substrate/standards/whereami-schema.md +0 -301
  282. package/substrate/standards/worktree-management.md +0 -211
  283. package/substrate/standards/writing-guide.md +0 -213
  284. package/substrate/templates/chronicle-template.md +0 -75
  285. package/substrate/templates/deferred-action-template.md +0 -45
  286. package/substrate/templates/memory-proposal-template.md +0 -77
  287. package/substrate/templates/persona-template.md +0 -200
  288. package/substrate/templates/pr-faq.md +0 -45
  289. package/substrate/templates/secret-rotation-template.md +0 -162
  290. package/substrate/templates/spec-template.md +0 -131
  291. package/substrate/templates/use-case-template.md +0 -194
  292. package/substrate/templates/user-story-template.md +0 -107
  293. package/substrate/templates/whereami-template.md +0 -101
@@ -1,73 +0,0 @@
1
- ---
2
- tier: lite
3
- globs: ["*"]
4
- description: Agent guardrails — behavior boundaries, escalation rules, capability ceilings for autonomous operation
5
- ---
6
-
7
- # Agent Guardrails
8
-
9
- Formal behavior boundaries for autonomous agents. These are hard constraints,
10
- not guidelines.
11
-
12
- ## What agents must NEVER do
13
- - Push to main without PR review
14
- - Delete data in production databases
15
- - Deploy to production without human approval — even in orchestrator-gated mode. This is the hardest guardrail. No exceptions.
16
- - Deploy to any environment not configured in substrate.config.md deploy_targets
17
- - Modify auth/security middleware without human approval
18
- - Expand scope beyond the declared time budget
19
- - Skip a hard gate (Inception → Elaboration → Construction → Transition)
20
- - Self-report gate compliance without evidence artifacts
21
- - Override another agent's decision authority (e.g., Builder overriding Architect on ADRs)
22
- - Send external communications (emails, Slack, webhooks) without human approval
23
- - Modify CI/CD pipeline configuration without human approval
24
- - Create or delete GitHub repos, branches on main, or release tags
25
-
26
- ## What agents must ALWAYS do
27
- - Save state before ending (commit, push, LAST_SAVE)
28
- - Write a chronicle entry at session end
29
- - Run /temperance before non-trivial implementation
30
- - Run /verify after each task before committing
31
- - Flag ambiguity rather than proceeding with assumptions
32
- - Produce a substrate artifact at every handoff
33
- - Reference the iteration goal when starting work
34
- - Check the risk register at iteration start
35
-
36
- ## Escalation rules
37
- - Builder → Architect for ADR questions
38
- - Builder → PM for scope questions
39
- - Builder → Designer for UX questions
40
- - Any agent → Orchestrator for sequencing disputes
41
- - Any agent → Human for: scope expansion, security changes, external communications, budget overruns
42
-
43
- ## Capability ceilings by role
44
- - Reviewer: read-only. Cannot modify code.
45
- - Shaper: cannot implement or deploy.
46
- - PM: cannot implement or architect.
47
- - Designer: cannot implement. Validates only.
48
- - Creative Director: cannot implement. Directs only.
49
- - Architect: cannot implement in Construction. Designs only.
50
- - Builder: cannot override ADRs. Implements within constraints.
51
- - Deployer: cannot write application code. Ships only.
52
- - Closer: cannot build. Documents and closes only.
53
- - Orchestrator: cannot override any role's decision authority. Coordinates only.
54
-
55
- ## Graceful exit conditions
56
-
57
- See `standards/graceful-exit.md` for the full exit protocol, checkpoint format,
58
- checkpoint triggers, and recovery procedure.
59
-
60
- Summary of conditions (full protocol in the standard):
61
- - Time budget exhausted → save state, write checkpoint, report progress, end
62
- - Budget limit reached → save state, write checkpoint, report, end
63
- - Ambiguity unresolvable without human → save state, write checkpoint, escalate, end
64
- - Blocked by external dependency → save state, log blocker in checkpoint, end
65
- - Error after 3 diagnosis attempts → save state, write checkpoint, escalate, end
66
- - User interrupts → save state immediately, write checkpoint
67
- - Context pressure ≥ 70% → write checkpoint, let compaction run, re-read survival kit
68
-
69
- ## Agent identity in artifacts
70
- - Every commit by an autonomous agent includes the agent role in the message
71
- - Every PR created by an agent is labeled with the agent role
72
- - Chronicle entries note which agent(s) were active
73
- - This enables audit: who did what, with what authority
@@ -1,103 +0,0 @@
1
- ---
2
- tier: lite
3
- description: Every new bassclef hook (a file under .claude/hooks/*.sh) MUST be added to project .claude/settings.json in the same PR that authors it.
4
- ---
5
-
6
- # Hook Wire On Author
7
-
8
- Every new bassclef hook (a file under `.claude/hooks/*.sh`) MUST be added to project `.claude/settings.json` in the same PR that authors it. Hooks without settings entries are dead-letter — they exist on disk but stay silent on every tool call. The substrate appears to ship the safety net; in reality, every adopter session runs without it.
9
-
10
- INSTEAD of shipping the hook on its own: include the settings entry in the same PR. The cost is one settings.json edit; the work compounds across every adopter session.
11
-
12
- This rule closes the substrate-defect class that produced bassclef-upstream#319 (phase-1, closed 2026-06-24) + #376 (phase-2, this rule's filing context).
13
-
14
- ## Why this rule exists
15
-
16
- Audit during PR #318 surfaced 32 of 42 bassclef hooks without settings entries. The defect class: write hook → ship hook → forget the settings entry. No mechanical check existed to flag these at PR-author boundary.
17
-
18
- INSTEAD of letting the gap repeat: this rule + the V2 mechanical layer in `pre-commit-gate.sh` close the class at the authoring boundary so phase-3 never has to file.
19
-
20
- Phase-1 (#319) shipped a subset of P0 entries during the 2026-06-24 architect-review longrun. Phase-2 (#376) shipped the remaining 11 during the 2026-06-26 ultra-plus thread longrun. Both bets exist because the discipline was methodology-only.
21
-
22
- ## When this rule fires
23
-
24
- Any PR that adds a new `.claude/hooks/*.sh` file. The rule passes through on:
25
-
26
- - Edits to existing hooks (only NEW hook files trigger)
27
- - Test files under `.claude/hooks/tests/`
28
- - Library scripts under `lib/` (those are sourced; not hooks)
29
- - Documentation under `.claude/hooks/*.md`
30
-
31
- ## What the rule requires
32
-
33
- When a PR adds a new hook file, the same PR MUST also include an edit to `.claude/settings.json` adding the hook at its correct matcher. The hook's header MUST declare its intended matcher per these conventions:
34
-
35
- - `# PreToolUse: <matcher>` — added under `hooks.PreToolUse[].matcher`
36
- - `# Stop` — added under `hooks.Stop[].hooks`
37
- - `# PostToolUse: <matcher>` — added under `hooks.PostToolUse[].matcher`
38
- - `# SessionStart` — added under `hooks.SessionStart[].hooks`
39
- - `# UserPromptSubmit` — added under `hooks.UserPromptSubmit[].hooks`
40
-
41
- The PR body MUST include a `Bootstrap pair shipped` block per `.claude/rules/bootstrap-pair-discipline.md` naming both the hook file AND the settings.json entry line.
42
-
43
- ## Anti-patterns
44
-
45
- These shapes fail this rule.
46
-
47
- **Hook shipped without settings entry.** Author edits `.claude/hooks/foo.sh`, commits, opens PR. Settings.json untouched.
48
-
49
- INSTEAD: ship the settings entry in the same PR. The cost is small (one settings.json line); the work compounds across every adopter session.
50
-
51
- **Hook references "sourced-only by design" in header.** Hook docstring says "this hook is sourced by other hooks, not connected directly." Phase-1 audit treated this as exempt; phase-2 reshape clarifies: composite/sourced libraries belong under `lib/`, not `.claude/hooks/`.
52
-
53
- INSTEAD of marking the hook exempt: move sourced-only libraries to `lib/`. Hooks under `.claude/hooks/` either get a settings entry or get moved.
54
-
55
- **Hook shipped at wrong matcher.** Author adds `pre-build-gate.sh` under PreToolUse Bash when its header says PreToolUse Edit|Write|MultiEdit. Hook stays silent.
56
-
57
- INSTEAD of guessing the matcher: read the hook's header before adding the entry. The matcher convention is documented above.
58
-
59
- ## Mechanical layer
60
-
61
- **V1.5 (bassclef-upstream#1163 Layer 4, shipped 2026-08-08):** `.claude/hooks/hook-classifier-canary.sh` fires as PreToolUse Edit|Write|MultiEdit against paths under `.claude/hooks/*.sh` (excludes tests dir + fixtures). Detects new hook files that lack any recognized wiring signal (settings.json / .github/workflows / scripts/release-to-bassclef.sh / launchd header / sourced-lib header). Emits ADVISORY to stderr naming 5 remediation paths. Sources `lib/mechanism-fidelity.sh` for the classifier vocabulary. Override: `SKIP_HOOK_CLASSIFIER_CANARY=1`. Tier 0 test at `.claude/hooks/tests/hook-classifier-canary.test.sh` (10 tests).
62
-
63
- **V2 (deferred):** flip canary from ADVISORY to BLOCK once one calibration cycle passes with zero operator-reported false positives.
64
-
65
- **V3 (deferred to pre-commit sibling):** extend `pre-commit-gate.sh` to scan `git diff --staged --name-only` for new hooks and BLOCK when settings entry absent. Two-layer defense (author-time canary + commit-time gate) closes the class end-to-end.
66
-
67
- Defer V3 to a separate goal when V1.5+V2 have shipped through enough PRs that the failure modes are stable.
68
-
69
- ## Override
70
-
71
- `SKIP_HOOK_WIRE_ON_AUTHOR=1 <command>` — logged via trace-helper. Use only when:
72
-
73
- - The hook is genuinely "in development" and ships without settings entry with a follow-on ticket filed AND the current PR cites the follow-on
74
- - Emergency rescue where adding the entry would break the harness
75
-
76
- INSTEAD of overriding for routine work: ship the settings entry in the same PR. The cost is small (one settings.json line); the discipline compounds across every adopter session.
77
-
78
- ## Composes with
79
-
80
- - `.claude/rules/bootstrap-pair-discipline.md` — sister discipline (this rule extends the bootstrap-pair contract to hook + settings entry)
81
- - `.claude/rules/cold-adopter-harness-discipline.md` — sister discipline at adopter-observable boundary (settings.json IS adopter-observable)
82
- - `.claude/rules/blocked-items.md` — BLOCK protocol the V2 mechanical layer fires
83
- - `@luminary saltzer-schroeder` — complete mediation (the safety net is connected, not dead-letter)
84
- - `@luminary michael-nygard` — stability pattern (the settings entry is what makes the safety net real)
85
- - `@luminary linus-torvalds` — adopter-trust ceiling (bassclef hooks without settings entries equal adopter hooks without settings entries)
86
-
87
- ## Distinct from
88
-
89
- - `.claude/rules/bootstrap-pair-discipline.md` — that rule covers any substrate building block + its pair; this rule covers the specific hook + settings entry case
90
- - `.claude/rules/testing-tier-config.md` — that rule covers Tier 0 strict TDD on the hook itself; this rule covers the settings entry beyond the test
91
- - `.claude/rules/cold-adopter-harness-discipline.md` — that rule covers adopter-observable changes broadly; this rule covers the hook-settings slice
92
-
93
- ## Refs
94
-
95
- - bassclef-upstream#376 (parent — V1 ships this rule)
96
- - bassclef-upstream#319 (phase-1 closed; the sweep that surfaced the discipline gap)
97
- - bet `docs/iteration-bets/2026-06-26c-hook-wiring-phase-2.md` § WU-3 (this rule)
98
- - `.claude/rules/bootstrap-pair-discipline.md` (sister)
99
- - `@luminary saltzer-schroeder` + `@luminary michael-nygard` (anchors)
100
-
101
- ## Retirement condition
102
-
103
- This rule retires only if bassclef migrates off hooks-as-substrate-primitives (very unlikely; hooks are the operational layer for substrate-discipline enforcement). The V2 mechanical extension may absorb the methodology check; the discipline at author time persists.
@@ -1,104 +0,0 @@
1
- ---
2
- tier: lite
3
- description: Bassclef commits stay free of operator machine identifiers.
4
- ---
5
-
6
- <!-- andon-allow: [A-Za-z][A-Za-z0-9]*-MacBook-(Air|Pro) -->
7
- <!-- andon-allow: /Users/[a-z][a-z0-9._-]+ -->
8
- <!-- andon-allow: /home/[a-z][a-z0-9._-]+ -->
9
-
10
- # Identifier leak prevention
11
-
12
- Bassclef commits stay free of operator machine identifiers.
13
-
14
- INSTEAD of committing hostname strings (X-MacBook-Air, DESKTOP-XYZ, X-server-N), absolute paths starting with /Users/ or /home/, or any operator-identifying metadata: rewrite the message or content with placeholders (branch name, `<machine>`, `$HOME`) before commit.
15
-
16
- This rule is the methodology layer. The mechanical layer is `.claude/hooks/pre-commit-identifier-leak-scrub.sh` (PreToolUse Bash matcher on `git commit`). Both required.
17
-
18
- ## Why this rule exists
19
-
20
- Coverage gap surfaced by outside consult on 2026-09-01 (issue sunj-labs/bassclef#1471). Existing leakage scans (release-script andon + operator-private-path-check) target directory references, not identifier strings. Auto-save-checkpoint commits interpolated hostname into every message — 98 such commits landed on bassclef-upstream main + spread to public bassclef via archive snapshots.
21
-
22
- CCF-3 keeps operator config gitignored and out of git history.
23
- INSTEAD of assuming that discipline holds at the .gitignore layer alone: enforce at the commit boundary via this hook + rule pair. Both layers close the loop between principle and mechanism.
24
-
25
- ## When this rule fires
26
-
27
- Every `git commit` invocation across bassclef and adopter repos. The hook scans:
28
-
29
- 1. Commit message text (parses `-m "..."` arg)
30
- 2. Staged content (`git diff --cached`)
31
-
32
- Fires on PreToolUse Bash matcher when `tool_input.command` starts with `git commit`. Non-git-commit commands pass through cleanly.
33
-
34
- ## What the rule requires
35
-
36
- No commit lands with these patterns in message OR staged content:
37
-
38
- - **Hostname shapes**: `[A-Za-z][A-Za-z0-9]*-MacBook-(Air|Pro)`, `DESKTOP-[A-Z0-9]{4,}`, `*-server-*`, `*-desktop-*`
39
- - **Absolute paths**: `/Users/<name>`, `/home/<name>`
40
-
41
- Extension mechanism — future pattern classes added to the hook's `IDENTIFIER_PATTERNS` regex + a corresponding Tier 0 test.
42
-
43
- ## Anti-patterns
44
-
45
- **Auto-save-checkpoint commits with hostname suffix.**
46
-
47
- INSTEAD of interpolating `$(hostname -s)` into the commit message per `save-state.sh` historical L222-225 shape: use branch name + file count only. Session identity moves to commit trailer if debug needed locally.
48
-
49
- **LAST_SAVE file with `machine:` field.**
50
-
51
- INSTEAD of writing machine identifier into `.claude/LAST_SAVE`: either gitignore the file OR drop the `machine:` field. This ticket takes both paths — gitignore the file + drop the field.
52
-
53
- **state/markers/ tracked in git.**
54
-
55
- INSTEAD of selectively-gitignored marker subdirs (contradicts `session-artifacts.md` L14-25): broad `state/markers/` gitignore + `git rm -r --cached state/markers/` one-time cure. Adopters inheriting the sync run the same cure once.
56
-
57
- ## Override path
58
-
59
- `SKIP_IDENTIFIER_LEAK_SCRUB=1 git commit ...` — logged via trace-helper. Rare use cases:
60
-
61
- - Documentation explaining what patterns to avoid (e.g., this rule body cites the pattern class)
62
- - Migration scripts that intentionally reference historical hostname strings
63
- - Emergency rescue where the hook itself misbehaves
64
-
65
- INSTEAD of routine overrides: rewrite the commit or content. The cost is small; the discipline compounds across every future commit.
66
-
67
- ## Adopter cure (one-time)
68
-
69
- Adopters running bassclef-sync after this rule ships see one-time drift. Existing `state/markers/*` files stay tracked in their index but ignored by the new .gitignore.
70
-
71
- Cure:
72
-
73
- ```bash
74
- git rm -r --cached state/markers/
75
- git commit -m "chore: untrack state markers per bassclef identifier-leak-prevention rule"
76
- ```
77
-
78
- The working-tree files stay. Only the git index changes.
79
-
80
- ## Composes with
81
-
82
- - `.claude/rules/session-artifacts.md` (L14-25 — state/markers gitignore intent this rule enforces)
83
- - `.claude/rules/blocked-items.md` (BLOCK protocol the hook fires)
84
- - `.claude/rules/testing-tier-config.md` (Tier 0 strict TDD on the hook + tests)
85
- - `.claude/rules/hook-wire-on-author.md` (settings.json wiring discipline)
86
- - `.claude/rules/bootstrap-pair-discipline.md` (hook + rule + test + wire ship together)
87
- - `.claude/rules/we-dont-break-adopters.md` (adopter cure documented above)
88
- - `.claude/hooks/pre-commit-identifier-leak-scrub.sh` (mechanical implementation)
89
- - `.claude/hooks/tests/pre-commit-identifier-leak-scrub.test.sh` (12-test coverage)
90
- - @luminary saltzer-schroeder — complete mediation
91
- - @luminary linus-torvalds — adopter contract (ADR-031)
92
- - @luminary michael-feathers — characterization tests
93
- - @luminary michael-nygard — stability pattern (fail-soft on grep missing)
94
-
95
- ## Refs
96
-
97
- - Parent ticket: sunj-labs/bassclef#1471
98
- - Rule intent source: `.claude/rules/session-artifacts.md` L14-25
99
- - Mechanism gap: `scripts/release-to-bassclef.sh` L257-289 (andon scan scoped to dirs)
100
- - Hostname source: `.claude/hooks/save-state.sh` L222 + L247
101
-
102
- ## Retirement condition
103
-
104
- This rule retires only if bassclef stops committing content that could contain identifiers. Every commit is a potential leak surface, so retirement is unlikely. Pattern set may evolve as new operator-identifying shapes surface; the discipline of scanning at commit time persists.
@@ -1,54 +0,0 @@
1
- ---
2
- tier: lite
3
- description: When Orchestrator (or any agent) delegates a Construction stack to a subagent (Builder, Designer, Architect), the brief MUST include, verbatim and with file paths, every artifact…
4
- ---
5
-
6
- # Iteration Goal Brief Completeness
7
-
8
- When Orchestrator (or any agent) delegates a Construction stack to a
9
- subagent (Builder, Designer, Architect), the brief MUST include, verbatim
10
- and with file paths, every artifact the iteration goal cites that applies
11
- to the stack's scope.
12
-
13
- ## Required in every delegation brief
14
-
15
- - Canvas (if scope touches a subsystem covered by the canvas)
16
- - Spec or decomposition artifact
17
- - **All prototypes** listed in the goal's References, scoped to which apply per surface
18
- - ADRs the goal pins as governing constraints
19
- - Design token file(s) if the scope touches token-governed surfaces
20
- - Prior PRs that shipped shared primitives the stack should reuse
21
- - Luminary map (primary pair + any extended pairs tagged to surfaces in scope)
22
-
23
- ## Checkpoint before spawning the subagent
24
-
25
- Before the Task/Agent call, enumerate the goal's reference list and confirm
26
- each relevant entry is in the brief. Missing entries = re-brief before
27
- spawn. In sequential mode, same checkpoint applies to the role handoff
28
- within a single session.
29
-
30
- ## Operator- vs orchestrator-gated
31
-
32
- - **Orchestrator-gated**: Orchestrator constructs the brief and validates
33
- completeness before delegation. No operator prompt required.
34
- - **Operator-gated**: operator may shape or override, but the default is
35
- full transmission. Partial briefs require explicit operator choice.
36
-
37
- ## Why this rule exists
38
-
39
- POA iteration #499 (2026-04-12): bet cited an approved prototype under
40
- Reference artifacts. Orchestrator delegated Stack-1 (Review Queue UI) to
41
- Builder with decomposition + verbal density guidance but without the
42
- prototype path. Builder built against decomposition only → cramped UI
43
- shipped → rebuild required.
44
-
45
- The goal was correct. The delegation dropped information. Every bassclef
46
- repo using the iteration-bet pattern has this exposure.
47
-
48
- ## Relationship to other rules
49
-
50
- - `artifact-ingestion.md` — Builder's obligation to read staged artifacts;
51
- this rule is Orchestrator's reciprocal obligation to surface them
52
- - `design-direction.md` — approvals are load-bearing; bet references
53
- carry the approvals and must reach Builder intact
54
- - `sdlc-gates.md` — pre-build gates; brief completeness is itself a gate
@@ -1,98 +0,0 @@
1
- ---
2
- tier: lite
3
- description: Every lite-manifest schema change ships a migration-note ledger entry in the same PR. Adopters read the ledger before sync.
4
- ---
5
-
6
- # Lite-manifest schema-change discipline
7
-
8
- Every change to `standards/lite-manifest.schema.json` (schema shape) or to the output shape of `<tier>-manifest.json` (extractor emissions) MUST ship with a matching ledger entry in `standards/lite-manifest-schema-changes.md` in the same PR. The release script blocks the cascade if the ledger has no entry for the outgoing `manifest_version`.
9
-
10
- This rule is the methodology layer. The mechanical layer is a pre-flight check in `scripts/release-to-bassclef.sh` (Step 3.6, added in goal 2026-09-07c Step 4). Both required.
11
-
12
- Sister discipline at the file-rename surface; same shape at a different surface — files there, schema fields here.
13
-
14
- ## Why this exists
15
-
16
- `v0.36.0` (2026-09-06) dropped `upstream_commit` from lite-manifest content per sunj-labs/bassclef-upstream#1508. Three bassclef-web scripts crashed at next sync because they read `.upstream_commit` and got `undefined`. No note warned adopters. bassclef-web#269 promoted the pattern.
17
-
18
- Every adopter of the lite manifest sits on this class. Without a ledger discipline, every future schema change replays the failure.
19
-
20
- ## When this rule fires
21
-
22
- Any PR that touches:
23
-
24
- - `standards/lite-manifest.schema.json` (schema shape)
25
- - `scripts/generate-lite-manifest.sh` in a way that changes the output shape (adds or removes emitted keys)
26
-
27
- Skips:
28
-
29
- - Content-only manifest regens (backfill helper adds descriptions to source files; content_hash changes but no schema shift)
30
- - Comment-only edits to schema or extractor
31
-
32
- ## What the rule requires
33
-
34
- When a PR changes the manifest schema OR output shape:
35
-
36
- 1. **Ledger entry** — add a new entry to `standards/lite-manifest-schema-changes.md` in the same PR. Format per the ledger's format section. Newest-first ordering.
37
- 2. **Version bump** — pin the entry to a specific `manifest_version` bump. Per the schema title description policy:
38
- - Adding an optional field → MINOR bump
39
- - Adding a required field → MAJOR bump (breaking)
40
- - Removing a field → MAJOR bump
41
- - Content-only change → PATCH bump
42
- 3. **Downstream cure named** — the entry names what adopters need to do. If nothing (backward-compatible add), say so explicitly. If code change (like the v0.36.0 `upstream_commit` removal), name the pattern.
43
- 4. **Release script pre-flight** — before every `/release`, the script reads the ledger and confirms an entry exists for the outgoing `manifest_version`. Missing entry BLOCKs the cascade.
44
-
45
- ## Anti-patterns
46
-
47
- **Schema field added but no ledger entry.** Release script pre-flight BLOCKs.
48
- INSTEAD: add the entry in the same PR.
49
-
50
- **Ledger entry written but wrong version bump.** Adopters plan their pin update against the wrong version.
51
- INSTEAD: correct the bump before merge. AJV validation of the entry format catches inconsistency.
52
-
53
- **Downstream cure vague (no name for the class).** Adopters at cold-sync can't reason about which script needs fixing.
54
- INSTEAD: cite the class + link to a reference cure like bassclef-web c9a9da7.
55
-
56
- **Schema change ships without adopter coordination.** Even with a ledger entry, adopters that exact-pin the manifest_version need advance warning.
57
- INSTEAD: coord comment on bassclef-web#256 + bassclef-cli#51 BEFORE the release cascade per Linus L6 pre-mortem cure.
58
-
59
- ## Override
60
-
61
- `SKIP_LITE_MANIFEST_SCHEMA_LEDGER=1 <command>` — logged via trace-helper. Use only when:
62
-
63
- - The schema change is a comment-only edit that keeps the shape stable
64
- - The change reverses a prior entry (a rollback) and the prior entry names both the change and the rollback
65
- - One-shot migration script that touches the schema during a migration window
66
-
67
- INSTEAD of overriding for routine work: write the entry. The cost is small (one section in the ledger); the discipline compounds across every adopter that syncs.
68
-
69
- ## Composes with
70
-
71
- - file-rename-discipline (standard tier) — sister at the file surface
72
- - `.claude/rules/we-dont-break-adopters.md` — parent discipline (ADR-031)
73
- - `.claude/rules/cold-adopter-harness-discipline.md` — sibling smoke fires against ledger entries before release
74
- - `.claude/rules/bootstrap-pair-discipline.md` — this rule + hook + tests + settings wire ship together
75
- - `.claude/rules/testing-tier-config.md` — Tier 0 strict TDD on ledger format tests
76
- - `.claude/rules/blocked-items.md` — BLOCK protocol the release-script pre-flight fires
77
- - `standards/lite-manifest.schema.json` — the schema this ledger tracks
78
- - `standards/lite-manifest-schema-changes.md` — the ledger this rule enforces
79
- - `scripts/release-to-bassclef.sh` — release-script pre-flight (Step 3.6)
80
- - ADR-031 (we-don't-break-adopters)
81
- - ADR-029 (release pipeline)
82
- - @luminary linus-torvalds — lead. Adopter contract; the ledger is the operational form of Torvalds's rule at the schema surface
83
- - @luminary tony-hoare — pre/postcondition contract on schema changes
84
- - @luminary michael-nygard — stability pattern (block-on-missing-entry)
85
- - @luminary michael-feathers — characterization test on the ledger format
86
-
87
- ## Refs
88
-
89
- - Parent ticket: sunj-labs/bassclef-web#269 (promote: ship migration notes when lite-manifest schema removes or renames fields)
90
- - Root cause: v0.36.0 upstream_commit removal broke 3 bassclef-web scripts (commit `c9a9da7` on bassclef-web repaired downstream)
91
- - Goal: `docs/iteration-bets/2026-09-07c-lite-manifest-schema-plus-extractor-plus-backfill-plus-ledger.md`
92
- - Risk ledger: `docs/risk-ledgers/2026-09-07c-lite-manifest-schema-extractor-backfill-ledger.md` Linus L6 + Hoare H6
93
- - Sister rule: file-rename-discipline (standard tier)
94
- - @luminary linus-torvalds — Torvalds's rule at the schema surface
95
-
96
- ## Retirement condition
97
-
98
- This rule retires only if bassclef stops shipping a lite manifest. Adopter count and change cadence may evolve; the discipline of documenting every schema change at the PR that ships it persists.
@@ -1,89 +0,0 @@
1
- ---
2
- tier: lite
3
- description: When a plan doc at docs/next-session-plan-*.md (modified within 48 hours) carries a ## Recommended session sequence (or equivalent) section, /longrun prep MUST skip the full Steps…
4
- ---
5
-
6
- # /longrun prep — compress when plan doc pre-picks scope
7
-
8
- When a plan doc at `docs/next-session-plan-*.md` (modified within 48 hours) carries a `## Recommended session sequence` (or equivalent) section, `/longrun prep` MUST skip the full Steps 1.4c-1.7b option-table ceremony and present the pre-authored sequence directly. This rule closes bassclef-upstream#1307 R1 — the workflow-overhead class where prep re-authors 15-25 turns of ceremony an earlier session already shipped in a plan doc.
9
-
10
- This rule is the methodology layer. The mechanism is the /longrun SKILL body Step 0.85 (bassclef-upstream#1307 R1). V2 Stop-hook enforcement is deferred per pre-mortem R5.
11
-
12
- ## When this rule fires
13
-
14
- Every `/longrun prep` dispatch. The SKILL body Step 0.85 checks for a plan doc first. When one is found, the compressed prep path fires. When none matches, the full ceremony holds.
15
-
16
- Detection criteria (all three must match):
17
-
18
- 1. File matching `docs/next-session-plan-*.md` exists at repo root
19
- 2. File was modified within the last 48 hours (`find -mtime -2`)
20
- 3. File body contains one of: `## Recommended session sequence`, `## Recommended sequence`, `## Next-session pickup`
21
-
22
- ## What the compressed path requires
23
-
24
- When the compressed path fires, prep still ships the three-block opener per `.claude/rules/operator-facing-prose.md` Rule 3 (Problem + Value + Evidence). The compression targets Steps 1.4c-1.7b:
25
-
26
- - **Skip:** re-authoring the full 5-axis-per-option block for every option (SKILL Step 1.5)
27
- - **Skip:** re-authoring a full card for every non-recommended option (SKILL Step 1.6)
28
- - **Skip:** re-authoring step cards + per-step compounding blocks (SKILL Steps 1.7 + 1.7a) for options the plan doc did not recommend
29
- - **Keep:** scan-table at the top (3-5 rows summarizing the plan doc's items)
30
- - **Keep:** one card for the recommended item per SKILL Step 1.6
31
- - **Keep:** step cards + per-step compounding for the recommended item only per SKILL Steps 1.7 + 1.7a
32
- - **Keep:** recommendation sentence per SKILL Step 1.7b
33
- - **Add:** plan doc file path cited inline as source
34
-
35
- Operators still pick from the scan table. The plan doc's ranking becomes the default, not a mandate.
36
-
37
- ## Anti-patterns
38
-
39
- **Full ceremony fires despite plan doc present.** The exact class #1307 R1 filed. Cure: run the SKILL Step 0.85 detection first.
40
-
41
- **Plan doc detection succeeds but prep still authors 5-axis blocks for every option.** Partial compression is not compression. Cure: skip the per-option 5-axis blocks; keep them only for the recommended item's card.
42
-
43
- **Compressed prep drops the recommendation sentence.** Operators still need one-line rationale. Cure: keep Step 1.7b.
44
-
45
- **Compressed prep skips the three-block opener.** Rule 3 discipline holds regardless of compression. Cure: Problem + Value + Evidence always land before scan-table.
46
-
47
- INSTEAD of any of these: check for plan doc first (SKILL Step 0.85 detection); use the recommended sequence verbatim; ask operator to confirm or reshape.
48
-
49
- ## Override
50
-
51
- `SKIP_LONGRUN_COMPRESS=1 <command>` — logged via trace-helper. Use only when the plan doc is out of date and the operator wants a fresh option set. In that case, dispatch full ceremony and note the override reason in the prep opener.
52
-
53
- INSTEAD of overriding routinely: update the plan doc. A stale plan doc is a bad plan doc; fixing it upstream compounds across every future prep.
54
-
55
- ## V2 mechanical layer (deferred)
56
-
57
- V1 ships this rule + SKILL body Step 0.85 amendment. V2 (deferred follow-on ticket) will add a Stop hook that:
58
-
59
- 1. Detects `/longrun prep` output in the assistant's most recent message
60
- 2. Detects presence of a fresh plan doc via `find -mtime -2`
61
- 3. Checks whether the prep output carries 3+ per-option 5-axis blocks (evidence of full ceremony)
62
- 4. Emits ADVISORY finding when full ceremony fires despite plan doc being present
63
-
64
- Defer V2 until this rule (V1 methodology) has shipped through 3-5 preps and the mechanical extension has stable heuristics.
65
-
66
- ## Composes with
67
-
68
- - `.claude/skills/longrun/SKILL.md` Step 0.85 — the SKILL amendment this rule prescribes
69
- - `.claude/rules/operator-facing-prose.md` Rule 3 — three-block opener still fires under compression
70
- - `.claude/rules/compounding-sequence-fresh-analysis.md` — per-option 5-axis fresh analysis still holds for the recommended item's card
71
- - `.claude/rules/plan-enumeration-needs-value-props.md` — every option in the compressed scan-table still carries a value-prop cell
72
- - `.claude/rules/blocked-items.md` — silence is not deferral (plan doc detection reports fire vs skip explicitly)
73
- - `.claude/rules/bootstrap-pair-discipline.md` — this rule + SKILL amendment ship as paired bootstrap
74
- - @luminary john-ousterhout — deep module (compression path hides plan-doc detection behind narrow interface)
75
- - @luminary donald-norman — signifier + feedback (plan doc presence is a signifier; compressed vs full ceremony is user feedback)
76
- - @luminary frederick-brooks — conceptual integrity (compression preserves the option-table + card + step-card shape; only volume shrinks)
77
-
78
- ## Refs
79
-
80
- - bassclef-upstream#1307 R1 — this rule's filing ticket
81
- - `docs/next-session-plan-2026-08-20.md` — the plan doc that motivated the R1 class filing
82
- - operator_recap_2026-08-19e L96 — evidence source (25-40t ceremony vs 5t needed)
83
- - `.claude/skills/longrun/SKILL.md` Step 0.85 — mechanism this rule prescribes
84
-
85
- ## Retirement condition
86
-
87
- This rule retires only if `/longrun` stops accepting plan docs as pre-authored scope. Until then, the discipline of compressing prep against pre-authored sequences survives.
88
-
89
- Closes bassclef-upstream#1307 R1.
@@ -1,81 +0,0 @@
1
- ---
2
- tier: lite
3
- description: Every step that ships code or substrate runs the six-step cycle for shipping code or substrate.
4
- ---
5
-
6
- # /loop discipline — methodology layer
7
-
8
- Every step that ships code or substrate runs the six-step cycle below. This rule is the methodology layer; the full cycle spec lives with operator substrate.
9
-
10
- ## When this rule fires
11
-
12
- The rule fires when an agent or operator opens a feature branch, commits, opens a PR, runs review, or merges. The discipline applies regardless of work scope — single-issue fix, multi-step /longrun, and substrate-defect filing all run the same six steps.
13
-
14
- ## What the rule requires
15
-
16
- Before merging a PR that touches code or substrate, the agent has done all six main steps plus three sub-steps:
17
-
18
- 0.5. `/pre-mortem` light fired (3 luminary lenses, 5-8 risks per lens, 30 min per Klein workshop shape) BEFORE Step 1 /temperance. Marker exists at `state/markers/pre-mortem/<branch-slug>.marker` citing the risk ledger path. Strongest concerns fold into the plan before edits begin. Per `.claude/skills/pre-mortem/SKILL.md` light mode.
19
- 1. `/temperance` fired with answers stated (smallest shape, blast radius, brute-force check). Marker exists at `state/markers/temperance/<branch-slug>.marker`.
20
- 2. `/luminary` picked at least one primary lens. Marker exists at `state/markers/luminary/<branch-slug>.marker`. Slugs recorded in the evidence row's `authoring_luminaries` field.
21
- 2a. Marker declares `lead` field naming one primary luminary; `supporting` field lists the others. Lead is the luminary whose lens verifies the ship at Step 5.5. Format mirrors bet-doc frontmatter `authoring_luminaries.primary` and `.supporting`.
22
- 3. Tier 0 strict TDD satisfied where the testing tier requires it. Tests pass. The `testing-tier-enforce` hook has not blocked the commit.
23
- 4. Review run. Findings categorized as red, amber, green, note. CodeReviewer agent dispatched OR inline review with luminary lens applied.
24
- 5. Red and amber findings resolved through one or more iterations. Iteration count recorded. When the change is a SKILL body rewrite (any file under `.claude/skills/*/SKILL.md`), the intent check is measurable — run `scripts/intent-drift-check.sh --skill <slug>`. Cosine at or above 0.90 versus the saved vector at `.claude/embeddings/skills/<slug>.json` passes. Cosine below threshold means intent drifted and the rewrite iterates or reverts. Subjective promise-list checks satisfy the step ONLY when no saved vector exists (new skill). Threshold raised from 0.85 to 0.90 per #790 (2026-07-19) after first-6-cures median landed at 0.987.
25
- 5.5. Lead lens confirms all red and amber findings cleared before Step 6 merge. Marker exists at `state/markers/lead-lens-signoff/<branch-slug>.marker` naming the lead luminary and either "no findings" or the specific finding IDs cleared. Rubber-stamp sign-off is a discipline miss — sign-off must cite finding IDs or state "no findings" with rationale.
26
- 6. PR body carries the structured evidence including the three markers from Steps 0.5, 2a, 5.5. Squash merge. Evidence row status flips to merged.
27
-
28
- Silence at any step is not deferral. Explicit deferral with stated rationale is the only acceptable skip.
29
-
30
- The three sub-steps (0.5 + 2a + 5.5) close the aggregate-GREEN balancing check gap named in #845 body Cure B. When every gate reports GREEN independently but the fix ships in the wrong shape, the missing signal is a balancing check — a lens that reads the aggregate and asks "does this actually solve the problem." The lead luminary IS the balancing check. Ships per #836.
31
-
32
- ## What this rule does NOT require
33
-
34
- - A specific number of luminaries (one minimum; five maximum per `/luminary` skill ceiling).
35
- - A specific finding count (red and amber findings should exist; zero on every PR signals shallow review).
36
- - A specific iteration count (zero is acceptable when first review is clean).
37
- - The CodeReviewer agent specifically — inline review with luminary lens is acceptable for smaller scope.
38
- - A standalone evidence document. Tier 1 evidence rows live in PR body sections; tier 0 in standalone files. Both satisfy the rule.
39
-
40
- ## Skip path with explicit deferral
41
-
42
- Some work skips part of the cycle by declaration:
43
-
44
- - **Trivial change** — typo, dependency bump, single-line rename. Commit message line `loop: skipped — trivial change, no review surface` records the skip.
45
- - **Documented emergency** — production incident with operator-approved bypass. PR body carries authorization.
46
- - **Operator direct merge** — operator authors the change and merges. The discipline applies to the agent work that surfaces it, not to the operator's edit.
47
-
48
- Silence is not skip. Default is run the cycle.
49
-
50
- ## Composes with
51
-
52
- - `standards/construction-evidence-discipline.md` — the artifact produced per cycle
53
- - `.claude/rules/testing-tier-config.md` — step 3 enforcement
54
- - `.claude/rules/wu-sequencing-compounds.md` — sister discipline at the multi-step bet level
55
- - `.claude/rules/blocked-items.md` — the protocol for surfacing skipped steps that should have run
56
- - `.claude/skills/pre-mortem/SKILL.md` — Step 0.5 method; light mode shape (3 lenses, 30 min)
57
- - `.claude/luminaries/gary-klein.md` — Step 0.5 anchor (pre-mortem originator)
58
-
59
- ## Mechanical enforcement
60
-
61
- V1 ships this rule + the standard. V2 (deferred) extends `pre-commit-gate.sh` to verify both markers exist for the branch before any commit, and adds a PR-open hook that verifies the evidence section is present in the PR body.
62
-
63
- Per memory `feedback_hooks_beat_methodology_for_substrate_quality`: V2 hook ships alongside the methodology — both required for the discipline to hold across context boundaries.
64
-
65
- ## Override path
66
-
67
- `SKIP_LOOP_DISCIPLINE=1 <command>` — logged via trace-helper. Use only for migration scripts that author many goal docs at once, or for emergency rescue. Routine skip is not an override target; routine skip is a methodology miss.
68
-
69
- ## Source dialogue
70
-
71
- 2026-06-23 overnight bet 23a (discipline mechanization three disciplines). The loop was exercised on every step during the goal; this rule and the companion standard codify what the goal did.
72
-
73
- ## Refs
74
-
75
- - goal doc `docs/iteration-bets/2026-06-23a-discipline-mechanization-three-disciplines.md` — the goal that ran the loop and proved the discipline
76
- - `.claude/luminaries/kent-beck.md` — primary lineage (red-green-refactor)
77
- - `.claude/luminaries/gary-klein.md` — Step 0.5 pre-mortem lineage
78
- - Memory `feedback_hooks_beat_methodology_for_substrate_quality` — pattern for V2 mechanical layer
79
- - Ticket 836 — parent filing (three sub-steps + hook extension)
80
- - Ticket 845 — Cure B (aggregate-GREEN balancing check) — Step 5.5 lead-lens sign-off ships that cure
81
- - Goal doc `docs/iteration-bets/2026-07-24a-ship-836-loop-discipline-extension.md` — ship vehicle for the three sub-steps