@thebassclef/lite 1.0.3 → 1.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.
- package/dist/cli.cjs +92 -6
- package/dist/cli.js +92 -6
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lite/.claude/agents/architect.md +70 -0
- package/dist/lite/.claude/agents/builder.md +114 -0
- package/dist/lite/.claude/agents/designer.md +156 -0
- package/dist/lite/.claude/agents/reviewer.md +88 -0
- package/dist/lite/.claude/hooks/bassclef-sync.sh +85 -27
- package/dist/lite/.claude/hooks/longrun-prep-compounding-axis-check.sh +492 -0
- package/dist/lite/.claude/hooks/longrun-prep-render-check.sh +236 -0
- package/dist/lite/.claude/hooks/persona-name-scrub-check.sh +105 -0
- package/dist/lite/.claude/hooks/skill-step-list-check.sh +171 -0
- package/dist/lite/.claude/luminaries/alan-cooper.md +170 -0
- package/dist/lite/.claude/luminaries/alistair-cockburn.md +140 -0
- package/dist/lite/.claude/luminaries/amazon-pr-faq.md +34 -0
- package/dist/lite/.claude/luminaries/andreas-zeller.md +74 -0
- package/dist/lite/.claude/luminaries/ash-maurya.md +121 -0
- package/dist/lite/.claude/luminaries/bill-buxton.md +210 -0
- package/dist/lite/.claude/luminaries/charles-sanders-peirce.md +150 -0
- package/dist/lite/.claude/luminaries/david-ogilvy.md +192 -0
- package/dist/lite/.claude/luminaries/don-norman.md +173 -0
- package/dist/lite/.claude/luminaries/edward-tufte.md +179 -0
- package/dist/lite/.claude/luminaries/eric-evans.md +160 -0
- package/dist/lite/.claude/luminaries/frederick-brooks.md +50 -0
- package/dist/lite/.claude/luminaries/gang-of-four.md +157 -0
- package/dist/lite/.claude/luminaries/glenford-myers.md +230 -0
- package/dist/lite/.claude/luminaries/hunt-thomas.md +115 -0
- package/dist/lite/.claude/luminaries/hyrum-wright.md +94 -0
- package/dist/lite/.claude/luminaries/jason-fried-dhh.md +46 -0
- package/dist/lite/.claude/luminaries/jesse-james-garrett.md +154 -0
- package/dist/lite/.claude/luminaries/john-ousterhout.md +94 -0
- package/dist/lite/.claude/luminaries/karl-popper.md +132 -0
- package/dist/lite/.claude/luminaries/kent-beck.md +168 -0
- package/dist/lite/.claude/luminaries/linus-torvalds.md +218 -0
- package/dist/lite/.claude/luminaries/martin-fowler.md +164 -0
- package/dist/lite/.claude/luminaries/michael-feathers.md +125 -0
- package/dist/lite/.claude/luminaries/michael-nygard.md +118 -0
- package/dist/lite/.claude/luminaries/robert-c-martin.md +164 -0
- package/dist/lite/.claude/luminaries/saltzer-schroeder.md +194 -0
- package/dist/lite/.claude/luminaries/sophia-prater.md +193 -0
- package/dist/lite/.claude/luminaries/stephen-toulmin.md +131 -0
- package/dist/lite/.claude/luminaries/tony-hoare.md +170 -0
- package/dist/lite/.claude/luminaries/vaughn-vernon.md +50 -0
- package/dist/lite/.claude/luminaries/w-edwards-deming.md +158 -0
- package/dist/lite/.claude/rules/accessor-library-discipline.md +110 -0
- package/dist/lite/.claude/rules/adr-discipline.md +96 -0
- package/dist/lite/.claude/rules/api-conventions.md +115 -0
- package/dist/lite/.claude/rules/artifact-ingestion.md +137 -0
- package/dist/lite/.claude/rules/assert-only-after-verify.md +111 -0
- package/dist/lite/.claude/rules/blocked-items.md +139 -0
- package/dist/lite/.claude/rules/bootstrap-pair-discipline.md +106 -0
- package/dist/lite/.claude/rules/branching.md +28 -0
- package/dist/lite/.claude/rules/cold-adopter-harness-discipline.md +93 -0
- package/dist/lite/.claude/rules/commit-conventions.md +22 -0
- package/dist/lite/.claude/rules/compounding-axis-fresh-analysis.md +173 -0
- package/dist/lite/.claude/rules/compounding-sequence-fresh-analysis.md +173 -0
- package/dist/lite/.claude/rules/context-engineering.md +155 -0
- package/dist/lite/.claude/rules/context-management.md +85 -0
- package/dist/lite/.claude/rules/defensive-bash.md +52 -0
- package/dist/lite/.claude/rules/deferred-actions.md +233 -0
- package/dist/lite/.claude/rules/destructive-operations.md +69 -0
- package/dist/lite/.claude/rules/diagnosis.md +38 -0
- package/dist/lite/.claude/rules/github-issue-flash-tweet.md +114 -0
- package/dist/lite/.claude/rules/guardrails.md +73 -0
- package/dist/lite/.claude/rules/hook-wire-on-author.md +77 -0
- package/dist/lite/.claude/rules/identifier-leak-prevention.md +73 -0
- package/dist/lite/.claude/rules/iteration-bet-brief-completeness.md +43 -0
- package/dist/lite/.claude/rules/lite-manifest-schema-change-discipline.md +79 -0
- package/dist/lite/.claude/rules/longrun-prep-plan-doc-compression.md +77 -0
- package/dist/lite/.claude/rules/loop-discipline.md +71 -0
- package/dist/lite/.claude/rules/manual-prod-approval.md +100 -0
- package/dist/lite/.claude/rules/marker-enrichment-discipline.md +72 -0
- package/dist/lite/.claude/rules/mobile-ephemeral-session.md +109 -0
- package/dist/lite/.claude/rules/new-dependency-check.md +44 -0
- package/dist/lite/.claude/rules/oo-ad-entry-point.md +95 -0
- package/dist/lite/.claude/rules/operator-facing-prose.md +177 -0
- package/dist/lite/.claude/rules/option-label-discipline.md +82 -0
- package/dist/lite/.claude/rules/pattern-annotation.md +83 -0
- package/dist/lite/.claude/rules/persona-name-leak-scrub.md +90 -0
- package/dist/lite/.claude/rules/plain-english-discipline.md +132 -0
- package/dist/lite/.claude/rules/plan-enumeration-needs-value-props.md +177 -0
- package/dist/lite/.claude/rules/pr-body-shape.md +195 -0
- package/dist/lite/.claude/rules/pr-strategy.md +142 -0
- package/dist/lite/.claude/rules/pr-title-shape.md +90 -0
- package/dist/lite/.claude/rules/prototype-workflow.md +53 -0
- package/dist/lite/.claude/rules/reserved-skill-names.md +103 -0
- package/dist/lite/.claude/rules/schema-management.md +42 -0
- package/dist/lite/.claude/rules/sdlc-gates.md +149 -0
- package/dist/lite/.claude/rules/security.md +37 -0
- package/dist/lite/.claude/rules/session-artifacts.md +236 -0
- package/dist/lite/.claude/rules/skill-composition-declarations.md +105 -0
- package/dist/lite/.claude/rules/skill-description-clarity.md +196 -0
- package/dist/lite/.claude/rules/skill-procedure-step-list.md +119 -0
- package/dist/lite/.claude/rules/sprint-prep-preset-picker.md +76 -0
- package/dist/lite/.claude/rules/state-schema-validation.md +156 -0
- package/dist/lite/.claude/rules/stuck-signal-diagnostic.md +111 -0
- package/dist/lite/.claude/rules/substrate-config-schema.md +85 -0
- package/dist/lite/.claude/rules/test-list-discipline.md +129 -0
- package/dist/lite/.claude/rules/test-sufficiency.md +186 -0
- package/dist/lite/.claude/rules/testing-tier-config.md +125 -0
- package/dist/lite/.claude/rules/testing.md +38 -0
- package/dist/lite/.claude/rules/turn-estimate-grounding.md +82 -0
- package/dist/lite/.claude/rules/visual-hierarchy.md +427 -0
- package/dist/lite/.claude/rules/we-dont-break-adopters.md +103 -0
- package/dist/lite/.claude/rules/whereami-load-bearing.md +184 -0
- package/dist/lite/.claude/rules/writing-craft-discipline.md +72 -0
- package/dist/lite/.claude/rules/wu-sequencing-compounds.md +119 -0
- package/dist/lite/.claude/skills/build/SKILL.md +640 -0
- package/dist/lite/.claude/skills/chronicle/SKILL.md +55 -0
- package/dist/lite/.claude/skills/clean-artifacts/SKILL.md +249 -0
- package/dist/lite/.claude/skills/decompose/SKILL.md +280 -0
- package/dist/lite/.claude/skills/diagnose/SKILL.md +297 -0
- package/dist/lite/.claude/skills/feynman/SKILL.md +90 -0
- package/dist/lite/.claude/skills/howdoi/SKILL.md +105 -0
- package/dist/lite/.claude/skills/ia-model/SKILL.md +108 -0
- package/dist/lite/.claude/skills/interaction-design/SKILL.md +112 -0
- package/dist/lite/.claude/skills/interpret-input/SKILL.md +180 -0
- package/dist/lite/.claude/skills/journal/SKILL.md +209 -0
- package/dist/lite/.claude/skills/kiss/SKILL.md +449 -0
- package/dist/lite/.claude/skills/launch/SKILL.md +915 -0
- package/dist/lite/.claude/skills/lean-canvas/SKILL.md +332 -0
- package/dist/lite/.claude/skills/longrun/SKILL.md +512 -0
- package/dist/lite/.claude/skills/luminary/SKILL.md +481 -0
- package/dist/lite/.claude/skills/ogilvy-writing-audit/SKILL.md +177 -0
- package/dist/lite/.claude/skills/onboard-repo/SKILL.md +1640 -0
- package/dist/lite/.claude/skills/pattern-review/SKILL.md +99 -0
- package/dist/lite/.claude/skills/personas/SKILL.md +207 -0
- package/dist/lite/.claude/skills/promote/SKILL.md +283 -0
- package/dist/lite/.claude/skills/requirement/SKILL.md +98 -0
- package/dist/lite/.claude/skills/retro/SKILL.md +117 -0
- package/dist/lite/.claude/skills/riff/SKILL.md +114 -0
- package/dist/lite/.claude/skills/roadmap-reconcile/SKILL.md +163 -0
- package/dist/lite/.claude/skills/session-end/SKILL.md +309 -0
- package/dist/lite/.claude/skills/session-log/SKILL.md +299 -0
- package/dist/lite/.claude/skills/skills/SKILL.md +228 -0
- package/dist/lite/.claude/skills/spec/SKILL.md +105 -0
- package/dist/lite/.claude/skills/sprint/SKILL.md +418 -0
- package/dist/lite/.claude/skills/stage/SKILL.md +384 -0
- package/dist/lite/.claude/skills/state-a-problem/SKILL.md +185 -0
- package/dist/lite/.claude/skills/temperance/SKILL.md +108 -0
- package/dist/lite/.claude/skills/use-case/SKILL.md +417 -0
- package/dist/lite/.claude/skills/user-stories/SKILL.md +268 -0
- package/dist/lite/.claude/skills/value-prop/SKILL.md +251 -0
- package/dist/lite/.claude/skills/verify/SKILL.md +160 -0
- package/dist/lite/.claude/skills/visual-review/SKILL.md +503 -0
- package/dist/lite/.claude/skills/whats-the-plan/SKILL.md +202 -0
- package/dist/lite/.claude/skills/whereami/SKILL.md +307 -0
- package/dist/lite/AGENTS.md +79 -0
- package/dist/lite/CLAUDE-lite.md +85 -0
- package/dist/lite/CODE_OF_CONDUCT.md +28 -0
- package/dist/lite/CONTRIBUTING.md +177 -0
- package/dist/lite/README.md +173 -0
- package/dist/lite/SECURITY.md +19 -0
- package/dist/lite/architecture/decisions/ADR-029-release-pipeline.md +79 -0
- package/dist/lite/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +139 -0
- package/dist/lite/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +192 -0
- package/dist/lite/architecture/decisions/ADR-039-release-tagging-scheme.md +145 -0
- package/dist/lite/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +155 -0
- package/dist/lite/architecture/decisions/ADR-044-unified-skill-body-template.md +162 -0
- package/dist/lite/lib/clean-artifacts-sweep.sh +112 -0
- package/dist/lite/lib/code-comment-discipline.sh +144 -0
- package/dist/lite/lib/composer-preflight.sh +459 -0
- package/dist/lite/lib/deferred-actions.sh +146 -0
- package/dist/lite/lib/hook-header-parser.sh +61 -0
- package/dist/lite/lib/hook-heartbeat.sh +152 -0
- package/dist/lite/lib/hook-inject.sh +255 -0
- package/dist/lite/lib/hook-installer.sh +195 -0
- package/dist/lite/lib/luminary-pick.sh +96 -0
- package/dist/lite/lib/output-discipline.sh +143 -0
- package/dist/lite/lib/prose-scan-boundary.sh +171 -0
- package/dist/lite/lib/rewrite-check.sh +214 -0
- package/dist/lite/lib/session-rescue.sh +151 -0
- package/dist/lite/lib/source-graph-walker.sh +277 -0
- package/dist/lite/lib/state.sh +1372 -0
- package/dist/lite/lib/telemetry.sh +205 -0
- package/dist/lite/lib/tier-check.sh +187 -0
- package/dist/lite/lib/tier-dependency-audit.sh +1088 -0
- package/dist/lite/presence/install/bassclef-hook-connect.sh +178 -0
- package/dist/lite/presence/install/bassclef-sync.dispatcher.template.sh +841 -0
- package/dist/lite/presence/install/bassclef-sync.template.sh +2278 -0
- package/dist/lite/presence/install/schedule-auto-save.cron.sh +88 -0
- package/dist/lite/presence/install/schedule-auto-save.taskscheduler.md +122 -0
- package/dist/lite/scripts/aggregate-telemetry.sh +217 -0
- package/dist/lite/scripts/analyze-tier-dependencies.sh +239 -0
- package/dist/lite/scripts/generate-lite-manifest.sh +505 -0
- package/dist/lite/scripts/generate-tier-manifest.sh +28 -0
- package/dist/lite/scripts/intent-drift-check.sh +456 -0
- package/dist/lite/scripts/lite-manifest-drift-check.sh +146 -0
- package/dist/lite/scripts/render-lite-manifest-doc.sh +150 -0
- package/dist/lite/standards/adr-template.md +86 -0
- package/dist/lite/standards/api-conventions/nextjs.md +84 -0
- package/dist/lite/standards/artifact-composition.md +209 -0
- package/dist/lite/standards/bash-hook-safety.md +246 -0
- package/dist/lite/standards/bassclef-configs-schema.md +232 -0
- package/dist/lite/standards/bassclef-evolution.md +143 -0
- package/dist/lite/standards/bassclef-internal-jargon.md +244 -0
- package/dist/lite/standards/bassclef-managed-sentinel.md +96 -0
- package/dist/lite/standards/bassclef-source-config.md +228 -0
- package/dist/lite/standards/branch-stacking.md +408 -0
- package/dist/lite/standards/code-safety-principles.md +176 -0
- package/dist/lite/standards/composer-prerequisites.md +155 -0
- package/dist/lite/standards/deferred-actions-schema.md +204 -0
- package/dist/lite/standards/dependency-discipline/cargo.md +39 -0
- package/dist/lite/standards/dependency-discipline/gem.md +43 -0
- package/dist/lite/standards/dependency-discipline/go-mod.md +41 -0
- package/dist/lite/standards/dependency-discipline/npm.md +42 -0
- package/dist/lite/standards/dependency-discipline/pip.md +42 -0
- package/dist/lite/standards/deployment-topology/ec2-tailscale.md +225 -0
- package/dist/lite/standards/deployment-topology.md +69 -0
- package/dist/lite/standards/docs-sync-allowlist.md +76 -0
- package/dist/lite/standards/domain-and-dns.md +145 -0
- package/dist/lite/standards/frontend-stack.md +67 -0
- package/dist/lite/standards/frontmatter-schema.md +154 -0
- package/dist/lite/standards/graceful-exit.md +227 -0
- package/dist/lite/standards/hook-idempotency.md +102 -0
- package/dist/lite/standards/hook-injection-discipline.md +202 -0
- package/dist/lite/standards/hook-install-class.md +215 -0
- package/dist/lite/standards/input-handler-interface.md +152 -0
- package/dist/lite/standards/lite-manifest-schema-changes.md +180 -0
- package/dist/lite/standards/lite-manifest.json +2797 -0
- package/dist/lite/standards/luminary-matching.md +105 -0
- package/dist/lite/standards/luminary-problem-patterns.md +481 -0
- package/dist/lite/standards/migration-discipline/active-record.md +50 -0
- package/dist/lite/standards/migration-discipline/alembic.md +43 -0
- package/dist/lite/standards/migration-discipline/gorm.md +50 -0
- package/dist/lite/standards/migration-discipline/prisma.md +53 -0
- package/dist/lite/standards/migration-discipline/sqlalchemy.md +51 -0
- package/dist/lite/standards/mobile-ephemeral-session.md +167 -0
- package/dist/lite/standards/model-routing-discipline.md +160 -0
- package/dist/lite/standards/ogilvy-writing-rules.md +225 -0
- package/dist/lite/standards/opener-discipline.md +96 -0
- package/dist/lite/standards/operator-facing-prose-discipline.md +201 -0
- package/dist/lite/standards/persona-schema.md +229 -0
- package/dist/lite/standards/pluggable-luminaries.md +323 -0
- package/dist/lite/standards/pr-body-discipline.md +115 -0
- package/dist/lite/standards/preview-state-schema.md +189 -0
- package/dist/lite/standards/project-directory-layout.md +276 -0
- package/dist/lite/standards/release-tagging.md +137 -0
- package/dist/lite/standards/reserved-skill-names.md +120 -0
- package/dist/lite/standards/scannable-multi-option-output.md +265 -0
- package/dist/lite/standards/sdlc-compliance.md +286 -0
- package/dist/lite/standards/sdlc-gates/typescript.md +57 -0
- package/dist/lite/standards/secrets-lifecycle.md +210 -0
- package/dist/lite/standards/security-scanner-adapter.md +145 -0
- package/dist/lite/standards/session-board.md +256 -0
- package/dist/lite/standards/skill-output-discipline.md +121 -0
- package/dist/lite/standards/state-spine-contract.md +255 -0
- package/dist/lite/standards/state-spine.md +511 -0
- package/dist/lite/standards/steering-hints/kiss-words.md +11 -0
- package/dist/lite/standards/substrate-config-schema.md +267 -0
- package/dist/lite/standards/tech-stack-config.md +109 -0
- package/dist/lite/standards/tier-dependency-analysis.md +167 -0
- package/dist/lite/standards/tier-runtime-deps/lite.md +57 -0
- package/dist/lite/standards/tier-tag-schema.md +155 -0
- package/dist/lite/standards/two-layer-config.md +99 -0
- package/dist/lite/standards/use-case-format.md +292 -0
- package/dist/lite/standards/user-story-invest.md +268 -0
- package/dist/lite/standards/velocity-and-appetite.md +229 -0
- package/dist/lite/standards/voice-input-pattern.md +119 -0
- package/dist/lite/standards/whereami-schema.md +301 -0
- package/dist/lite/standards/worktree-management.md +211 -0
- package/dist/lite/standards/writing-guide.md +213 -0
- package/dist/lite/templates/chronicle-template.md +75 -0
- package/dist/lite/templates/deferred-action-template.md +45 -0
- package/dist/lite/templates/memory-proposal-template.md +77 -0
- package/dist/lite/templates/persona-template.md +200 -0
- package/dist/lite/templates/pr-faq.md +45 -0
- package/dist/lite/templates/secret-rotation-template.md +162 -0
- package/dist/lite/templates/spec-template.md +131 -0
- package/dist/lite/templates/use-case-template.md +194 -0
- package/dist/lite/templates/user-story-template.md +107 -0
- package/dist/lite/templates/whereami-template.md +101 -0
- package/package.json +1 -1
|
@@ -0,0 +1,184 @@
|
|
|
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
|
+
## Protocol
|
|
14
|
+
|
|
15
|
+
### Session-start read (MUST)
|
|
16
|
+
|
|
17
|
+
Every session's orientation pass reads `docs/whereami.md` BEFORE
|
|
18
|
+
consulting iteration-bets or chronicles for project-state questions.
|
|
19
|
+
Downstream skills (`/sprint`, `/substrate-check`) use whereami as
|
|
20
|
+
primary source, not fallback.
|
|
21
|
+
|
|
22
|
+
If the artifact is missing or stale (per freshness rules below), the
|
|
23
|
+
`bassclef-sync.sh` session-start hook fires BLOCKED (per
|
|
24
|
+
`blocked-items.md`). The session does not proceed with substantive
|
|
25
|
+
work until resolved or explicitly deferred.
|
|
26
|
+
|
|
27
|
+
### Session-end write (MUST)
|
|
28
|
+
|
|
29
|
+
Every `/session-end` execution updates `docs/whereami.md`:
|
|
30
|
+
|
|
31
|
+
- Bump `last_updated` to current UTC timestamp
|
|
32
|
+
- Set `session:` field to the chronicle filename just written
|
|
33
|
+
- Update any field that materially changed during the session:
|
|
34
|
+
- `phase:` if project phase transitioned
|
|
35
|
+
- `iteration_bet:` if bet opened or closed
|
|
36
|
+
- `iteration_phase:` if WS advanced
|
|
37
|
+
- Subsystem row if subsystem moved
|
|
38
|
+
- Gate progress checkboxes if any toggled
|
|
39
|
+
|
|
40
|
+
Same tier as chronicle — non-negotiable session artifact.
|
|
41
|
+
|
|
42
|
+
### Freshness rules
|
|
43
|
+
|
|
44
|
+
Hook checks two signals: `last_updated` field age **AND** commits-since-
|
|
45
|
+
last-whereami-update (computed via `git log -1 --format=%H -- docs/whereami.md`
|
|
46
|
+
+ `git rev-list --count <commit>..HEAD`). Both signals together close the
|
|
47
|
+
"idle consumer" false-positive loop where calendar age alone fired BLOCKED
|
|
48
|
+
on repos that hadn't done any work since the last update (bassclef#514).
|
|
49
|
+
|
|
50
|
+
| Age | Commits since whereami | Signal | Session behavior |
|
|
51
|
+
|-----|------------------------|--------|-----------------|
|
|
52
|
+
| <3 days | any | Green | Proceed normally |
|
|
53
|
+
| 3–7 days | any | Warning | Warning surfaced; session proceeds |
|
|
54
|
+
| ≥7 days | 0 (idle) | **INFO** | Friendly note that repo's idle; session proceeds |
|
|
55
|
+
| ≥7 days | >0 (work happened) | BLOCKED | Session halts on substantive work until refreshed |
|
|
56
|
+
| Missing file | n/a | BLOCKED | Session halts; create from template |
|
|
57
|
+
|
|
58
|
+
The idle-as-INFO downgrade matters because bassclef-substrate consumers
|
|
59
|
+
get session-start hook output even when they're not actively iterating.
|
|
60
|
+
A consumer paused for two weeks should get a "you're idle" note, not a
|
|
61
|
+
gate that interrupts the next time someone opens the repo.
|
|
62
|
+
|
|
63
|
+
Operator may override with explicit "skip whereami this session" per
|
|
64
|
+
`blocked-items.md` deferral rules. Silence is not deferral. INFO does
|
|
65
|
+
not require deferral (it's not a gate).
|
|
66
|
+
|
|
67
|
+
### On session-start BLOCKED
|
|
68
|
+
|
|
69
|
+
When the hook surfaces a whereami-stale BLOCKED block, the agent:
|
|
70
|
+
|
|
71
|
+
1. Echo the BLOCKED block verbatim to the operator (same pattern as
|
|
72
|
+
`bassclef-hook-drift-blocker.md`)
|
|
73
|
+
2. Offer two paths:
|
|
74
|
+
- **Refresh now**: run `/session-end`-style whereami update step
|
|
75
|
+
at session-start as the first action
|
|
76
|
+
- **Defer**: operator explicitly says "skip whereami"
|
|
77
|
+
3. Do NOT start other substantive work until one of the paths is
|
|
78
|
+
taken
|
|
79
|
+
|
|
80
|
+
### On missing file
|
|
81
|
+
|
|
82
|
+
Fresh consumer repo scenario. `bassclef-sync.sh` surfaces BLOCKED:
|
|
83
|
+
"docs/whereami.md missing; create from templates/whereami-template.md"
|
|
84
|
+
|
|
85
|
+
Agent proposes to copy the template and fill minimal fields
|
|
86
|
+
(phase, iteration — or "none — new repo"). Operator approves or
|
|
87
|
+
overrides.
|
|
88
|
+
|
|
89
|
+
## What counts as a material change (session-end trigger)
|
|
90
|
+
|
|
91
|
+
Anything that changed the answer to "where are we?":
|
|
92
|
+
|
|
93
|
+
- Phase transition (Inception → Elaboration, etc.)
|
|
94
|
+
- Iteration opened, closed, or re-shaped
|
|
95
|
+
- WS within active goal advanced (WS-1 → WS-2)
|
|
96
|
+
- Subsystem row's phase or "last iteration" date changed
|
|
97
|
+
- Gate progress checkbox toggled
|
|
98
|
+
- Active agents changed (sequential→multi-agent or vice versa)
|
|
99
|
+
|
|
100
|
+
What does NOT trigger: just timestamp refresh without any field change
|
|
101
|
+
is still a valid update (keeps freshness meter green). The obligation
|
|
102
|
+
is to bump `last_updated` every session; field changes are additive.
|
|
103
|
+
|
|
104
|
+
## Who reads whereami (and relies on it being fresh)
|
|
105
|
+
|
|
106
|
+
- `/sprint` — primary source for orientation (step 1, not step 4
|
|
107
|
+
fallback)
|
|
108
|
+
- `bassclef-sync.sh` — freshness check only
|
|
109
|
+
- `/substrate-check` — presence + schema validation
|
|
110
|
+
- Operator — ad-hoc project-state eyeballing
|
|
111
|
+
- Chronicle writer — phase context for retrospective
|
|
112
|
+
|
|
113
|
+
## Live vs archive split (per bassclef-upstream#1080)
|
|
114
|
+
|
|
115
|
+
`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.
|
|
116
|
+
|
|
117
|
+
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.
|
|
118
|
+
|
|
119
|
+
**Contract:**
|
|
120
|
+
|
|
121
|
+
- Live keeps the last 7 days of `operator_recap_*` blocks (default; override via `scripts/rotate-whereami.py --days N`)
|
|
122
|
+
- Archive holds older blocks grouped by month
|
|
123
|
+
- Live carries an `archive_dir:` field in frontmatter naming the archive location
|
|
124
|
+
- Session-start freshness signal reads live only — archive is read-only historical
|
|
125
|
+
- 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).
|
|
126
|
+
|
|
127
|
+
**What reads from archive:**
|
|
128
|
+
|
|
129
|
+
- Operator when they need >7 day historical context
|
|
130
|
+
- `/journal` when writing session narratives that span the rotation boundary
|
|
131
|
+
- Explicit follow-up queries (e.g., "what happened in 2026-07?")
|
|
132
|
+
|
|
133
|
+
**What reads from live only:**
|
|
134
|
+
|
|
135
|
+
- Session-start freshness signals (per this rule)
|
|
136
|
+
- `/sprint` orientation (primary source)
|
|
137
|
+
- `/substrate-check` (presence + schema validation)
|
|
138
|
+
- Chronicle writer at session-end (updates live only)
|
|
139
|
+
|
|
140
|
+
## What whereami is NOT
|
|
141
|
+
|
|
142
|
+
Artifacts adjacent to whereami have distinct roles. Don't conflate:
|
|
143
|
+
|
|
144
|
+
- **Iteration bet** (scope contract) — whereami references it by path
|
|
145
|
+
- **Chronicle** (retrospective narrative) — whereami is current-state
|
|
146
|
+
snapshot
|
|
147
|
+
- **substrate.config.md** (external resources) — different concern
|
|
148
|
+
(where is X vs. where are we)
|
|
149
|
+
- **Risk register** — separate artifact; whereami points to it
|
|
150
|
+
|
|
151
|
+
## Override paths
|
|
152
|
+
|
|
153
|
+
- `SKIP_WHEREAMI=1 <command>` — per-command override (logged to trace)
|
|
154
|
+
- Operator statement: "skip whereami this session" — verbatim deferral
|
|
155
|
+
per `blocked-items.md`
|
|
156
|
+
- `substrate.config.md: whereami_freshness_days: N` — per-repo
|
|
157
|
+
threshold override (if N=0, freshness check disabled, but presence
|
|
158
|
+
still required)
|
|
159
|
+
|
|
160
|
+
## Relationship to other rules
|
|
161
|
+
|
|
162
|
+
- `blocked-items.md` — BLOCKED protocol; whereami staleness fires it
|
|
163
|
+
- `session-artifacts.md` — chronicle + journal-entry obligations; whereami
|
|
164
|
+
joins this tier
|
|
165
|
+
- `bassclef-hook-drift-blocker.md` — same hook-fired BLOCKED pattern;
|
|
166
|
+
whereami BLOCKED mirrors its shape
|
|
167
|
+
- `sdlc-gates.md` — session-start orientation is where whereami fires
|
|
168
|
+
in the gate ordering
|
|
169
|
+
- `artifact-ingestion.md` — whereami is one of the "prior artifacts" a
|
|
170
|
+
session-start orientation MUST read before producing
|
|
171
|
+
|
|
172
|
+
## Enforcement
|
|
173
|
+
|
|
174
|
+
- Hook: `bassclef-sync.sh` section emits BLOCKED on stale/missing
|
|
175
|
+
(added `BASSCLEF_SYNC_VERSION` bump in WS-3 of bet 2026-04-16c)
|
|
176
|
+
- Skill: `/session-end` procedure includes whereami-update as MUST
|
|
177
|
+
tier
|
|
178
|
+
- Skill: `/sprint` procedure reads whereami as step 1 primary source
|
|
179
|
+
- Skill: `/substrate-check` validates presence + schema conformance
|
|
180
|
+
- Template: `templates/whereami-template.md` provides start
|
|
181
|
+
shape; `/autonomous start` creates from template
|
|
182
|
+
|
|
183
|
+
The rule stands regardless of hook availability. The hook is the
|
|
184
|
+
mechanical backstop; the rule is the reasoning.
|
|
@@ -0,0 +1,72 @@
|
|
|
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
|
+
## Anti-patterns
|
|
63
|
+
|
|
64
|
+
**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.
|
|
65
|
+
|
|
66
|
+
**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.
|
|
67
|
+
|
|
68
|
+
**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.
|
|
69
|
+
|
|
70
|
+
## Override
|
|
71
|
+
|
|
72
|
+
`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).
|
|
@@ -0,0 +1,119 @@
|
|
|
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
|
+
## Mechanical layer
|
|
87
|
+
|
|
88
|
+
V1 ships this rule + the SKILL.md Step 1.7 procedure update.
|
|
89
|
+
|
|
90
|
+
**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:
|
|
91
|
+
|
|
92
|
+
- **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).
|
|
93
|
+
- **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.
|
|
94
|
+
- **Silent** on non-matching paths, non-Edit tool calls, or goal docs without a steps table.
|
|
95
|
+
|
|
96
|
+
Overrides (logged via trace-helper):
|
|
97
|
+
- `SKIP_PRODUCES_CONSUMES_CHECK=1` — bypass P/C only
|
|
98
|
+
- `SKIP_BET_DOC_GATE=1` — bypass both P/C and thread-walk
|
|
99
|
+
|
|
100
|
+
Per `feedback_hooks_beat_methodology_for_substrate_quality` memory: V2 hook ships ALONGSIDE the methodology — both required.
|
|
101
|
+
|
|
102
|
+
## Override path
|
|
103
|
+
|
|
104
|
+
`SKIP_WU_SEQUENCING_COMPOUNDS=1 <command>` (when V2 hook ships) — logged via trace-helper. Use rarely:
|
|
105
|
+
|
|
106
|
+
- Single-WU bets — no sequencing applies; the column is trivially empty
|
|
107
|
+
- Genuinely parallel atomic WUs that share a review window (declare in goal doc body)
|
|
108
|
+
- Migration scripts authoring many goal docs at once
|
|
109
|
+
|
|
110
|
+
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.
|
|
111
|
+
|
|
112
|
+
## Composes with
|
|
113
|
+
|
|
114
|
+
- `.claude/rules/arc-level-orientation-before-leaf.md` — sister at orientation surface (sister bassclef#1347 fixes one-level walk)
|
|
115
|
+
- `.claude/rules/plan-enumeration-needs-value-props.md` — sister at choice-presentation surface
|
|
116
|
+
- `.claude/rules/blocked-items.md` — BLOCK protocol the V2 hook fires
|
|
117
|
+
- `.claude/skills/longrun/SKILL.md` Step 1.7 — primary surface this rule extends
|
|
118
|
+
- `.claude/skills/sprint/SKILL.md` — sister surface (next-work proposals)
|
|
119
|
+
- standards/branch-stacking.md — stack manifest already declares dependencies between WUs; this rule extends to the goal doc body
|