@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,268 +0,0 @@
1
- ---
2
- tier: lite
3
- description: Validation rules for user stories produced by /user-stories.
4
- ---
5
-
6
- # User Story INVEST Standard
7
-
8
- Validation rules for user stories produced by `/user-stories`. INVEST
9
- (Bill Wake, 2003) is the bassclef heuristic for backlog-ready story
10
- quality. This standard codifies the rules + pass/warn/fail semantics.
11
-
12
- Skill: `.claude/skills/user-stories/SKILL.md`.
13
- Template: `templates/user-story-template.md`.
14
-
15
- ## Why this standard exists
16
-
17
- User stories are conversation tokens, not specifications. Without
18
- quality gates, "story" devolves into "any sentence formatted with
19
- 'As a / I want / So that.'" The result: bloated stories that take
20
- weeks, vague stories that can't be estimated, dependent stories that
21
- block release planning, technical-debt stories disguised as user
22
- value.
23
-
24
- INVEST is six load-bearing tests every story passes before it enters
25
- the backlog. Stories that fail multiple letters require rewrite.
26
- Stories that fail one letter get WARN with a path to resolution.
27
-
28
- ## The six tests
29
-
30
- ### I — Independent
31
-
32
- **Test**: Can this story ship to production without any other story
33
- shipping first?
34
-
35
- **Why**: dependent stories couple release planning. If A depends on
36
- B which depends on C, you can't ship A early or skip C. Independent
37
- stories let the team reorder, kill, or ship in any sequence.
38
-
39
- **Acceptable dependencies**:
40
- - Infrastructure that's already in place (no story dependency, just
41
- platform reality)
42
- - Optional enhancement: "this story is BETTER if X is also shipped,
43
- but ships valuable on its own"
44
-
45
- **Not acceptable**:
46
- - "Need US-002 before US-001 makes sense" — merge or resequence
47
- - Implicit dependencies hidden in acceptance criteria — surface them
48
-
49
- **Resolution if fail**:
50
- - Merge dependent stories into one
51
- - Resequence so the prerequisite ships as its own story first
52
- - Re-scope so this story doesn't NEED the prerequisite (deliver lesser
53
- but standalone value)
54
-
55
- ### N — Negotiable
56
-
57
- **Test**: Is this story a starting-point for conversation, or a
58
- contract that mandates exact wording?
59
-
60
- **Why**: stories are tokens for conversation between PO + dev + UX,
61
- not specs. A story that locks in "must be a left-side panel" loses
62
- the design negotiation that should happen at sprint planning. Stories
63
- say WHAT outcome the persona gets; teams negotiate HOW during
64
- implementation.
65
-
66
- **Acceptable**:
67
- - Constraints when they're load-bearing: "must be accessible per WCAG
68
- AA" (this isn't negotiable for legal/ethical reasons, mark it
69
- explicit)
70
- - Acceptance criteria that pin down outcomes (those ARE the contract)
71
-
72
- **Not acceptable**:
73
- - Implementation prescription in the story body (move to acceptance
74
- criteria or out of story entirely)
75
- - "Must use [framework/library]" — that's an architecture decision,
76
- not a story
77
-
78
- **Resolution if fail**:
79
- - Move prescriptive content to acceptance criteria
80
- - Move architecture/library mandates to ADRs
81
- - Rewrite story body in user-outcome terms
82
-
83
- ### V — Valuable
84
-
85
- **Test**: Does the named persona get observable, demonstrable value
86
- when this story ships?
87
-
88
- **Why**: stories that exist for internal reasons (refactor, tech-debt,
89
- infrastructure) aren't user stories — they're technical tasks. They
90
- belong in a separate backlog or as enabler stories with explicit
91
- "this enables future user value" framing. Confusing tech-tasks with
92
- user-stories pollutes the backlog and obscures actual user work.
93
-
94
- **Acceptable**:
95
- - Direct value: persona uses the new behavior
96
- - Indirect value: persona experiences a quality improvement
97
- (faster, more reliable, more secure)
98
- - Enabler value: explicit framing — "enables US-NNN which delivers
99
- user value"
100
-
101
- **Not acceptable**:
102
- - "Refactor X" with no user-facing change
103
- - "Pay down tech debt in module Y" — this is a tech task
104
- - "Add observability" — unless persona is operator/SRE, this is
105
- internal
106
-
107
- **Resolution if fail**:
108
- - Reclassify as tech-debt task; move to engineering backlog
109
- - Reframe as enabler story tied to a user-facing story
110
- - If genuinely user-valuable but value is hard to articulate, the
111
- value isn't there — kill the story
112
-
113
- ### E — Estimable
114
-
115
- **Test**: Can the team estimate this story (in story points,
116
- t-shirt size, or hours) within ~30 minutes of refinement?
117
-
118
- **Why**: unestimable stories indicate hidden complexity, missing
119
- context, or unfamiliar territory. Either the story needs more
120
- discovery (research spike), or it needs to be split until the parts
121
- are estimable.
122
-
123
- **Common reasons stories aren't estimable**:
124
- - Unknown technical territory (need spike)
125
- - Unclear acceptance criteria (need refinement)
126
- - Unknown user behavior (need research)
127
- - Too big to fit estimation in one head (split)
128
-
129
- **Resolution if fail**:
130
- - Schedule a research spike for unknowns (timeboxed, separate story)
131
- - Refine acceptance criteria
132
- - Split the story until parts are estimable
133
-
134
- ### S — Small
135
-
136
- **Test**: Does this story fit in one iteration / sprint?
137
-
138
- **Why**: stories that span multiple sprints become epics. Epics are
139
- fine as containers but they're not stories. A story that takes 3
140
- weeks misses every benefit of incremental delivery — no early
141
- feedback, no early value, no early risk discovery.
142
-
143
- **Heuristic**: a story should be doable in 1-5 days by one or two
144
- developers with normal context. If 6+ days, split it.
145
-
146
- **Splitting strategies** (Patton, Cohn):
147
- - By workflow step (extract a single step into its own story)
148
- - By data type (one story per data variant)
149
- - By acceptance criterion (one criterion per story)
150
- - By user role (different personas as different stories)
151
- - By happy path vs. edge cases (ship happy path first, edges later)
152
- - By UI vs. backend (when independently shippable; risky if not)
153
-
154
- **Resolution if fail**: split. The most common letter to fail.
155
-
156
- ### T — Testable
157
-
158
- **Test**: Are the acceptance criteria concrete enough to write
159
- automated tests against?
160
-
161
- **Why**: untestable stories ship as "looks done" — and "looks done"
162
- ships bugs. Acceptance criteria that read "works well" or "is
163
- intuitive" aren't testable. Criteria that read "loads in <2s on 4G"
164
- or "all form fields validate before submit" are.
165
-
166
- **Testable criteria**:
167
- - Pin specific observable behaviors
168
- - Include thresholds for non-functional concerns (performance, a11y)
169
- - Cover happy path + at least one edge case
170
- - Map to test types (unit / integration / e2e)
171
-
172
- **Not testable**:
173
- - "Looks good" / "feels fast" / "is intuitive"
174
- - "Standard behavior" without defining what standard means
175
- - Implementation assertions ("uses Redis cache") rather than behavior
176
-
177
- **Resolution if fail**: rewrite criteria. Each criterion = one test
178
- assertion. If you can't write the test, the criterion isn't done.
179
-
180
- ## Pass / Warn / Fail semantics
181
-
182
- Per-story status is computed from the six tests:
183
-
184
- | INVEST score | Status | Meaning |
185
- |--------------|--------|---------|
186
- | 6 PASS | **PASS** | Backlog-ready |
187
- | 5 PASS / 1 WARN | **PASS-WARN** | Backlog-ready; resolve warning at refinement |
188
- | 4 PASS / 2 WARN | **WARN** | Refine before sprint planning |
189
- | ≤3 PASS or any FAIL | **FAIL** | Rewrite required |
190
-
191
- Aggregate iteration health:
192
-
193
- ```markdown
194
- **INVEST aggregate**: N PASS / M PASS-WARN / K WARN / J FAIL
195
- **Backlog-ready ratio**: (PASS + PASS-WARN) / total
196
- ```
197
-
198
- Target ratio: ≥85%. Below 70% = backlog-quality systemic issue
199
- (refinement discipline missing, scope confusion, persona inflation).
200
-
201
- ## Validation procedure (`/user-stories validate`)
202
-
203
- `/user-stories validate` walks every story under `docs/user-stories/`
204
- (or `docs/user-stories/[iteration]/`) and reports per-story status.
205
-
206
- ```markdown
207
- ## Story validation — [iteration]
208
-
209
- | Story | I | N | V | E | S | T | Status | Notes |
210
- |-------|---|---|---|---|---|---|--------|-------|
211
- | US-001 | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ | PASS-WARN | S: 5-day estimate at upper bound; consider split |
212
- | US-002 | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | FAIL | I: depends on US-005 not yet in backlog |
213
- | ... | ... | ... | ... | ... | ... | ... | ... | ... |
214
-
215
- **Aggregate**: 8 PASS / 3 PASS-WARN / 2 WARN / 1 FAIL
216
- **Backlog-ready ratio**: 11/14 = 79% (below 85% target — refine)
217
- ```
218
-
219
- ## Traceability rules
220
-
221
- Every story carries a traceability block linking to upstream artifacts:
222
-
223
- | Field | Required? | When absent |
224
- |-------|-----------|-------------|
225
- | Persona | MUST | FAIL — every story names a persona slug |
226
- | JTBD | MUST | FAIL — story without JTBD is solution-looking-for-problem |
227
- | VPC entry | SHOULD | WARN — benefit clause is weaker without VPC grounding |
228
- | Use-case line | SHOULD when /use-case exists | WARN — coverage gap on use-case |
229
-
230
- A story with no JTBD trace is a **red flag**: it's likely a feature
231
- request from operator intuition rather than user need. Either find
232
- the JTBD (which means /jtbd-tasks needs another pass) or kill the
233
- story.
234
-
235
- ## What this standard does NOT cover
236
-
237
- - **Story estimation methodology** (story points vs. t-shirt vs. hours)
238
- — team choice, not standard concern
239
- - **Sprint composition rules** — separate concern (`/sprint` skill)
240
- - **Acceptance test format** — Given/When/Then BDD or assertion-style
241
- both fine; team picks
242
- - **Task breakdown within a story** — implementation detail, not
243
- story-level
244
-
245
- ## Relationship to other standards + rules
246
-
247
- | Related | Connection |
248
- |---------|-----------|
249
- | `standards/persona-schema.md` | Personas referenced in `<As a>` clause must validate against schema |
250
- | `.claude/rules/artifact-ingestion.md` | Stories trace to upstream artifacts; same "cite before claim" discipline |
251
- | `standards/vpc-fit-validation.md` | VPC Pain-Relievers + Gain-Creators ground story `<benefit>` clause |
252
- | `.claude/skills/user-stories/SKILL.md` | The skill that produces stories validated by this standard |
253
- | `.claude/skills/spec/SKILL.md` | Downstream — spec consumes stories as input scope |
254
-
255
- ## When to revisit
256
-
257
- - Backlog-ready ratio drops below 70% repeatedly (refinement issue OR
258
- the standard is too strict)
259
- - A team consistently fails one letter (might indicate a process gap
260
- worth surfacing, e.g., "always failing E means we don't have
261
- estimation rigor")
262
- - New bassclef artifact upstream of stories (e.g., when /use-case
263
- lands, traceability rule adds use-case-line as MUST when present)
264
-
265
- ## Closes
266
-
267
- - bassclef #208 (paired with skill)
268
- - Part of follow-up to iteration `2026-04-19e-persona-vpc-promotions`
@@ -1,229 +0,0 @@
1
- ---
2
- tier: lite
3
- description: How work is estimated, measured, and calibrated in agent-driven SDLC.
4
- ---
5
-
6
- # Velocity and Time Budget Standard
7
-
8
- How work is estimated, measured, and calibrated in agent-driven SDLC.
9
-
10
- (Formerly `Velocity and Appetite` per ADR-040 D1 rename 2026-07-17.
11
- The filename stays `velocity-and-appetite.md` for backward compat via
12
- `standards/vocabulary-migration.json`. Shape Up's original term is
13
- `appetite`; bassclef calls it "time budget" in operator-facing prose.)
14
-
15
- Based on Ryan Singer's Shape Up (Basecamp). Core insight: don't estimate
16
- how long things will take — set how much time you're willing to spend,
17
- then scope to fit. Fixed budget, variable scope.
18
-
19
- This matters more for agents than for humans. A human developer gets
20
- tired, checks the clock, pushes back on scope. An agent will happily
21
- expand forever. The time budget is the constraint that prevents infinite work.
22
-
23
- ---
24
-
25
- ## Feynman Explanation
26
-
27
- Imagine you're renovating a bathroom. The traditional approach: get an
28
- estimate ("it'll take 3 weeks"), then discover it takes 6. The Shape Up
29
- approach: "I'm willing to spend 2 weeks on this bathroom. What can I get
30
- done in 2 weeks?" Maybe you skip the heated floors. Maybe you use
31
- off-the-shelf tile instead of custom. The *scope flexes to fit the budget.*
32
-
33
- Now imagine the contractor is a robot that never gets tired and thinks
34
- every detail is equally important. Without a ceiling, it'll spend 3 weeks
35
- on grout patterns. That's an agent without a time budget. The time budget says: "you
36
- have 40 turns. Ship something real. Cut what doesn't fit."
37
-
38
- The magic is in the closeout. After the work, you write down: "I budgeted
39
- 40 turns, it took 15." Next time something similar comes up, you budget 20.
40
- The system learns. After a few iterations, your estimates converge on
41
- reality — not because you got better at estimating, but because you have
42
- data.
43
-
44
- ---
45
-
46
- ## Key Terms
47
-
48
- ### Round-trip (aka "turn")
49
-
50
- One round-trip: you send a message, the agent responds. That's one.
51
- This is the atomic unit of work in agent-driven development.
52
-
53
- A round-trip can be trivial ("read this file") or substantial ("implement
54
- the entire scoring module"). Not all round-trips are equal, but over
55
- enough iterations, round-trips-per-issue averages out into a useful signal.
56
-
57
- **Why round-trips, not hours?** Hours measure clock time, which is
58
- meaningless for agents. An agent that takes 3 minutes of wall time but
59
- 50 round-trips of back-and-forth consumed more resources than one that
60
- took 10 minutes but 8 round-trips. Round-trips are the actual unit of
61
- consumption.
62
-
63
- **Notation**: The frontmatter field is `turns:` (Claude Code's internal
64
- term). Exact when known (`turns: 15`), approximate with tilde when
65
- estimated (`turns: ~40`). In prose and metrics output, use "round-trips"
66
- for clarity.
67
-
68
- ### Time Budget
69
-
70
- (Bassclef's name for Shape Up's `appetite` concept per Ryan Singer + Basecamp.
71
- Renamed per ADR-040 D1 2026-07-17.)
72
-
73
- How many turns you're willing to spend on an iteration. The budget
74
- ceiling. Set *before* work begins in the iteration goal.
75
-
76
- The time budget is **not an estimate**. An estimate says "I think this will
77
- take 40 turns." The time budget says "I'm willing to spend 40 turns on this.
78
- If it can't fit in 40, descope or split."
79
-
80
- **How the time budget is set:**
81
-
82
- 1. **By phase** — different phases consume turns at different rates:
83
-
84
- | Phase | Typical time budget | Why |
85
- |-------|-----------------|-----|
86
- | Inception | 30–50 turns | Thinking artifacts (canvas, shaping) — more back-and-forth |
87
- | Elaboration | 30–40 turns | Design + architecture — moderate depth |
88
- | Construction | 20–30 turns per branch | Code + tests — focused, less ambiguity |
89
- | Transition | 15–20 turns | Deploy + verify — mechanical |
90
-
91
- 2. **By calibration** — closeout data from previous iterations:
92
- - First iteration: use the phase defaults above. You're guessing.
93
- - Second iteration: adjust based on the first closeout's delta.
94
- - Third+ iteration: your estimates converge. Trust the data.
95
-
96
- 3. **By scope complexity** — more files touched, more integration points,
97
- more unknowns = higher time budget. But prefer splitting into multiple
98
- smaller iterations over inflating a single time budget.
99
-
100
- 4. **By confidence** — "I've done this exact thing before" = lower time budget.
101
- "This is novel and uncertain" = higher time budget or spike first.
102
-
103
- **The rule**: when the time budget is exhausted, descope. Don't extend. If the
104
- work can't fit, the scope was wrong — split it, defer the tail, ship what
105
- fits. This is how fixed budget / variable scope works.
106
-
107
- ### Actuals
108
-
109
- How many turns the work actually consumed. Measured at closeout from
110
- chronicle timing data (`turns` field in frontmatter).
111
-
112
- Actuals are always approximate — counting exact conversation turns is
113
- fragile. The value is in the *trend*, not the precision. A closeout
114
- that says "time budget 40, actual ~15" tells you the time budget was 2.5x
115
- too generous. That's useful even if the actual was really 18.
116
-
117
- ### Delta
118
-
119
- The difference between the time budget and actuals, expressed as a percentage.
120
-
121
- ```
122
- Delta = (Actuals - Time Budget) / Time Budget × 100
123
- ```
124
-
125
- - **Negative delta** (e.g., -62%): under budget. Time budget was generous.
126
- Next similar iteration: lower the time budget.
127
- - **Zero delta**: perfect calibration. Unlikely but ideal.
128
- - **Positive delta** (e.g., +30%): over budget. Scope was underestimated
129
- or complexity was higher than expected. Check: was the scope too big,
130
- or was there unexpected rework?
131
-
132
- ### Iteration Goal
133
-
134
- (Bassclef's name for Shape Up's `iteration bet` per ADR-040 D1 rename 2026-07-17.
135
- The goal doc filename stays under `docs/iteration-bets/` for backward compat.)
136
-
137
- A scoped piece of work with a thesis, acceptance criteria, and time budget.
138
- The unit of planning. Lives at `docs/iteration-bets/YYYY-MM-DD-slug.md`.
139
-
140
- An iteration goal declares:
141
- - **What** we're building (scope)
142
- - **Why** it matters (risk retired, value proved)
143
- - **How much** we're willing to spend (time budget in turns + cost ceiling)
144
- - **How we'll know** it worked (acceptance criteria, lovability/viability signals)
145
-
146
- The goal metaphor comes from Shape Up's `bet` framing (Ryan Singer, Basecamp):
147
- you're wagering that this scope, at this time budget, will produce value.
148
- Sometimes you lose — the scope was wrong, the approach was wrong, or the
149
- time budget was too tight. That's information, not failure.
150
-
151
- ### Closeout
152
-
153
- The section appended to an iteration goal when the work completes (or is
154
- explicitly abandoned). Records what actually happened vs what was planned.
155
-
156
- A closeout contains:
157
- - **Actuals vs time budget table**: turns, duration, issues closed — with deltas
158
- - **Gate compliance summary**: which gates fired, which were skipped, why
159
- - **Calibration notes**: what was over/underscoped, guidance for next time
160
-
161
- The closeout is the feedback loop. Without it, the time budget is just a guess
162
- that never improves. With it, each iteration makes the next estimate
163
- better.
164
-
165
- **When to write**: when all acceptance criteria are met (or explicitly
166
- deferred). Before the final chronicle. See `standards/sdlc-compliance.md`
167
- for the closeout format.
168
-
169
- ### Velocity
170
-
171
- Issues closed per turns consumed, measured across iterations. Not a target
172
- to maximize — a diagnostic to understand.
173
-
174
- High velocity + low quality (many fix: branches after feat: branches) =
175
- shipping too fast, cutting corners. Low velocity + high quality (no
176
- rework) = possibly over-engineering, or just hard problems. The metrics
177
- script shows both together so you can read the signal.
178
-
179
- ### Calibration
180
-
181
- The process of using closeout data to improve future time budget estimates.
182
- Not a manual exercise — it happens naturally when you read previous
183
- closeouts before setting the next time budget.
184
-
185
- **Calibration pattern**:
186
- 1. First iteration: time budget 40 (guess from phase defaults)
187
- 2. Closeout: actual 15, delta -62%. Note: "spec already existed"
188
- 3. Second iteration (similar scope): time budget 20
189
- 4. Closeout: actual 18, delta -10%. Converging.
190
- 5. Third iteration: time budget 20 is now a validated default for this type
191
-
192
- The calibration notes in the closeout capture *why* the delta happened,
193
- not just the number. "Spec already existed" vs "unexpected schema migration"
194
- are both -62% but mean completely different things for future estimates.
195
-
196
- ---
197
-
198
- ## Relationship to Metrics
199
-
200
- The `scripts/metrics.sh --iteration` view aggregates closeout data across
201
- all iteration goals. The `--overall` view rolls up velocity, throughput,
202
- quality, and DORA into a single dashboard. Both read from artifacts that
203
- already exist — no separate tracking system.
204
-
205
- | Term | Where it lives | Who writes it |
206
- |------|---------------|---------------|
207
- | Time budget | Iteration goal (set at start) | Operator + agent during `/autonomous start` |
208
- | Turns | Chronicle frontmatter (`turns:` field) | Agent at session-end (Must tier) |
209
- | Actuals | Iteration goal closeout | Agent when iteration completes |
210
- | Delta | Iteration goal closeout (computed) | Agent when writing closeout |
211
- | Velocity | `scripts/metrics.sh --iteration` (computed) | Script, on demand |
212
- | Calibration | Closeout "calibration notes" section | Agent, informed by previous closeouts |
213
-
214
- ---
215
-
216
- ## What This Is Not
217
-
218
- - **Not story points.** Story points estimate relative complexity. The time budget
219
- sets absolute budget. Points ask "how hard is this?" The time budget asks "how
220
- much am I willing to spend?" Different question, different answer.
221
-
222
- - **Not time tracking.** Duration (minutes) is captured in chronicles for
223
- context, but turns are the primary unit. An agent that finishes in 5
224
- minutes but takes 50 turns consumed more than one that takes 30 minutes
225
- but 10 turns.
226
-
227
- - **Not a productivity target.** "Increase velocity" is not a goal. The
228
- goal is calibration — estimates that match reality. If velocity drops
229
- because the work got harder, that's information, not a problem.
@@ -1,119 +0,0 @@
1
- ---
2
- tier: lite
3
- description: How bassclef handles voice as input to skill dispatches.
4
- ---
5
-
6
- # Voice Input Pattern
7
-
8
- How bassclef handles voice as input to skill dispatches. Phase V Hey-Alexa MVD uses macOS native dictation (Fn-Fn keyboard shortcut) into a Claude Code prompt. Hands-free voice listener is V2 (deferred).
9
-
10
- ## When this fires
11
-
12
- Operator dictates intent into a Claude Code session instead of typing it. Skills downstream (especially `/preview-build`) treat the resulting text as voice-originated + apply tolerant intent extraction.
13
-
14
- ## The pattern (V1 — MVD)
15
-
16
- ### 1. Operator-side: macOS dictation
17
-
18
- Operator presses **Fn-Fn** on a Mac with dictation enabled (System Settings → Keyboard → Dictation → On). macOS captures audio + transcribes to the active text field.
19
-
20
- Operator speaks the intent. Operator releases Fn-Fn (dictation stops). Transcribed text appears in the Claude Code prompt input.
21
-
22
- Operator submits the prompt. The transcribed text flows to bassclef's skills like any text input.
23
-
24
- ### 2. bassclef-side: voice-input mode
25
-
26
- `/launch` (and chained skills) accept the input. The transcribed text is treated as the operator's intent paragraph — conversational shape (fragments, restarts, filler) is preserved verbatim and flows through `/interpret-input` like any keyboard-typed text.
27
-
28
- The mode is signaled via:
29
- - Explicit flag: `/launch --voice-input` (operator dispatch convenience)
30
- - Auto-detection heuristics (optional V2): text shape suggests spoken vs typed origin
31
-
32
- V1 ships explicit flag only. Auto-detection is a polish-shelf concern.
33
-
34
- ### 3. Downstream chain
35
-
36
- After the text lands, the rest of the pipeline is unchanged:
37
-
38
- ```
39
- voice → text (macOS dictation)
40
-
41
- text → InputArtifact (/interpret-input — text mode)
42
-
43
- InputArtifact → variants (existing /launch Phase 4 — deterministic luminary round-robin)
44
-
45
- variant → repo (existing /build)
46
-
47
- repo → live URL (existing /launch-preview + Amplify)
48
- ```
49
-
50
- The chain composes existing bassclef skills. Voice is a thin front-end on top.
51
-
52
- ## The pattern (V2 — hands-free, future)
53
-
54
- Phase V's roadmap entry says "voice → Bandleader → polished output → live URL." V2 adds:
55
-
56
- - **Standalone voice listener** — daemon captures audio without Claude Code prompt step
57
- - **Whisper API or similar** — offline + accuracy beyond macOS dictation
58
- - **Bandleader orchestration** — voice → intent → multi-agent dispatch (Phase IV)
59
- - **Hands-free flow** — operator never touches keyboard during demo
60
-
61
- V1 (this standard) ships the MVD. V2 unblocks the full Phase V vision when Phase IV Bandleader lands.
62
-
63
- ## Why macOS dictation for V1
64
-
65
- - **Already on operator's machine** — no new substrate primitive needed
66
- - **Works offline** (macOS local processing) — no API dependency
67
- - **Latency low** — real-time transcription
68
- - **Cross-app** — works in any text field including Claude Code's
69
- - **Operator already knows it** — Fn-Fn muscle memory
70
-
71
- The tradeoff: requires operator to press Fn-Fn (not hands-free). MVD accepts this trade.
72
-
73
- ## Operator setup checklist (V1)
74
-
75
- Before the demo:
76
-
77
- - [ ] System Settings → Keyboard → Dictation → ON
78
- - [ ] Dictation language matches operator's spoken English
79
- - [ ] Test: press Fn-Fn in any text field; speak a short phrase; verify transcription
80
- - [ ] Claude Code session active in target directory
81
- - [ ] bassclef-sync has run (bassclef's substrate up-to-date in target repo)
82
-
83
- ## Why bassclef core preserves the text as-is
84
-
85
- Bassclef core does not run intent extraction against an embedding model + LLM judge. The voice-transcribed text is treated as the operator's intent paragraph and passed through `/interpret-input` unchanged. Downstream phases use it the same way they use keyboard-typed text.
86
-
87
- Bassclef-private adopters who want intent-grounded matching can layer their own `/extract-intent` skill via `additionalDirectories` injection. That skill consumes the voice-originated text the same way it consumes typed text; tolerance for conversational shape (fragments, restarts) is the adapter's concern, not bassclef's.
88
-
89
- ## What this does NOT cover
90
-
91
- - Voice in audio-only contexts (telephony, smart speakers) — V3+ scope
92
- - Multi-speaker scenarios (transcription disambiguation) — V3+
93
- - Languages other than operator's spoken language — V2+
94
- - Real-time streaming intent extraction — V2+ (today's pattern is batch: speak → submit → process)
95
-
96
- ## Distinct from
97
-
98
- - `standards/bassclef-test-repos.md` — test ground for substrate validation; foobar exists for bassclef's tests, NOT as the demo target
99
- - `.claude/skills/launch/SKILL.md` — composes the input → variants chain; voice-input mode is an addition to existing surface
100
-
101
- ## When this retires
102
-
103
- This standard retires if:
104
- - Hands-free voice listener (V2) replaces the Fn-Fn pattern as the primary mode
105
- - Phase IV Bandleader supersedes the operator-driven dispatch model
106
- - Bassclef evolves to a different voice-input convention
107
-
108
- Until V2 ships, this is SENTINEL_the_bassclef_V1_pattern for "speak out loud → app lands in cloud."
109
-
110
- ## Sources read
111
-
112
- - `docs/iteration-bets/2026-05-12-phase-v-hey-alexa-mvd.md` — parent bet
113
- - `docs/roadmaps/2026-05-07-7-phase-staircase.md` Phase V entry (voice → app on live URL)
114
- - `.claude/skills/launch/SKILL.md` — downstream consumer of voice-originated text
115
- - bassclef#944 — Voyage matcher excision from bassclef core
116
-
117
- ## Closes
118
-
119
- WU-1 of Phase V Hey-Alexa MVD bet. bassclef#944 cleared the embed+LLM coupling so voice-input mode now flows through bassclef core's deterministic luminary path.