@thebassclef/lite 0.1.3 → 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 +216 -137
  2. package/dist/cli.js +218 -139
  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,202 +0,0 @@
1
- ---
2
- tier: lite
3
- description: docs/whereami.md is the authoritative project-state snapshot in every bassclef-substrate repo.
4
- ---
5
-
6
- # Whereami Load-Bearing
7
-
8
- `docs/whereami.md` is the authoritative project-state snapshot in
9
- every bassclef-substrate repo. This rule establishes its load-bearing
10
- obligations: session-start read, session-end write, and protocol when
11
- the artifact is missing or stale.
12
-
13
- ## Why this rule exists
14
-
15
- Whereami existed as an optional artifact and rotted because nothing
16
- demanded its maintenance. Evidence observed 2026-04-16:
17
-
18
- - Bassclef's own whereami dated same day but field said "Active
19
- agents: None" during active mid-session work — stale by default
20
- - POA (first app consumer) has no whereami at all — `/sprint` has
21
- to reconstruct state from iteration-bets + chronicles + git log
22
- - `/sprint` skill's own procedure (step 4) phrased whereami as
23
- conditional ("if docs/whereami.md exists") — treating it as a
24
- nice-to-have reinforced its rot
25
-
26
- Load-bearing means: the artifact is required input for at least one
27
- skill, required output for at least one other, hook-enforced fresh,
28
- and operator-visible when it goes stale. This rule establishes all
29
- four.
30
-
31
- ## Protocol
32
-
33
- ### Session-start read (MUST)
34
-
35
- Every session's orientation pass reads `docs/whereami.md` BEFORE
36
- consulting iteration-bets or chronicles for project-state questions.
37
- Downstream skills (`/sprint`, `/substrate-check`) use whereami as
38
- primary source, not fallback.
39
-
40
- If the artifact is missing or stale (per freshness rules below), the
41
- `bassclef-sync.sh` session-start hook fires BLOCKED (per
42
- `blocked-items.md`). The session does not proceed with substantive
43
- work until resolved or explicitly deferred.
44
-
45
- ### Session-end write (MUST)
46
-
47
- Every `/session-end` execution updates `docs/whereami.md`:
48
-
49
- - Bump `last_updated` to current UTC timestamp
50
- - Set `session:` field to the chronicle filename just written
51
- - Update any field that materially changed during the session:
52
- - `phase:` if project phase transitioned
53
- - `iteration_bet:` if bet opened or closed
54
- - `iteration_phase:` if WS advanced
55
- - Subsystem row if subsystem moved
56
- - Gate progress checkboxes if any toggled
57
-
58
- Same tier as chronicle — non-negotiable session artifact.
59
-
60
- ### Freshness rules
61
-
62
- Hook checks two signals: `last_updated` field age **AND** commits-since-
63
- last-whereami-update (computed via `git log -1 --format=%H -- docs/whereami.md`
64
- + `git rev-list --count <commit>..HEAD`). Both signals together close the
65
- "idle consumer" false-positive loop where calendar age alone fired BLOCKED
66
- on repos that hadn't done any work since the last update (bassclef#514).
67
-
68
- | Age | Commits since whereami | Signal | Session behavior |
69
- |-----|------------------------|--------|-----------------|
70
- | <3 days | any | Green | Proceed normally |
71
- | 3–7 days | any | Warning | Warning surfaced; session proceeds |
72
- | ≥7 days | 0 (idle) | **INFO** | Friendly note that repo's idle; session proceeds |
73
- | ≥7 days | >0 (work happened) | BLOCKED | Session halts on substantive work until refreshed |
74
- | Missing file | n/a | BLOCKED | Session halts; create from template |
75
-
76
- The idle-as-INFO downgrade matters because bassclef-substrate consumers
77
- get session-start hook output even when they're not actively iterating.
78
- A consumer paused for two weeks should get a "you're idle" note, not a
79
- gate that interrupts the next time someone opens the repo.
80
-
81
- Operator may override with explicit "skip whereami this session" per
82
- `blocked-items.md` deferral rules. Silence is not deferral. INFO does
83
- not require deferral (it's not a gate).
84
-
85
- ### On session-start BLOCKED
86
-
87
- When the hook surfaces a whereami-stale BLOCKED block, the agent:
88
-
89
- 1. Echo the BLOCKED block verbatim to the operator (same pattern as
90
- `bassclef-hook-drift-blocker.md`)
91
- 2. Offer two paths:
92
- - **Refresh now**: run `/session-end`-style whereami update step
93
- at session-start as the first action
94
- - **Defer**: operator explicitly says "skip whereami"
95
- 3. Do NOT start other substantive work until one of the paths is
96
- taken
97
-
98
- ### On missing file
99
-
100
- Fresh consumer repo scenario. `bassclef-sync.sh` surfaces BLOCKED:
101
- "docs/whereami.md missing; create from templates/whereami-template.md"
102
-
103
- Agent proposes to copy the template and fill minimal fields
104
- (phase, iteration — or "none — new repo"). Operator approves or
105
- overrides.
106
-
107
- ## What counts as a material change (session-end trigger)
108
-
109
- Anything that changed the answer to "where are we?":
110
-
111
- - Phase transition (Inception → Elaboration, etc.)
112
- - Iteration opened, closed, or re-shaped
113
- - WS within active goal advanced (WS-1 → WS-2)
114
- - Subsystem row's phase or "last iteration" date changed
115
- - Gate progress checkbox toggled
116
- - Active agents changed (sequential→multi-agent or vice versa)
117
-
118
- What does NOT trigger: just timestamp refresh without any field change
119
- is still a valid update (keeps freshness meter green). The obligation
120
- is to bump `last_updated` every session; field changes are additive.
121
-
122
- ## Who reads whereami (and relies on it being fresh)
123
-
124
- - `/sprint` — primary source for orientation (step 1, not step 4
125
- fallback)
126
- - `bassclef-sync.sh` — freshness check only
127
- - `/substrate-check` — presence + schema validation
128
- - Operator — ad-hoc project-state eyeballing
129
- - Chronicle writer — phase context for retrospective
130
-
131
- ## Live vs archive split (per bassclef-upstream#1080)
132
-
133
- `docs/whereami.md` is the LIVE file — carries frontmatter + recap blocks from the last 7 days. Older recap blocks move to `docs/whereami-archive/YYYY-MM.md` — one file per calendar month, appended chronologically.
134
-
135
- The split exists because `docs/whereami.md` grew past the `Read` tool's 256KB ceiling on 2026-08-04. Session-start Step 0.4 mandatory read broke. Rotation restores the Read path; archive preserves history.
136
-
137
- **Contract:**
138
-
139
- - Live keeps the last 7 days of `operator_recap_*` blocks (default; override via `scripts/rotate-whereami.py --days N`)
140
- - Archive holds older blocks grouped by month
141
- - Live carries an `archive_dir:` field in frontmatter naming the archive location
142
- - Session-start freshness signal reads live only — archive is read-only historical
143
- - Rotation runs on SessionStart when live file exceeds 250KB via `.claude/hooks/session-reflection.d/36-whereami-size-check.sh`. Fires with `--days 3` (tighter than the 7-day default) because dense session weeks fill 7 days past the Read tool 256KB ceiling per bassclef-upstream#1284. Operator can run manually anytime with `--days N`; the script is idempotent (re-runs do not duplicate).
144
-
145
- **What reads from archive:**
146
-
147
- - Operator when they need >7 day historical context
148
- - `/journal` when writing session narratives that span the rotation boundary
149
- - Explicit follow-up queries (e.g., "what happened in 2026-07?")
150
-
151
- **What reads from live only:**
152
-
153
- - Session-start freshness signals (per this rule)
154
- - `/sprint` orientation (primary source)
155
- - `/substrate-check` (presence + schema validation)
156
- - Chronicle writer at session-end (updates live only)
157
-
158
- ## What whereami is NOT
159
-
160
- Artifacts adjacent to whereami have distinct roles. Don't conflate:
161
-
162
- - **Iteration bet** (scope contract) — whereami references it by path
163
- - **Chronicle** (retrospective narrative) — whereami is current-state
164
- snapshot
165
- - **substrate.config.md** (external resources) — different concern
166
- (where is X vs. where are we)
167
- - **Risk register** — separate artifact; whereami points to it
168
-
169
- ## Override paths
170
-
171
- - `SKIP_WHEREAMI=1 <command>` — per-command override (logged to trace)
172
- - Operator statement: "skip whereami this session" — verbatim deferral
173
- per `blocked-items.md`
174
- - `substrate.config.md: whereami_freshness_days: N` — per-repo
175
- threshold override (if N=0, freshness check disabled, but presence
176
- still required)
177
-
178
- ## Relationship to other rules
179
-
180
- - `blocked-items.md` — BLOCKED protocol; whereami staleness fires it
181
- - `session-artifacts.md` — chronicle + journal-entry obligations; whereami
182
- joins this tier
183
- - `bassclef-hook-drift-blocker.md` — same hook-fired BLOCKED pattern;
184
- whereami BLOCKED mirrors its shape
185
- - `sdlc-gates.md` — session-start orientation is where whereami fires
186
- in the gate ordering
187
- - `artifact-ingestion.md` — whereami is one of the "prior artifacts" a
188
- session-start orientation MUST read before producing
189
-
190
- ## Enforcement
191
-
192
- - Hook: `bassclef-sync.sh` section emits BLOCKED on stale/missing
193
- (added `BASSCLEF_SYNC_VERSION` bump in WS-3 of bet 2026-04-16c)
194
- - Skill: `/session-end` procedure includes whereami-update as MUST
195
- tier
196
- - Skill: `/sprint` procedure reads whereami as step 1 primary source
197
- - Skill: `/substrate-check` validates presence + schema conformance
198
- - Template: `templates/whereami-template.md` provides start
199
- shape; `/autonomous start` creates from template
200
-
201
- The rule stands regardless of hook availability. The hook is the
202
- mechanical backstop; the rule is the reasoning.
@@ -1,92 +0,0 @@
1
- ---
2
- tier: lite
3
- description: Plain check. Before I ship any operator-facing prose in this turn, I run the six Ogilvy tests against my draft. If any test fails, I rewrite before I ship.
4
- ---
5
-
6
- # Writing-craft discipline
7
-
8
- **Plain check.** Before I ship any operator-facing prose in this turn, I run the six Ogilvy tests against my draft. If any test fails, I rewrite before I ship.
9
-
10
- ---
11
-
12
- This rule loads every session. It sits alongside `.claude/rules/plain-english-discipline.md` (grade + vocabulary) and adds writing-craft tests grounded in Ogilvy's 1982 "How to Write" memo plus Roman and Raphaelson's *Writing That Works* (1981). Full reference: `standards/ogilvy-writing-rules.md`. Luminary anchor: `.claude/luminaries/david-ogilvy.md`.
13
-
14
- ## The six first-person composition tests
15
-
16
- Before I write each sentence or paragraph in operator-facing prose, I ask:
17
-
18
- **1. Natural voice.** Would a real person say this to a respected peer? If it sounds like corporate throat-clearing ("Please be advised that...", "It has come to my attention..."), I rewrite in natural voice.
19
-
20
- **2. Short units.** Is this sentence past 25 words? If yes, I split it. Is this paragraph past 6 sentences? If yes, I split it. Is there a shorter word for what I mean? If yes, I use the shorter word (utilize → use; commence → start; endeavor → try).
21
-
22
- **3. Read-aloud.** When I read this passage in my head, does it stumble? Tongue-twisters, long lines with no comma rest, unintentional rhymes, repeated words — any of those means I rewrite until it flows.
23
-
24
- **4. Completeness.** What is the ONE thing the reader needs to take from this? Is that thing actually written down, in plain language, somewhere the reader will see it? If the point is implied but not stated, I state it.
25
-
26
- **5. Honesty.** Am I saying what I mean or hiding behind softening language? Weasel words ("arguably", "somewhat", "perhaps"), euphemisms ("right-sizing", "reached out"), passive voice hiding the actor ("mistakes were made") — any of these means I rewrite straight.
27
-
28
- **6. Facts with context.** For each number, fact, or data point in my draft: does the reader know why it matters? If I have "Revenue was 4.2M" with no interpretation, either I add the interpretation ("up 30 percent year over year") or I drop the fact.
29
-
30
- ## When this rule fires
31
-
32
- Every operator-facing surface:
33
-
34
- - Turn prose in agent responses
35
- - PR body Summary and Test plan sections
36
- - Ticket body Problem sections
37
- - Chronicle body sections
38
- - Journal entries
39
- - Handoff notes
40
- - Deferred-action entries
41
-
42
- Skips (Ogilvy's rules do not apply, or apply differently):
43
-
44
- - Code blocks
45
- - File paths and function names
46
- - Structured schema output (JSON, YAML)
47
- - Backticked terms and API references
48
- - Test-list blocks in test files (structured audit surface)
49
- - Frontmatter fields (structured metadata)
50
-
51
- ## Composes with
52
-
53
- - `.claude/rules/plain-english-discipline.md` — grade level + vocabulary substitution table. Composes: this rule covers craft; that rule covers grade + jargon list.
54
- - `.claude/rules/operator-facing-prose.md` — gloss + `/kiss` meta-discipline at every operator-facing surface
55
- - `.claude/rules/context-engineering.md` — INSTEAD-block discipline foundational to bassclef's rule writing
56
- - `standards/ogilvy-writing-rules.md` — full reference with violation patterns and fixes
57
- - `standards/bassclef-internal-jargon.md` — extended wordlist Rule 3 references
58
- - `.claude/luminaries/david-ogilvy.md` — luminary anchor
59
- - `.claude/skills/ogilvy-writing-audit/SKILL.md` — operator-invocable audit (produces severity-tagged violations)
60
- - `.claude/skills/kiss/SKILL.md` — /kiss words composes with the audit (audit diagnoses, kiss fixes)
61
-
62
- ## Distinct from
63
-
64
- - **plain-english-discipline** — that rule targets grade 8-9 (grade 8 after ticket #935 lands) and enforces the jargon list. This rule targets craft — natural voice, short units, read-aloud, completeness, honesty, facts-with-context. The two fire together at every surface.
65
- - **operator-facing-prose** — that rule is the meta-discipline (gloss shorthand, /kiss pass on SKILL.md edits). This rule is the compose-time check.
66
-
67
- ## Anti-patterns
68
-
69
- **Draft-and-ship without running the six tests.** The rule loads but the agent skips the checks at composition time. Failure mode: prose ships jargon-heavy, long-sentenced, or facts-without-context. Fix: read each sentence against the six tests before I ship the turn.
70
-
71
- **Rewriting only on hook flag.** The turn-prose-kiss-check hook fires post-Stop; running the six tests only when the hook flags means catching after the fact. Fix: run at composition time, per the Plain check at the top of this rule.
72
-
73
- **Selective application.** Applying the tests to some paragraphs but not others (e.g., only the opener). Failure mode: middle paragraphs drift. Fix: every sentence in every operator-facing paragraph gets the six-test check.
74
-
75
- ## Override
76
-
77
- `SKIP_WRITING_CRAFT=1 <command>` — logged via trace-helper. Use only for quoted external content that must ship verbatim (e.g., quoting Ogilvy's memo in the reference standard).
78
-
79
- ## Refs
80
-
81
- - Ticket #934 — this rule's filing (Ogilvy skill + luminary + rule + standard)
82
- - Sister rule `plain-english-discipline.md` (bassclef#790)
83
- - Sister rule `operator-facing-prose.md` (bassclef#790)
84
- - Parent /diagnose #833 (why /kiss drifts)
85
- - Standard `standards/ogilvy-writing-rules.md`
86
- - Luminary `.claude/luminaries/david-ogilvy.md`
87
- - Ogilvy — "How to Write" memo (1982)
88
- - Roman + Raphaelson — *Writing That Works* (Harper and Row, 1981)
89
-
90
- ## Retirement condition
91
-
92
- This rule retires only if bassclef stops shipping operator-facing prose. Specific tests may evolve; the discipline of prose-as-craft persists.
@@ -1,145 +0,0 @@
1
- ---
2
- tier: lite
3
- description: WUs within a chosen goal shape ship as compounding builds.
4
- ---
5
-
6
- # WU Sequencing — Each WU Compounds With the Next
7
-
8
- WUs within a chosen goal shape ship as compounding builds. Each WU declares what it produces that the next WU consumes. The trap: independent step enumeration where each step does its own thing. No WU's output feeds another. The value that compounded at shape-pick time disappears once the shape is picked.
9
-
10
- The rule mechanizes the discipline filed at bassclef#1348. The operator caught the gap on 2026-06-20h prep. My first WU proposal sequenced fixes (recursive walk + triage + workflow stand-up) as parallel-safe atomic items. It should have been a chain where each output flowed into the next.
11
-
12
- Sister rules cover the INTER-shape layer. bassclef#1299 covers Step 1.5 (the compounding column). bassclef#1302 covers Step 1.6 (the adopter-benefit column). Those two help the operator pick between shapes. This rule disciplines step enumeration WITHIN a chosen shape.
13
-
14
- ## When this rule fires
15
-
16
- - `/longrun prep` Step 1.7 (added in this rule's PR) — when step enumeration goes into the prep output proposal, the table includes a produces/consumes column
17
- - Bet doc authoring — when the `## Steps` section is written, the table uses the produces/consumes shape
18
- - `/sprint` next-work proposals — same shape when proposing a multi-step sequence (sister surface; same wordlist)
19
- - `/build` skill construction-time sequencing — out of scope for V1; separate ticket if surfaced
20
-
21
- ## Format contract
22
-
23
- Every goal doc's `## Steps` section uses one of two table shapes.
24
-
25
- ### Shape A — three-column (canonical)
26
-
27
- ```markdown
28
- | WU | Produces | Consumes (from prior WU) |
29
- |---|---|---|
30
- | **0** prep | goal doc + stack manifest + temperance marker | — (session-start) |
31
- | **1** <ticket> | <what ships> | <what it reads from prior WU> |
32
- | **2** <ticket> | <what ships> | <what it reads from WU-1> |
33
- | ... |
34
- ```
35
-
36
- ### Shape B — six-column (extended per bassclef-upstream#688)
37
-
38
- ```markdown
39
- | WU | Problem + value prop | Produces | Consumes (from prior WU) | How this step builds on the prior | Risk |
40
- |---|---|---|---|---|---|
41
- | **0** prep | <problem sentence> + <value prop sentence> | goal doc + markers | — (session-start) | — (baseline) | low |
42
- | **1** <ticket> | <problem sentence> + <value prop sentence> | <what ships> | <what reads from prior WU> | <how it builds> | <low/med/high> |
43
- ```
44
-
45
- Shape B mirrors the `/longrun` prep proposal rendering. Prep proposals MUST render six-column so the operator sees per-step sequencing at pick-time. Bet doc `## Steps` sections use EITHER shape; six-column is preferred when the goal doc reuses the prep proposal table verbatim.
46
-
47
- Column semantics for Shape B:
48
-
49
- - **Problem + value prop** — one cell combining `/state-a-problem brief` output AND `/value-prop flash` output. Do NOT split the two outputs into separate cells. Operator preference confirmed 2026-07-09 (bassclef-upstream#688).
50
- - **How this step builds on the prior** — one line explaining the sequencing. "Baseline" for WU-0. Parallel-safe WUs state "parallel-safe with WU-N".
51
- - **Risk** — low / medium / high, matching the step's Step 1.5 risk-class value.
52
-
53
- Format rules (both shapes):
54
-
55
- - Shape A header exactly: `| WU | Produces | Consumes (from prior WU) |` — greppable by `bet-doc-gate.sh` V2 hook (3-column path)
56
- - Shape B header exactly: `| WU | Problem + value prop | Produces | Consumes (from prior WU) | How this step builds on the prior | Risk |` — greppable by `bet-doc-gate.sh` V2 hook (6-column path)
57
- - Each WU's Produces is a concrete artifact (file, decision, label set, marker, output)
58
- - Each WU's Consumes names what the prior WU produced — by reference, not duplicated description
59
- - WU-0 prep consumes "session-start" (no prior WU)
60
- - Final WU (closeout) produces the chronicle + whereami flip; consumes the union of all prior WU outputs
61
- - When a WU is genuinely parallel-safe (no consumer), state "parallel-safe (no consumer)" or "parallel-safe with WU-N" in the Consumes cell — explicit declaration, not silent
62
-
63
- ## What this rule requires
64
-
65
- The agent runs this check before committing the goal doc OR before posting the `/longrun prep` confirmation surface:
66
-
67
- 1. Each WU declared in the proposed shape has a Produces cell
68
- 2. Each WU after WU-0 has a Consumes cell that names what the prior WU produced
69
- 3. When a WU's Produces doesn't feed any later WU, the rule fires WARN. Either the step is misplaced (should be its own goal) OR the sequencing is correct but the next-WU consumption is implicit and needs stating.
70
- 4. The goal doc body cites this rule's slug in the `references:` block when sequencing is non-obvious
71
-
72
- ## Anti-patterns
73
-
74
- The following shapes fail this rule:
75
-
76
- - **Bare WU list** — `WU-1: fix X. WU-2: fix Y. WU-3: triage Z.` Independent items; no produces/consumes contract
77
- - **Sequence-implied-by-ordering** — WUs listed in order but the goal doc body doesn't say WHY this order. Order alone is not compounding
78
- - **All WUs are independent** — every step is parallel-safe. That signal calls for a question: is this one goal or several smaller bets?
79
-
80
- The agent picks one path when the rule fires WARN:
81
-
82
- - Restructures the step sequence so each step's output is input to the next (preferred)
83
- - Splits the goal — if WUs are genuinely parallel-safe with no compounding, they belong in separate goals
84
- - Explicitly justifies why a parallel-safe WU rides with sequenced WUs (e.g., shared review window, operator preference)
85
-
86
- ## Eat-own-dogfood
87
-
88
- The goal that ships this rule (2026-06-20h-recursive-walk-and-triage-marathon) already uses the produces/consumes table in its own `## Steps` section. The goal doc author's chair is the first place this rule fires.
89
-
90
- ## Mechanical layer
91
-
92
- V1 ships this rule + the SKILL.md Step 1.7 procedure update.
93
-
94
- **V2 (shipped 2026-06-23 per bassclef-upstream#21):** `.claude/hooks/bet-doc-gate.sh` PreToolUse Edit|Write|MultiEdit on `docs/iteration-bets/*.md` performs the substantive Consumes-cell check. Composed with sister #300 thread-walk check in the same hook file. Behaviors:
95
-
96
- - **PASS** when Consumes cell contains a concrete artifact reference (backtick-quoted ref, slash-prefixed path, `.sh|.md|.json|.yml` extension) OR explicit literal `"parallel-safe (no consumer)"` OR `"session-start"` (prep) OR `"union of"` (closeout).
97
- - **WARN** (exit 0 with stderr) when Consumes cell starts with `WU-N` or `WU-N's` followed by vague prose without any concrete artifact reference. Advisory in V2; flips to BLOCK in V3 if observable drift persists.
98
- - **Silent** on non-matching paths, non-Edit tool calls, or goal docs without a steps table.
99
-
100
- Overrides (logged via trace-helper):
101
- - `SKIP_PRODUCES_CONSUMES_CHECK=1` — bypass P/C only
102
- - `SKIP_BET_DOC_GATE=1` — bypass both P/C and thread-walk
103
-
104
- Per `feedback_hooks_beat_methodology_for_substrate_quality` memory: V2 hook ships ALONGSIDE the methodology — both required.
105
-
106
- ## Override path
107
-
108
- `SKIP_WU_SEQUENCING_COMPOUNDS=1 <command>` (when V2 hook ships) — logged via trace-helper. Use rarely:
109
-
110
- - Single-WU bets — no sequencing applies; the column is trivially empty
111
- - Genuinely parallel atomic WUs that share a review window (declare in goal doc body)
112
- - Migration scripts authoring many goal docs at once
113
-
114
- INSTEAD of overriding for routine work: write the produces/consumes cells. The discipline costs seconds at write-time and compounds across every future thread walking tonight's chronicle for reference.
115
-
116
- ## Composes with
117
-
118
- - `.claude/rules/arc-level-orientation-before-leaf.md` — sister at orientation surface (sister bassclef#1347 fixes one-level walk)
119
- - `.claude/rules/plan-enumeration-needs-value-props.md` — sister at choice-presentation surface
120
- - `.claude/rules/blocked-items.md` — BLOCK protocol the V2 hook fires
121
- - `.claude/skills/longrun/SKILL.md` Step 1.7 — primary surface this rule extends
122
- - `.claude/skills/sprint/SKILL.md` — sister surface (next-work proposals)
123
- - standards/branch-stacking.md — stack manifest already declares dependencies between WUs; this rule extends to the goal doc body
124
-
125
- ## Distinct from
126
-
127
- - bassclef#1299 (Step 1.5 compounding-sequence) — that's INTER-shape (helps operator pick between shapes); this is INTRA-shape (governs step enumeration within a chosen shape)
128
- - bassclef#1302 (Step 1.6 adopter-benefit) — that's INTER-shape adopter mechanism; this is intra-shape WU dependency
129
- - standards/branch-stacking.md — that's about branches + their dependencies (deployment shape); this is about WUs + their produces/consumes (build shape)
130
-
131
- ## Refs
132
-
133
- - bassclef#1348 — this rule's filing ticket
134
- - bassclef#1299 — sister Step 1.5 INTER-shape compounding column
135
- - bassclef#1302 — sister Step 1.6 INTER-shape adopter-benefit column
136
- - bassclef#1347 — sister substrate-defect at orientation surface (both shipped 2026-06-20h)
137
- - Memory `feedback_hooks_beat_methodology_for_substrate_quality` — pattern pushing V2 mechanical extension
138
- - 2026-06-20h /longrun prep — the session that surfaced this gap; operator's framing: "where is the sequencing discipline ticket — that you propose /longrun and its components as sequenced builds that compound"
139
- - @luminary kent-beck — test-list as planning artifact (TDD By Example chs 1-3); analogous shape for step enumeration as compounding-build artifact
140
-
141
- ## Retirement condition
142
-
143
- This rule retires only if WU as a bet-shaping primitive retires. The discipline of declared produces/consumes survives any rename or restructure of the step vocabulary.
144
-
145
- Closes bassclef#1348 (V1 methodology + procedure layer; V2 mechanical layer follow-on).