@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,100 +0,0 @@
1
- ---
2
- tier: lite
3
- globs: [".github/workflows/**/*.yml", ".github/workflows/**/*.yaml"]
4
- description: Prod deploys require GitHub Environments with required_reviewers — no exceptions
5
- ---
6
-
7
- # Manual Prod Approval Rule
8
-
9
- Every app repo's production deploy MUST gate on GitHub Environments
10
- with `required_reviewers` configured. Auto-deploy-to-prod on any
11
- branch push is a rule violation.
12
-
13
- ## Why
14
-
15
- `guardrails.md` already says: "Deploy to production without human
16
- approval — even in orchestrator-gated mode. This is the hardest
17
- guardrail. No exceptions."
18
-
19
- This rule specifies the **mechanism** for enforcement: GitHub's
20
- native Environments feature with reviewer requirements, not agent
21
- discipline. Agents can and will skip softer forms. Infrastructure-
22
- enforced gates cannot be skipped.
23
-
24
- ## What satisfies the rule
25
-
26
- A deploy workflow with a job referencing a GitHub Environment that
27
- has `required_reviewers` configured:
28
-
29
- ```yaml
30
- jobs:
31
- deploy-prod:
32
- environment:
33
- name: prod # ← this environment must exist in repo settings
34
- # with required_reviewers set
35
- steps:
36
- - ... actual deploy steps
37
- ```
38
-
39
- Repo settings at github.com/[owner]/[repo]/settings/environments
40
- must show:
41
- - Environment named `prod`
42
- - Deployment protection rules enabled
43
- - Required reviewers populated (at least one operator)
44
-
45
- ## What violates the rule
46
-
47
- - `main` branch push auto-deploys to prod without Environment gating
48
- - Any workflow job deploying to prod without `environment:` field
49
- - Environment exists but has no required reviewers (empty list = auto-approved)
50
- - Reviewers are GitHub bots / service accounts (must be human identity)
51
-
52
- ## Detection
53
-
54
- This rule fires when:
55
- - A new app repo is scaffolded by `/autonomous start` with
56
- `deploy_targets.prod` set to a URL
57
- - `.github/workflows/deploy.yml` is added or modified
58
- - Pre-commit-gate hook detects workflow changes touching prod deploy steps
59
-
60
- ## Enforcement
61
-
62
- - Pre-commit-gate hook surfaces a warning if deploy workflow
63
- touches prod without Environment reference
64
- - `/substrate-check` skill validates Environment + reviewer configuration
65
- when `deploy_targets.prod` is set
66
- - `/deploy-prod` skill refuses to run if Environment validation
67
- fails
68
-
69
- ## What agents do when rule is violated
70
-
71
- Fire BLOCKED: (per `blocked-items.md`):
72
- - `BLOCKED: prod deploy without approval gate — configure GitHub
73
- Environment 'prod' with required_reviewers before proceeding`
74
- - Resolve (configure via `gh api` or UI) or explicit defer with
75
- rationale. Silence is not deferral.
76
-
77
- ## Setup commands (one-time per repo)
78
-
79
- ```bash
80
- # Get your user ID
81
- USER_ID=$(gh api user --jq '.id')
82
-
83
- # Create prod environment with yourself as reviewer
84
- gh api repos/$OWNER/$REPO/environments/prod --method PUT -f "wait_timer=0" \
85
- -f "deployment_branch_policy[protected_branches]=false" \
86
- -f "deployment_branch_policy[custom_branch_policies]=true"
87
-
88
- # Add required reviewer
89
- gh api repos/$OWNER/$REPO/environments/prod \
90
- --method PUT \
91
- -F "reviewers[][type]=User" \
92
- -F "reviewers[][id]=$USER_ID"
93
- ```
94
-
95
- ## Related
96
-
97
- - `.claude/rules/guardrails.md` — prod deploy human-approved
98
- - `standards/deployment-topology.md` — bassclef deploy pattern
99
- - `standards/substrate-config-schema.md` — `prod_approval_reviewers`
100
- field convention
@@ -1,99 +0,0 @@
1
- ---
2
- tier: lite
3
- description: Gate marker files (under state/markers/temperance/, state/markers/luminary/, state/markers/arc-walk/, state/markers/orientation-gate/, state/markers/roadmap-reconcile-gate/) MUST…
4
- ---
5
-
6
- # Marker Enrichment Discipline
7
-
8
- Gate marker files (under `state/markers/temperance/`, `state/markers/luminary/`, `state/markers/arc-walk/`, `state/markers/orientation-gate/`, `state/markers/roadmap-reconcile-gate/`) MUST carry body content within the same WU or PR that creates them. Touching a marker without body content satisfies the gate's existence check but leaves no audit trail — months later, a reader cannot recover the scope-decision, luminary lens, or thread context that the marker is supposed to record.
9
-
10
- This rule is the methodology layer. The mechanical layer is `pre-build-gate.sh` extended with a non-empty-body check on the 5 gate-marker classes (advisory in V1 per the allowlist baseline; BLOCK in V2 after the allowlist is empty).
11
-
12
- ## Why this rule exists
13
-
14
- Bet 27c WU-11 surfaced "marker-enrichment-gap" as candidate substrate-defect 5. The gate hooks (`pre-build-gate.sh`) check marker file EXISTENCE only. An agent satisfies the gate by running `touch state/markers/temperance/<branch>.marker`. The marker exists; the gate clears; substantive work proceeds. Months later, a reader looking at the marker has zero evidence of what scope decision was made.
15
-
16
- Bet 27c shipped 13 PRs across the foundation work. Most markers in `state/markers/` are empty files from earlier sessions where the agent satisfied the gate without recording reasoning. The audit trail is missing.
17
-
18
- INSTEAD of writing empty markers to clear gates: the WU/PR that creates a marker writes its body content in the same change. Format conventions:
19
-
20
- - **Temperance marker** — date + branch + scope-decision (right-thing answer, right-way answer, drift trigger)
21
- - **Luminary marker** — date + branch + primary lens(es) + supporting lens(es) + one-line rationale per lens
22
- - **Arc-walk marker** — date + branch + parent_bet chain (recursive walk) + drivers consumed
23
- - **Orientation-gate marker** — date + branch + thread-level read completion notes
24
- - **Roadmap-reconcile-gate marker** — date + branch + reconcile result (no drift / drift detected / no roadmap declared)
25
-
26
- The bet 28a WU-0 prep + WU-1..5 markers ship as the exemplar pattern.
27
-
28
- ## When this rule fires
29
-
30
- Any session creating a marker file in the 5 gate-marker directories:
31
-
32
- - `state/markers/temperance/`
33
- - `state/markers/luminary/`
34
- - `state/markers/arc-walk/`
35
- - `state/markers/orientation-gate/`
36
- - `state/markers/roadmap-reconcile-gate/`
37
-
38
- Does NOT fire on:
39
-
40
- - `state/markers/session-timing/` — transient timing data, machine-written
41
- - `state/markers/diagnose/` — fix-branch evidence (uses different format)
42
- - `state/markers/adr/` — ADR decision markers (different rule)
43
- - `state/markers/turn-prose-surface/` — kiss-surface flags (different rule)
44
- - Markers in the allowlist `state/markers/marker-enrichment-allowlist.txt` (grandfathered baseline; cleared over time)
45
-
46
- ## What the rule requires
47
-
48
- When the step that creates a marker commits:
49
-
50
- 1. Marker file exists at the expected path
51
- 2. Marker file is non-empty (>0 bytes)
52
- 3. Marker body contains the format conventions above (date + branch + decision-content; advisory check in V1, mechanical in V2)
53
-
54
- INSTEAD of `touch state/markers/temperance/<branch>.marker`: use heredoc to write the body inline:
55
-
56
- ```bash
57
- cat > state/markers/temperance/<branch>.marker << 'EOF'
58
- # Temperance marker — <bet> <WU>
59
- - date: <ISO date>
60
- - branch: <branch>
61
- - scope-decision: <right-thing + right-way + drift-trigger>
62
- EOF
63
- ```
64
-
65
- ## Mechanical layer (V1 advisory)
66
-
67
- `pre-build-gate.sh` extended with `check_marker_non_empty()` function. Fires on existence check; if marker exists but is 0 bytes AND not in the allowlist, emits ADVISORY warning to stderr. Does NOT block in V1.
68
-
69
- V2 (deferred to follow-on goal): flip to BLOCK once the allowlist baseline is fully cleared (operator backfills over time).
70
-
71
- ## Allowlist
72
-
73
- `.claude/hooks/marker-enrichment-allowlist.txt` lists existing empty markers as of bet 28a WU-5 land date. Entries grandfathered indefinitely. Operator backfills body content over time; when the allowlist is empty, V2 BLOCK flip becomes eligible.
74
-
75
- ## Override
76
-
77
- `SKIP_MARKER_ENRICHMENT=1 <command>` — for one-shot migration scripts that bootstrap markers from external state. Logged via trace-helper.
78
-
79
- INSTEAD of overriding for routine work: write the body. The cost is seconds; the audit trail compounds across every future session reading the marker.
80
-
81
- ## Composes with
82
-
83
- - `.claude/rules/sdlc-gates.md` — temperance + diagnose gate firing semantics
84
- - `.claude/rules/blocked-items.md` — BLOCK protocol (V2 will use this)
85
- - `.claude/rules/testing-tier-config.md` — Tier 0 strict-TDD on the hook + tests
86
- - `.claude/rules/mechanism-fidelity.md` — sister mechanical-enforcement discipline
87
- - `.claude/hooks/pre-build-gate.sh` — the mechanical implementation
88
- - `@luminary michael-feathers` — characterization tests as cure; existing empty markers are legacy; cure by enriching as touched
89
-
90
- ## Refs
91
-
92
- - bet `docs/iteration-bets/2026-06-28a-mechanism-fidelity-cures-proposal.md` (WU-5)
93
- - bet 27c WU-11 (substrate-defect candidate 5 identification)
94
- - Closes bassclef-upstream#438
95
- - Closes part of bassclef-upstream#440
96
-
97
- ## Retirement condition
98
-
99
- This rule retires only if the gate-marker primitive itself retires. Body-content conventions may evolve; the discipline of marker-as-audit-trail persists.
@@ -1,109 +0,0 @@
1
- ---
2
- tier: lite
3
- globs: ["**/*"]
4
- description: Mobile/ephemeral session rules — state round-trips through git, no filesystem-only markers, explicit session-end
5
- ---
6
-
7
- # Mobile / Ephemeral Session Rule
8
-
9
- Fires whenever the session is running in an ephemeral environment
10
- (claude.ai/code mobile sandbox, CI runner, temporary container). See
11
- `standards/mobile-ephemeral-session.md` for the full standard.
12
-
13
- ## Detection
14
-
15
- **Primary signal (required for certainty):**
16
-
17
- ```bash
18
- [ "$CLAUDE_EPHEMERAL" = "1" ]
19
- ```
20
-
21
- Operator sets this as the first command in mobile / CI / ephemeral
22
- sessions. Explicit opt-in removes guessing. Put it in a bookmarklet,
23
- shell init, or session template.
24
-
25
- **Fallback heuristics** (if primary not set, OR of these):
26
-
27
- | Check | Signal strength |
28
- |-------|----------------|
29
- | `pwd` doesn't start with `/Users/` (macOS operator path) | High |
30
- | `hostname` doesn't match known operator machines | High |
31
- | `$HOME` isn't operator's real home | High |
32
- | `/Applications/Tailscale.app/Contents/MacOS/Tailscale` missing | Medium |
33
- | `git reflog \| wc -l` is very small (fresh clone) | Medium |
34
-
35
- If ≥2 fallback signals fire, treat as ephemeral with a surfaced
36
- warning: "Detected ephemeral mode via heuristics — explicit
37
- `CLAUDE_EPHEMERAL=1` recommended."
38
-
39
- **First-session bootstrap**: on the very first mobile session, run
40
- with heuristics OR explicit flag — observe which signals fire —
41
- refine this list based on actual claude.ai/code sandbox environment.
42
- Update this rule after empirical data.
43
-
44
- ## Rules when ephemeral
45
-
46
- 1. **All artifacts push immediately.** Auto-save hook does
47
- `git commit` AND `git push` — not deferred. If push fails, retry
48
- once with backoff, then surface failure visibly.
49
-
50
- 2. **Markers go git-tracked, not /tmp.** Any skill or hook that writes
51
- `/tmp/*` markers MUST also write a git-tracked equivalent. The
52
- bassclef durable surface is `state/markers/<gate>/...`
53
- (temperance, diagnose, edit-count, session-timing); `/verify` keeps
54
- its own pre-existing surface at `state/markers/verify/<branch>.marker`
55
- for backward-compat with `pre-commit-gate.sh`. In ephemeral mode,
56
- the git-tracked form is authoritative. Consumers of gate evidence
57
- (pre-build-gate hook, compliance counter, `/chronicle` gate-evidence
58
- auto-populate) read whichever form exists; dual-write ensures mobile
59
- firings survive sandbox teardown.
60
-
61
- 3. **Session lock has TTL.** Lock at `.claude/SESSION_LOCK` includes
62
- ISO 8601 timestamp. Locks older than 30 minutes are cleared with
63
- an announcement ("Clearing stale lock from [timestamp]"). No
64
- indefinite holds.
65
-
66
- 4. **Explicit session-end MUST fire.** Stop hook is unreliable in
67
- ephemeral. Agent must invoke `/session-end` at natural stopping
68
- points — task complete, context pressure, operator cue.
69
-
70
- 5. **No credential-bearing tools.** Ephemeral sessions do not hold
71
- SSH keys, AWS access keys, Tailscale tokens, or long-lived PATs.
72
- Only fine-grained PATs or GitHub App installation tokens with
73
- short TTL. Deploy work happens in CI after PR merge, never from
74
- ephemeral.
75
-
76
- 6. **Chronicle read at session start.** If project memory isn't
77
- available (no MCP memory server), read the last 2-3 chronicles
78
- at session start as context substitute. This is how ephemeral
79
- sessions recover "what we were working on."
80
-
81
- 7. **Conservative gating default.** Orchestrator-gated mode requires
82
- explicit `--ephemeral-ok` flag in ephemeral. Default is operator-
83
- gated even if orchestrator was requested — ephemeral adds risk
84
- that deserves confirmation at decision points.
85
-
86
- ## Failures to surface
87
-
88
- When any of the following happen, session output must prominently
89
- report it:
90
-
91
- - Push failure on auto-save (state loss risk)
92
- - Stale lock cleared (possible other session running)
93
- - Chronicle read failed at start (no context recovery)
94
- - Credential-bearing tool invoked (should not happen; rule violation)
95
-
96
- ## Rationale
97
-
98
- Desktop sessions assume the filesystem survives between steps. Mobile
99
- sessions don't. A rule that lets agents keep working with the same
100
- skills and hooks — but with ephemeral-safe behavior — is how
101
- continuity holds.
102
-
103
- ## Relationship
104
-
105
- - `standards/mobile-ephemeral-session.md` — full standard with
106
- all MUST/SHOULD items
107
- - `.claude/rules/blocked-items.md` — BLOCKED: protocol still applies
108
- - `.claude/rules/guardrails.md` — "deploy prod requires human approval"
109
- is reinforced by this rule (ephemeral can't deploy anyway)
@@ -1,51 +0,0 @@
1
- ---
2
- tier: lite
3
- globs: ["package.json", "package-lock.json", "pnpm-lock.yaml", "yarn.lock", "requirements.txt", "pyproject.toml", "poetry.lock", "Gemfile", "Gemfile.lock", "Cargo.toml", "Cargo.lock", "go.mod", "go.sum"]
4
- description: New dependency check — verify before adding any package; loads per-pkg-manager sibling
5
- ---
6
-
7
- # New Dependency Check
8
-
9
- Before adding any new dependency to the project, verify five universal concerns. Then load the per-package-manager sibling under `standards/dependency-discipline/<pkg_manager>.md` for stack-specific specifics.
10
-
11
- ## Universal concerns (every package manager)
12
-
13
- 1. **Stack compatibility** — does it work with the project's framework, language version, build system, and runtime constraints?
14
- 2. **Bundle / install impact** — what does it add to your build artifact, install footprint, or runtime memory?
15
- 3. **Runtime compatibility** — does the package make assumptions about the runtime environment (SSR vs CSR, threaded vs async, target architecture)?
16
- 4. **Maintenance risk** — last publish date, open issues, bus factor. Prefer packages from known maintainers or organizations.
17
- 5. **Alternatives** — can the need be met without a dependency? Built-in standard library? CSS-only? Native HTML? Small inline helper?
18
-
19
- ## Per-package-manager siblings
20
-
21
- Bassclef's loader logic reads `tech_stack.pkg_manager:` from `.claude/bassclef-configs.jsonc` and loads the matching sibling for stack-specific specifics:
22
-
23
- | Adopter's `pkg_manager` | Sibling loaded |
24
- |---|---|
25
- | `npm` / `pnpm` / `yarn` | `standards/dependency-discipline/npm.md` |
26
- | `pip` / `poetry` | `standards/dependency-discipline/pip.md` |
27
- | `cargo` | `standards/dependency-discipline/cargo.md` |
28
- | `gem` | `standards/dependency-discipline/gem.md` |
29
- | `go-mod` | `standards/dependency-discipline/go-mod.md` |
30
- | `none` or unset | Universal concerns only |
31
-
32
- When the matching sibling does not exist (e.g., a stack bassclef has not yet adopted), the rule fires the universal concerns only and surfaces a `/promote` candidate for the missing sibling.
33
-
34
- ## Process
35
-
36
- 1. State the package name and what it is for.
37
- 2. Run the five universal checks above.
38
- 3. Run the per-PM checks from the matching sibling.
39
- 4. If red flags surface in any check, propose an alternative.
40
- 5. If clear, install and add to the project's Approved Dependencies list (or equivalent — see sibling for the exact list name and location).
41
-
42
- ## Tech stack vocabulary
43
-
44
- The loader reads `tech_stack.pkg_manager` shipped in bassclef#1127 (WU-2 of bet 2026-06-18a). Adopters set the value at `/onboard-repo` Phase 2.x. When `tech_stack:` block is absent, the universal concerns still apply; sibling-specific guidance is skipped until the operator declares the stack.
45
-
46
- ## Refs
47
-
48
- - Path A pattern from bassclef#1133 (ARCH-T0 stack-leakage audit).
49
- - WU-10 of bet `docs/iteration-bets/2026-06-18a-public-adopter-leverage-longrun.md` ships this catalog split.
50
- - Sister Path A: bassclef#1133 WU-5 (schema-management → migration-discipline catalog).
51
- - Reads from bassclef#1127 (tech_stack vocabulary).
@@ -1,117 +0,0 @@
1
- ---
2
- tier: lite
3
- globs: ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js", "src/**/*.py", ".claude/hooks/*.sh", "lib/*.sh", "scripts/*.sh"]
4
- description: OOA/D entry point — /decompose must fire for all Construction work, not just canvas-driven flow. Extended per bet 24a to cover hook + lib + script code paths per Cockburn ceremony tiering matrix.
5
- ---
6
-
7
- # OOA/D Entry Point Rule
8
-
9
- Construction work that modifies `src/` source files OR substrate code
10
- (`.claude/hooks/*.sh`, `lib/*.sh`, `scripts/*.sh`) MUST have `/decompose`
11
- evidence in the session before the first substantive commit. This applies
12
- regardless of the starting artifact — canvas, spec, epic, defect ticket,
13
- or bug report.
14
-
15
- Ceremony scales with code class per Alistair Cockburn's use-case tiering
16
- (skip / casual / brief / fully-dressed). Table amended per canvas
17
- `docs/canvases/2026-08-25-ooad-chain-as-substrate-offering.md` Axis 1 —
18
- adds a skip row at the top and lifts new substrate hook/lib to fully-dressed
19
- with ADR consult per Ousterhout + Beck + Brooks convergence:
20
-
21
- | Code class | Ceremony minimum | Artifact path |
22
- |---|---|---|
23
- | Typo, comment fix, doc edit | Skip. No chain fires. | — |
24
- | One-line change inside existing function | Casual use case sentence in commit body | Commit body |
25
- | Existing code extension (add arg, add case) | Brief use case + /decompose entry-point check | `docs/use-cases/UC-*.md` (brief) |
26
- | Adopter app code (`src/*.ts`, new module or route) | Fully-dressed use case + /decompose + /spec | `docs/use-cases/UC-*.md` |
27
- | Substrate hook (new `.claude/hooks/*.sh`) | Fully-dressed use case + /decompose + ADR consult | `docs/use-cases/UC-hook-*.md` |
28
- | Substrate lib (new `lib/*.sh` module) | Fully-dressed use case + /decompose + ADR consult | `docs/use-cases/UC-lib-*.md` |
29
- | Adopter-facing script (new `scripts/*.sh`) | Brief use case + Tier 0 tests | `docs/use-cases/UC-script-*.md` |
30
-
31
- Cockburn's rule — ceremony scales with the audience for the artifact.
32
- Fully-dressed reads by future maintainers, testers, product folks. Brief
33
- reads by devs on the same team. Casual reads by the author six weeks later.
34
-
35
- Bet 24a extended the trigger to substrate code paths so hooks + libs +
36
- scripts get the same design-first discipline that adopter app code gets.
37
- Per Feathers legacy-code retrofit — characterization tests come first for
38
- existing code; brief use case follows the tests.
39
-
40
- ## Why this rule exists
41
-
42
- The `/decompose` skill catches the Langfuse-inside-HaikuImputer class
43
- of mistakes: cross-cutting concerns (observability, testability,
44
- extensibility, security, cacheability) bolted into implementations
45
- instead of resolved as Decorators wrapping interfaces.
46
-
47
- Recurring pattern: when Construction starts from a canvas, the UX
48
- translation chain (canvas → spec → ia-model → interaction-design →
49
- sequence diagrams → /decompose) runs naturally. When it starts from
50
- an epic or bug, agents jump to implementation and skip /decompose
51
- entirely — reproducing the exact failure mode the skill was built
52
- to prevent.
53
-
54
- Evidence:
55
- - POA 2026-04-09: Langfuse tracing bolted into HaikuImputer instead
56
- of wrapping AssociationImputer facade
57
- - POA 2026-04-12: Credit-tracking logic added inline to scraper-api.ts
58
- instead of ScraperMetricsDecorator wrapping interface (epic #472)
59
-
60
- Both were epic-driven (no canvas). /decompose was skipped.
61
-
62
- ## What triggers the rule
63
-
64
- Creating changes to `src/` files on a Construction branch
65
- (`feature/*`, `fix/*`) without prior /decompose evidence.
66
-
67
- ## What satisfies the rule
68
-
69
- One of:
70
-
71
- 1. **Decomposition artifact** at `docs/decompositions/[slug].md` or
72
- inline in the spec, produced by running `/decompose`.
73
- 2. **Explicit trivial-work deferral**: "Skipped /decompose — trivial
74
- change, no responsibility reassignment" stated in session.
75
- 3. **Bug-hotfix deferral**: "Skipped /decompose — hotfix, diagnosis
76
- identified specific failure site, no cross-cutting concerns
77
- involved" stated in session.
78
-
79
- Silence is not deferral (per blocked-items rule).
80
-
81
- ## Entry-point variants (per /decompose)
82
-
83
- - State 1 (canvas path): sequence diagrams drive decomposition
84
- - State 2 (epic/defect): reverse-engineer from spec + current code
85
- - State 3 (bug/hotfix): decompose the failure site, identify missing
86
- interface/decorator
87
-
88
- All three produce the same artifact format; agents must not skip the
89
- skill just because the input shape differs from State 1.
90
-
91
- ## Enforcement
92
-
93
- This rule ships at `tier: lite` — every adopter tier loads the discipline as methodology guidance.
94
- The mechanical BLOCK layer ships at `tier: standard`:
95
-
96
- **Methodology layer (all tiers — lite, standard, ultra).**
97
- Rule loads in session context. Agents self-check at Construction branch creation per the ceremony matrix above.
98
-
99
- **Mechanical layer (standard, ultra only).**
100
- Hook at `.claude/hooks/oo-ad-entry-point-check.sh` (bassclef-upstream#1169) fires on PreToolUse Edit/Write against paths in the frontmatter globs. It BLOCKs new-file writes when the required artifacts are missing.
101
-
102
- The hook checks two conditions:
103
- - Decomposition — marker at `state/markers/decompose/<branch>.marker` OR any file under `docs/decompositions/`
104
- - Use case — matching `docs/use-cases/UC-*.md` per code class (UC-hook-*, UC-lib-*, UC-script-*, or unprefixed UC-*)
105
-
106
- Existing file Edit passes through (Cockburn casual tier — commit body carries the discipline).
107
- Override: `SKIP_OO_AD_ENTRY_POINT=1` logged via trace-helper.
108
-
109
- **Lite adopter behavior.** Rule guides ceremony choice; no BLOCK fires on lite. Canvas Axis 1 (docs/canvases/2026-08-25-ooad-chain-as-substrate-offering.md) applied Ousterhout + Beck + Brooks lens — mechanical enforcement fits standard+ scope. INSTEAD of BLOCK on lite: rule guidance shapes agent behavior at construction branch creation. Methodology guidance benefits all adopters; mechanical BLOCK is standard+ scope.
110
-
111
- ## Relationship to other rules
112
-
113
- - `sdlc-gates.md` Pre-Build section — temperance + diagnosis gates
114
- fire before this one
115
- - `blocked-items.md` — entry-point skip is a BLOCKED condition; resolve
116
- or explicitly defer
117
- - `testing.md` — new interfaces identified via /decompose need tests