@thebassclef/lite 0.0.1 → 0.1.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 (182) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +85 -4
  3. package/dist/cli.cjs +1610 -0
  4. package/dist/cli.js +1587 -0
  5. package/dist/index.cjs +4 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +4 -0
  8. package/package.json +51 -3
  9. package/substrate/.bassclef/lite-manifest.json +1794 -0
  10. package/substrate/.claude/agents/architect.md +70 -0
  11. package/substrate/.claude/agents/builder.md +114 -0
  12. package/substrate/.claude/agents/designer.md +156 -0
  13. package/substrate/.claude/agents/reviewer.md +88 -0
  14. package/substrate/.claude/hooks/artifact-ingestion-gate.sh +357 -0
  15. package/substrate/.claude/hooks/assert-verify-steering.sh +77 -0
  16. package/substrate/.claude/hooks/bassclef-source-config-validate.sh +215 -0
  17. package/substrate/.claude/hooks/bassclef-sync.sh +634 -0
  18. package/substrate/.claude/hooks/compound-noun-scrub.sh +292 -0
  19. package/substrate/.claude/hooks/kiss-expansion-inject.sh +69 -0
  20. package/substrate/.claude/hooks/plain-english-steering.sh +156 -0
  21. package/substrate/.claude/hooks/post-skill-friction-check.sh +177 -0
  22. package/substrate/.claude/hooks/post-skill-telemetry.sh +62 -0
  23. package/substrate/.claude/hooks/pre-build-gate.sh +511 -0
  24. package/substrate/.claude/hooks/pre-commit-gate.sh +452 -0
  25. package/substrate/.claude/hooks/session-end.sh +433 -0
  26. package/substrate/.claude/hooks/session-reflection.sh +303 -0
  27. package/substrate/.claude/hooks/skill-body-grade-gate.sh +219 -0
  28. package/substrate/.claude/hooks/skill-body-intent-drift.sh +107 -0
  29. package/substrate/.claude/hooks/skill-step-list-check.sh +171 -0
  30. package/substrate/.claude/hooks/state-validate.sh +271 -0
  31. package/substrate/.claude/hooks/substrate-clarity-gate.sh +1110 -0
  32. package/substrate/.claude/hooks/temperance-gate.sh +147 -0
  33. package/substrate/.claude/hooks/testing-tier-enforce.sh +233 -0
  34. package/substrate/.claude/hooks/turn-prose-grade-measure.sh +219 -0
  35. package/substrate/.claude/hooks/turn-prose-kiss-check.sh +434 -0
  36. package/substrate/.claude/hooks/vocabulary-migration-check.sh +171 -0
  37. package/substrate/.claude/hooks/whereami-utc-gate.sh +142 -0
  38. package/substrate/.claude/luminaries/alan-cooper.md +170 -0
  39. package/substrate/.claude/luminaries/alistair-cockburn.md +140 -0
  40. package/substrate/.claude/luminaries/amazon-pr-faq.md +34 -0
  41. package/substrate/.claude/luminaries/ash-maurya.md +121 -0
  42. package/substrate/.claude/luminaries/bill-buxton.md +210 -0
  43. package/substrate/.claude/luminaries/charles-sanders-peirce.md +150 -0
  44. package/substrate/.claude/luminaries/david-ogilvy.md +192 -0
  45. package/substrate/.claude/luminaries/don-norman.md +173 -0
  46. package/substrate/.claude/luminaries/edward-tufte.md +179 -0
  47. package/substrate/.claude/luminaries/eric-evans.md +160 -0
  48. package/substrate/.claude/luminaries/frederick-brooks.md +50 -0
  49. package/substrate/.claude/luminaries/gang-of-four.md +157 -0
  50. package/substrate/.claude/luminaries/jason-fried-dhh.md +46 -0
  51. package/substrate/.claude/luminaries/jesse-james-garrett.md +154 -0
  52. package/substrate/.claude/luminaries/john-ousterhout.md +94 -0
  53. package/substrate/.claude/luminaries/karl-popper.md +132 -0
  54. package/substrate/.claude/luminaries/kent-beck.md +168 -0
  55. package/substrate/.claude/luminaries/linus-torvalds.md +218 -0
  56. package/substrate/.claude/luminaries/martin-fowler.md +164 -0
  57. package/substrate/.claude/luminaries/michael-feathers.md +125 -0
  58. package/substrate/.claude/luminaries/michael-nygard.md +118 -0
  59. package/substrate/.claude/luminaries/robert-c-martin.md +164 -0
  60. package/substrate/.claude/luminaries/saltzer-schroeder.md +194 -0
  61. package/substrate/.claude/luminaries/sophia-prater.md +193 -0
  62. package/substrate/.claude/luminaries/stephen-toulmin.md +131 -0
  63. package/substrate/.claude/rules/artifact-ingestion.md +179 -0
  64. package/substrate/.claude/rules/assert-only-after-verify.md +137 -0
  65. package/substrate/.claude/rules/blocked-items.md +146 -0
  66. package/substrate/.claude/rules/branching.md +28 -0
  67. package/substrate/.claude/rules/commit-conventions.md +22 -0
  68. package/substrate/.claude/rules/context-engineering.md +202 -0
  69. package/substrate/.claude/rules/context-management.md +85 -0
  70. package/substrate/.claude/rules/destructive-operations.md +69 -0
  71. package/substrate/.claude/rules/diagnosis.md +38 -0
  72. package/substrate/.claude/rules/guardrails.md +73 -0
  73. package/substrate/.claude/rules/identifier-leak-prevention.md +104 -0
  74. package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +98 -0
  75. package/substrate/.claude/rules/oo-ad-entry-point.md +117 -0
  76. package/substrate/.claude/rules/operator-facing-prose.md +196 -0
  77. package/substrate/.claude/rules/plain-english-discipline.md +154 -0
  78. package/substrate/.claude/rules/pr-body-shape.md +317 -0
  79. package/substrate/.claude/rules/pr-strategy.md +167 -0
  80. package/substrate/.claude/rules/sdlc-gates.md +149 -0
  81. package/substrate/.claude/rules/session-artifacts.md +236 -0
  82. package/substrate/.claude/rules/state-schema-validation.md +162 -0
  83. package/substrate/.claude/rules/whereami-load-bearing.md +202 -0
  84. package/substrate/.claude/rules/writing-craft-discipline.md +92 -0
  85. package/substrate/.claude/skills/build/SKILL.md +640 -0
  86. package/substrate/.claude/skills/decompose/SKILL.md +280 -0
  87. package/substrate/.claude/skills/diagnose/SKILL.md +297 -0
  88. package/substrate/.claude/skills/howdoi/SKILL.md +105 -0
  89. package/substrate/.claude/skills/ia-model/SKILL.md +108 -0
  90. package/substrate/.claude/skills/interaction-design/SKILL.md +112 -0
  91. package/substrate/.claude/skills/interpret-input/SKILL.md +180 -0
  92. package/substrate/.claude/skills/kiss/SKILL.md +449 -0
  93. package/substrate/.claude/skills/launch/SKILL.md +924 -0
  94. package/substrate/.claude/skills/lean-canvas/SKILL.md +332 -0
  95. package/substrate/.claude/skills/longrun/SKILL.md +426 -0
  96. package/substrate/.claude/skills/luminary/SKILL.md +481 -0
  97. package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +177 -0
  98. package/substrate/.claude/skills/onboard-repo/SKILL.md +2190 -0
  99. package/substrate/.claude/skills/pattern-review/SKILL.md +99 -0
  100. package/substrate/.claude/skills/personas/SKILL.md +207 -0
  101. package/substrate/.claude/skills/promote/SKILL.md +283 -0
  102. package/substrate/.claude/skills/requirement/SKILL.md +98 -0
  103. package/substrate/.claude/skills/retro/SKILL.md +117 -0
  104. package/substrate/.claude/skills/riff/SKILL.md +114 -0
  105. package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +163 -0
  106. package/substrate/.claude/skills/session-end/SKILL.md +309 -0
  107. package/substrate/.claude/skills/session-log/SKILL.md +299 -0
  108. package/substrate/.claude/skills/skills/SKILL.md +228 -0
  109. package/substrate/.claude/skills/spec/SKILL.md +105 -0
  110. package/substrate/.claude/skills/sprint/SKILL.md +392 -0
  111. package/substrate/.claude/skills/stage/SKILL.md +384 -0
  112. package/substrate/.claude/skills/state-a-problem/SKILL.md +185 -0
  113. package/substrate/.claude/skills/temperance/SKILL.md +108 -0
  114. package/substrate/.claude/skills/use-case/SKILL.md +417 -0
  115. package/substrate/.claude/skills/user-stories/SKILL.md +268 -0
  116. package/substrate/.claude/skills/value-prop/SKILL.md +251 -0
  117. package/substrate/.claude/skills/verify/SKILL.md +160 -0
  118. package/substrate/.claude/skills/whereami/SKILL.md +307 -0
  119. package/substrate/AGENTS.md +79 -0
  120. package/substrate/CLAUDE-lite.md +85 -0
  121. package/substrate/CODE_OF_CONDUCT.md +28 -0
  122. package/substrate/CONTRIBUTING.md +177 -0
  123. package/substrate/README.md +173 -0
  124. package/substrate/SECURITY.md +19 -0
  125. package/substrate/architecture/decisions/ADR-029-release-pipeline.md +79 -0
  126. package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +139 -0
  127. package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +192 -0
  128. package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +145 -0
  129. package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +155 -0
  130. package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +162 -0
  131. package/substrate/lib/clean-artifacts-sweep.sh +112 -0
  132. package/substrate/lib/code-comment-discipline.sh +144 -0
  133. package/substrate/lib/composer-preflight.sh +459 -0
  134. package/substrate/lib/hook-inject.sh +255 -0
  135. package/substrate/lib/luminary-pick.sh +96 -0
  136. package/substrate/lib/output-discipline.sh +143 -0
  137. package/substrate/lib/rewrite-check.sh +214 -0
  138. package/substrate/lib/state.sh +1372 -0
  139. package/substrate/lib/telemetry.sh +205 -0
  140. package/substrate/lib/tier-check.sh +138 -0
  141. package/substrate/lib/tier-dependency-audit.sh +933 -0
  142. package/substrate/presence/install/bassclef-hook-connect.sh +178 -0
  143. package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +841 -0
  144. package/substrate/presence/install/bassclef-sync.template.sh +2076 -0
  145. package/substrate/presence/install/schedule-auto-save.cron.sh +88 -0
  146. package/substrate/presence/install/schedule-auto-save.taskscheduler.md +122 -0
  147. package/substrate/scripts/aggregate-telemetry.sh +217 -0
  148. package/substrate/scripts/analyze-tier-dependencies.sh +239 -0
  149. package/substrate/scripts/generate-lite-manifest.sh +489 -0
  150. package/substrate/scripts/generate-tier-manifest.sh +28 -0
  151. package/substrate/scripts/intent-drift-check.sh +456 -0
  152. package/substrate/scripts/lite-manifest-drift-check.sh +146 -0
  153. package/substrate/scripts/render-lite-manifest-doc.sh +150 -0
  154. package/substrate/standards/bassclef-configs-schema.md +232 -0
  155. package/substrate/standards/bassclef-evolution.md +143 -0
  156. package/substrate/standards/bassclef-internal-jargon.md +244 -0
  157. package/substrate/standards/bassclef-managed-sentinel.md +96 -0
  158. package/substrate/standards/bassclef-source-config.md +228 -0
  159. package/substrate/standards/deferred-actions-schema.md +204 -0
  160. package/substrate/standards/docs-sync-allowlist.md +76 -0
  161. package/substrate/standards/graceful-exit.md +227 -0
  162. package/substrate/standards/hook-idempotency.md +102 -0
  163. package/substrate/standards/lite-manifest-schema-changes.md +75 -0
  164. package/substrate/standards/luminary-problem-patterns.md +481 -0
  165. package/substrate/standards/ogilvy-writing-rules.md +225 -0
  166. package/substrate/standards/opener-discipline.md +96 -0
  167. package/substrate/standards/operator-facing-prose-discipline.md +201 -0
  168. package/substrate/standards/project-directory-layout.md +276 -0
  169. package/substrate/standards/release-tagging.md +137 -0
  170. package/substrate/standards/sdlc-compliance.md +286 -0
  171. package/substrate/standards/secrets-lifecycle.md +210 -0
  172. package/substrate/standards/security-scanner-adapter.md +145 -0
  173. package/substrate/standards/skill-output-discipline.md +90 -0
  174. package/substrate/standards/state-spine.md +511 -0
  175. package/substrate/standards/tech-stack-config.md +109 -0
  176. package/substrate/standards/tier-dependency-analysis.md +167 -0
  177. package/substrate/standards/tier-runtime-deps/lite.md +57 -0
  178. package/substrate/standards/tier-tag-schema.md +155 -0
  179. package/substrate/standards/whereami-schema.md +301 -0
  180. package/substrate/standards/writing-guide.md +213 -0
  181. package/substrate/templates/deferred-action-template.md +45 -0
  182. package/substrate/templates/whereami-template.md +101 -0
@@ -0,0 +1,276 @@
1
+ ---
2
+ tier: lite
3
+ description: Standard directory structure for sunj-labs repositories.
4
+ ---
5
+
6
+ # Project Directory Layout
7
+
8
+ Standard directory structure for sunj-labs repositories. The goal: a new adopter cloning a bassclef-consumer repo can locate any artifact in under 30 seconds without asking.
9
+
10
+ > **Which page do I want?** Two related pages cover "where does X go?":
11
+ >
12
+ > - **This page (Directory Layout)** — the methodology tree. Answers: "I'm writing a canvas / spec / ADR / chronicle — which directory does it live in?" Use when you're producing an SDLC artifact and need to know where to put it.
13
+ > - **[File structure](https://github.com/sunj-labs/bassclef/wiki/File-structure)** — the installation footprint. Answers: "What did `/onboard-repo` actually write into my repo? What's safe to edit vs. bassclef-managed?" Use when you're inspecting what landed after install or deciding what to commit vs. gitignore.
14
+ >
15
+ > If you're asking "where does this artifact go?" you want Directory Layout. If you're asking "what just got installed?" you want File structure.
16
+
17
+ This standard replaces the prior 2026-01 snapshot. See `docs/audits/2026-05-12-directory-skill-overlap-audit.md` for the inventory that motivated this rewrite.
18
+
19
+ ## Mental model
20
+
21
+ Every artifact has one home. The SDLC produces artifacts in a predictable flow:
22
+
23
+ ```
24
+ idea → canvas → spec → design → prototype → build → chronicle
25
+ (strategy/) (specs/) (designs/) (prototypes/) (src/) (chronicle/)
26
+ ```
27
+
28
+ ### Two repo shapes — why your app repo and bassclef look almost identical except for `docs/`
29
+
30
+ The two layouts you'll see on this page (App repo and Bassclef) have the same SDLC artifact categories. The only structural difference is where those categories live:
31
+
32
+ - **App repo** (yours): SDLC artifacts nest under `docs/` so they don't compete with `src/` at the top. Your application code is what readers expect to see first when they open the repo.
33
+ - **Bassclef** (the methodology repo): the entire repo IS the methodology. There is no `src/` at the top. SDLC artifact categories hoist to root because that's the load-bearing content.
34
+
35
+ Same artifacts, different nesting. A canvas in your app repo lives at `docs/strategy/canvases/`. A canvas in bassclef lives at `strategy/canvases/`. The path-prefix is the only delta.
36
+
37
+ | Artifact | App repo (your repo) | Bassclef (this repo) |
38
+ |---|---|---|
39
+ | Canvas | `docs/strategy/canvases/` | `strategy/canvases/` |
40
+ | Spec | `docs/specs/` | `docs/specs/` (bassclef happens to use docs/specs too) |
41
+ | ADR | `docs/architecture/decisions/` | `architecture/decisions/` |
42
+ | C4 diagram | `docs/architecture/c4/` | `architecture/c4/` |
43
+ | Design tokens | `docs/designs/` | `design/` |
44
+ | Chronicle | `docs/chronicle/` | `chronicle/` |
45
+ | Decomposition | `docs/decompositions/` | `docs/decompositions/` |
46
+ | Iteration goal | `docs/iteration-bets/` | `docs/iteration-bets/` |
47
+
48
+ The asymmetry is intentional, not legacy. App repos need `src/` at the top; bassclef doesn't have one to compete with. Same conceptual flow (`idea → canvas → spec → ...`), different root-level placement.
49
+
50
+ ## App repo layout
51
+
52
+ Legend:
53
+
54
+ - 🔵 **bassclef-managed** — the substrate writes/owns these paths. Skills, rules, hooks, agents, and SDLC artifacts produced by the methodology.
55
+ - ⚪ **your code** — your application. Bassclef doesn't touch `src/`, your migrations, your tests. Names below are illustrative; replace with your stack's conventions.
56
+
57
+ ```
58
+ ⚪ src/ # your application code
59
+ ⚪ your-database-migrations/ # e.g. prisma/, alembic/, knex/ — if applicable
60
+ ⚪ public/ # your static assets
61
+ ⚪ scripts/ # your build / deploy / utility scripts
62
+ ⚪ tests/ # your test suites (unit / integration / e2e)
63
+ ⚪ data/ # your data files, snapshots (not docs)
64
+
65
+ 🔵 .claude/ # bassclef substrate (skills, rules, hooks, agents)
66
+
67
+ 🔵 docs/ # SDLC artifacts produced by the methodology
68
+ 🔵 strategy/
69
+ 🔵 canvases/ # product canvases (Thesis → Shape → Build)
70
+ 🔵 pr-faqs/ # PR/FAQ documents
71
+ 🔵 research/ # research notes
72
+ 🔵 specs/ # structured specs from canvases
73
+ 🔵 decompositions/ # /decompose output (responsibility audit + pattern map)
74
+ 🔵 designs/ # design artifacts (tokens, mocks, references)
75
+ 🔵 ia-models/ # information architecture models
76
+ 🔵 interaction-design/ # interaction design artifacts
77
+ 🔵 prototypes/ # visual + technical prototypes (HTML, screenshots, gallery indexes)
78
+ 🔵 visual-reviews/ # /visual-review output
79
+ 🔵 architecture/
80
+ 🔵 decisions/ # ADRs
81
+ 🔵 c4/ # C4 diagrams
82
+ 🔵 erd/ # entity-relationship diagrams
83
+ 🔵 reviews/ # /architect-review output
84
+
85
+ 🔵 # iteration + roadmap
86
+ 🔵 roadmaps/ # multi-week strategic frames (compose N bets)
87
+ 🔵 iteration-bets/ # time budget + scope per iteration
88
+ 🔵 branch-stacks/ # stack manifests for multi-branch work
89
+
90
+ 🔵 # session lifecycle artifacts
91
+ 🔵 chronicle/ # session narratives (dated, append-only)
92
+ 🔵 sessions/ # session-board coordinator artifacts (multi-bet longruns)
93
+ 🔵 sdlc-traces/ # session hook logs
94
+ 🔵 deferred-actions/ # cross-session handoff entries
95
+ 🔵 audits/ # audit reports (adopter-readiness, directory drift, etc.)
96
+ 🔵 sibling-validations/ # validation reports from sibling-repo runs
97
+
98
+ 🔵 # comms + ops
99
+ 🔵 journals/ # journal-entry drafts (operator narrative voice; publishable to LinkedIn, Substack, etc.)
100
+ 🔵 journal-export/ # journal-entry corpus exports to brand-team Google Doc
101
+ 🔵 release-notes/ # per-release notes
102
+ 🔵 demos/ # demo runbooks
103
+ 🔵 runbooks/ # operational runbooks
104
+ 🔵 research/ # operator research notes
105
+ 🔵 learnings/ # captured learnings (sister to design/discoveries in bassclef)
106
+ 🔵 longrun-plans/ # /longrun pre-flight artifacts
107
+ 🔵 metrics/ # operator-facing metrics dashboards
108
+ ```
109
+
110
+ Stack-specific entries (database migrations, framework public folders, build tool config) live alongside `src/` per your stack's conventions — bassclef doesn't move your code. The 🔵 rows are what the substrate writes; the ⚪ rows are placeholders showing where your code lives relative to the substrate.
111
+
112
+ Optional `docs/strategy/` subdivision matches bassclef's `strategy/` root — same artifact types, different nesting.
113
+
114
+ ## Bassclef (methodology repo) layout
115
+
116
+ ```
117
+ .claude/ # bassclef's substrate (skills, rules, hooks, agents)
118
+ architecture/ # ADRs + C4 + ERD + reviews (hoisted from docs/architecture/)
119
+ decisions/
120
+ chronicle/ # session narratives (hoisted from docs/chronicle/)
121
+ design/ # design principles, object model, tokens (hoisted from docs/designs/)
122
+ discoveries/ # earned-wisdom principles (bassclef-only)
123
+ lib/ # state-spine accessor library (lib/state.sh)
124
+ patterns/ # pattern catalog (GoF / Fowler / Smarter Patterns / etc)
125
+ sdlc-portable/ # exportable SDLC bundles
126
+ standards/ # engineering standards (this file lives here)
127
+ state-spine/ # state-spine schemas
128
+ state/ # state-spine markers + projections (runtime)
129
+ scripts/ # bassclef-specific utility scripts
130
+ strategy/ # canvases + templates (hoisted from docs/strategy/)
131
+ canvases/
132
+ templates/
133
+ tests/ # bassclef hook tests
134
+ docs/ # everything else from the app-repo layout above
135
+ audits/
136
+ branch-stacks/
137
+ baselayer/ # baselayer-publish strategy + queue (bassclef-specific)
138
+ decompositions/
139
+ deferred-actions/
140
+ demos/
141
+ designs/
142
+ iteration-bets/
143
+ ia-models/
144
+ input-artifacts/ # rendered input artifacts from /interpret-input
145
+ interaction-design/
146
+ interviews/ # interview transcripts feeding canvases
147
+ learnings/
148
+ journals/
149
+ journal-export/
150
+ longrun-plans/
151
+ metrics/
152
+ release-notes/
153
+ research/
154
+ roadmaps/
155
+ runbooks/
156
+ sdlc-traces/
157
+ sessions/
158
+ sibling-validations/
159
+ specs/ # at bassclef root by exception (currently 1 file); migrate to docs/specs/
160
+ ```
161
+
162
+ ## One artifact, one location — the bassclef map
163
+
164
+ Reference for adopters: "I have artifact X — where does it go?"
165
+
166
+ | Artifact | App repo path | Bassclef path | Produced by |
167
+ |---|---|---|---|
168
+ | Canvas | `docs/strategy/canvases/` | `strategy/canvases/` | `/canvas` |
169
+ | Spec | `docs/specs/` | (use `docs/specs/`; legacy `specs/` slated for removal) | `/spec` |
170
+ | ADR | `docs/architecture/decisions/` | `architecture/decisions/` | `/architect-review`, manual |
171
+ | C4 diagram | `docs/architecture/c4/` | `architecture/c4/` | `/architect-review` |
172
+ | Decomposition | `docs/decompositions/` | `docs/decompositions/` | `/decompose` |
173
+ | Design tokens / mocks | `docs/designs/` | `design/` | `/frontend-design`, manual |
174
+ | IA model | `docs/ia-models/` | `docs/ia-models/` | `/ia-model` |
175
+ | Interaction design | `docs/interaction-design/` | `docs/interaction-design/` | `/interaction-design` |
176
+ | Prototypes | `docs/prototypes/` | `docs/prototypes/` | `/preview`, `/preview-build`, `/tech-prototype` (see "Skill family for prototypes") |
177
+ | Visual review | `docs/visual-reviews/` | `docs/visual-reviews/` | `/visual-review` |
178
+ | Chronicle | `docs/chronicle/` | `chronicle/` | `/chronicle`, `/session-end` |
179
+ | Journal entry | `docs/operator-private/journals/` | `docs/operator-private/journals/` | `/journal` |
180
+ | Release note | `docs/release-notes/` | `docs/release-notes/` | `/release-notes` |
181
+ | Iteration goal | `docs/iteration-bets/` | `docs/iteration-bets/` | manual / `/longrun prep` |
182
+ | Roadmap | `docs/roadmaps/` | `docs/roadmaps/` | manual |
183
+ | Stack manifest | `docs/branch-stacks/` (SENTINEL_bassclef_name) | `docs/branch-stacks/` | `/longrun prep` (see "Stack manifest path migration") |
184
+ | Session board | `docs/sessions/` | `docs/sessions/` | `/longrun prep` (multi-bet only) |
185
+ | SDLC trace | `docs/sdlc-traces/` | `docs/sdlc-traces/` | hooks |
186
+ | Deferred action | `docs/deferred-actions/` | `docs/deferred-actions/` | session-rescue, skills that defer |
187
+ | Audit report | `docs/audits/` | `docs/audits/` | manual / agent audit runs |
188
+ | Sibling validation | `docs/sibling-validations/` | `docs/sibling-validations/` | sibling-validation runs |
189
+ | Demo runbook | `docs/demos/` | `docs/demos/` | manual |
190
+ | Operational runbook | `docs/runbooks/` | `docs/runbooks/` | manual |
191
+ | Research note | `docs/research/` | `docs/research/` | `/agent-research-spawn`, manual |
192
+ | Learning | `docs/learnings/` | `docs/learnings/` | manual (bassclef: design/discoveries/ for earned wisdom) |
193
+ | Metrics dashboard | `docs/metrics/` | `docs/metrics/` | `/metrics` |
194
+ | Longrun plan | `docs/longrun-plans/` | `docs/longrun-plans/` | `/longrun prep` |
195
+ | Input artifact | `docs/input-artifacts/` | `docs/input-artifacts/` | `/interpret-input` |
196
+ | Interview transcript | `docs/interviews/` | `docs/interviews/` | manual / `/interview` (when shipped) |
197
+ | Journal-entry corpus | `docs/journal-corpus/` | `docs/journal-corpus/` | `/journal-export` |
198
+ | PR/FAQ | `docs/strategy/pr-faqs/` | `templates/pr-faq.md` (template only) | `/canvas` |
199
+
200
+ ## Skill family for prototypes — three bassclef surfaces (per ADR-020)
201
+
202
+ Three skills, two axes. Adopter decision tree:
203
+
204
+ | If you want | Use | Sizes |
205
+ |---|---|---|
206
+ | Visual mock variants only (clickable, on a subdomain) | `/preview` | quick (~30 min, 2 variants) / light (~2h, 3 variants + Anthropic baseline) |
207
+ | Visual mock variants + buildable plan (spec + decomposition + migration) | `/preview-build` | medium (~1 day) / full (audit-grade) |
208
+ | Pre-build risk gate (accuracy / integration / UX-visual / structural) | `/tech-prototype` | per shape |
209
+
210
+ Two skills are deprecated per ADR-020 (2026-05-12):
211
+
212
+ - `/prototype-variants` → use `/preview light` (light size already includes luminary champion-challenger)
213
+ - `/prototype-gallery` → use `/preview` (any size; `/preview` already produces a shareable gallery URL per ADR-016)
214
+
215
+ The deprecated skills remain invocable for ≥3 months while existing canvases / bets / chronicles that reference them get migrated. Full retirement schedule is in ADR-020 §"Migration plan."
216
+
217
+ ## Stack manifest path migration
218
+
219
+ The directory layout standard names `docs/branch-stacks/` as bassclef. Reality has stack manifests split between `docs/branch-stacks/` (13 files) and `docs/stacks/` (36 files). The 36:13 split tilts toward the alias.
220
+
221
+ **Decision (this version):** `docs/branch-stacks/` is the SENTINEL_bassclef_name; `docs/stacks/` is being migrated. New manifests land in `docs/branch-stacks/`. A follow-on migration relocates the 36 files in `docs/stacks/` and updates references.
222
+
223
+ **Migration ticket:** TBD (filed after this standard merges).
224
+
225
+ ## Rules
226
+
227
+ ### One location per artifact
228
+
229
+ Every artifact type has exactly one directory. No duplicates, no fallback chains. If you're unsure where something goes, check the bassclef map above.
230
+
231
+ ### Create on use, not upfront
232
+
233
+ Don't scaffold empty directories. Create a directory when the first file needs it. The standard defines WHERE things go, not that every directory must exist from day one.
234
+
235
+ ### Add a new directory? Update this standard
236
+
237
+ When a skill or workflow needs a new top-level directory under `docs/` (or bassclef's root), update the bassclef map in the same PR. Standard-vs-reality drift is the bug class this rewrite addresses; we don't want to grow another generation of it.
238
+
239
+ ### Naming conventions
240
+
241
+ - Chronicles: `YYYY-MM-DD-slug.md`
242
+ - Journal entries: `YYYY-MM-DD.md`
243
+ - Iteration goals: `YYYY-MM-DD-slug.md`
244
+ - Roadmaps: `YYYY-MM-DD-slug.md`
245
+ - Canvases: `canvas-{name}.md` or `product-canvas.md`
246
+ - ADRs: `ADR-NNN-short-description.md`
247
+ - Specs: `SPEC-NNN-short-description.md` or `{feature-name}.md`
248
+ - Session boards: `YYYY-MM-DD-slug.md`
249
+ - Stack manifests: `YYYY-MM-DD-slug.md`
250
+ - Audits: `YYYY-MM-DD-slug.md`
251
+ - Sibling validations: `YYYY-MM-DD-slug.md`
252
+ - Decompositions: `slug.md` (no date prefix; one per system/component)
253
+
254
+ ### Composition between artifacts
255
+
256
+ Roadmaps, iteration goals, and stack manifests compose into a work-decomposition tree. Cross-references are typed in frontmatter, not implicit-by-prose. See `standards/artifact-composition.md`.
257
+
258
+ ### Brownfield retrofit
259
+
260
+ When adopting bassclef in an existing repo:
261
+
262
+ 1. **Don't move existing application code.** Bassclef's substrate goes in `.claude/`; your app stays where it is.
263
+ 2. **Create `docs/` if it doesn't exist.** Bassclef wants its artifacts there.
264
+ 3. **Map existing methodology docs to the bassclef paths.** If you have `notes/` with iteration plans, move them to `docs/iteration-bets/`. If you have `architecture/` at root, move to `docs/architecture/` (app repo) or hoist to root (if bassclef-style methodology repo).
265
+ 4. **Add a one-time `docs/legacy/` subdirectory if needed.** Preserves pre-bassclef content with attribution; delete after migration completes.
266
+ 5. **Update your README.md** to point at `docs/` for the methodology layer.
267
+
268
+ ### What does NOT go in `docs/`
269
+
270
+ - Application code (`src/`)
271
+ - Database snapshots and data files (`data/`)
272
+ - Build artifacts (`.next/`, `dist/`, `build/`)
273
+ - Secrets and credentials (`.env` — never committed)
274
+ - Node modules (`node_modules/`)
275
+ - Playwright MCP artifacts (`.playwright-mcp/`, gitignored)
276
+ - Substrate scripts (`.claude/hooks/`, `.claude/skills/`, etc — that's bassclef)
@@ -0,0 +1,137 @@
1
+ ---
2
+ tier: lite
3
+ description: Every release of bassclef carries a semantic version tag.
4
+ ---
5
+
6
+ # Release tagging
7
+
8
+ Every release of bassclef carries a semantic version tag. The tag names what adopters can pin, roll back to, and read a changelog against. This standard names when tags cut, how versions bump, and what the release notes carry.
9
+
10
+ Bassclef ships to public bassclef via `/release` PRs (per ADR-029). Before this standard, the substrate carried no version tags — adopters could not name what version they ran. Wave 1 dispatch needs a version anchor for support requests, rollback, and changelog reads.
11
+
12
+ Per bassclef-upstream#614 (WU-1 of bet 2026-07-03b).
13
+
14
+ ## Scope
15
+
16
+ Applies to:
17
+
18
+ - `sunj-labs/bassclef-upstream` — the source-of-truth repo. Tags here name the cut point substrate work shipped from.
19
+ - `sunj-labs/bassclef` — the public downstream repo adopters pull from. Tags here name what adopters see.
20
+
21
+ Both repos carry the same tag name for each release. Adopters read the public tag; operators read the upstream tag when tracing "which cut point shipped this rule / hook / skill". Per ADR-039.
22
+
23
+ ## When tags cut
24
+
25
+ Tags cut in two moments:
26
+
27
+ 1. **Upstream tag** — after the operator merges the `/release` PR on public bassclef. The `scripts/release-to-bassclef.sh` script tags upstream at the source SHA (currently `release-YYYY-MM-DD-<sha>` marker); this standard adds the semver tag on top.
28
+ 2. **Public tag** — immediately after the upstream tag lands, on the merged commit of the `/release` PR in public bassclef.
29
+
30
+ Tags never cut mid-work. The `/release` dispatch is the single trigger.
31
+
32
+ ## Semver policy
33
+
34
+ Bassclef follows semver (major.minor.patch). Each level names a kind of change adopters see.
35
+
36
+ | Level | When it bumps | Examples |
37
+ |---|---|---|
38
+ | **major** | Adopter-observable breaking change | Repo rename, tier vocabulary change, an ADR-031-level break |
39
+ | **minor** | New substrate surface adopters can call on | New rule, hook, skill, standard, luminary, agent |
40
+ | **patch** | Cure or hardening; no new surface | Bug fix, wordlist amendment, refactor, doc rewrite |
41
+
42
+ When a release carries multiple change classes, the highest applies. Two new rules plus a bug fix cut a minor bump.
43
+
44
+ The first tag is `v0.1.0` — bassclef has shipped for 8 months plus 1500+ commits and holds ADR-035 substrate-as-system, which is stable enough to name.
45
+
46
+ ## Release notes
47
+
48
+ Every release page carries release notes grouped by the substrate surfaces the release touched. The `/release` SKILL drafts these from the PRs the release picked up.
49
+
50
+ Group order:
51
+
52
+ 1. **Rules** — new or amended
53
+ 2. **Hooks** — new or refactored
54
+ 3. **Skills** — new, amended, or retired
55
+ 4. **Standards** — new or amended
56
+ 5. **Luminaries** — new full or stub
57
+ 6. **Agents** — new or amended
58
+ 7. **ADRs** — new decisions
59
+ 8. **Cures** — bug fixes + hardening + wordlist amendments
60
+ 9. **Sync + release + install** — infrastructure changes that reach adopters at session-start
61
+
62
+ Each group carries one line per PR. Links to the PR + the source ticket.
63
+
64
+ Release notes render in three places:
65
+
66
+ - **GitHub Release page** — the primary surface adopters see
67
+ - **Public bassclef README banner** — a one-line "Latest: v0.1.0 shipped 2026-07-04" link at the top
68
+ - **Adopter changelog** — `docs/changelog.md` in public bassclef; append-only
69
+
70
+ ## Where tags live
71
+
72
+ - Bassclef-upstream: `v0.1.0`, `v0.1.1`, `v0.2.0`, ... cut on `main` at the release commit
73
+ - Public bassclef: same tag names cut on `main` at the merged release commit
74
+
75
+ Tags are signed only when the operator's GPG key is present. Unsigned tags still ship; signing is a follow-on when the release pipeline runs on the operator's own machine.
76
+
77
+ Prior release-marker tags (`release-YYYY-MM-DD-<sha>`) stay in place. They serve a different purpose — naming which SHA a release PR built from. Semver tags name what adopters get. Both patterns co-exist.
78
+
79
+ ## Rollback
80
+
81
+ When a release breaks adopters, the operator can:
82
+
83
+ 1. Roll adopter setups back — `bassclef-sync` in an adopter checkout can point at the prior tag via `.bassclef-source.json` `git_ref` field
84
+ 2. Issue a patch tag with the cure — `v0.1.1` fixes what `v0.1.0` broke
85
+ 3. Yank the tag only as a last resort — leaves a hole in the version sequence and confuses adopters running the yanked version
86
+
87
+ Prefer forward-fix (option 2) over rollback (option 1) over yank (option 3).
88
+
89
+ ## Anti-patterns
90
+
91
+ These shapes fail this standard.
92
+
93
+ **Cut a tag between releases.** Tags cut only on `/release` dispatch. Every tag names an adopter-observable release moment.
94
+
95
+ INSTEAD: hold cure work in `main` until the next release window. Batch multiple cures into one patch tag.
96
+
97
+ **Bump minor for a cure.** Cures without a new surface stay in patch. Minor bumps signal "new stuff adopters can call on".
98
+
99
+ INSTEAD: hold the standard bar. When in doubt, bump patch; adopters read patch bumps as "safe to pull".
100
+
101
+ **Ship a release with no release notes.** Every tag carries a release page with the group-shape breakdown.
102
+
103
+ INSTEAD: the `/release` SKILL drafts the notes from the PRs the release picked up. If drafting fails, the release blocks until the operator writes the notes by hand.
104
+
105
+ **Different tags on upstream vs public.** The two repos carry the same tag names. Adopters read public; operators trace back through matching upstream tags.
106
+
107
+ INSTEAD: `/release` cuts both tags in the same dispatch, with the same name.
108
+
109
+ ## Override
110
+
111
+ `SKIP_RELEASE_TAG=1 <command>` for `/release` dispatches that ship substrate without a version bump (rare — mainly for infrastructure fixes that ship before the next planned release window). Logged via trace-helper.
112
+
113
+ INSTEAD of overriding routine work: hold the change until the release window. The discipline compounds across every adopter version pin.
114
+
115
+ ## Composes with
116
+
117
+ - `.claude/skills/release/SKILL.md` — the operator surface that dispatches releases + cuts tags
118
+ - `scripts/release-to-bassclef.sh` — the release pipeline this standard adds tag cutting to
119
+ - ADR-029 — release pipeline (parent threadhitecture)
120
+ - ADR-039 — bassclef-upstream vs public bassclef tagging split (this standard's ADR)
121
+ - ADR-031 — we-don't-break-adopters (major bumps signal what would otherwise break adopters)
122
+ - `.claude/rules/we-dont-break-adopters.md` — sister discipline; ADR-031 methodology layer
123
+ - `@luminary linus-torvalds` — kernel version discipline (stable API contract per tag)
124
+ - `@luminary frederick-brooks` — conceptual integrity across versions
125
+ - `@luminary michael-nygard` — stability patterns (the release page IS the adopter-facing steady state)
126
+
127
+ ## Refs
128
+
129
+ - bassclef-upstream#614 — this standard's filing ticket
130
+ - Parent goal: `docs/iteration-bets/2026-07-03b-wave-1-launch-prep.md` WU-1
131
+ - Parent roadmap: `docs/roadmaps/2026-06-28-early-adopter-launch.md` Phase XI Batten Down
132
+ - ADR-029 release pipeline (Sanjay P. + Claude Opus, 2026-06)
133
+ - ADR-039 release tagging split (this bet WU-1)
134
+
135
+ ## Retirement condition
136
+
137
+ This standard retires only if bassclef stops shipping to adopters. Semver policy may evolve (e.g., stricter major-bump criteria); the discipline of tagging every release survives.