@thebassclef/lite 0.1.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/dist/cli.cjs +238 -127
  2. package/dist/cli.js +240 -129
  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/dist/lite/.claude/settings.json +212 -0
  8. package/dist/lite/CLAUDE.md +41 -0
  9. package/dist/lite/gitignore +58 -0
  10. package/dist/lite/standards/bassclef-wiring-manifest.json +497 -0
  11. package/dist/lite/whereami.md +24 -0
  12. package/package.json +8 -2
  13. package/substrate/.bassclef/lite-manifest.json +0 -2701
  14. package/substrate/.claude/agents/architect.md +0 -70
  15. package/substrate/.claude/agents/builder.md +0 -114
  16. package/substrate/.claude/agents/designer.md +0 -156
  17. package/substrate/.claude/agents/reviewer.md +0 -88
  18. package/substrate/.claude/hooks/artifact-ingestion-gate.sh +0 -357
  19. package/substrate/.claude/hooks/assert-verify-steering.sh +0 -77
  20. package/substrate/.claude/hooks/bassclef-source-config-validate.sh +0 -215
  21. package/substrate/.claude/hooks/bassclef-sync.sh +0 -634
  22. package/substrate/.claude/hooks/compound-noun-scrub.sh +0 -292
  23. package/substrate/.claude/hooks/kiss-expansion-inject.sh +0 -69
  24. package/substrate/.claude/hooks/longrun-prep-compounding-axis-check.sh +0 -492
  25. package/substrate/.claude/hooks/longrun-prep-compounding-sequence-check.sh +0 -492
  26. package/substrate/.claude/hooks/plain-english-steering.sh +0 -156
  27. package/substrate/.claude/hooks/post-skill-friction-check.sh +0 -177
  28. package/substrate/.claude/hooks/post-skill-telemetry.sh +0 -62
  29. package/substrate/.claude/hooks/pre-build-gate.sh +0 -511
  30. package/substrate/.claude/hooks/pre-commit-gate.sh +0 -451
  31. package/substrate/.claude/hooks/session-end.sh +0 -433
  32. package/substrate/.claude/hooks/session-reflection.sh +0 -303
  33. package/substrate/.claude/hooks/skill-body-grade-gate.sh +0 -219
  34. package/substrate/.claude/hooks/skill-body-intent-drift.sh +0 -107
  35. package/substrate/.claude/hooks/skill-step-list-check.sh +0 -171
  36. package/substrate/.claude/hooks/state-validate.sh +0 -271
  37. package/substrate/.claude/hooks/substrate-clarity-gate.sh +0 -1110
  38. package/substrate/.claude/hooks/temperance-gate.sh +0 -147
  39. package/substrate/.claude/hooks/testing-tier-enforce.sh +0 -233
  40. package/substrate/.claude/hooks/turn-prose-grade-measure.sh +0 -219
  41. package/substrate/.claude/hooks/turn-prose-kiss-check.sh +0 -463
  42. package/substrate/.claude/hooks/vocabulary-migration-check.sh +0 -171
  43. package/substrate/.claude/hooks/whereami-utc-gate.sh +0 -142
  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,155 +0,0 @@
1
- ---
2
- tier: lite
3
- description: Per-file maturity-signal field that governs flow from bassclef-upstream (upstream experimental) → bassclef (public hardened release mirror).
4
- ---
5
- <!-- andon-allow: operator-private -->
6
- <!-- andon-allow: bassclef-upstream -->
7
-
8
- # Tier-tag schema
9
-
10
- Per-file maturity-signal field that governs flow from `bassclef-upstream` (upstream experimental) → `bassclef` (public hardened release mirror). The release script (`scripts/release-to-bassclef.sh`) reads this field on every substrate primitive and decides whether to include it in the release.
11
-
12
- ## Field
13
-
14
- - **Name:** `tier`
15
- - **Location per file type** (extended 2026-08-17 per ADR-052 D6):
16
- - `.md` files (skills, luminaries, rules, ADRs, standards): YAML frontmatter, recommended as the first line after the opening `---`
17
- - `.sh` files (hooks, scripts): header comment `# tier: <value>` on line 2 (after the shebang)
18
- - `.yml`, `.yaml` files: comment `# tier: <value>` on line 1
19
- - `.jsonc` files: line comment `// tier: <value>` on line 1
20
- - `.json` (pure) files: underscored key `"_tier": "<value>"` in the top object (underscore signals metadata field per common convention)
21
- - LICENSE, plain text: external entry in `standards/tier-file-allowlist.json`
22
- - **Values (extended 2026-08-17 per ADR-043 D1 amendment):** `upstream | archive | unknown | lite | standard | standard-pro | ultra`
23
- - **Default for untagged legacy files:** untagged .md and .sh files BLOCK release per #1209. Untagged JSON / YAML / LICENSE ship by default via ALLOWED_PATHS (per `scripts/release-to-bassclef.sh:508-513`).
24
- - **Required on:** skills, rules (enforced by `substrate-clarity-gate.sh`). Luminaries, hooks, ADRs, standards SHOULD carry it; strict enforcement deferred to a follow-on.
25
-
26
- ## Scope — where the field applies
27
-
28
- The `tier:` field applies to substrate building-block surfaces whose maturity governs release-script filtering. It does not apply to documentation surfaces that ship unconditionally.
29
-
30
- **Applies to (field required or SHOULD carry):**
31
-
32
- | Surface | Path pattern | Enforcement |
33
- |---|---|---|
34
- | Skills | `.claude/skills/*/SKILL.md` | `substrate-clarity-gate.sh` BLOCKs if missing |
35
- | Rules | `.claude/rules/*.md` | `substrate-clarity-gate.sh` BLOCKs if missing |
36
- | Luminaries | `.claude/luminaries/*.md` | SHOULD carry; strict enforcement deferred |
37
- | Agents | `.claude/agents/*.md` | SHOULD carry; strict enforcement deferred |
38
- | Hooks | `.claude/hooks/*.sh` | SHOULD carry; strict enforcement deferred |
39
- | ADRs | `architecture/decisions/ADR-*.md` | SHOULD carry; strict enforcement deferred |
40
- | Standards | `standards/*.md` | SHOULD carry; strict enforcement deferred |
41
- | Strategy | `strategy/*` | SHOULD carry; strict enforcement deferred |
42
-
43
- These paths match the building-block list in `scripts/release-to-bassclef.sh:254-263`. The release script reads the field per file and filters accordingly.
44
-
45
- **Does NOT apply to (field MUST NOT appear):**
46
-
47
- | Surface | Path pattern | Enforcement |
48
- |---|---|---|
49
- | Release notes | `docs/release-notes/*.md` | `substrate-clarity-gate.sh` BLOCKs if `tier:` present |
50
- | Roadmaps | `docs/roadmaps/*.md` | `substrate-clarity-gate.sh` BLOCKs if `tier:` present |
51
- | Canvases | `docs/canvases/*.md` | `substrate-clarity-gate.sh` BLOCKs if `tier:` present |
52
-
53
- These paths ship unconditionally via the release script's fallback branch (`scripts/release-to-bassclef.sh:367-372` — "ship per allowed-path. No per-file tier needed"). Adding `tier:` there signals a distribution filter that does not exist.
54
-
55
- **Rationale.** Per /luminary consult 2026-07-31 (Norman signifier discipline + Brooks conceptual integrity + Linus adopter contract): a field with two meanings across the substrate breaks coherence. A field that signals distribution but does not filter distribution misleads readers. Documentation surfaces describe shipped work; they are not themselves substrate building blocks whose maturity gates release.
56
-
57
- **Legacy sweep.** Two release-notes shipped with `tier: standard` before this scope was clarified: `docs/release-notes/2026-07-10-v0.2.0.md` and `docs/release-notes/2026-07-10-v0.2.1.md`. Both swept in the same PR that added this Scope subsection.
58
-
59
- ## Value semantics
60
-
61
- | Value | Ships in release? | Meaning to adopter |
62
- |---|---|---|
63
- | `private` | **No** | Operator-private even outside `docs/operator-private/`. Belt-and-braces per-file gate. |
64
- | `lite` | Yes | Early-access; minimal viable; expect rough edges. Signals "use it, file issues, expect change." |
65
- | `standard` | Yes (bassclef + bassclef-ultra) | Portfolio operator's product; adds atomic skills lite embeds. Ships in bassclef + bassclef-ultra. NOT in bassclef-lite. |
66
- | `standard-pro` | Conditional (with license key) | Extends `standard` with pre-release content. Ships to adopters whose `.bassclef-source.json` carries `tier_extension: standard-pro` AND `license_key`. Added bet 24b Step 2 (goal 20a Task 3.2). Iteration 3 wires the gate; Iteration 1 accepts the tag only. |
67
- | `ultra` | Yes (bassclef-ultra only) | Reflective intelligence; Voyage-driven skills. Ships in bassclef-ultra only. |
68
- | `archive` | **No** | Kept for historical reference or debugging. Not part of active development. Filters out at release. Added 2026-08-17 per ADR-043 D1 amendment. |
69
- | `unknown` | **No** | Awaiting operator triage. Not yet classified. Filters out at release. Should be resolved. Added 2026-08-17 per ADR-043 D1 amendment. |
70
-
71
- ## Maturity progression (lite → standard → ultra)
72
-
73
- Promotion is **communicative, not mechanical.** A primitive that's ready for the next tier gets the frontmatter edited in a normal commit. The release script ships everything that isn't `private`; the tier name tells adopters how mature the file is.
74
-
75
- ```
76
- new primitive → lite → standard → ultra
77
- ↓ ↓ ↓
78
- ships, with maturity signal in name
79
- ```
80
-
81
- There is no separate `/promote --tier-up` skill; if one is needed it'll be added when the operator notices friction.
82
-
83
- ## Gating
84
-
85
- **Note (2026-08-17):** amended per ADR-052 D1 — concentric inclusion is the model. Each product ships every file tagged at a smaller-tier value plus its own value.
86
-
87
- The release script per tier:
88
-
89
- 1. Reads `tier:` per file per format (see "Tier tag per file format" below)
90
- 2. If `tier ∈ {private, upstream, archive, unknown}` → **exclude from every downstream release**
91
- 3. If `tier == lite` → include in bassclef-lite + bassclef + bassclef-ultra
92
- 4. If `tier == standard` → include in bassclef + bassclef-ultra (NOT bassclef-lite)
93
- 5. If `tier == standard-pro` → include only when adopter carries `tier_extension: standard-pro` + `license_key`
94
- 6. If `tier == ultra` → include in bassclef-ultra only
95
- 7. If `tier == <anything else>` → refuse the release with "INVALID tier" error
96
- 8. If `tier == <empty>` on ANY file inside ALLOWED_PATHS → BLOCK release (add a tier tag per file format)
97
-
98
- ## Tier tag per file format
99
-
100
- Every file format that ships (or could ship) inside ALLOWED_PATHS carries a tier tag in a format the file's parser accepts:
101
-
102
- | Format | Tag mechanism | Example |
103
- |---|---|---|
104
- | `.md` | YAML frontmatter `tier: X` | `---\ntier: lite\n---` |
105
- | `.sh`, `.py` | header comment `# tier: X` (line 2 after shebang) | `#!/usr/bin/env bash\n# tier: standard` |
106
- | `.json` (data files) | top-level `"_tier": "X"` field | `{"_tier": "upstream", "data": ...}` |
107
- | `.json` (JSON Schema files) | `"$comment": "tier: X"` — because `$comment` is a recognized draft-2020-12 keyword; top-level unknown keys fail ajv strict mode | `{"$comment": "tier: standard", "$schema": ...}` |
108
- | `.jsonc` | header comment `// tier: X` | `// tier: standard\n{...}` |
109
- | `.yml`, `.yaml` | frontmatter `tier: X` OR header comment `# tier: X` | `---\ntier: lite\n---` |
110
- | Other text | header comment appropriate to format | — |
111
-
112
- Non-taggable formats (binary files) go into `standards/tier-file-allowlist.json` external allowlist per ADR-052 D6.
113
-
114
- Prior default-ship rule for non-md/sh files (superseded by this table 2026-08-20 per Wave 4 Option C Step 4): removed. Every file inside ALLOWED_PATHS now carries an explicit tag per format.
115
-
116
- ## Defense in depth — path exclusion registry
117
-
118
- Files whose path matches an entry in `standards/path-exclusion-registry.json` are excluded from every release regardless of any inner `tier:` value. The path wins. Consumers (release script, audit tools) read the registry as the single source of truth for path-based exclusion classes: `session-runtime`, `operator-private`, `test-only`, `operator-internal-rd`, `prototype`, `config-per-repo`, `ephemeral-transient`.
119
-
120
- The path exclusion registry (operator-only) tracks classes + rationale per entry + how to add a new exclusion.
121
-
122
- The path-exclusion registry supersedes the prior inline `case` statement in `scripts/release-to-bassclef.sh` L415-460. The refactor to read the registry ships as a separate PR after this schema amendment.
123
-
124
- ## Validation
125
-
126
- The `substrate-clarity-gate.sh` hook enforces on skill + rule edits:
127
- 1. `tier:` present (BLOCK if missing)
128
- 2. `tier:` value ∈ `{private, lite, standard, standard-pro, ultra}` (BLOCK if other value)
129
- 3. `tier:` accepted as a recognized field (no `UNKNOWN_FIELDS` warning)
130
-
131
- The `bassclef-source-config-validate.sh` hook validates `.bassclef-source.json` `tier_extension` field against the same enum (minus `private` — adopters cannot opt into private content).
132
-
133
- Override hatches:
134
- - `SKIP_SUBSTRATE_CLARITY=1` (full hook bypass; logged via trace-helper)
135
- - Allowlists: `.claude/hooks/substrate-clarity-allowlist.txt`, `.claude/hooks/substrate-frontmatter-allowlist.txt`
136
-
137
- ## Backfill provenance
138
-
139
- - 392 primitives initially backfilled with `tier: public` 2026-06-21 (WU-1 commits 73c8fce + bc00f99 + e28d73f)
140
- - 36 luminaries added to bassclef-upstream 2026-06-21 with `tier: public` (commit 54a65aa, WU-0 gap fix)
141
- - 9 presence files added 2026-06-21 with `tier: public` (commit cf53a5f)
142
- - All `tier: public` → `tier: standard` 2026-06-21 (commit TBD this session) per operator's rename to lite/standard/ultra vocabulary
143
-
144
- ## Relationship to other tier concepts
145
-
146
- - `tiers:` (plural, in skill frontmatter): skill MODES like `[medium, full]` for /launch sizes. Distinct from `tier:` (release maturity).
147
- - `model_tier:` (in skill frontmatter): which Claude model the skill prefers. Distinct from `tier:`.
148
-
149
- ## See also
150
-
151
- - `architecture/dual-repo-flow.md` — the full architecture this tier field operationalizes
152
- - `architecture/decisions/ADR-029-release-pipeline.md` — formalizes the release script that consumes this field
153
- - `architecture/decisions/ADR-030-adopter-inbox-flow.md` — the ingestion direction; doesn't read tier but operates inside the same bounded-context model
154
- - `scripts/release-to-bassclef.sh` — the consumer
155
- - `.claude/hooks/substrate-clarity-gate.sh` — the gate that enforces this field on skill + rule
@@ -1,99 +0,0 @@
1
- ---
2
- tier: lite
3
- description: "Bassclef's config splits into two layers."
4
- ---
5
-
6
- # Two-Layer Config — Shared vs Operator
7
-
8
- Bassclef's config splits into two layers. The **shared layer** is committed and identity-agnostic — every adopter sees it. The **operator layer** is gitignored and per-person — never committed, never shipped to adopters.
9
-
10
- This standard exists because the line between "what bassclef needs" and "what one operator has set up" was blurry before the 2026-05-23 cold-adopter run. Operator-specific paths, allow lists, and preferences leaked into shared config. Adopters would have inherited the operator's identity on first clone.
11
-
12
- ## The two layers
13
-
14
- ### Shared layer (committed)
15
-
16
- - `.claude/settings.json`
17
- - `CLAUDE.md`
18
- - `README.md`
19
- - All skills, hooks, rules, standards under `.claude/` and root dirs
20
- - All ADRs, decompositions, design docs
21
-
22
- **Rules for the shared layer:**
23
-
24
- 1. Identity-agnostic. No absolute paths to specific home directories.
25
- 2. No personal allow-list entries (broad npm grants, macOS process control, etc.).
26
- 3. No "sunj-labs" references except in attribution.
27
- 4. Tested against cold-adopter personas (`strategy/personas/`) before publication.
28
-
29
- ### Operator layer (gitignored)
30
-
31
- - `.claude/settings.local.json`
32
- - `CLAUDE.local.md` (optional, if operator wants per-machine context)
33
- - `.env.local`
34
- - Anything ending in `.local`
35
-
36
- **Rules for the operator layer:**
37
-
38
- 1. Holds operator-specific allow lists, machine paths, personal aliases.
39
- 2. Never committed. `.gitignore` enforces this by listing the files explicitly.
40
- 3. Each contributor creates their own. The shared `.gitignore` block tells them which files to create.
41
- 4. Where convenience accumulates — broad `Bash(rm *)` grants, machine-specific paths, etc.
42
-
43
- ## Mechanical enforcement
44
-
45
- `.claude/hooks/pre-commit-gate.sh` includes a CCF-3 absolute-path guard. It runs on every `git commit` and BLOCKs when any staged non-exempt file contains `/Users/<name>` or `/home/<name>` patterns.
46
-
47
- **Exempt paths** (where these patterns are legitimate — documentation, audits, test fixtures):
48
-
49
- - `.claude/rules/`, `.claude/hooks/`, `.claude/skills/`, `.claude/luminaries/`, `.claude/agents/`
50
- - `standards/`, `architecture/`, `design/`
51
- - `docs/` (all subdirs)
52
- - `chronicle/`, `strategy/`
53
- - `scripts/tests/`
54
-
55
- **Non-exempt** (where the guard fires): everything else. Most importantly `.claude/settings.json`, top-level configs, source code under `src/` or `lib/`.
56
-
57
- When the guard fires, it points to `.claude/settings.local.json` as the right home for the offending entry.
58
-
59
- ## Override
60
-
61
- `SKIP_OPERATOR_PATHS=1 git commit` — logged via `trace-helper.sh`. Use only for genuine cases where the absolute path must live in the shared layer (rare). Document the rationale in the commit message.
62
-
63
- ## What this fixes
64
-
65
- Before this standard:
66
-
67
- - `.claude/settings.json` shipped `Bash(rm /Users/<operator>/src/<org>/bassclef/*)` — F70 in the 2026-05-23 cold-adopter run. Every public clone would have inherited that operator-identity line.
68
- - Allow-list entries reflected operator workflow rather than adopter safety — F73 in the same run.
69
-
70
- After this standard:
71
-
72
- - F70 is removed from the committed `.claude/settings.json`.
73
- - The hook prevents the class from recurring.
74
- - New operator-convenience entries go to `.claude/settings.local.json`.
75
-
76
- ## When to add a new field to the operator layer
77
-
78
- Any of these signals mean it belongs in `settings.local.json`, not `settings.json`:
79
-
80
- - Contains an absolute path matching `/Users/<name>` or `/home/<name>`.
81
- - Grants a broad permission (`Bash(rm *)`, `Bash(npm*)`, `Bash(pkill*)`) that an adopter on a first session would not be expected to want.
82
- - References operator-specific tools or paths (`/Applications/Tailscale.app/...`).
83
- - Encodes machine-specific config (hostnames, ports tied to a specific dev setup).
84
-
85
- When in doubt, default to the operator layer. It's cheaper to promote a setting from `settings.local.json` to `settings.json` later than to ship operator identity to every adopter.
86
-
87
- ## Sources read
88
-
89
- - `docs/adoption-runs/2026-05-23-cold-adopter-1.md` — the cold-adopter run record (PR #735)
90
- - Operator handoff CCF-3 + Step 5 Issue 4 — the policy specification
91
- - F70 (operator path leak in committed `.claude/settings.json`)
92
- - F73 (allow-list grants reflect operator workflow rather than adopter safety)
93
- - `.claude/hooks/pre-commit-gate.sh` — the mechanical enforcement
94
- - `.claude/rules/blocked-items.md` — the resolve-or-defer protocol the BLOCKED signal slots into
95
-
96
- ## Closes
97
-
98
- - bassclef#740 (CCF-3 — two-layer config policy)
99
- - bassclef#738 (Pre-launch cleanup — F70 instance)
@@ -1,292 +0,0 @@
1
- ---
2
- tier: lite
3
- description: - Alistair Cockburn — Writing Effective Use Cases (2000).
4
- ---
5
-
6
- ## Sources read
7
-
8
- - Alistair Cockburn — *Writing Effective Use Cases* (2000). Bassclef source for fully-dressed format, goal levels, extension enumeration, preconditions + guarantees, stakeholders + interests.
9
- - Alistair Cockburn — *Unifying user stories, use cases, and story maps* (2024). Artifact non-overlap (use-case ≠ user-story ≠ task-scenario ≠ story-map); this standard respects the boundaries.
10
- - `.claude/skills/use-case/SKILL.md` — the skill that produces this artifact; this standard codifies the format the skill emits.
11
- - `standards/user-story-invest.md` — sibling standard; user-stories slice use-case lines with traceability back. INVEST validation there is orthogonal to Cockburn validation here.
12
- - `standards/persona-schema.md` — primary-actor field MUST reference a persona slug per this schema.
13
-
14
- ## What I'm NOT reading (with reason)
15
-
16
- - RUP, Jacobson "Use Case 2.0," and other use-case notation variants — Cockburn is the bassclef shape in sunj-labs per this standard. Alternatives may be adopted later with an explicit ADR.
17
-
18
- # Use-Case Format Standard
19
-
20
- Bassclef format for use cases in sunj-labs repos. The contract the
21
- `/use-case` skill writes and every downstream consumer
22
- (`/user-stories`, `/interaction-design`, `/decompose`, `/verify`,
23
- `/spec`) composes against.
24
-
25
- Template: `templates/use-case-template.md`.
26
- Skill: `.claude/skills/use-case/SKILL.md`.
27
-
28
- ## Why this standard exists
29
-
30
- Before /use-case, the user-centric chain had:
31
-
32
- - `/jtbd-tasks` — WHY (job the product is hired for)
33
- - `/task-scenarios` — CONTEXT (narrative day-in-the-life)
34
- - `/user-stories` — WHAT (backlog tokens, INVEST-shaped)
35
- - `/decompose` — HOW (responsibilities + patterns)
36
-
37
- Missing: **goal-level behavior spec**. `/user-stories` slices
38
- goals into INVEST-sized increments, but stories don't enumerate
39
- alternate flows systematically. `/interaction-design` renders
40
- flows as diagrams, but diagrams permit free-form omission —
41
- nothing forces the designer to list every extension.
42
-
43
- Use cases close the gap. Cockburn's format *requires* extension
44
- enumeration (1a, 1b, 2a, 2b...), *requires* preconditions and
45
- postconditions, *requires* stakeholders-and-interests. The
46
- skill can't emit a valid use case without those fields, so
47
- cross-cutting concerns (audit, compliance, rate limits) can't
48
- be silently dropped on the way to `/decompose`.
49
-
50
- ## File convention
51
-
52
- ### Preferred path
53
-
54
- `docs/use-cases/UC-NNN-{slug}.md` — one file per use case.
55
-
56
- `NNN` is a zero-padded 3-digit number assigned in creation order.
57
- `{slug}` is URL-safe: lowercase, hyphens, no spaces. Slug MUST
58
- match a form of the goal (e.g., `sign-in-with-email` not
59
- `login` — avoids ambiguity when multiple auth flows coexist).
60
-
61
- ### Matrix
62
-
63
- `docs/use-cases/_matrix.md` — traceability table with one row
64
- per use case. See `/use-case` skill Step 7 for columns.
65
-
66
- ## Required fields
67
-
68
- Every use case MUST include these fields. The skill validates
69
- presence and emits WARN/BLOCK per the validation matrix below.
70
-
71
- ### Header
72
-
73
- ```markdown
74
- # UC-NNN — [imperative goal title]
75
- ```
76
-
77
- The title is the goal statement, imperative mood, no period.
78
- Examples: `UC-001 — Sign in with email and password`,
79
- `UC-014 — Submit an expense for approval`.
80
-
81
- ### Metadata block
82
-
83
- ```markdown
84
- - **Primary actor**: [persona-slug]
85
- - **Goal level**: ☁️ summary | 🎯 user-goal | 🐟 subfunction
86
- - **Scope**: [system-under-design]
87
- - **Status**: draft | accepted | deprecated
88
- - **Last validated**: YYYY-MM-DD
89
- ```
90
-
91
- **Primary actor** MUST be a persona slug from `docs/personas/` or
92
- equivalent. "User," "actor," or role words like "admin" without a
93
- persona file are WARN.
94
-
95
- **Goal level** exactly one of the three icons. Default ☁️/🎯/🐟
96
- per `/use-case` Step 2. Summary only for multi-session goals;
97
- subfunction only for reused-by-2+ use cases.
98
-
99
- **Scope** names the system boundary: `POA web UI + auth service`,
100
- `bassclef-sync hook`, `POA backend`. Fuzzy scope ("the app") is
101
- WARN — split into distinct use cases.
102
-
103
- ### Stakeholders + interests
104
-
105
- ```markdown
106
- ## Stakeholders + interests
107
-
108
- | Stakeholder | Interest |
109
- |-------------|----------|
110
- | [stakeholder] | [what they want to be true about this goal's execution] |
111
- ```
112
-
113
- At least **2 non-actor** stakeholders required. Non-actor means:
114
- not the primary actor. Examples: Compliance, Ops, Support, Billing,
115
- Legal, Security, Partners, Regulators, Operator/Admin.
116
-
117
- This block is load-bearing — it's what feeds `/decompose`'s -ility
118
- audit. A use case with only the primary actor listed will pass
119
- validation with a WARN but will produce a decomposition missing
120
- cross-cutting concerns. The skill will flag the WARN explicitly.
121
-
122
- ### Preconditions + guarantees + trigger
123
-
124
- ```markdown
125
- ## Preconditions
126
- - [state invariant 1]
127
- - [state invariant 2]
128
-
129
- ## Minimal guarantees
130
- - [what's true after, regardless of success/failure]
131
-
132
- ## Success guarantees
133
- - [what's true after a successful run]
134
-
135
- ## Trigger
136
- - [event that starts the use case]
137
- ```
138
-
139
- **Preconditions** are checkable state invariants the use case
140
- assumes on entry. "The system is running" is throat-clearing, not
141
- a precondition — reject as WARN. Valid preconditions: "account
142
- exists," "user is authenticated," "quota below limit."
143
-
144
- **Minimal guarantees** hold on ANY exit (success or extension):
145
- typically audit logging, state consistency, no secret leakage.
146
- This is where the "audit-trail written even on failure" invariant
147
- gets recorded.
148
-
149
- **Success guarantees** hold on successful completion only.
150
-
151
- **Trigger** is the specific event (actor action, scheduled event,
152
- external signal) that starts the flow.
153
-
154
- ### Main success scenario
155
-
156
- ```markdown
157
- ## Main success scenario
158
-
159
- 1. [Actor action OR system response]
160
- 2. [Next step, actor↔system alternating]
161
- 3. [...]
162
- ```
163
-
164
- Numbered list, 3-9 steps. Each step is either actor action or
165
- system response; alternate between them. Steps >9 = split into
166
- subfunction use case.
167
-
168
- Implementation language prohibited: "System calls Postgres" ❌.
169
- Say "System retrieves account" — let `/decompose` pick storage.
170
-
171
- ### Extensions
172
-
173
- ```markdown
174
- ## Extensions
175
-
176
- - **Na. [condition]**:
177
- - Na1. [step 1 of recovery]
178
- - Na2. [step 2 of recovery]
179
- - Na3. Use case ends with [outcome].
180
- ```
181
-
182
- `N` = the main-scenario step number where the branch originates.
183
- `a`, `b`, `c` = multiple extensions at the same step. Sub-steps
184
- within an extension are `Na1`, `Na2`, `Na3`...
185
-
186
- Nested extensions (`Na1a`) are allowed but nesting >2 levels
187
- signals a subfunction extraction is needed.
188
-
189
- **Every step in the main scenario MUST have at least one
190
- extension considered.** If a step has no realistic branch, state
191
- that explicitly: `*No extensions — [reason]*`. Silence is a
192
- failure signal, not confirmation of happy path.
193
-
194
- Extension enumeration prompts (Cockburn, per skill Step 4):
195
-
196
- 1. What if actor input is invalid?
197
- 2. What if system can't complete step (timeout, dependency, resource)?
198
- 3. What if a precondition silently broke?
199
- 4. What if actor abandons partway?
200
- 5. What if concurrent actor changed state?
201
-
202
- ### Technology/data variations (optional)
203
-
204
- ```markdown
205
- ## Technology / data variations
206
-
207
- - *Step 3*: password may also be verified via WebAuthn credential
208
- - *Step 4*: session cookie may be HttpOnly OR stored in SessionStorage per platform
209
- ```
210
-
211
- Use when the same logical step has multiple implementation paths
212
- with different -ility characteristics. Feeds `/decompose` with
213
- variation points needing Strategy pattern.
214
-
215
- ### Related information
216
-
217
- ```markdown
218
- ## Related information
219
-
220
- - Non-functional requirements: [rate limits, latency SLOs, etc.]
221
- - References: [specs, ADRs, canvases, external docs]
222
- - Sliced by stories: US-NNN, US-NNN, ...
223
- ```
224
-
225
- Rate-limit, latency, and other cross-cutting NFRs live here when
226
- they don't map cleanly to a stakeholder+interests row.
227
-
228
- ## Validation matrix
229
-
230
- | # | Check | Fail signal | Severity |
231
- |---|-------|-------------|----------|
232
- | 1 | Goal level stated | Missing ☁️/🎯/🐟 | BLOCK |
233
- | 2 | Primary actor is a persona slug | "user" / missing / role word without persona file | WARN |
234
- | 3 | ≥2 non-actor stakeholders | Only primary actor listed | WARN |
235
- | 4 | Preconditions are checkable state invariants | Throat-clearing ("system is running") | WARN |
236
- | 5 | Main scenario steps numbered | Bullets or prose | BLOCK |
237
- | 6 | Main scenario 3-9 steps | ≥10 steps | WARN (candidate for subfunction split) |
238
- | 7 | Every step has ≥1 extension OR explicit "*No extensions — [reason]*" | Silence | BLOCK |
239
- | 8 | Extensions use Na Nb format | Free-form bullets | BLOCK |
240
- | 9 | Success guarantees trace back to trigger | Guarantee unrelated to trigger outcome | WARN |
241
- | 10 | Scope names a specific system boundary | "The app" / missing | WARN |
242
- | 11 | No implementation language in steps | "System calls Postgres" / framework names | WARN |
243
- | 12 | Trigger is a specific event | Abstract ("when needed") | WARN |
244
-
245
- BLOCK = skill refuses to emit; operator must fix.
246
- WARN = skill emits with warnings recorded in `_matrix.md`.
247
-
248
- ## Relationship to adjacent standards
249
-
250
- | Standard | Relationship |
251
- |----------|-------------|
252
- | `persona-schema.md` | Primary actor MUST reference a persona slug per this schema |
253
- | `user-story-invest.md` | User stories slice use-case lines; stories cite UC-N step Xa in traceability |
254
- | `vpc-fit-validation.md` | VPC Pain-Relievers + Gain-Creators inform the stakeholders+interests "why this matters" framing |
255
- | `project-directory-layout.md` | `docs/use-cases/` is the bassclef path in app repos |
256
-
257
- ## Relationship to adjacent skills
258
-
259
- | Skill | Role in use-case lifecycle |
260
- |-------|----------------------------|
261
- | `/use-case` | Produces use-case files per this standard |
262
- | `/user-stories` | Slices use-case lines into backlog tokens |
263
- | `/interaction-design` | Renders main scenario + extensions as diagrams |
264
- | `/decompose` | Reads use-case as alternative input to sequence diagrams; stakeholders+interests drive -ility audit |
265
- | `/verify` | Maps use-case lines to test assertions (1:1) |
266
- | `/spec` | Consumes use cases + stories as input |
267
- | `/shape` | `medium` + `full` tiers invoke /use-case as part of the chain |
268
-
269
- ## Evolution
270
-
271
- - **v1.0 (2026-04-21)** — initial bassclef standard, Cockburn
272
- fully-dressed format with goal levels, stakeholders+interests
273
- discipline, and extension enumeration rules. Validation matrix
274
- encodes BLOCK/WARN severities for skill-time gate.
275
-
276
- ## Open questions for future iteration
277
-
278
- - **Concurrent-actor extensions**: Cockburn's rule 5 ("what if a
279
- concurrent actor changed state?") is underspecified here. May
280
- warrant a companion standard on optimistic-concurrency patterns
281
- tied to use-case extensions.
282
- - **Use-case reuse (subfunction callouts)**: current format inlines
283
- subfunction use cases; larger systems may need explicit "include"
284
- references (UC-001 includes UC-042). Defer until observed pain.
285
- - **Use-case deprecation lifecycle**: `status: deprecated` is
286
- noted but lifecycle (when to delete vs. archive) isn't codified.
287
- Defer until first use-case is retired.
288
-
289
- ## Closes
290
-
291
- - bassclef #213 (companion to `/use-case` skill)
292
- - Part of spec-lineage family epic #155