@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,244 +0,0 @@
1
- ---
2
- tier: lite
3
- description: This is the one list of bassclef-internal jargon terms with plain-English alternatives.
4
- ---
5
-
6
- # Bassclef-internal jargon — single source of truth
7
-
8
- This is the one list of bassclef-internal jargon terms with plain-English alternatives. The `/kiss` skill reads from it. The PR-body-scrub hook reads from it. The pre-push `/kiss` hook reads from it. Drift between surfaces becomes structurally impossible.
9
-
10
- ## Why this exists
11
-
12
- Before this list, two surfaces stripped bassclef-internal jargon with different lists:
13
-
14
- - `/kiss` substitution table at `.claude/skills/kiss/SKILL.md` — 47 entries; mostly advisory substitution
15
- - PR-body-scrub hook `JARGON_TERMS` at `.claude/hooks/pr-body-scrub-check.sh` — 8 entries; mechanical block at CI
16
-
17
- The lists did not match. PR #903 leaked "load-bearing" through `/kiss --grade11` (which does not substitute it) and got caught at CI (which does block it).
18
-
19
- Single source of truth closes the gap.
20
-
21
- ## The list
22
-
23
- Each term has a plain-English alternative + a tier:
24
-
25
- - **BLOCK** — adopter-facing surfaces; hook BLOCKs at pre-push and CI on all surfaces
26
- - **BLOCK-title** — title + commit-message surfaces only; hook BLOCKs when `SCRUB_SURFACE=title` or `SCRUB_SURFACE=commit`. Body-surface scrub passes through. Use when a term is wrong at the title surface but acceptable in body prose (e.g., `substrate-defect:` as title prefix vs `substrate-defect` mentioned in body discussion)
27
- - **ADVISE** — adopter-facing surfaces; `/kiss` substitutes; hook does not block
28
- - **ALLOW** — bassclef-internal allowlist per bassclef#763; both surfaces preserve
29
-
30
- | Term | Plain English | Tier |
31
- |---|---|---|
32
- | composer | runs / chains / combines | BLOCK |
33
- | primitive | building block | BLOCK |
34
- | tier-preset | preset / size | BLOCK |
35
- | load-bearing | actually used / counted on | BLOCK |
36
- | blast radius | how much breaks if this goes wrong | BLOCK |
37
- | compose-with | uses / builds on | BLOCK |
38
- | scope-bounded | bounded by what we said we'd ship | BLOCK |
39
- | operationalize | do / ship | BLOCK |
40
- | wirings | hooks that fire / connections | BLOCK |
41
- | operator-eyes | needs your review / review by you | BLOCK |
42
- | seed (verb) | fill in / populate / set up | BLOCK |
43
- | seed (noun, defaults) | starter defaults / default config | BLOCK |
44
- | seed catalog | defaults catalog / stack defaults | BLOCK |
45
- | Greek letters as option labels (α, β, γ, δ in "Shape α", "Option β", "pick γ", "tier δ" patterns — per bassclef#1286) | a, b, c, d or 1, 2, 3, 4 — keyboard-typeable; never escalate to Greek to "differentiate" labels | BLOCK |
46
- | shape (as label for operator choices — "shape a", "shape b", "pick shape") | option (as label — "option a", "option b", "pick option"). Rename applies ONLY to option-label context; generic uses ("the shape of the problem", "wrong shape") stay as-is. Per ADR-040 D1 amendment 2026-07-18 | ADVISE |
47
- | discipline-debt | unfinished discipline work / what we still owe | BLOCK |
48
- | carved out | took out / removed / set aside | BLOCK |
49
- | discipline-shipping rhythm | how often we ship discipline / shipping cadence | BLOCK |
50
- | meta-pattern | the bigger pattern / the pattern across patterns | BLOCK |
51
- | meta-loop | the loop happening to the loop / the recursive case | BLOCK |
52
- | complete mediation triangle | three-layer coverage / three-layer defence | BLOCK |
53
- | 12-pattern matcher | the path list / the substrate-affecting path check | BLOCK |
54
- | compounding axis | compounding sequence (per bet 2026-07-03b WU-2 rename #611) | BLOCK |
55
- | OR hand-roll (soft-INSTEAD escape per bassclef-upstream#375) | dispatch the skill; no fallback | BLOCK |
56
- | OR write inline (soft-INSTEAD escape) | dispatch the skill; no fallback | BLOCK |
57
- | OR compose by hand (soft-INSTEAD escape) | dispatch the skill; no fallback | BLOCK |
58
- | if available (in MUST-tier procedure) | name the prereq; BLOCK with INSTEAD when missing | BLOCK |
59
- | if at hand (in MUST-tier procedure) | name the prereq; BLOCK with INSTEAD when missing | BLOCK |
60
- | when at hand (in MUST-tier procedure) | name the prereq; BLOCK with INSTEAD when missing | BLOCK |
61
- | when available (in MUST-tier procedure) | name the prereq; BLOCK with INSTEAD when missing | BLOCK |
62
- | if the skill is not (soft-INSTEAD escape) | dispatch the skill; no fallback | BLOCK |
63
- | when the skill is not (soft-INSTEAD escape) | dispatch the skill; no fallback | BLOCK |
64
- | leverage (as verb — Ogilvy §Rule 3) | use / take advantage of / build on | BLOCK |
65
- | synergies (Ogilvy §Rule 3) | what they do well together / how the teams help each other | BLOCK |
66
- | verticals (Ogilvy §Rule 3) | product lines / markets / categories | BLOCK |
67
- | circle back (Ogilvy §Rule 3) | follow up / come back to this | BLOCK |
68
- | deep dive (Ogilvy §Rule 3) | look closely / study | BLOCK |
69
- | low-hanging fruit (Ogilvy §Rule 3) | the easy wins / what we can ship first | BLOCK |
70
- | ideate (Ogilvy §Rule 3) | come up with ideas / brainstorm | BLOCK |
71
- | value-add (Ogilvy §Rule 3) | what makes it worth it / the benefit | BLOCK |
72
- | move the needle (Ogilvy §Rule 3) | make a real difference / change the outcome | BLOCK |
73
- | boil the ocean (Ogilvy §Rule 3) | try to do everything / scope too broadly | BLOCK |
74
- | holistic (Ogilvy §Rule 3 — outside biology) | complete / covers everything / end-to-end | BLOCK |
75
- | robust (Ogilvy §Rule 3 — vague usage) | reliable / handles the edge cases | BLOCK |
76
- | scalable (Ogilvy §Rule 3 — vague usage) | works when volume grows / handles more load | BLOCK |
77
- | ecosystem (Ogilvy §Rule 3 — outside biology) | the set of related tools / the community | BLOCK |
78
- | stakeholder (Ogilvy §Rule 3 — no referent) | the specific person or team; name them | BLOCK |
79
- | incentivize (Ogilvy §Rule 3) | give a reason / reward | BLOCK |
80
- | strategize (Ogilvy §Rule 3) | plan / decide the approach | BLOCK |
81
- | socialize (Ogilvy §Rule 3 — metaphorical) | share with the team / discuss | BLOCK |
82
- | pursuant to (Ogilvy §Rule 1) | following / as we discussed | BLOCK |
83
- | please be advised (Ogilvy §Rule 1) | drop entirely — just state the point | BLOCK |
84
- | it has come to my attention (Ogilvy §Rule 1) | I noticed / I saw | BLOCK |
85
- | right-sizing (Ogilvy §Rule 9 — euphemism for layoffs) | layoffs / we're cutting jobs | BLOCK |
86
- | reached out (Ogilvy §Rule 9 — vague euphemism) | called / emailed / messaged (pick one) | BLOCK |
87
- | going in a different direction (Ogilvy §Rule 9 — euphemism for rejection) | we're rejecting / we're not doing this | BLOCK |
88
- | opportunity for improvement (Ogilvy §Rule 9 — euphemism for problem) | problem / what's wrong | BLOCK |
89
- | challenging (Ogilvy §Rule 9 — euphemism for bad/failing) | bad / failing / broken (be specific) | BLOCK |
90
- | atomic | all-or-nothing | ADVISE |
91
- | determinism | same answer every time | ADVISE |
92
- | replay-deterministic | gives the same answer when re-run | ADVISE |
93
- | machine-readable | the system can read it directly | ADVISE |
94
- | compose / composes | combine / works with | ADVISE |
95
- | ingest / ingestion | read in / reading | ADVISE |
96
- | enforcement | the rule that catches it | ADVISE |
97
- | enforce | catch it / make it stick | ADVISE |
98
- | instrumentation | what we measure | ADVISE |
99
- | idempotent | safe to run twice | ADVISE |
100
- | canonical (as adjective; legacy reference to prior brand pre-2026-06-20 rename) | bassclef (as brand) / shared / official (as English) | ADVISE |
101
- | orthogonal | unrelated / separate concern | ADVISE |
102
- | obviate | make unnecessary | ADVISE |
103
- | supersede / supersedes | replaces | ADVISE |
104
- | coherent | consistent / it fits together | ADVISE |
105
- | heterogeneous | mixed / not the same kind | ADVISE |
106
- | homogeneous | same kind / consistent | ADVISE |
107
- | nominal | the expected case | ADVISE |
108
- | pathological | the bad case | ADVISE |
109
- | degenerate | broken / not the normal shape | ADVISE |
110
- | MECE | clean buckets, nothing overlaps, nothing missed | ADVISE |
111
- | appetite | time budget (per ADR-040 D1 rename 2026-07-17). First-mention gloss: '(steps you'll spend at your current pace before cutting scope)' | BLOCK |
112
- | iteration / iteration bet | goal (per ADR-040 D1 rename 2026-07-17) — a chunk of work we commit to | BLOCK |
113
- | stack / stacked | a chain of small PRs | ADVISE |
114
- | retro | look-back / what we learned | ADVISE |
115
- | stopping criteria | when we know we're done | ADVISE |
116
- | surface | the thing the user sees | ADVISE |
117
- | projection | computed view | ADVISE |
118
- | invariant | thing that's always true | ADVISE |
119
- | anti-pattern | the wrong way that looks right | ADVISE |
120
- | harness | the system Claude Code runs in | ADVISE |
121
- | hook | code that fires automatically | ADVISE |
122
- | cardinality | how many of them | ADVISE |
123
- | latency | wait time | ADVISE |
124
- | throughput | how many per second | ADVISE |
125
- | backpressure | when to slow down | ADVISE |
126
- | stuck-signal | repeated warning | ADVISE |
127
- | substrate-defect | bug in the rules / rule bug | ADVISE |
128
- | substrate-defect: | fix: (per commit-conventions.md — use the 8 standard types) | BLOCK-title |
129
- | INSTEAD-block discipline | the pairing rule | ADVISE |
130
- | arc (as multi-goal continuation — 'arc walk', 'arc-level', 'the arc', 'arc-orientation') | thread (as in 'thread walk', 'thread-level'). Per ADR-040 D1 rename 2026-07-17. Prose only; not filenames or historical git | BLOCK |
131
- | workunit | step. Per ADR-040 D1 rename 2026-07-17. Prose only; commit tags stay | BLOCK |
132
- | WU (short form of workunit) | step. Same rename as workunit per ADR-040 D1. Commit tags stay | BLOCK |
133
- | parent bet | parent goal. Per ADR-040 D1 rename 2026-07-17 | BLOCK |
134
- | circuit breaker (Shape Up term) | hard stop and re-decide. Per ADR-040 D1 rename 2026-07-17 | ADVISE |
135
- | substrate | shared toolkit | ALLOW |
136
- | bassclef | bassclef | ALLOW |
137
- | cameo | cameo | ALLOW |
138
- | Studio | Studio | ALLOW |
139
- | Band | Band | ALLOW |
140
- | bandleader | bandleader | ALLOW |
141
- | chronicle | chronicle | ALLOW (added 2026-08-16 per goal 2026-08-16a Louis-lens consult; retracts ADR-040 D1 chronicle → session log word rename; directory `chronicle/` stays; `/chronicle` and `/session-log` SKILL names both work) |
142
-
143
- ## Phrase compounds (ADVISE-PHRASE tier — V1 advisory)
144
-
145
- Per bassclef#915. The word-shaped table above catches individual words. Substrate-internal compounds use plain individual words combined into substrate-internal phrases that pass every gate. Adopters reading post-launch encounter dense phrasing even when no single word violates Rule 1.
146
-
147
- Format: `Phrase | Plain alternative | Tier`. Tier ADVISE-PHRASE fires the PR-body-scrub hook Rule 5 (advisory) — emits a CI comment, does not block.
148
-
149
- | Phrase | Plain alternative | Tier |
150
- |---|---|---|
151
- | pipeline altitude | pipeline | ADVISE-PHRASE |
152
- | atomic discipline | one-PR-per-concern (or one concern per PR) | ADVISE-PHRASE |
153
- | operator-attention | operator review | ADVISE-PHRASE |
154
- | operator-attended | operator-reviewed | ADVISE-PHRASE |
155
- | honest case | valid case (or omit) | ADVISE-PHRASE |
156
- | forcing function | what forces the answer | ADVISE-PHRASE |
157
- | surface scrub | surface cleanup | ADVISE-PHRASE |
158
- | serial work | sequenced work (or in series) | ADVISE-PHRASE |
159
- | pipeline shape | pipeline (when used as noun in prose) | ADVISE-PHRASE |
160
- | hook wirings | hooks that fire / hook connections | ADVISE-PHRASE |
161
- | discipline propagation | rolling the rule out / making the rule stick | ADVISE-PHRASE |
162
- | phase N vocabulary | the word-list piece of phase N | ADVISE-PHRASE |
163
- | next pickup | what to do next | ADVISE-PHRASE |
164
- | promotable patterns | patterns worth promoting | ADVISE-PHRASE |
165
- | discoveries extraction | things worth keeping | ADVISE-PHRASE |
166
- | sister shape | same shape | ADVISE-PHRASE |
167
- | ungated | the gate cleared / no longer blocked | ADVISE-PHRASE |
168
- | atomic PR | one issue per PR | ADVISE-PHRASE |
169
- | forward-compat | safe for later versions | ADVISE-PHRASE |
170
- | discovery surface | discovery / where you find it | ADVISE-PHRASE |
171
- | compounding axis | compounding sequence (per bet 2026-07-03b WU-2 rename #611) | ADVISE-PHRASE |
172
- | luminary design ceremony | proper design with a named author / design review with named perspectives | ADVISE-PHRASE |
173
- | validator-registry | the list of checks / set of validators | ADVISE-PHRASE |
174
- | per-substrate-evolution-shipping-window | each time we ship a new rule / each substrate shipping window | ADVISE-PHRASE |
175
- | compounds tightly | each builds on the prior / one supports the next | ADVISE-PHRASE |
176
-
177
- Additions to this section follow the same lifecycle as the word-shaped table: file an issue → propose addition → both surfaces (/kiss + PR-body-scrub Rule 5) pick up at next session-start sync.
178
-
179
- ## How surfaces read the list
180
-
181
- ### `/kiss` skill
182
-
183
- `/kiss --grade10` substitutes BLOCK + ADVISE terms; preserves ALLOW.
184
- `/kiss --grade11` substitutes BLOCK terms; preserves ADVISE + ALLOW.
185
- `/kiss --grade8` substitutes BLOCK + ADVISE + a stricter prose pass; preserves ALLOW.
186
-
187
- ### PR-body-scrub hook
188
-
189
- The CI hook reads BLOCK terms only and fires on match. ADVISE and ALLOW terms pass through.
190
-
191
- ### Pre-push `/kiss` hook (bassclef#907 Part 4)
192
-
193
- Reads BLOCK terms; fires at `gh pr create` and `gh issue create` time. ADVISE and ALLOW terms pass through.
194
-
195
- ## Term lifecycle
196
-
197
- Three states for a term:
198
-
199
- 1. **New jargon caught at /diagnose or operator review** → file an issue, propose adding to the table at a tier
200
- 2. **Added to the table at a tier** → both surfaces pick it up at next session-start sync
201
- 3. **Promoted from ADVISE to BLOCK** → when a term shows up in 3+ leaked PR bodies despite advisory pass
202
-
203
- ALLOW promotions require a separate bassclef-evolution issue per bassclef#763 reserved-name discipline.
204
-
205
- ## Standard technical vocabulary — preserved across all tiers
206
-
207
- These terms stay as-is at every tier. They are not jargon; they are standard tech vocabulary every digital team understands:
208
-
209
- ```
210
- API, SDK, CLI, GUI, HTTP, REST, JSON, YAML, schema, regex, hook,
211
- repo, branch, commit, PR, MR, CI, CD, workflow, action, artifact,
212
- function, class, method, property, field, constant, variable, enum,
213
- database, query, index, migration, transaction, cache, queue, lock,
214
- container, image, pod, cluster, node, runner, build, deploy, rollback,
215
- test, assert, mock, stub, fixture, snapshot, regression,
216
- auth, token, secret, credential, scope, permission, role,
217
- file, directory, path, glob, pattern, prefix, suffix
218
- ```
219
-
220
- Do not substitute these. Do not expand them into multi-sentence explanations.
221
-
222
- ## Operator opt-out
223
-
224
- Two paths to skip substitution for operator-internal work (canvases, audits, internal strategy docs):
225
-
226
- - PR label `bassclef-internal-prose-ok` — downgrades hook firings to advisory at both pre-push and CI
227
- - Environment variable `SKIP_KISS=1` — bypasses the pre-push `/kiss` hook for one invocation; logged via trace-helper
228
-
229
- Operator-private files under `docs/operator-private/*` are out of scope for this list — they are private substrate; the discipline applies to adopter-facing output.
230
-
231
- ## Composes with
232
-
233
- - `.claude/skills/kiss/SKILL.md` — reads BLOCK + ADVISE from this list per mode
234
- - `.claude/hooks/pr-body-scrub-check.sh` — reads BLOCK from this list
235
- - `.claude/hooks/kiss-default-check.sh` — reads BLOCK from this list (bassclef#907 Part 4)
236
- - `.claude/rules/plain-english-discipline.md` — methodology layer; references this list as authoritative
237
- - bassclef#763 — `/kiss` reserved-name allowlist (the ALLOW tier traces to this discipline)
238
- - bassclef#906 — PR-body shape contract (sister discipline; shape + vocabulary together close the drift)
239
-
240
- ## Refs
241
-
242
- - bassclef#907 — `/kiss` overhaul (this standard's parent ticket)
243
- - bassclef#908 — asymmetric-gate pattern (this standard is one positive fix)
244
- - PR #903 — surfaced the drift (leaked "load-bearing")
@@ -1,96 +0,0 @@
1
- ---
2
- tier: lite
3
- title: bassclef-managed sentinel — file semantic
4
- status: adopted
5
- date: 2026-08-30
6
- introduced_by: PR #1428 (Option F cp swap)
7
- frozen_by: RFC-0001 H2
8
- description: The .bassclef-managed sentinel marks a directory as bassclef-managed content.
9
- ---
10
-
11
- # Standard — `.bassclef-managed` sentinel
12
-
13
- ## Purpose
14
-
15
- The `.bassclef-managed` sentinel marks a directory as bassclef-managed content. Adopter tooling reads it to distinguish bassclef-shipped skill directories from adopter-authored skill directories that happen to share a name.
16
-
17
- Introduced in PR #1428 for `.claude/skills/*/` (both project-level and user-level). Extends to `.claude/luminaries/`, `.claude/agents/`, and `lib/` when #1429 ships.
18
-
19
- ## Sources read
20
-
21
- - PR #1428 body — first introduction of the sentinel at `presence/install/bassclef-sync.template.sh` Sections 2 and 3b-skills
22
- - `docs/rfcs/RFC-0001-option-f-cp-swap-review.md` H2 finding — Hyrum lens flagged the sentinel as an observable contract
23
- - `.claude/rules/we-dont-break-adopters.md` — ADR-031 discipline that governs any change to this semantic
24
-
25
- ## Sentinel semantic — frozen
26
-
27
- The sentinel is an **empty file** at the root of a bassclef-managed directory. Nothing more. Adopters MAY bind to its presence or absence. Adopters MUST NOT bind to its content, its size, or its modification time.
28
-
29
- ```
30
- .claude/skills/longrun/
31
- ├── SKILL.md
32
- ├── scripts/
33
- └── .bassclef-managed ← empty file; adopter reads presence only
34
- ```
35
-
36
- **What the sentinel means:**
37
-
38
- - **Present** — directory is managed by bassclef sync. Contents get refreshed on next sync. Adopter edits inside the directory get overwritten. Adopter override should live in a differently-named directory OR (for future migration) a `.bassclef-override` flag.
39
- - **Absent** — directory is adopter-authored. Sync leaves it alone even if a bassclef skill of the same name exists upstream.
40
-
41
- **What the sentinel does NOT mean:**
42
-
43
- - The sentinel does NOT carry a version, checksum, or bassclef commit reference.
44
- - The sentinel does NOT change size across bassclef versions.
45
- - The sentinel does NOT get mtime-refreshed on every sync (empty file writes are idempotent).
46
-
47
- ## Why the semantic is frozen
48
-
49
- Hyrum's law — with enough adopters, every observable becomes a load-bearing contract. First release binds the sentinel semantic forever. Adding a field, changing size, or renaming the file breaks adopter tools that already bind to the shape.
50
-
51
- Freezing early prevents the drift class. Any future extension owes a new sentinel filename (e.g., `.bassclef-metadata-v2`) plus a compat shim per ADR-031.
52
-
53
- ## Adopter usage patterns
54
-
55
- **Check whether a skill directory is bassclef-managed:**
56
-
57
- ```bash
58
- if [ -f "$CWD/.claude/skills/$SKILL_NAME/.bassclef-managed" ]; then
59
- echo "bassclef manages $SKILL_NAME"
60
- else
61
- echo "adopter authors $SKILL_NAME"
62
- fi
63
- ```
64
-
65
- **Skip bassclef-managed directories in adopter scripts:**
66
-
67
- ```bash
68
- find "$CWD/.claude/skills" -mindepth 1 -maxdepth 1 -type d ! -exec test -f {}/.bassclef-managed \; -print
69
- ```
70
-
71
- ## Migration path from prior symlink shape
72
-
73
- Before PR #1428, `.claude/skills/*/` were symlinks to the bassclef sibling. Adopter tools that used `test -L` or `readlink` to detect bassclef-shipped skills need to switch to the sentinel check.
74
-
75
- See `docs/adopters/option-f-migration-note.md` for the full migration guide.
76
-
77
- ## Change control
78
-
79
- Amendments to this semantic require:
80
-
81
- 1. An ADR proposing the change (references ADR-031 grace window discipline)
82
- 2. A `/rfc` outside-lens council review (per `.claude/skills/rfc/SKILL.md`)
83
- 3. A compat shim keeping the prior semantic working for one release cycle
84
- 4. A migration manifest in `docs/operator-private/forward-port-registry/migrations/`
85
- 5. An adopter changelog entry at `/release` time
86
-
87
- ## Refs
88
-
89
- - PR #1428 (introduced sentinel)
90
- - Ticket #1429 (extends sentinel to remaining 4 sections)
91
- - RFC-0001 H2 (freeze motivated by Hyrum lens finding)
92
- - ADR-031 (we-dont-break-adopters)
93
- - `docs/adopters/option-f-migration-note.md` (adopter-facing migration guide)
94
- - `presence/install/bassclef-sync.template.sh` (writes the sentinel at cp time)
95
- - `@luminary hyrum-wright` (H2 finding source)
96
- - `@luminary linus-torvalds` (adopter-compat anchor for the freeze)
@@ -1,228 +0,0 @@
1
- ---
2
- tier: lite
3
- description: "The thin-pointer bassclef-sync hook (presence/install/bassclef-sync.template.sh and consumer-vendored bassclef-sync.sh) has two paths to load bassclef's substrate:"
4
- ---
5
-
6
- # `.bassclef-source.json` — schema for thin-pointer curl-fallback
7
-
8
- The thin-pointer bassclef-sync hook (`presence/install/bassclef-sync.template.sh`
9
- and consumer-vendored `bassclef-sync.sh`) has two paths to load
10
- bassclef's substrate:
11
-
12
- 1. **Sibling fast-path**: if `$CWD/../bassclef/` exists on the local
13
- filesystem, the hook execs the bassclef-sync template directly.
14
- 2. **Curl fallback**: if no sibling, the hook reads
15
- `.bassclef-source.json` from the consumer repo root, fetches the
16
- tarball at `source_url`, extracts it, and execs the bassclef-sync
17
- template from the extracted tree.
18
-
19
- This standard defines the schema of `.bassclef-source.json` so all
20
- five provider patterns (GitHub public, GitHub private repo, GitHub
21
- private release, Azure DevOps Repos, GitLab) can be authored against
22
- a single contract. Onboarding tooling (`/onboard-repo`), validation
23
- hooks, and consumer adapters compose against this contract.
24
-
25
- Closes bassclef#419.
26
-
27
- ## Sources read
28
-
29
- - bassclef#419 — schema + provider examples specification
30
- - TwoDo PR #258 — thin-pointer hook implementation that defines the contract
31
- - TwoDo `.bassclef-source.json` (live config that proved the schema in PR #268)
32
- - `presence/install/bassclef-sync.template.sh` — sibling fast-path target
33
- - `architecture/decisions/ADR-015-state-schema-format.md` — JSON Schema draft-2020-12 standard
34
- - `standards/state-spine/schemas/*.schema.json` — schema-format precedent
35
-
36
- ## Why this schema is small (and stays small)
37
-
38
- Five fields, three required, one optional. The thin-pointer hook is
39
- the only consumer; provider differences resolve at the URL level
40
- (provider-specific tarball endpoints) and at the auth-header level
41
- (Bearer vs Basic vs none). Adding fields would couple the schema to
42
- provider-specific concerns the hook doesn't need.
43
-
44
- If a provider requires a header the schema doesn't model (e.g., an
45
- extra X-API-Version), wrap it in the URL or add a pre-fetch shim in
46
- the hook — don't grow the schema.
47
-
48
- ## Schema
49
-
50
- ```json
51
- {
52
- "$schema": "https://json-schema.org/draft/2020-12/schema",
53
- "type": "object",
54
- "required": ["source_url", "auth_method", "token_env"],
55
- "additionalProperties": false,
56
- "properties": {
57
- "source_url": { "type": "string", "format": "uri" },
58
- "auth_method": { "type": "string", "enum": ["Bearer", "Basic", "none"] },
59
- "token_env": { "type": "string", "pattern": "^[A-Z_][A-Z0-9_]*$" },
60
- "comment": { "type": "string" },
61
- "auto_sync": { "type": "boolean" }
62
- }
63
- }
64
- ```
65
-
66
- Authoritative copy lives at `standards/bassclef-source/schemas/bassclef-source.schema.json`
67
- and is enforced by the validation hook (see § Validation below).
68
-
69
- ### Field reference
70
-
71
- | Field | Type | Required | Description |
72
- |-------|------|----------|-------------|
73
- | `source_url` | string (URI) | yes | Tarball-download URL on the upstream provider. The hook curls this and pipes through `tar -xzf -`. Must return a gzipped tarball when fetched with the appropriate auth header. |
74
- | `auth_method` | enum | yes | `"Bearer"` (Authorization: Bearer `$TOKEN`), `"Basic"` (Authorization: Basic `$TOKEN`), or `"none"` (no auth header — public URL). |
75
- | `token_env` | string | yes | Name of the environment variable holding the auth token. Must be a valid env-var identifier (uppercase letters, digits, underscores; cannot start with a digit). For `auth_method: none`, set to empty string `""` (the field is required but unused). |
76
- | `comment` | string | no | Human-readable description. Recommended: name the provider, name the token, link to the bassclef issue or bet that motivated the config. |
77
- | `auto_sync` | boolean | no | When `true`, the bassclef-sync dispatcher fetches bassclef's latest substrate at every SessionStart. When `false` or absent, the dispatcher short-circuits with a one-line note + opt-in path. **Default behavior on absence is `false`** — a cold-adopter safe default per bassclef#939. Existing bassclef operator-side consumers (poa / twodo / quorum / ops / pruneguice) set this to `true` explicitly to preserve auto-sync behavior. |
78
-
79
- ### Why all three are required
80
-
81
- The hook reads all three fields at fire-time. Making `token_env`
82
- optional with a default would hide the no-auth case behind a default
83
- and produce silent failure modes when an operator forgets to set the
84
- env var. Explicit-or-empty is clearer than implicit-default.
85
-
86
- ## Provider examples
87
-
88
- ### Public GitHub release (no auth)
89
-
90
- ```json
91
- {
92
- "source_url": "https://github.com/sunj-labs/bassclef/releases/latest/download/substrate.tar.gz",
93
- "auth_method": "none",
94
- "token_env": "",
95
- "comment": "Public bassclef substrate release; no auth needed. Suitable for public consumer repos and demos."
96
- }
97
- ```
98
-
99
- ### Private GitHub repo (via fine-grained PAT)
100
-
101
- ```json
102
- {
103
- "source_url": "https://api.github.com/repos/sunj-labs/bassclef/tarball/main",
104
- "auth_method": "Bearer",
105
- "token_env": "BASSCLEF_TOKEN",
106
- "comment": "GitHub repo tarball API. Auth: fine-grained PAT 'bassclef-substrate-read' (Contents:read on sunj-labs/bassclef), stored as BASSCLEF_TOKEN in the consumer's Cloud Code environment."
107
- }
108
- ```
109
-
110
- This is the pattern used by all five sunj-labs consumer repos
111
- (TwoDo, POA, quorum, ops, pruneguice) when running against
112
- bassclef's private repo from Cloud Code.
113
-
114
- ### Private GitHub release (via fine-grained PAT)
115
-
116
- ```json
117
- {
118
- "source_url": "https://api.github.com/repos/sunj-labs/bassclef/releases/latest",
119
- "auth_method": "Bearer",
120
- "token_env": "BASSCLEF_GH_TOKEN",
121
- "comment": "GitHub release API. Returns release JSON; the hook follows assets[].browser_download_url for the tarball asset. Auth: fine-grained PAT with Contents:read."
122
- }
123
- ```
124
-
125
- Use for environments where releases are gated more strictly than the
126
- repo (e.g., preview vs. stable channels).
127
-
128
- ### Azure DevOps Repos (via ADO PAT)
129
-
130
- ```json
131
- {
132
- "source_url": "https://dev.azure.com/<ORG>/<PROJECT>/_apis/git/repositories/bassclef/items?path=/&versionDescriptor.version=main&$format=zip&download=true&api-version=7.0",
133
- "auth_method": "Basic",
134
- "token_env": "BASSCLEF_ADO_PAT",
135
- "comment": "Azure DevOps Repos zip-archive API. Auth: ADO PAT base64-encoded as ':<PAT>' (empty username + colon + PAT) when set in BASSCLEF_ADO_PAT — the hook sends it as Authorization: Basic <env>."
136
- }
137
- ```
138
-
139
- ADO returns a zip, not a tarball. The hook handles the conversion
140
- (unzip → tar) when the URL ends in `.zip` or contains `$format=zip`.
141
-
142
- ### GitLab (via GitLab PAT)
143
-
144
- ```json
145
- {
146
- "source_url": "https://gitlab.com/api/v4/projects/<PROJECT_ID>/repository/archive.tar.gz?sha=main",
147
- "auth_method": "Bearer",
148
- "token_env": "BASSCLEF_GITLAB_TOKEN",
149
- "comment": "GitLab repo archive API. Auth: GitLab PAT with read_repository scope. PROJECT_ID is the numeric project ID from GitLab settings."
150
- }
151
- ```
152
-
153
- ## Validation
154
-
155
- ### At write time (hook-enforced)
156
-
157
- `.claude/hooks/bassclef-source-config-validate.sh` (PreToolUse on
158
- Edit/Write to `.bassclef-source.json`) validates the file against
159
- the schema using `ajv-cli` draft-2020-12. Same pattern as
160
- `state-validate.sh` per `.claude/rules/state-schema-validation.md`.
161
-
162
- On validation failure, the hook BLOCKs the write with structured
163
- stderr message naming the field + ajv error.
164
-
165
- ### At hook fire time (runtime)
166
-
167
- The thin-pointer hook itself reads `source_url` / `auth_method` /
168
- `token_env` and surfaces a clear error if any are missing or malformed
169
- when the curl-fallback path fires. Schema validation at write time
170
- catches most issues before runtime.
171
-
172
- ### At session start (drift check)
173
-
174
- Future hardening: `bassclef-sync.sh` could validate
175
- `.bassclef-source.json` exists + parses cleanly at session start,
176
- emitting a BLOCKED if the file is corrupt. Deferred — write-time
177
- validation covers the common case.
178
-
179
- ## Test fixtures
180
-
181
- Five fixtures, one per provider pattern:
182
-
183
- - `scripts/tests/fixtures/bassclef-source/github-public-release.json`
184
- - `scripts/tests/fixtures/bassclef-source/github-private-repo.json`
185
- - `scripts/tests/fixtures/bassclef-source/github-private-release.json`
186
- - `scripts/tests/fixtures/bassclef-source/azure-devops-repos.json`
187
- - `scripts/tests/fixtures/bassclef-source/gitlab.json`
188
-
189
- Test runner: `scripts/tests/bassclef-source.test.sh` validates every
190
- fixture against the schema; CI fails if any fixture diverges.
191
-
192
- Plus negative-case fixtures (each in its own file under
193
- `scripts/tests/fixtures/bassclef-source/invalid/`) to verify the
194
- schema rejects malformed configs.
195
-
196
- ## Operator workflow per consumer repo
197
-
198
- 1. Operator creates fine-grained PAT for bassclef (read-only,
199
- 90-day expiry). Track in `substrate.secrets.md` per
200
- `standards/secrets-lifecycle.md`.
201
- 2. Operator pastes PAT into consumer's Cloud Code environment as
202
- `BASSCLEF_TOKEN` (or per-consumer name if scoped tokens are used).
203
- 3. `/onboard-repo` writes `.bassclef-source.json` to consumer repo
204
- root using the GitHub-private-repo template.
205
- 4. Operator commits + pushes; next session-start fires the
206
- thin-pointer hook → curl fallback → bassclef substrate loaded.
207
-
208
- ## Relationship to other standards + rules
209
-
210
- - `standards/secrets-lifecycle.md` — `token_env` references a secret
211
- whose lifecycle is governed by this standard
212
- - `.claude/rules/state-schema-validation.md` — write-time validation
213
- pattern this standard composes
214
- - `architecture/decisions/ADR-015-state-schema-format.md` — JSON
215
- Schema draft-2020-12 with format support; this schema follows
216
- - `.claude/skills/onboard-repo/SKILL.md` — installer that creates
217
- `.bassclef-source.json` per the schema
218
- - bassclef#418 — drift-check thin-pointer-aware (related; ships
219
- alongside)
220
- - bassclef#420 — secrets-primitive gap on Cloud Env (related; the
221
- PAT lifecycle question this schema reveals)
222
-
223
- ## Retirement condition
224
-
225
- This standard retires only if the thin-pointer hook architecture
226
- retires. Provider examples may grow (BitBucket, codecommit, etc.) as
227
- new providers are exercised; the schema itself is intentionally
228
- minimal and should resist field additions.