@thebassclef/lite 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +85 -4
  3. package/dist/cli.cjs +1610 -0
  4. package/dist/cli.js +1587 -0
  5. package/dist/index.cjs +4 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +4 -0
  8. package/package.json +51 -3
  9. package/substrate/.bassclef/lite-manifest.json +1794 -0
  10. package/substrate/.claude/agents/architect.md +70 -0
  11. package/substrate/.claude/agents/builder.md +114 -0
  12. package/substrate/.claude/agents/designer.md +156 -0
  13. package/substrate/.claude/agents/reviewer.md +88 -0
  14. package/substrate/.claude/hooks/artifact-ingestion-gate.sh +357 -0
  15. package/substrate/.claude/hooks/assert-verify-steering.sh +77 -0
  16. package/substrate/.claude/hooks/bassclef-source-config-validate.sh +215 -0
  17. package/substrate/.claude/hooks/bassclef-sync.sh +634 -0
  18. package/substrate/.claude/hooks/compound-noun-scrub.sh +292 -0
  19. package/substrate/.claude/hooks/kiss-expansion-inject.sh +69 -0
  20. package/substrate/.claude/hooks/plain-english-steering.sh +156 -0
  21. package/substrate/.claude/hooks/post-skill-friction-check.sh +177 -0
  22. package/substrate/.claude/hooks/post-skill-telemetry.sh +62 -0
  23. package/substrate/.claude/hooks/pre-build-gate.sh +511 -0
  24. package/substrate/.claude/hooks/pre-commit-gate.sh +452 -0
  25. package/substrate/.claude/hooks/session-end.sh +433 -0
  26. package/substrate/.claude/hooks/session-reflection.sh +303 -0
  27. package/substrate/.claude/hooks/skill-body-grade-gate.sh +219 -0
  28. package/substrate/.claude/hooks/skill-body-intent-drift.sh +107 -0
  29. package/substrate/.claude/hooks/skill-step-list-check.sh +171 -0
  30. package/substrate/.claude/hooks/state-validate.sh +271 -0
  31. package/substrate/.claude/hooks/substrate-clarity-gate.sh +1110 -0
  32. package/substrate/.claude/hooks/temperance-gate.sh +147 -0
  33. package/substrate/.claude/hooks/testing-tier-enforce.sh +233 -0
  34. package/substrate/.claude/hooks/turn-prose-grade-measure.sh +219 -0
  35. package/substrate/.claude/hooks/turn-prose-kiss-check.sh +434 -0
  36. package/substrate/.claude/hooks/vocabulary-migration-check.sh +171 -0
  37. package/substrate/.claude/hooks/whereami-utc-gate.sh +142 -0
  38. package/substrate/.claude/luminaries/alan-cooper.md +170 -0
  39. package/substrate/.claude/luminaries/alistair-cockburn.md +140 -0
  40. package/substrate/.claude/luminaries/amazon-pr-faq.md +34 -0
  41. package/substrate/.claude/luminaries/ash-maurya.md +121 -0
  42. package/substrate/.claude/luminaries/bill-buxton.md +210 -0
  43. package/substrate/.claude/luminaries/charles-sanders-peirce.md +150 -0
  44. package/substrate/.claude/luminaries/david-ogilvy.md +192 -0
  45. package/substrate/.claude/luminaries/don-norman.md +173 -0
  46. package/substrate/.claude/luminaries/edward-tufte.md +179 -0
  47. package/substrate/.claude/luminaries/eric-evans.md +160 -0
  48. package/substrate/.claude/luminaries/frederick-brooks.md +50 -0
  49. package/substrate/.claude/luminaries/gang-of-four.md +157 -0
  50. package/substrate/.claude/luminaries/jason-fried-dhh.md +46 -0
  51. package/substrate/.claude/luminaries/jesse-james-garrett.md +154 -0
  52. package/substrate/.claude/luminaries/john-ousterhout.md +94 -0
  53. package/substrate/.claude/luminaries/karl-popper.md +132 -0
  54. package/substrate/.claude/luminaries/kent-beck.md +168 -0
  55. package/substrate/.claude/luminaries/linus-torvalds.md +218 -0
  56. package/substrate/.claude/luminaries/martin-fowler.md +164 -0
  57. package/substrate/.claude/luminaries/michael-feathers.md +125 -0
  58. package/substrate/.claude/luminaries/michael-nygard.md +118 -0
  59. package/substrate/.claude/luminaries/robert-c-martin.md +164 -0
  60. package/substrate/.claude/luminaries/saltzer-schroeder.md +194 -0
  61. package/substrate/.claude/luminaries/sophia-prater.md +193 -0
  62. package/substrate/.claude/luminaries/stephen-toulmin.md +131 -0
  63. package/substrate/.claude/rules/artifact-ingestion.md +179 -0
  64. package/substrate/.claude/rules/assert-only-after-verify.md +137 -0
  65. package/substrate/.claude/rules/blocked-items.md +146 -0
  66. package/substrate/.claude/rules/branching.md +28 -0
  67. package/substrate/.claude/rules/commit-conventions.md +22 -0
  68. package/substrate/.claude/rules/context-engineering.md +202 -0
  69. package/substrate/.claude/rules/context-management.md +85 -0
  70. package/substrate/.claude/rules/destructive-operations.md +69 -0
  71. package/substrate/.claude/rules/diagnosis.md +38 -0
  72. package/substrate/.claude/rules/guardrails.md +73 -0
  73. package/substrate/.claude/rules/identifier-leak-prevention.md +104 -0
  74. package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +98 -0
  75. package/substrate/.claude/rules/oo-ad-entry-point.md +117 -0
  76. package/substrate/.claude/rules/operator-facing-prose.md +196 -0
  77. package/substrate/.claude/rules/plain-english-discipline.md +154 -0
  78. package/substrate/.claude/rules/pr-body-shape.md +317 -0
  79. package/substrate/.claude/rules/pr-strategy.md +167 -0
  80. package/substrate/.claude/rules/sdlc-gates.md +149 -0
  81. package/substrate/.claude/rules/session-artifacts.md +236 -0
  82. package/substrate/.claude/rules/state-schema-validation.md +162 -0
  83. package/substrate/.claude/rules/whereami-load-bearing.md +202 -0
  84. package/substrate/.claude/rules/writing-craft-discipline.md +92 -0
  85. package/substrate/.claude/skills/build/SKILL.md +640 -0
  86. package/substrate/.claude/skills/decompose/SKILL.md +280 -0
  87. package/substrate/.claude/skills/diagnose/SKILL.md +297 -0
  88. package/substrate/.claude/skills/howdoi/SKILL.md +105 -0
  89. package/substrate/.claude/skills/ia-model/SKILL.md +108 -0
  90. package/substrate/.claude/skills/interaction-design/SKILL.md +112 -0
  91. package/substrate/.claude/skills/interpret-input/SKILL.md +180 -0
  92. package/substrate/.claude/skills/kiss/SKILL.md +449 -0
  93. package/substrate/.claude/skills/launch/SKILL.md +924 -0
  94. package/substrate/.claude/skills/lean-canvas/SKILL.md +332 -0
  95. package/substrate/.claude/skills/longrun/SKILL.md +426 -0
  96. package/substrate/.claude/skills/luminary/SKILL.md +481 -0
  97. package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +177 -0
  98. package/substrate/.claude/skills/onboard-repo/SKILL.md +2190 -0
  99. package/substrate/.claude/skills/pattern-review/SKILL.md +99 -0
  100. package/substrate/.claude/skills/personas/SKILL.md +207 -0
  101. package/substrate/.claude/skills/promote/SKILL.md +283 -0
  102. package/substrate/.claude/skills/requirement/SKILL.md +98 -0
  103. package/substrate/.claude/skills/retro/SKILL.md +117 -0
  104. package/substrate/.claude/skills/riff/SKILL.md +114 -0
  105. package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +163 -0
  106. package/substrate/.claude/skills/session-end/SKILL.md +309 -0
  107. package/substrate/.claude/skills/session-log/SKILL.md +299 -0
  108. package/substrate/.claude/skills/skills/SKILL.md +228 -0
  109. package/substrate/.claude/skills/spec/SKILL.md +105 -0
  110. package/substrate/.claude/skills/sprint/SKILL.md +392 -0
  111. package/substrate/.claude/skills/stage/SKILL.md +384 -0
  112. package/substrate/.claude/skills/state-a-problem/SKILL.md +185 -0
  113. package/substrate/.claude/skills/temperance/SKILL.md +108 -0
  114. package/substrate/.claude/skills/use-case/SKILL.md +417 -0
  115. package/substrate/.claude/skills/user-stories/SKILL.md +268 -0
  116. package/substrate/.claude/skills/value-prop/SKILL.md +251 -0
  117. package/substrate/.claude/skills/verify/SKILL.md +160 -0
  118. package/substrate/.claude/skills/whereami/SKILL.md +307 -0
  119. package/substrate/AGENTS.md +79 -0
  120. package/substrate/CLAUDE-lite.md +85 -0
  121. package/substrate/CODE_OF_CONDUCT.md +28 -0
  122. package/substrate/CONTRIBUTING.md +177 -0
  123. package/substrate/README.md +173 -0
  124. package/substrate/SECURITY.md +19 -0
  125. package/substrate/architecture/decisions/ADR-029-release-pipeline.md +79 -0
  126. package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +139 -0
  127. package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +192 -0
  128. package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +145 -0
  129. package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +155 -0
  130. package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +162 -0
  131. package/substrate/lib/clean-artifacts-sweep.sh +112 -0
  132. package/substrate/lib/code-comment-discipline.sh +144 -0
  133. package/substrate/lib/composer-preflight.sh +459 -0
  134. package/substrate/lib/hook-inject.sh +255 -0
  135. package/substrate/lib/luminary-pick.sh +96 -0
  136. package/substrate/lib/output-discipline.sh +143 -0
  137. package/substrate/lib/rewrite-check.sh +214 -0
  138. package/substrate/lib/state.sh +1372 -0
  139. package/substrate/lib/telemetry.sh +205 -0
  140. package/substrate/lib/tier-check.sh +138 -0
  141. package/substrate/lib/tier-dependency-audit.sh +933 -0
  142. package/substrate/presence/install/bassclef-hook-connect.sh +178 -0
  143. package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +841 -0
  144. package/substrate/presence/install/bassclef-sync.template.sh +2076 -0
  145. package/substrate/presence/install/schedule-auto-save.cron.sh +88 -0
  146. package/substrate/presence/install/schedule-auto-save.taskscheduler.md +122 -0
  147. package/substrate/scripts/aggregate-telemetry.sh +217 -0
  148. package/substrate/scripts/analyze-tier-dependencies.sh +239 -0
  149. package/substrate/scripts/generate-lite-manifest.sh +489 -0
  150. package/substrate/scripts/generate-tier-manifest.sh +28 -0
  151. package/substrate/scripts/intent-drift-check.sh +456 -0
  152. package/substrate/scripts/lite-manifest-drift-check.sh +146 -0
  153. package/substrate/scripts/render-lite-manifest-doc.sh +150 -0
  154. package/substrate/standards/bassclef-configs-schema.md +232 -0
  155. package/substrate/standards/bassclef-evolution.md +143 -0
  156. package/substrate/standards/bassclef-internal-jargon.md +244 -0
  157. package/substrate/standards/bassclef-managed-sentinel.md +96 -0
  158. package/substrate/standards/bassclef-source-config.md +228 -0
  159. package/substrate/standards/deferred-actions-schema.md +204 -0
  160. package/substrate/standards/docs-sync-allowlist.md +76 -0
  161. package/substrate/standards/graceful-exit.md +227 -0
  162. package/substrate/standards/hook-idempotency.md +102 -0
  163. package/substrate/standards/lite-manifest-schema-changes.md +75 -0
  164. package/substrate/standards/luminary-problem-patterns.md +481 -0
  165. package/substrate/standards/ogilvy-writing-rules.md +225 -0
  166. package/substrate/standards/opener-discipline.md +96 -0
  167. package/substrate/standards/operator-facing-prose-discipline.md +201 -0
  168. package/substrate/standards/project-directory-layout.md +276 -0
  169. package/substrate/standards/release-tagging.md +137 -0
  170. package/substrate/standards/sdlc-compliance.md +286 -0
  171. package/substrate/standards/secrets-lifecycle.md +210 -0
  172. package/substrate/standards/security-scanner-adapter.md +145 -0
  173. package/substrate/standards/skill-output-discipline.md +90 -0
  174. package/substrate/standards/state-spine.md +511 -0
  175. package/substrate/standards/tech-stack-config.md +109 -0
  176. package/substrate/standards/tier-dependency-analysis.md +167 -0
  177. package/substrate/standards/tier-runtime-deps/lite.md +57 -0
  178. package/substrate/standards/tier-tag-schema.md +155 -0
  179. package/substrate/standards/whereami-schema.md +301 -0
  180. package/substrate/standards/writing-guide.md +213 -0
  181. package/substrate/templates/deferred-action-template.md +45 -0
  182. package/substrate/templates/whereami-template.md +101 -0
@@ -0,0 +1,301 @@
1
+ ---
2
+ tier: lite
3
+ description: docs/whereami.md is the authoritative project-state snapshot in any bassclef-substrate repo.
4
+ ---
5
+
6
+ # Whereami Schema
7
+
8
+ `docs/whereami.md` is the **authoritative project-state snapshot** in
9
+ any bassclef-substrate repo. One per repo, maintained at session-end,
10
+ read at session-start. Functionally it is the current-state header —
11
+ whereas `docs/iteration-bets/` holds the goal.contracts and `chronicle/`
12
+ holds the narrative log, `whereami.md` answers "where is the project
13
+ right now?" in one glance.
14
+
15
+ ## Why this exists
16
+
17
+ Before this standard: each agent reconstructed project state by
18
+ reading iteration-bets + chronicles + git log + substrate.config.md
19
+ at session-start. This reconstruction:
20
+
21
+ - Duplicates ~5 reads per session-start
22
+ - Drifts silently when phase or iteration changes without cross-artifact
23
+ updates
24
+ - Produces inconsistent answers to "what phase are we in?" depending on
25
+ which agent asked and which files it read
26
+
27
+ Making whereami load-bearing solves all three by establishing one
28
+ source, maintained at session boundaries.
29
+
30
+ ## The artifact
31
+
32
+ Location: `docs/whereami.md` (every consumer repo). Bassclef itself
33
+ maintains one at the same path.
34
+
35
+ Format: Markdown with a standard structure (schema below). Plain prose
36
+ allowed in descriptive fields. No YAML frontmatter — simpler to eyeball.
37
+
38
+ ## Schema
39
+
40
+ Nine sections, in this order. Missing fields acceptable when no data
41
+ exists yet (new repo, no active iteration); empty sections MUST render
42
+ as "—" rather than be omitted, so the reader knows what's unset vs. what
43
+ was forgotten.
44
+
45
+ Section 2a (Active sessions registry) is OPTIONAL in singleton mode and
46
+ REQUIRED in plural / parallel mode. Section count is "8 + optional 1."
47
+
48
+ ### 1. Project-level phase
49
+
50
+ ```markdown
51
+ ## Project-level phase
52
+
53
+ phase: [Inception | Elaboration | Construction | Transition]
54
+ note: [one-paragraph description of what this phase means for this repo]
55
+ ```
56
+
57
+ Bassclef values only. If you're tempted to write a custom phase, the
58
+ project is either between standard phases (write "Construction, tail
59
+ end of iteration X") or the phase model doesn't fit (surface as a
60
+ bassclef-evolution proposal, don't invent a value).
61
+
62
+ ### 2. Active iteration
63
+
64
+ Two shapes — singleton (sequential mode, one goal at a time) and plural
65
+ (parallel mode, multiple bets in flight on the same repo). Singleton is
66
+ the bassclef default; plural is the parallel-fanout extension (Phase
67
+ A WS-2 of example-pipeline bet).
68
+
69
+ #### Singleton (default — sequential mode)
70
+
71
+ ```markdown
72
+ ## Active iteration
73
+
74
+ iteration_bet: [path to current bet, or "none — between iterations"]
75
+ iteration_started: [YYYY-MM-DD]
76
+ iteration_phase: [current WS or stage within the goal. or "—"]
77
+ previous_bet: [path to last closed bet]
78
+ next_bet: [one-line description of planned next bet, or "—"]
79
+ ```
80
+
81
+ If `iteration_bet` is "none," `iteration_phase` MUST be "—".
82
+
83
+ #### Plural (parallel mode — Stage 4+)
84
+
85
+ ```markdown
86
+ ## Active iteration
87
+
88
+ iteration_bets:
89
+ - bet: docs/iteration-bets/2026-04-25-example-pipeline.md
90
+ started: 2026-04-25
91
+ phase: Phase A
92
+ session: 2026-04-26-phase-a-autonomous
93
+ - bet: docs/iteration-bets/2026-04-26-quorum-prototype-gallery.md
94
+ started: 2026-04-26
95
+ phase: WS-1
96
+ session: 2026-04-26-quorum-wire
97
+ previous_bet: [path to last closed bet]
98
+ next_bet: [one-line description of planned next bet, or "—"]
99
+ ```
100
+
101
+ **Backward-compatibility window**: readers MUST accept BOTH the
102
+ singleton field (`iteration_bet:`) AND the plural field
103
+ (`iteration_bets:`). Writers in sequential mode SHOULD continue using
104
+ the singleton form. The plural form activates when ≥2 bets are
105
+ in-flight against the same repo — typically via worktree-based
106
+ parallel sessions. Plural form deprecates singleton 30 days after
107
+ parallel-mode adoption stabilizes; until then both are valid.
108
+
109
+ ### 2a. Active sessions registry (parallel mode)
110
+
111
+ ```markdown
112
+ ## Active sessions
113
+
114
+ active_sessions:
115
+ - session_id: 2026-04-26-phase-a-autonomous
116
+ started: 2026-04-26T01:00:00+0000
117
+ working_dir: /Users/<operator>/src/<org>/bassclef
118
+ agent: orchestrator-gated-sequential
119
+ bet: docs/iteration-bets/2026-04-25-example-pipeline.md
120
+ tier: longrun
121
+ - session_id: 2026-04-26-quorum-wire
122
+ started: 2026-04-26T02:30:00+0000
123
+ working_dir: /Users/<operator>/src/<org>/bassclef-quorum-worktree
124
+ agent: builder
125
+ bet: docs/iteration-bets/2026-04-26-quorum-prototype-gallery.md
126
+ tier: short
127
+ ```
128
+
129
+ Empty when only one session is active (singleton mode). Each session
130
+ appends an entry at `/longrun prep` and removes its entry at
131
+ `/longrun closeout`. Stale entries (session_id has no live process
132
+ AND age > 24h) are reaped by `bassclef-sync.sh` session-start hook.
133
+
134
+ The session-id MUST match the session-board filename slug (per
135
+ `standards/session-board.md`) so cross-references resolve cleanly.
136
+
137
+ ### 3. Active agents
138
+
139
+ ```markdown
140
+ ## Active agents
141
+
142
+ [sequential mode]
143
+ - [role-name] ([current task])
144
+
145
+ [multi-agent mode]
146
+ - [role-name] on branch [branch-name] ([status])
147
+ ```
148
+
149
+ For sequential sessions, typically one entry. For multi-agent /
150
+ multi-worktree sessions, one entry per active agent. If between
151
+ iterations: "None (between iterations)".
152
+
153
+ ### 4. Subsystem phases (table)
154
+
155
+ ```markdown
156
+ ## Subsystem phases
157
+
158
+ | Subsystem | Phase | Last iteration | Notes |
159
+ |-----------|-------|---------------|-------|
160
+ | [name] | [phase] | [YYYY-MM-DD] | [one-line] |
161
+ ```
162
+
163
+ Subsystems are the repo's own decomposition — in bassclef, these are
164
+ standards / skills / agents / SDLC-process / session-continuity /
165
+ design-system. Each consumer repo defines its own list.
166
+
167
+ ### 5. Gate progress (project-level)
168
+
169
+ ```markdown
170
+ ## Gate progress (project-level)
171
+
172
+ ### Inception — [COMPLETE (YYYY-MM-DD) | IN PROGRESS | PENDING]
173
+ - [x] Vision doc
174
+ - [x] Risk register populated
175
+ ...
176
+
177
+ ### Elaboration — [status]
178
+ - [ ] ADRs drafted
179
+ ...
180
+
181
+ ### Construction — [status]
182
+ ...
183
+
184
+ ### Transition — [status]
185
+ ...
186
+ ```
187
+
188
+ Checkbox format. Gate items are repo-specific. Bassclef values
189
+ only for phase status: COMPLETE / IN PROGRESS / PENDING.
190
+
191
+ ### 6. Risk register
192
+
193
+ ```markdown
194
+ ## Risk register
195
+
196
+ See docs/risk-register.md
197
+ ```
198
+
199
+ One-line pointer. The register itself is a separate artifact; this
200
+ field just establishes the reference. If no register exists, write
201
+ "none yet — file when first risk materializes."
202
+
203
+ ### 7. Last updated (MUST)
204
+
205
+ ```markdown
206
+ ## Last updated
207
+
208
+ 2026-04-16T19:00:00Z — session-end
209
+ session: [chronicle filename, e.g., 2026-04-16c-plan-declaration-and-whereami.md]
210
+ ```
211
+
212
+ ISO 8601 UTC timestamp. Auto-stamped by `/session-end` skill when it
213
+ updates whereami. Hook-read to detect staleness.
214
+
215
+ ### 8. Configuration pointer
216
+
217
+ ```markdown
218
+ ## Configuration
219
+
220
+ See substrate.config.md for external resource references.
221
+ ```
222
+
223
+ One-line pointer. Decouples state tracking (whereami) from resource
224
+ references (substrate.config.md) — both are single-source but for
225
+ different concerns.
226
+
227
+ ## Freshness rules
228
+
229
+ Hook-enforced via `bassclef-sync.sh` section emitted on session-start:
230
+
231
+ - `last_updated` newer than 3 days → green, session proceeds normally
232
+ - `last_updated` 3–7 days old → warning surfaced, session proceeds
233
+ - `last_updated` older than 7 days → BLOCKED (per `blocked-items.md`)
234
+ - File missing → BLOCKED
235
+
236
+ Threshold is tuneable. 3 days v1 default. Consumer repos may override
237
+ via `substrate.config.md` field (proposed: `whereami_freshness_days`).
238
+
239
+ ## Who updates it
240
+
241
+ | Trigger | Who | Action |
242
+ |---------|-----|--------|
243
+ | Session end | `/session-end` skill (MUST tier) | Update last_updated + any field that changed |
244
+ | Phase transition | Closer / operator | Update phase + gate progress |
245
+ | Iteration start | `/autonomous start` or equivalent | Update iteration_bet + active agents |
246
+ | Iteration end | `/session-end` + closeout | Update previous_bet; clear iteration_phase |
247
+ | Subsystem change | Agent performing the change | Update subsystem row with one-line + date |
248
+
249
+ ## Who reads it
250
+
251
+ | Reader | When | What it expects |
252
+ |--------|------|-----------------|
253
+ | `/sprint` skill | Session-start orientation | Primary source (no longer fallback) |
254
+ | `bassclef-sync.sh` hook | Session-start | Freshness check only |
255
+ | `/substrate-check` skill | On-demand validation | Presence + schema conformance |
256
+ | Operator eyeballing | Any time | Human-readable summary |
257
+ | Chronicle writer | Session-end | Phase context for narrative |
258
+
259
+ ## What whereami is NOT
260
+
261
+ - **Not the iteration goal** — iteration goal is the scope contract for
262
+ the current work; whereami references it by path
263
+ - **Not the chronicle** — chronicle is retrospective narrative;
264
+ whereami is current snapshot
265
+ - **Not substrate.config.md** — that file is resource references
266
+ (where is X); whereami is state (where are we)
267
+ - **Not a risk register** — register is a separate artifact; whereami
268
+ points to it
269
+ - **Not an ADR log** — ADRs are decisions; whereami is state
270
+ - **Not `/sprint` output** — `/sprint` READS whereami; it doesn't
271
+ replace it
272
+
273
+ ## Relationship to other standards
274
+
275
+ - `standards/substrate-config-schema.md` — same single-source-of-truth
276
+ pattern, different concern (resources vs. state)
277
+ - `strategy/session-continuity.md` — three-layer memory architecture
278
+ where whereami is the "current state" layer
279
+ - `strategy/agent-choreography.md` — which agent updates whereami at
280
+ which gate is defined here
281
+ - `.claude/rules/whereami-load-bearing.md` — enforces read + write
282
+ obligations per session
283
+
284
+ ## Template
285
+
286
+ See `templates/whereami-template.md` for a fillable starting
287
+ point. `/autonomous start` creates one when scaffolding a new repo.
288
+
289
+ ## Scrutiny
290
+
291
+ Bar for adding a schema: the artifact must have load-bearing behavior
292
+ elsewhere in the methodology, or it's documentation for documentation's
293
+ sake. Whereami meets the bar because:
294
+
295
+ 1. `/sprint` will read it as primary source (not fallback)
296
+ 2. `bassclef-sync.sh` will block on staleness
297
+ 3. `/session-end` will write to it as MUST tier
298
+ 4. `/substrate-check` will validate its shape
299
+
300
+ Without those four hooks, this standard would be shelfware. Ship the
301
+ hooks with the schema.
@@ -0,0 +1,213 @@
1
+ ---
2
+ tier: lite
3
+ description: Technical. Direct. For the next agent or session picking up the work.
4
+ ---
5
+
6
+ # Writing Guide — Chronicles & LinkedIn
7
+
8
+ ## Two audiences, two registers
9
+
10
+ ### Chronicles (internal)
11
+
12
+ Technical. Direct. For the next agent or session picking up the work.
13
+
14
+ - Name files, functions, skills, hooks by their actual names
15
+ - Include commit refs, issue numbers, file paths
16
+ - Be factual, not promotional — record what happened
17
+ - Open Threads is the most important section
18
+
19
+ ### LinkedIn (external)
20
+
21
+ Personal. Specific. Story-first. For people who build, invest in, or
22
+ evaluate technology-driven operating models.
23
+
24
+ ---
25
+
26
+ ## LinkedIn Style Guide
27
+
28
+ ### Voice & Tone
29
+
30
+ First person. Tell the story of what happened. Let the reader draw
31
+ the lesson from the story — don't hand them a pre-digested thesis.
32
+
33
+ The voice is a builder-operator who has done hard things, learned from
34
+ failures, and shares the specifics openly. Not a consultant summarizing
35
+ from the outside. Not a brand speaking in third person. A person.
36
+
37
+ The primary voice reference is Sanjay's own writing:
38
+ - "Purpose Has Color" (Medium) — sensory, metaphorical, rooted in
39
+ lived experience. Santorini blue, Ducor pool, "bluetiful." Charming.
40
+ - "Life Is Too Short to Ship Products That Don't Make a Difference"
41
+ (Medium) — direct, operational, warm. "Crumple up the stuff that
42
+ doesn't work, fast." Flywheel as a living thing, not a framework.
43
+
44
+ These are the anchor. When in doubt, reread them.
45
+
46
+ Bezos, Jassy, and Collison are secondary references — study how they
47
+ actually write, not the sanitized version LinkedIn thinks they sound
48
+ like. Bezos shareholder letters are full of "we were wrong about this."
49
+ Jassy names the actual service that failed. Collison thinks out loud.
50
+ They share Sanjay's commitment to specificity and naming the real thing.
51
+ But the tone, the warmth, the sensory texture — that's Sanjay's own.
52
+
53
+ **The sound of it right**:
54
+ - "I built something with three knobs and couldn't remember what two of them did."
55
+ - "Purpose does not charm. Purpose agitates, roils, and compels."
56
+ - "Crumple up the stuff that doesn't work, fast. Build and ship the ones that do, fast."
57
+ - "Charming." (one word, dry, lets the reader smile)
58
+ - "When the person who built the thing can't say what it does without consulting the docs, the thing has a problem."
59
+
60
+ **The sound of it wrong** (processed cheese — ban these patterns):
61
+ - "Every unnecessary configuration axis in an autonomous system is a governance gap disguised as flexibility." (What does this mean? Who talks like this?)
62
+ - "This taxonomy IS the org chart for your AI workforce." (Thesis statement masquerading as insight)
63
+ - "The most secure, auditable autonomous systems are the ones with the smallest configuration surface." (Corporate whitepaper voice)
64
+ - Any sentence containing: "taxonomy," "governance gap," "ungoverned states," "configuration surface," "enterprise economics," "capital efficiency" as the *point* of the sentence rather than a detail inside a story
65
+
66
+ ### The "Monday morning" test
67
+
68
+ Read the sentence out loud. Would you say this to a smart friend over
69
+ coffee on a Monday morning? If it sounds like a keynote slide or a
70
+ consulting deck, rewrite it. The friend would interrupt and say "what
71
+ does that actually mean?"
72
+
73
+ ### Story structure, not thesis structure
74
+
75
+ **Wrong** (thesis-first):
76
+ > Configuration sprawl is governance debt. Every axis you add multiplies
77
+ > the ungoverned states in your system.
78
+
79
+ **Right** (story-first):
80
+ > I tried to explain my own configuration model on a Monday morning and
81
+ > couldn't. "Standard sequential orchestrator-gated" — what does that
82
+ > even mean? That's when I knew something was wrong.
83
+
84
+ The thesis can appear — but earned, at the end, after the story makes
85
+ it feel inevitable. Not announced at the top.
86
+
87
+ ### Sentence rhythm
88
+
89
+ Mix short and long. Short for emphasis. Long when building momentum.
90
+
91
+ - "So I deleted it." (punchy — the action)
92
+ - "Three axes became two. Twelve combinations became four. The manifest lost a field." (triplet — acceleration)
93
+ - "If I'm steering the session myself, I naturally call in a few agents as needed. If I let the system run itself overnight, it needs the full team. I don't configure that. It just falls out." (longer — builds the logic, then lands)
94
+
95
+ Avoid: every sentence the same length. Avoid: every paragraph the same
96
+ number of sentences. Rhythm creates feeling. Monotone creates pablum.
97
+
98
+ ### First person, always
99
+
100
+ Use "I" freely. This is a person writing about things they built and
101
+ broke and learned from. Not a company blog. Not a thought leadership
102
+ platform. A person.
103
+
104
+ - "I was proud of it for about a week."
105
+ - "I sat with the actual usage."
106
+ - "I was asking myself to decide something the system already knew."
107
+
108
+ "We" is fine when it genuinely means a team. Never use "we" as a
109
+ corporate "we" that means nobody in particular.
110
+
111
+ ### Metaphors from life, not business school
112
+
113
+ **Right**: volcanoes, pool water, crayon names, org charts, Monday mornings,
114
+ being unable to explain something to yourself, knobs on a dashboard
115
+
116
+ **Wrong**: "governance primitives," "coordination frameworks," "configuration
117
+ surfaces," "compliance architectures"
118
+
119
+ The metaphor should make the reader *see* something. If they have to
120
+ look up the metaphor, it's not a metaphor — it's jargon.
121
+
122
+ ### Technical vocabulary — when to use it
123
+
124
+ Name real things when they're part of the story: "the manifest,"
125
+ "worktree," "the pre-commit hook," "the boot sequence." These are
126
+ concrete. The reader can picture them.
127
+
128
+ Don't name abstractions that only exist in your framework: "governance
129
+ substrate," "quality gates," "specification quality." These are labels
130
+ for ideas, and the ideas should be shown through story, not labeled.
131
+
132
+ **Exception**: If a concept earns its name by being explained through
133
+ a story first, you can name it at the end. "We call this temperance —
134
+ a mandatory pause before the system acts" works because the story
135
+ showed what temperance *is* before naming it.
136
+
137
+ ### What goes in each post
138
+
139
+ - **What actually happened** — the specific situation, not a category
140
+ - **What went wrong or surprised you** — the tension that makes it a story
141
+ - **What you did about it** — the action, told simply
142
+ - **What it felt like** — the Monday morning confusion, the pride that
143
+ lasted a week, the "oh" moment when you saw the coupling
144
+ - **The pattern** (earned, at the end) — what someone else might recognize
145
+ in their own work
146
+
147
+ ### What to leave out
148
+
149
+ - Thesis statements as openers (earn them)
150
+ - "The key takeaway is..." (the reader gets to decide)
151
+ - Consultant-speak transitions ("Let's examine," "Consider the following")
152
+ - Abstract categories where a specific example would do
153
+ - Sentences that could appear in any company's blog post
154
+
155
+ ### Length
156
+
157
+ 600-1200 words. But only if every paragraph earns its place.
158
+ A 600-word post that tells one story well beats a 1200-word post
159
+ that makes three abstract points.
160
+
161
+ ### Structure
162
+
163
+ 1. **Hook** (1-2 lines) — a specific moment, a confession, something
164
+ that happened. Not a thesis. Not a question designed to sound profound.
165
+ 2. **The story** — what happened, in enough detail that the reader is
166
+ there with you. Include the wrong turns, the confusion, the feeling.
167
+ 3. **The turn** — the moment you saw it differently. This is the heart
168
+ of the post.
169
+ 4. **The pattern** (earned) — what this means beyond your specific
170
+ situation. Keep it to 2-3 sentences. Trust the reader.
171
+
172
+ ### Two audience variants
173
+
174
+ Each notable moment can produce two posts:
175
+
176
+ **Variant A (Board / PE / Search)**: The same story, but land on the
177
+ operating implications. What does this mean for how you run a company,
178
+ evaluate a technology investment, or assess an operator? Use analogies
179
+ to org design, capital allocation, or operational discipline. But still
180
+ tell the story first.
181
+
182
+ **Variant B (Engineering)**: The same story, with more technical detail.
183
+ Show the code diff, the configuration before and after, the specific
184
+ failure mode. Engineers want to learn something they can apply. But still
185
+ tell the story — engineers hate corporate abstractions even more than
186
+ PE partners do.
187
+
188
+ ### The audience recommendations table
189
+
190
+ Every draft file includes:
191
+
192
+ ```markdown
193
+ | # | Variant | Title | Primary audience | Hook strength | Publish priority |
194
+ |---|---------|-------|-----------------|--------------|-----------------|
195
+ ```
196
+
197
+ Rate hook strength honestly. "Very strong" = specific, surprising,
198
+ or confessional. "Strongest" = makes the reader stop scrolling.
199
+ "Medium" = solid but expected.
200
+
201
+ ### Feynman Sidebar Convention
202
+
203
+ When a post references a technical concept that deserves a plain-English
204
+ explanation, flag it:
205
+
206
+ ```
207
+ [FEYNMAN: concept name]
208
+ ```
209
+
210
+ Run /feynman afterward. Weave it in or use it as a comment-thread follow-up.
211
+ The Feynman explanation should sound like you're explaining it to a
212
+ sharp friend who works in a different field — not dumbing it down,
213
+ just making it vivid.
@@ -0,0 +1,45 @@
1
+ ---
2
+ tier: lite
3
+ id: <ISO-ts>-<slug>
4
+ created_by_session: <chronicle-slug>
5
+ created_in: desktop | ephemeral-mobile | ephemeral-ci | cloud-web
6
+ created_at: <ISO-8601 UTC>
7
+ pending_action: <verb-phrase-slug>
8
+ requires_capability: [<capability>, <capability>]
9
+ priority: medium
10
+ origin_skill: /<skill-name>
11
+ resolves_when: |
12
+ <one-to-two sentences describing the end state>
13
+ ---
14
+
15
+ ## Context
16
+
17
+ <One paragraph. Why was the work deferred? What produced it? Who needs
18
+ it and by when? Enough for a resolver without prior session context to
19
+ understand the gap.>
20
+
21
+ ## Command to execute
22
+
23
+ <Exact copy-pasteable command, env vars, agent instruction. If
24
+ multi-step, a small checklist. If operator judgment is required,
25
+ state "operator action" and describe what the operator decides.>
26
+
27
+ ```bash
28
+ # example
29
+ npx tsx scripts/push-to-gdoc.ts \
30
+ --file docs/release-notes/2026-04-20-internal.md \
31
+ --doc-id "$CHANGELOG_DOC_ID"
32
+ ```
33
+
34
+ ## On completion
35
+
36
+ - [ ] Verify downstream state (e.g., Google Doc shows the pushed content)
37
+ - [ ] `git mv docs/deferred-actions/<id>.md docs/deferred-actions/completed/<id>.md`
38
+ - [ ] `git commit -m "chore: resolve deferred action <id>"`
39
+ - [ ] (Optional) Note resolution in chronicle footnote if scope warrants
40
+
41
+ ## Cross-refs
42
+
43
+ - <Related PR(s) or issue(s)>
44
+ - <Chronicle entry that originated the deferral>
45
+ - <Memory entries, prior deferred actions, or standards>
@@ -0,0 +1,101 @@
1
+ ---
2
+ tier: lite
3
+ ---
4
+
5
+ # Whereami — [repo-name]
6
+
7
+ Current project-state snapshot. Schema: `standards/whereami-schema.md`.
8
+ Read at session-start, updated at session-end. Missing fields render
9
+ as "—" rather than be omitted.
10
+
11
+ ## Project-level phase
12
+
13
+ phase: [Inception | Elaboration | Construction | Transition]
14
+ note: [one-paragraph description of what this phase means for this repo]
15
+
16
+ ## Active iteration
17
+
18
+ [Singleton form — sequential mode default]
19
+ iteration_bet: [docs/iteration-bets/YYYY-MM-DD-name.md or "none — between iterations"]
20
+ iteration_started: [YYYY-MM-DD or —]
21
+ iteration_phase: [current WS or stage within the bet, or —]
22
+ previous_bet: [docs/iteration-bets/YYYY-MM-DD-name.md or —]
23
+ next_bet: [one-line description of planned next bet, or —]
24
+
25
+ [Plural form — parallel mode (Stage 4+); use INSTEAD of singleton when ≥2 bets in flight]
26
+ [iteration_bets:]
27
+ [ - bet: docs/iteration-bets/YYYY-MM-DD-bet-A.md]
28
+ [ started: YYYY-MM-DD]
29
+ [ phase: Phase X]
30
+ [ session: YYYY-MM-DD-session-slug]
31
+ [previous_bet: ...]
32
+ [next_bet: ...]
33
+
34
+ ## Active sessions
35
+
36
+ [Singleton mode — section may be omitted; or list one entry for the active session]
37
+ [Plural / parallel mode — REQUIRED, one entry per live session]
38
+ active_sessions: []
39
+
40
+ [Example populated entry:]
41
+ [active_sessions:]
42
+ [ - session_id: YYYY-MM-DD-session-slug]
43
+ [ started: YYYY-MM-DDTHH:MM:SS+0000]
44
+ [ working_dir: /path/to/repo]
45
+ [ agent: orchestrator-gated-sequential | builder | designer | ...]
46
+ [ bet: docs/iteration-bets/YYYY-MM-DD-bet.md]
47
+ [ tier: longrun | short | hotfix]
48
+
49
+ ## Active agents
50
+
51
+ [sequential mode — typically one entry]
52
+ - [role-name] ([current task])
53
+
54
+ [multi-agent mode — one entry per active agent]
55
+ - [role-name] on branch [branch-name] ([status])
56
+
57
+ [between iterations]
58
+ - None (between iterations)
59
+
60
+ ## Subsystem phases
61
+
62
+ | Subsystem | Phase | Last iteration | Notes |
63
+ |-----------|-------|---------------|-------|
64
+ | [subsystem-1] | [Inception/Elaboration/Construction/Transition] | [YYYY-MM-DD] | [one-line] |
65
+ | [subsystem-2] | [phase] | [YYYY-MM-DD] | [one-line] |
66
+
67
+ ## Gate progress (project-level)
68
+
69
+ ### Inception — [COMPLETE (YYYY-MM-DD) | IN PROGRESS | PENDING]
70
+ - [ ] Vision doc (canvas or equivalent)
71
+ - [ ] Risk register populated
72
+ - [ ] Appetite set
73
+ - [ ] Viability hypothesis written
74
+ - [ ] Build/buy/defer decision
75
+
76
+ ### Elaboration — [status]
77
+ - [ ] Architecture decisions (ADRs)
78
+ - [ ] Standards defined
79
+ - [ ] Design principles established
80
+ - [ ] Object model documented
81
+
82
+ ### Construction — [status]
83
+ - [ ] [repo-specific Construction items]
84
+
85
+ ### Transition — [status]
86
+ - [ ] Production deploy gate configured
87
+ - [ ] Smoke tests green
88
+ - [ ] Release notes published
89
+ - [ ] Chronicle closeout
90
+
91
+ ## Risk register
92
+
93
+ See docs/risk-register.md
94
+
95
+ [or if no register yet]
96
+
97
+ none yet — file when first risk materializes
98
+
99
+ ## Configuration
100
+
101
+ See substrate.config.md for external resource references.