@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.
- package/dist/cli.cjs +216 -137
- package/dist/cli.js +218 -139
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lite/.bassclef-source.json +10 -0
- package/dist/lite/.claude/settings.json +212 -0
- package/dist/lite/CLAUDE.md +41 -0
- package/dist/lite/gitignore +58 -0
- package/dist/lite/standards/bassclef-wiring-manifest.json +497 -0
- package/dist/lite/whereami.md +24 -0
- package/package.json +8 -2
- package/substrate/.bassclef/lite-manifest.json +0 -2701
- package/substrate/.claude/agents/architect.md +0 -70
- package/substrate/.claude/agents/builder.md +0 -114
- package/substrate/.claude/agents/designer.md +0 -156
- package/substrate/.claude/agents/reviewer.md +0 -88
- package/substrate/.claude/hooks/artifact-ingestion-gate.sh +0 -357
- package/substrate/.claude/hooks/assert-verify-steering.sh +0 -77
- package/substrate/.claude/hooks/bassclef-source-config-validate.sh +0 -215
- package/substrate/.claude/hooks/bassclef-sync.sh +0 -634
- package/substrate/.claude/hooks/compound-noun-scrub.sh +0 -292
- package/substrate/.claude/hooks/kiss-expansion-inject.sh +0 -69
- package/substrate/.claude/hooks/longrun-prep-compounding-axis-check.sh +0 -492
- package/substrate/.claude/hooks/longrun-prep-compounding-sequence-check.sh +0 -492
- package/substrate/.claude/hooks/plain-english-steering.sh +0 -156
- package/substrate/.claude/hooks/post-skill-friction-check.sh +0 -177
- package/substrate/.claude/hooks/post-skill-telemetry.sh +0 -62
- package/substrate/.claude/hooks/pre-build-gate.sh +0 -511
- package/substrate/.claude/hooks/pre-commit-gate.sh +0 -451
- package/substrate/.claude/hooks/session-end.sh +0 -433
- package/substrate/.claude/hooks/session-reflection.sh +0 -303
- package/substrate/.claude/hooks/skill-body-grade-gate.sh +0 -219
- package/substrate/.claude/hooks/skill-body-intent-drift.sh +0 -107
- package/substrate/.claude/hooks/skill-step-list-check.sh +0 -171
- package/substrate/.claude/hooks/state-validate.sh +0 -271
- package/substrate/.claude/hooks/substrate-clarity-gate.sh +0 -1110
- package/substrate/.claude/hooks/temperance-gate.sh +0 -147
- package/substrate/.claude/hooks/testing-tier-enforce.sh +0 -233
- package/substrate/.claude/hooks/turn-prose-grade-measure.sh +0 -219
- package/substrate/.claude/hooks/turn-prose-kiss-check.sh +0 -463
- package/substrate/.claude/hooks/vocabulary-migration-check.sh +0 -171
- package/substrate/.claude/hooks/whereami-utc-gate.sh +0 -142
- package/substrate/.claude/luminaries/alan-cooper.md +0 -170
- package/substrate/.claude/luminaries/alistair-cockburn.md +0 -140
- package/substrate/.claude/luminaries/amazon-pr-faq.md +0 -34
- package/substrate/.claude/luminaries/ash-maurya.md +0 -121
- package/substrate/.claude/luminaries/bill-buxton.md +0 -210
- package/substrate/.claude/luminaries/charles-sanders-peirce.md +0 -150
- package/substrate/.claude/luminaries/david-ogilvy.md +0 -192
- package/substrate/.claude/luminaries/don-norman.md +0 -173
- package/substrate/.claude/luminaries/edward-tufte.md +0 -179
- package/substrate/.claude/luminaries/eric-evans.md +0 -160
- package/substrate/.claude/luminaries/frederick-brooks.md +0 -50
- package/substrate/.claude/luminaries/gang-of-four.md +0 -157
- package/substrate/.claude/luminaries/glenford-myers.md +0 -230
- package/substrate/.claude/luminaries/hunt-thomas.md +0 -115
- package/substrate/.claude/luminaries/hyrum-wright.md +0 -94
- package/substrate/.claude/luminaries/jason-fried-dhh.md +0 -46
- package/substrate/.claude/luminaries/jesse-james-garrett.md +0 -154
- package/substrate/.claude/luminaries/john-ousterhout.md +0 -94
- package/substrate/.claude/luminaries/karl-popper.md +0 -132
- package/substrate/.claude/luminaries/kent-beck.md +0 -168
- package/substrate/.claude/luminaries/linus-torvalds.md +0 -218
- package/substrate/.claude/luminaries/martin-fowler.md +0 -164
- package/substrate/.claude/luminaries/michael-feathers.md +0 -125
- package/substrate/.claude/luminaries/michael-nygard.md +0 -118
- package/substrate/.claude/luminaries/robert-c-martin.md +0 -164
- package/substrate/.claude/luminaries/saltzer-schroeder.md +0 -194
- package/substrate/.claude/luminaries/sophia-prater.md +0 -193
- package/substrate/.claude/luminaries/stephen-toulmin.md +0 -131
- package/substrate/.claude/luminaries/tony-hoare.md +0 -170
- package/substrate/.claude/luminaries/vaughn-vernon.md +0 -50
- package/substrate/.claude/luminaries/w-edwards-deming.md +0 -158
- package/substrate/.claude/rules/accessor-library-discipline.md +0 -138
- package/substrate/.claude/rules/adr-discipline.md +0 -120
- package/substrate/.claude/rules/api-conventions.md +0 -125
- package/substrate/.claude/rules/artifact-ingestion.md +0 -179
- package/substrate/.claude/rules/assert-only-after-verify.md +0 -137
- package/substrate/.claude/rules/blocked-items.md +0 -146
- package/substrate/.claude/rules/bootstrap-pair-discipline.md +0 -141
- package/substrate/.claude/rules/branching.md +0 -28
- package/substrate/.claude/rules/cold-adopter-harness-discipline.md +0 -129
- package/substrate/.claude/rules/commit-conventions.md +0 -22
- package/substrate/.claude/rules/compounding-axis-fresh-analysis.md +0 -188
- package/substrate/.claude/rules/compounding-sequence-fresh-analysis.md +0 -188
- package/substrate/.claude/rules/context-engineering.md +0 -202
- package/substrate/.claude/rules/context-management.md +0 -85
- package/substrate/.claude/rules/defensive-bash.md +0 -68
- package/substrate/.claude/rules/deferred-actions.md +0 -233
- package/substrate/.claude/rules/destructive-operations.md +0 -69
- package/substrate/.claude/rules/diagnosis.md +0 -38
- package/substrate/.claude/rules/github-issue-flash-tweet.md +0 -156
- package/substrate/.claude/rules/guardrails.md +0 -73
- package/substrate/.claude/rules/hook-wire-on-author.md +0 -103
- package/substrate/.claude/rules/identifier-leak-prevention.md +0 -104
- package/substrate/.claude/rules/iteration-bet-brief-completeness.md +0 -54
- package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +0 -98
- package/substrate/.claude/rules/longrun-prep-plan-doc-compression.md +0 -89
- package/substrate/.claude/rules/loop-discipline.md +0 -81
- package/substrate/.claude/rules/manual-prod-approval.md +0 -100
- package/substrate/.claude/rules/marker-enrichment-discipline.md +0 -99
- package/substrate/.claude/rules/mobile-ephemeral-session.md +0 -109
- package/substrate/.claude/rules/new-dependency-check.md +0 -51
- package/substrate/.claude/rules/oo-ad-entry-point.md +0 -117
- package/substrate/.claude/rules/operator-facing-prose.md +0 -196
- package/substrate/.claude/rules/option-label-discipline.md +0 -108
- package/substrate/.claude/rules/pattern-annotation.md +0 -100
- package/substrate/.claude/rules/plain-english-discipline.md +0 -156
- package/substrate/.claude/rules/plan-enumeration-needs-value-props.md +0 -211
- package/substrate/.claude/rules/pr-body-shape.md +0 -317
- package/substrate/.claude/rules/pr-strategy.md +0 -167
- package/substrate/.claude/rules/pr-title-shape.md +0 -161
- package/substrate/.claude/rules/prototype-workflow.md +0 -65
- package/substrate/.claude/rules/reserved-skill-names.md +0 -123
- package/substrate/.claude/rules/schema-management.md +0 -49
- package/substrate/.claude/rules/sdlc-gates.md +0 -149
- package/substrate/.claude/rules/security.md +0 -37
- package/substrate/.claude/rules/session-artifacts.md +0 -236
- package/substrate/.claude/rules/skill-composition-declarations.md +0 -124
- package/substrate/.claude/rules/skill-description-clarity.md +0 -247
- package/substrate/.claude/rules/skill-procedure-step-list.md +0 -137
- package/substrate/.claude/rules/state-schema-validation.md +0 -162
- package/substrate/.claude/rules/stuck-signal-diagnostic.md +0 -140
- package/substrate/.claude/rules/substrate-config-schema.md +0 -98
- package/substrate/.claude/rules/test-list-discipline.md +0 -175
- package/substrate/.claude/rules/test-sufficiency.md +0 -210
- package/substrate/.claude/rules/testing-tier-config.md +0 -145
- package/substrate/.claude/rules/testing.md +0 -38
- package/substrate/.claude/rules/turn-estimate-grounding.md +0 -134
- package/substrate/.claude/rules/visual-hierarchy.md +0 -437
- package/substrate/.claude/rules/we-dont-break-adopters.md +0 -126
- package/substrate/.claude/rules/whereami-load-bearing.md +0 -202
- package/substrate/.claude/rules/writing-craft-discipline.md +0 -92
- package/substrate/.claude/rules/wu-sequencing-compounds.md +0 -145
- package/substrate/.claude/skills/build/SKILL.md +0 -640
- package/substrate/.claude/skills/chronicle/SKILL.md +0 -55
- package/substrate/.claude/skills/clean-artifacts/SKILL.md +0 -249
- package/substrate/.claude/skills/decompose/SKILL.md +0 -280
- package/substrate/.claude/skills/diagnose/SKILL.md +0 -297
- package/substrate/.claude/skills/feynman/SKILL.md +0 -90
- package/substrate/.claude/skills/howdoi/SKILL.md +0 -105
- package/substrate/.claude/skills/ia-model/SKILL.md +0 -108
- package/substrate/.claude/skills/interaction-design/SKILL.md +0 -112
- package/substrate/.claude/skills/interpret-input/SKILL.md +0 -180
- package/substrate/.claude/skills/journal/SKILL.md +0 -209
- package/substrate/.claude/skills/kiss/SKILL.md +0 -449
- package/substrate/.claude/skills/launch/SKILL.md +0 -915
- package/substrate/.claude/skills/lean-canvas/SKILL.md +0 -332
- package/substrate/.claude/skills/longrun/SKILL.md +0 -463
- package/substrate/.claude/skills/luminary/SKILL.md +0 -481
- package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +0 -177
- package/substrate/.claude/skills/onboard-repo/SKILL.md +0 -1624
- package/substrate/.claude/skills/pattern-review/SKILL.md +0 -99
- package/substrate/.claude/skills/personas/SKILL.md +0 -207
- package/substrate/.claude/skills/promote/SKILL.md +0 -283
- package/substrate/.claude/skills/requirement/SKILL.md +0 -98
- package/substrate/.claude/skills/retro/SKILL.md +0 -117
- package/substrate/.claude/skills/riff/SKILL.md +0 -114
- package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +0 -163
- package/substrate/.claude/skills/session-end/SKILL.md +0 -309
- package/substrate/.claude/skills/session-log/SKILL.md +0 -299
- package/substrate/.claude/skills/skills/SKILL.md +0 -228
- package/substrate/.claude/skills/spec/SKILL.md +0 -105
- package/substrate/.claude/skills/sprint/SKILL.md +0 -392
- package/substrate/.claude/skills/stage/SKILL.md +0 -384
- package/substrate/.claude/skills/state-a-problem/SKILL.md +0 -185
- package/substrate/.claude/skills/temperance/SKILL.md +0 -108
- package/substrate/.claude/skills/use-case/SKILL.md +0 -417
- package/substrate/.claude/skills/user-stories/SKILL.md +0 -268
- package/substrate/.claude/skills/value-prop/SKILL.md +0 -251
- package/substrate/.claude/skills/verify/SKILL.md +0 -160
- package/substrate/.claude/skills/visual-review/SKILL.md +0 -503
- package/substrate/.claude/skills/whats-the-plan/SKILL.md +0 -202
- package/substrate/.claude/skills/whereami/SKILL.md +0 -307
- package/substrate/AGENTS.md +0 -79
- package/substrate/CLAUDE-lite.md +0 -85
- package/substrate/CODE_OF_CONDUCT.md +0 -28
- package/substrate/CONTRIBUTING.md +0 -177
- package/substrate/README.md +0 -173
- package/substrate/SECURITY.md +0 -19
- package/substrate/architecture/decisions/ADR-029-release-pipeline.md +0 -79
- package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +0 -139
- package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +0 -192
- package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +0 -145
- package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +0 -155
- package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +0 -162
- package/substrate/lib/clean-artifacts-sweep.sh +0 -112
- package/substrate/lib/code-comment-discipline.sh +0 -144
- package/substrate/lib/composer-preflight.sh +0 -459
- package/substrate/lib/hook-inject.sh +0 -255
- package/substrate/lib/luminary-pick.sh +0 -96
- package/substrate/lib/output-discipline.sh +0 -143
- package/substrate/lib/prose-scan-boundary.sh +0 -171
- package/substrate/lib/rewrite-check.sh +0 -214
- package/substrate/lib/state.sh +0 -1372
- package/substrate/lib/telemetry.sh +0 -205
- package/substrate/lib/tier-check.sh +0 -187
- package/substrate/lib/tier-dependency-audit.sh +0 -1088
- package/substrate/presence/install/bassclef-hook-connect.sh +0 -178
- package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +0 -841
- package/substrate/presence/install/bassclef-sync.template.sh +0 -2076
- package/substrate/presence/install/schedule-auto-save.cron.sh +0 -88
- package/substrate/presence/install/schedule-auto-save.taskscheduler.md +0 -122
- package/substrate/scripts/aggregate-telemetry.sh +0 -217
- package/substrate/scripts/analyze-tier-dependencies.sh +0 -239
- package/substrate/scripts/generate-lite-manifest.sh +0 -505
- package/substrate/scripts/generate-tier-manifest.sh +0 -28
- package/substrate/scripts/intent-drift-check.sh +0 -456
- package/substrate/scripts/lite-manifest-drift-check.sh +0 -146
- package/substrate/scripts/render-lite-manifest-doc.sh +0 -150
- package/substrate/standards/adr-template.md +0 -86
- package/substrate/standards/api-conventions/nextjs.md +0 -84
- package/substrate/standards/artifact-composition.md +0 -209
- package/substrate/standards/bash-hook-safety.md +0 -246
- package/substrate/standards/bassclef-configs-schema.md +0 -232
- package/substrate/standards/bassclef-evolution.md +0 -143
- package/substrate/standards/bassclef-internal-jargon.md +0 -244
- package/substrate/standards/bassclef-managed-sentinel.md +0 -96
- package/substrate/standards/bassclef-source-config.md +0 -228
- package/substrate/standards/branch-stacking.md +0 -408
- package/substrate/standards/code-safety-principles.md +0 -176
- package/substrate/standards/composer-prerequisites.md +0 -155
- package/substrate/standards/deferred-actions-schema.md +0 -204
- package/substrate/standards/dependency-discipline/cargo.md +0 -39
- package/substrate/standards/dependency-discipline/gem.md +0 -43
- package/substrate/standards/dependency-discipline/go-mod.md +0 -41
- package/substrate/standards/dependency-discipline/npm.md +0 -42
- package/substrate/standards/dependency-discipline/pip.md +0 -42
- package/substrate/standards/deployment-topology/ec2-tailscale.md +0 -225
- package/substrate/standards/deployment-topology.md +0 -69
- package/substrate/standards/docs-sync-allowlist.md +0 -76
- package/substrate/standards/domain-and-dns.md +0 -145
- package/substrate/standards/frontend-stack.md +0 -67
- package/substrate/standards/frontmatter-schema.md +0 -154
- package/substrate/standards/graceful-exit.md +0 -227
- package/substrate/standards/hook-idempotency.md +0 -102
- package/substrate/standards/hook-injection-discipline.md +0 -202
- package/substrate/standards/hook-install-class.md +0 -215
- package/substrate/standards/input-handler-interface.md +0 -152
- package/substrate/standards/lite-manifest-schema-changes.md +0 -135
- package/substrate/standards/luminary-matching.md +0 -105
- package/substrate/standards/luminary-problem-patterns.md +0 -481
- package/substrate/standards/migration-discipline/active-record.md +0 -50
- package/substrate/standards/migration-discipline/alembic.md +0 -43
- package/substrate/standards/migration-discipline/gorm.md +0 -50
- package/substrate/standards/migration-discipline/prisma.md +0 -53
- package/substrate/standards/migration-discipline/sqlalchemy.md +0 -51
- package/substrate/standards/mobile-ephemeral-session.md +0 -167
- package/substrate/standards/model-routing-discipline.md +0 -160
- package/substrate/standards/ogilvy-writing-rules.md +0 -225
- package/substrate/standards/opener-discipline.md +0 -96
- package/substrate/standards/operator-facing-prose-discipline.md +0 -201
- package/substrate/standards/persona-schema.md +0 -229
- package/substrate/standards/pluggable-luminaries.md +0 -323
- package/substrate/standards/pr-body-discipline.md +0 -115
- package/substrate/standards/preview-state-schema.md +0 -189
- package/substrate/standards/project-directory-layout.md +0 -276
- package/substrate/standards/release-tagging.md +0 -137
- package/substrate/standards/reserved-skill-names.md +0 -120
- package/substrate/standards/scannable-multi-option-output.md +0 -261
- package/substrate/standards/sdlc-compliance.md +0 -286
- package/substrate/standards/sdlc-gates/typescript.md +0 -57
- package/substrate/standards/secrets-lifecycle.md +0 -210
- package/substrate/standards/security-scanner-adapter.md +0 -145
- package/substrate/standards/session-board.md +0 -256
- package/substrate/standards/skill-output-discipline.md +0 -90
- package/substrate/standards/state-spine-contract.md +0 -255
- package/substrate/standards/state-spine.md +0 -511
- package/substrate/standards/steering-hints/kiss-words.md +0 -11
- package/substrate/standards/substrate-config-schema.md +0 -267
- package/substrate/standards/tech-stack-config.md +0 -109
- package/substrate/standards/tier-dependency-analysis.md +0 -167
- package/substrate/standards/tier-runtime-deps/lite.md +0 -57
- package/substrate/standards/tier-tag-schema.md +0 -155
- package/substrate/standards/two-layer-config.md +0 -99
- package/substrate/standards/use-case-format.md +0 -292
- package/substrate/standards/user-story-invest.md +0 -268
- package/substrate/standards/velocity-and-appetite.md +0 -229
- package/substrate/standards/voice-input-pattern.md +0 -119
- package/substrate/standards/whereami-schema.md +0 -301
- package/substrate/standards/worktree-management.md +0 -211
- package/substrate/standards/writing-guide.md +0 -213
- package/substrate/templates/chronicle-template.md +0 -75
- package/substrate/templates/deferred-action-template.md +0 -45
- package/substrate/templates/memory-proposal-template.md +0 -77
- package/substrate/templates/persona-template.md +0 -200
- package/substrate/templates/pr-faq.md +0 -45
- package/substrate/templates/secret-rotation-template.md +0 -162
- package/substrate/templates/spec-template.md +0 -131
- package/substrate/templates/use-case-template.md +0 -194
- package/substrate/templates/user-story-template.md +0 -107
- package/substrate/templates/whereami-template.md +0 -101
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
globs: ["*"]
|
|
4
|
-
description: Agent guardrails — behavior boundaries, escalation rules, capability ceilings for autonomous operation
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Agent Guardrails
|
|
8
|
-
|
|
9
|
-
Formal behavior boundaries for autonomous agents. These are hard constraints,
|
|
10
|
-
not guidelines.
|
|
11
|
-
|
|
12
|
-
## What agents must NEVER do
|
|
13
|
-
- Push to main without PR review
|
|
14
|
-
- Delete data in production databases
|
|
15
|
-
- Deploy to production without human approval — even in orchestrator-gated mode. This is the hardest guardrail. No exceptions.
|
|
16
|
-
- Deploy to any environment not configured in substrate.config.md deploy_targets
|
|
17
|
-
- Modify auth/security middleware without human approval
|
|
18
|
-
- Expand scope beyond the declared time budget
|
|
19
|
-
- Skip a hard gate (Inception → Elaboration → Construction → Transition)
|
|
20
|
-
- Self-report gate compliance without evidence artifacts
|
|
21
|
-
- Override another agent's decision authority (e.g., Builder overriding Architect on ADRs)
|
|
22
|
-
- Send external communications (emails, Slack, webhooks) without human approval
|
|
23
|
-
- Modify CI/CD pipeline configuration without human approval
|
|
24
|
-
- Create or delete GitHub repos, branches on main, or release tags
|
|
25
|
-
|
|
26
|
-
## What agents must ALWAYS do
|
|
27
|
-
- Save state before ending (commit, push, LAST_SAVE)
|
|
28
|
-
- Write a chronicle entry at session end
|
|
29
|
-
- Run /temperance before non-trivial implementation
|
|
30
|
-
- Run /verify after each task before committing
|
|
31
|
-
- Flag ambiguity rather than proceeding with assumptions
|
|
32
|
-
- Produce a substrate artifact at every handoff
|
|
33
|
-
- Reference the iteration goal when starting work
|
|
34
|
-
- Check the risk register at iteration start
|
|
35
|
-
|
|
36
|
-
## Escalation rules
|
|
37
|
-
- Builder → Architect for ADR questions
|
|
38
|
-
- Builder → PM for scope questions
|
|
39
|
-
- Builder → Designer for UX questions
|
|
40
|
-
- Any agent → Orchestrator for sequencing disputes
|
|
41
|
-
- Any agent → Human for: scope expansion, security changes, external communications, budget overruns
|
|
42
|
-
|
|
43
|
-
## Capability ceilings by role
|
|
44
|
-
- Reviewer: read-only. Cannot modify code.
|
|
45
|
-
- Shaper: cannot implement or deploy.
|
|
46
|
-
- PM: cannot implement or architect.
|
|
47
|
-
- Designer: cannot implement. Validates only.
|
|
48
|
-
- Creative Director: cannot implement. Directs only.
|
|
49
|
-
- Architect: cannot implement in Construction. Designs only.
|
|
50
|
-
- Builder: cannot override ADRs. Implements within constraints.
|
|
51
|
-
- Deployer: cannot write application code. Ships only.
|
|
52
|
-
- Closer: cannot build. Documents and closes only.
|
|
53
|
-
- Orchestrator: cannot override any role's decision authority. Coordinates only.
|
|
54
|
-
|
|
55
|
-
## Graceful exit conditions
|
|
56
|
-
|
|
57
|
-
See `standards/graceful-exit.md` for the full exit protocol, checkpoint format,
|
|
58
|
-
checkpoint triggers, and recovery procedure.
|
|
59
|
-
|
|
60
|
-
Summary of conditions (full protocol in the standard):
|
|
61
|
-
- Time budget exhausted → save state, write checkpoint, report progress, end
|
|
62
|
-
- Budget limit reached → save state, write checkpoint, report, end
|
|
63
|
-
- Ambiguity unresolvable without human → save state, write checkpoint, escalate, end
|
|
64
|
-
- Blocked by external dependency → save state, log blocker in checkpoint, end
|
|
65
|
-
- Error after 3 diagnosis attempts → save state, write checkpoint, escalate, end
|
|
66
|
-
- User interrupts → save state immediately, write checkpoint
|
|
67
|
-
- Context pressure ≥ 70% → write checkpoint, let compaction run, re-read survival kit
|
|
68
|
-
|
|
69
|
-
## Agent identity in artifacts
|
|
70
|
-
- Every commit by an autonomous agent includes the agent role in the message
|
|
71
|
-
- Every PR created by an agent is labeled with the agent role
|
|
72
|
-
- Chronicle entries note which agent(s) were active
|
|
73
|
-
- This enables audit: who did what, with what authority
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
description: Every new bassclef hook (a file under .claude/hooks/*.sh) MUST be added to project .claude/settings.json in the same PR that authors it.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Hook Wire On Author
|
|
7
|
-
|
|
8
|
-
Every new bassclef hook (a file under `.claude/hooks/*.sh`) MUST be added to project `.claude/settings.json` in the same PR that authors it. Hooks without settings entries are dead-letter — they exist on disk but stay silent on every tool call. The substrate appears to ship the safety net; in reality, every adopter session runs without it.
|
|
9
|
-
|
|
10
|
-
INSTEAD of shipping the hook on its own: include the settings entry in the same PR. The cost is one settings.json edit; the work compounds across every adopter session.
|
|
11
|
-
|
|
12
|
-
This rule closes the substrate-defect class that produced bassclef-upstream#319 (phase-1, closed 2026-06-24) + #376 (phase-2, this rule's filing context).
|
|
13
|
-
|
|
14
|
-
## Why this rule exists
|
|
15
|
-
|
|
16
|
-
Audit during PR #318 surfaced 32 of 42 bassclef hooks without settings entries. The defect class: write hook → ship hook → forget the settings entry. No mechanical check existed to flag these at PR-author boundary.
|
|
17
|
-
|
|
18
|
-
INSTEAD of letting the gap repeat: this rule + the V2 mechanical layer in `pre-commit-gate.sh` close the class at the authoring boundary so phase-3 never has to file.
|
|
19
|
-
|
|
20
|
-
Phase-1 (#319) shipped a subset of P0 entries during the 2026-06-24 architect-review longrun. Phase-2 (#376) shipped the remaining 11 during the 2026-06-26 ultra-plus thread longrun. Both bets exist because the discipline was methodology-only.
|
|
21
|
-
|
|
22
|
-
## When this rule fires
|
|
23
|
-
|
|
24
|
-
Any PR that adds a new `.claude/hooks/*.sh` file. The rule passes through on:
|
|
25
|
-
|
|
26
|
-
- Edits to existing hooks (only NEW hook files trigger)
|
|
27
|
-
- Test files under `.claude/hooks/tests/`
|
|
28
|
-
- Library scripts under `lib/` (those are sourced; not hooks)
|
|
29
|
-
- Documentation under `.claude/hooks/*.md`
|
|
30
|
-
|
|
31
|
-
## What the rule requires
|
|
32
|
-
|
|
33
|
-
When a PR adds a new hook file, the same PR MUST also include an edit to `.claude/settings.json` adding the hook at its correct matcher. The hook's header MUST declare its intended matcher per these conventions:
|
|
34
|
-
|
|
35
|
-
- `# PreToolUse: <matcher>` — added under `hooks.PreToolUse[].matcher`
|
|
36
|
-
- `# Stop` — added under `hooks.Stop[].hooks`
|
|
37
|
-
- `# PostToolUse: <matcher>` — added under `hooks.PostToolUse[].matcher`
|
|
38
|
-
- `# SessionStart` — added under `hooks.SessionStart[].hooks`
|
|
39
|
-
- `# UserPromptSubmit` — added under `hooks.UserPromptSubmit[].hooks`
|
|
40
|
-
|
|
41
|
-
The PR body MUST include a `Bootstrap pair shipped` block per `.claude/rules/bootstrap-pair-discipline.md` naming both the hook file AND the settings.json entry line.
|
|
42
|
-
|
|
43
|
-
## Anti-patterns
|
|
44
|
-
|
|
45
|
-
These shapes fail this rule.
|
|
46
|
-
|
|
47
|
-
**Hook shipped without settings entry.** Author edits `.claude/hooks/foo.sh`, commits, opens PR. Settings.json untouched.
|
|
48
|
-
|
|
49
|
-
INSTEAD: ship the settings entry in the same PR. The cost is small (one settings.json line); the work compounds across every adopter session.
|
|
50
|
-
|
|
51
|
-
**Hook references "sourced-only by design" in header.** Hook docstring says "this hook is sourced by other hooks, not connected directly." Phase-1 audit treated this as exempt; phase-2 reshape clarifies: composite/sourced libraries belong under `lib/`, not `.claude/hooks/`.
|
|
52
|
-
|
|
53
|
-
INSTEAD of marking the hook exempt: move sourced-only libraries to `lib/`. Hooks under `.claude/hooks/` either get a settings entry or get moved.
|
|
54
|
-
|
|
55
|
-
**Hook shipped at wrong matcher.** Author adds `pre-build-gate.sh` under PreToolUse Bash when its header says PreToolUse Edit|Write|MultiEdit. Hook stays silent.
|
|
56
|
-
|
|
57
|
-
INSTEAD of guessing the matcher: read the hook's header before adding the entry. The matcher convention is documented above.
|
|
58
|
-
|
|
59
|
-
## Mechanical layer
|
|
60
|
-
|
|
61
|
-
**V1.5 (bassclef-upstream#1163 Layer 4, shipped 2026-08-08):** `.claude/hooks/hook-classifier-canary.sh` fires as PreToolUse Edit|Write|MultiEdit against paths under `.claude/hooks/*.sh` (excludes tests dir + fixtures). Detects new hook files that lack any recognized wiring signal (settings.json / .github/workflows / scripts/release-to-bassclef.sh / launchd header / sourced-lib header). Emits ADVISORY to stderr naming 5 remediation paths. Sources `lib/mechanism-fidelity.sh` for the classifier vocabulary. Override: `SKIP_HOOK_CLASSIFIER_CANARY=1`. Tier 0 test at `.claude/hooks/tests/hook-classifier-canary.test.sh` (10 tests).
|
|
62
|
-
|
|
63
|
-
**V2 (deferred):** flip canary from ADVISORY to BLOCK once one calibration cycle passes with zero operator-reported false positives.
|
|
64
|
-
|
|
65
|
-
**V3 (deferred to pre-commit sibling):** extend `pre-commit-gate.sh` to scan `git diff --staged --name-only` for new hooks and BLOCK when settings entry absent. Two-layer defense (author-time canary + commit-time gate) closes the class end-to-end.
|
|
66
|
-
|
|
67
|
-
Defer V3 to a separate goal when V1.5+V2 have shipped through enough PRs that the failure modes are stable.
|
|
68
|
-
|
|
69
|
-
## Override
|
|
70
|
-
|
|
71
|
-
`SKIP_HOOK_WIRE_ON_AUTHOR=1 <command>` — logged via trace-helper. Use only when:
|
|
72
|
-
|
|
73
|
-
- The hook is genuinely "in development" and ships without settings entry with a follow-on ticket filed AND the current PR cites the follow-on
|
|
74
|
-
- Emergency rescue where adding the entry would break the harness
|
|
75
|
-
|
|
76
|
-
INSTEAD of overriding for routine work: ship the settings entry in the same PR. The cost is small (one settings.json line); the discipline compounds across every adopter session.
|
|
77
|
-
|
|
78
|
-
## Composes with
|
|
79
|
-
|
|
80
|
-
- `.claude/rules/bootstrap-pair-discipline.md` — sister discipline (this rule extends the bootstrap-pair contract to hook + settings entry)
|
|
81
|
-
- `.claude/rules/cold-adopter-harness-discipline.md` — sister discipline at adopter-observable boundary (settings.json IS adopter-observable)
|
|
82
|
-
- `.claude/rules/blocked-items.md` — BLOCK protocol the V2 mechanical layer fires
|
|
83
|
-
- `@luminary saltzer-schroeder` — complete mediation (the safety net is connected, not dead-letter)
|
|
84
|
-
- `@luminary michael-nygard` — stability pattern (the settings entry is what makes the safety net real)
|
|
85
|
-
- `@luminary linus-torvalds` — adopter-trust ceiling (bassclef hooks without settings entries equal adopter hooks without settings entries)
|
|
86
|
-
|
|
87
|
-
## Distinct from
|
|
88
|
-
|
|
89
|
-
- `.claude/rules/bootstrap-pair-discipline.md` — that rule covers any substrate building block + its pair; this rule covers the specific hook + settings entry case
|
|
90
|
-
- `.claude/rules/testing-tier-config.md` — that rule covers Tier 0 strict TDD on the hook itself; this rule covers the settings entry beyond the test
|
|
91
|
-
- `.claude/rules/cold-adopter-harness-discipline.md` — that rule covers adopter-observable changes broadly; this rule covers the hook-settings slice
|
|
92
|
-
|
|
93
|
-
## Refs
|
|
94
|
-
|
|
95
|
-
- bassclef-upstream#376 (parent — V1 ships this rule)
|
|
96
|
-
- bassclef-upstream#319 (phase-1 closed; the sweep that surfaced the discipline gap)
|
|
97
|
-
- bet `docs/iteration-bets/2026-06-26c-hook-wiring-phase-2.md` § WU-3 (this rule)
|
|
98
|
-
- `.claude/rules/bootstrap-pair-discipline.md` (sister)
|
|
99
|
-
- `@luminary saltzer-schroeder` + `@luminary michael-nygard` (anchors)
|
|
100
|
-
|
|
101
|
-
## Retirement condition
|
|
102
|
-
|
|
103
|
-
This rule retires only if bassclef migrates off hooks-as-substrate-primitives (very unlikely; hooks are the operational layer for substrate-discipline enforcement). The V2 mechanical extension may absorb the methodology check; the discipline at author time persists.
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
description: Bassclef commits stay free of operator machine identifiers.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<!-- andon-allow: [A-Za-z][A-Za-z0-9]*-MacBook-(Air|Pro) -->
|
|
7
|
-
<!-- andon-allow: /Users/[a-z][a-z0-9._-]+ -->
|
|
8
|
-
<!-- andon-allow: /home/[a-z][a-z0-9._-]+ -->
|
|
9
|
-
|
|
10
|
-
# Identifier leak prevention
|
|
11
|
-
|
|
12
|
-
Bassclef commits stay free of operator machine identifiers.
|
|
13
|
-
|
|
14
|
-
INSTEAD of committing hostname strings (X-MacBook-Air, DESKTOP-XYZ, X-server-N), absolute paths starting with /Users/ or /home/, or any operator-identifying metadata: rewrite the message or content with placeholders (branch name, `<machine>`, `$HOME`) before commit.
|
|
15
|
-
|
|
16
|
-
This rule is the methodology layer. The mechanical layer is `.claude/hooks/pre-commit-identifier-leak-scrub.sh` (PreToolUse Bash matcher on `git commit`). Both required.
|
|
17
|
-
|
|
18
|
-
## Why this rule exists
|
|
19
|
-
|
|
20
|
-
Coverage gap surfaced by outside consult on 2026-09-01 (issue sunj-labs/bassclef#1471). Existing leakage scans (release-script andon + operator-private-path-check) target directory references, not identifier strings. Auto-save-checkpoint commits interpolated hostname into every message — 98 such commits landed on bassclef-upstream main + spread to public bassclef via archive snapshots.
|
|
21
|
-
|
|
22
|
-
CCF-3 keeps operator config gitignored and out of git history.
|
|
23
|
-
INSTEAD of assuming that discipline holds at the .gitignore layer alone: enforce at the commit boundary via this hook + rule pair. Both layers close the loop between principle and mechanism.
|
|
24
|
-
|
|
25
|
-
## When this rule fires
|
|
26
|
-
|
|
27
|
-
Every `git commit` invocation across bassclef and adopter repos. The hook scans:
|
|
28
|
-
|
|
29
|
-
1. Commit message text (parses `-m "..."` arg)
|
|
30
|
-
2. Staged content (`git diff --cached`)
|
|
31
|
-
|
|
32
|
-
Fires on PreToolUse Bash matcher when `tool_input.command` starts with `git commit`. Non-git-commit commands pass through cleanly.
|
|
33
|
-
|
|
34
|
-
## What the rule requires
|
|
35
|
-
|
|
36
|
-
No commit lands with these patterns in message OR staged content:
|
|
37
|
-
|
|
38
|
-
- **Hostname shapes**: `[A-Za-z][A-Za-z0-9]*-MacBook-(Air|Pro)`, `DESKTOP-[A-Z0-9]{4,}`, `*-server-*`, `*-desktop-*`
|
|
39
|
-
- **Absolute paths**: `/Users/<name>`, `/home/<name>`
|
|
40
|
-
|
|
41
|
-
Extension mechanism — future pattern classes added to the hook's `IDENTIFIER_PATTERNS` regex + a corresponding Tier 0 test.
|
|
42
|
-
|
|
43
|
-
## Anti-patterns
|
|
44
|
-
|
|
45
|
-
**Auto-save-checkpoint commits with hostname suffix.**
|
|
46
|
-
|
|
47
|
-
INSTEAD of interpolating `$(hostname -s)` into the commit message per `save-state.sh` historical L222-225 shape: use branch name + file count only. Session identity moves to commit trailer if debug needed locally.
|
|
48
|
-
|
|
49
|
-
**LAST_SAVE file with `machine:` field.**
|
|
50
|
-
|
|
51
|
-
INSTEAD of writing machine identifier into `.claude/LAST_SAVE`: either gitignore the file OR drop the `machine:` field. This ticket takes both paths — gitignore the file + drop the field.
|
|
52
|
-
|
|
53
|
-
**state/markers/ tracked in git.**
|
|
54
|
-
|
|
55
|
-
INSTEAD of selectively-gitignored marker subdirs (contradicts `session-artifacts.md` L14-25): broad `state/markers/` gitignore + `git rm -r --cached state/markers/` one-time cure. Adopters inheriting the sync run the same cure once.
|
|
56
|
-
|
|
57
|
-
## Override path
|
|
58
|
-
|
|
59
|
-
`SKIP_IDENTIFIER_LEAK_SCRUB=1 git commit ...` — logged via trace-helper. Rare use cases:
|
|
60
|
-
|
|
61
|
-
- Documentation explaining what patterns to avoid (e.g., this rule body cites the pattern class)
|
|
62
|
-
- Migration scripts that intentionally reference historical hostname strings
|
|
63
|
-
- Emergency rescue where the hook itself misbehaves
|
|
64
|
-
|
|
65
|
-
INSTEAD of routine overrides: rewrite the commit or content. The cost is small; the discipline compounds across every future commit.
|
|
66
|
-
|
|
67
|
-
## Adopter cure (one-time)
|
|
68
|
-
|
|
69
|
-
Adopters running bassclef-sync after this rule ships see one-time drift. Existing `state/markers/*` files stay tracked in their index but ignored by the new .gitignore.
|
|
70
|
-
|
|
71
|
-
Cure:
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
git rm -r --cached state/markers/
|
|
75
|
-
git commit -m "chore: untrack state markers per bassclef identifier-leak-prevention rule"
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
The working-tree files stay. Only the git index changes.
|
|
79
|
-
|
|
80
|
-
## Composes with
|
|
81
|
-
|
|
82
|
-
- `.claude/rules/session-artifacts.md` (L14-25 — state/markers gitignore intent this rule enforces)
|
|
83
|
-
- `.claude/rules/blocked-items.md` (BLOCK protocol the hook fires)
|
|
84
|
-
- `.claude/rules/testing-tier-config.md` (Tier 0 strict TDD on the hook + tests)
|
|
85
|
-
- `.claude/rules/hook-wire-on-author.md` (settings.json wiring discipline)
|
|
86
|
-
- `.claude/rules/bootstrap-pair-discipline.md` (hook + rule + test + wire ship together)
|
|
87
|
-
- `.claude/rules/we-dont-break-adopters.md` (adopter cure documented above)
|
|
88
|
-
- `.claude/hooks/pre-commit-identifier-leak-scrub.sh` (mechanical implementation)
|
|
89
|
-
- `.claude/hooks/tests/pre-commit-identifier-leak-scrub.test.sh` (12-test coverage)
|
|
90
|
-
- @luminary saltzer-schroeder — complete mediation
|
|
91
|
-
- @luminary linus-torvalds — adopter contract (ADR-031)
|
|
92
|
-
- @luminary michael-feathers — characterization tests
|
|
93
|
-
- @luminary michael-nygard — stability pattern (fail-soft on grep missing)
|
|
94
|
-
|
|
95
|
-
## Refs
|
|
96
|
-
|
|
97
|
-
- Parent ticket: sunj-labs/bassclef#1471
|
|
98
|
-
- Rule intent source: `.claude/rules/session-artifacts.md` L14-25
|
|
99
|
-
- Mechanism gap: `scripts/release-to-bassclef.sh` L257-289 (andon scan scoped to dirs)
|
|
100
|
-
- Hostname source: `.claude/hooks/save-state.sh` L222 + L247
|
|
101
|
-
|
|
102
|
-
## Retirement condition
|
|
103
|
-
|
|
104
|
-
This rule retires only if bassclef stops committing content that could contain identifiers. Every commit is a potential leak surface, so retirement is unlikely. Pattern set may evolve as new operator-identifying shapes surface; the discipline of scanning at commit time persists.
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
description: When Orchestrator (or any agent) delegates a Construction stack to a subagent (Builder, Designer, Architect), the brief MUST include, verbatim and with file paths, every artifact…
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Iteration Goal Brief Completeness
|
|
7
|
-
|
|
8
|
-
When Orchestrator (or any agent) delegates a Construction stack to a
|
|
9
|
-
subagent (Builder, Designer, Architect), the brief MUST include, verbatim
|
|
10
|
-
and with file paths, every artifact the iteration goal cites that applies
|
|
11
|
-
to the stack's scope.
|
|
12
|
-
|
|
13
|
-
## Required in every delegation brief
|
|
14
|
-
|
|
15
|
-
- Canvas (if scope touches a subsystem covered by the canvas)
|
|
16
|
-
- Spec or decomposition artifact
|
|
17
|
-
- **All prototypes** listed in the goal's References, scoped to which apply per surface
|
|
18
|
-
- ADRs the goal pins as governing constraints
|
|
19
|
-
- Design token file(s) if the scope touches token-governed surfaces
|
|
20
|
-
- Prior PRs that shipped shared primitives the stack should reuse
|
|
21
|
-
- Luminary map (primary pair + any extended pairs tagged to surfaces in scope)
|
|
22
|
-
|
|
23
|
-
## Checkpoint before spawning the subagent
|
|
24
|
-
|
|
25
|
-
Before the Task/Agent call, enumerate the goal's reference list and confirm
|
|
26
|
-
each relevant entry is in the brief. Missing entries = re-brief before
|
|
27
|
-
spawn. In sequential mode, same checkpoint applies to the role handoff
|
|
28
|
-
within a single session.
|
|
29
|
-
|
|
30
|
-
## Operator- vs orchestrator-gated
|
|
31
|
-
|
|
32
|
-
- **Orchestrator-gated**: Orchestrator constructs the brief and validates
|
|
33
|
-
completeness before delegation. No operator prompt required.
|
|
34
|
-
- **Operator-gated**: operator may shape or override, but the default is
|
|
35
|
-
full transmission. Partial briefs require explicit operator choice.
|
|
36
|
-
|
|
37
|
-
## Why this rule exists
|
|
38
|
-
|
|
39
|
-
POA iteration #499 (2026-04-12): bet cited an approved prototype under
|
|
40
|
-
Reference artifacts. Orchestrator delegated Stack-1 (Review Queue UI) to
|
|
41
|
-
Builder with decomposition + verbal density guidance but without the
|
|
42
|
-
prototype path. Builder built against decomposition only → cramped UI
|
|
43
|
-
shipped → rebuild required.
|
|
44
|
-
|
|
45
|
-
The goal was correct. The delegation dropped information. Every bassclef
|
|
46
|
-
repo using the iteration-bet pattern has this exposure.
|
|
47
|
-
|
|
48
|
-
## Relationship to other rules
|
|
49
|
-
|
|
50
|
-
- `artifact-ingestion.md` — Builder's obligation to read staged artifacts;
|
|
51
|
-
this rule is Orchestrator's reciprocal obligation to surface them
|
|
52
|
-
- `design-direction.md` — approvals are load-bearing; bet references
|
|
53
|
-
carry the approvals and must reach Builder intact
|
|
54
|
-
- `sdlc-gates.md` — pre-build gates; brief completeness is itself a gate
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
description: Every lite-manifest schema change ships a migration-note ledger entry in the same PR. Adopters read the ledger before sync.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Lite-manifest schema-change discipline
|
|
7
|
-
|
|
8
|
-
Every change to `standards/lite-manifest.schema.json` (schema shape) or to the output shape of `<tier>-manifest.json` (extractor emissions) MUST ship with a matching ledger entry in `standards/lite-manifest-schema-changes.md` in the same PR. The release script blocks the cascade if the ledger has no entry for the outgoing `manifest_version`.
|
|
9
|
-
|
|
10
|
-
This rule is the methodology layer. The mechanical layer is a pre-flight check in `scripts/release-to-bassclef.sh` (Step 3.6, added in goal 2026-09-07c Step 4). Both required.
|
|
11
|
-
|
|
12
|
-
Sister discipline at the file-rename surface; same shape at a different surface — files there, schema fields here.
|
|
13
|
-
|
|
14
|
-
## Why this exists
|
|
15
|
-
|
|
16
|
-
`v0.36.0` (2026-09-06) dropped `upstream_commit` from lite-manifest content per sunj-labs/bassclef-upstream#1508. Three bassclef-web scripts crashed at next sync because they read `.upstream_commit` and got `undefined`. No note warned adopters. bassclef-web#269 promoted the pattern.
|
|
17
|
-
|
|
18
|
-
Every adopter of the lite manifest sits on this class. Without a ledger discipline, every future schema change replays the failure.
|
|
19
|
-
|
|
20
|
-
## When this rule fires
|
|
21
|
-
|
|
22
|
-
Any PR that touches:
|
|
23
|
-
|
|
24
|
-
- `standards/lite-manifest.schema.json` (schema shape)
|
|
25
|
-
- `scripts/generate-lite-manifest.sh` in a way that changes the output shape (adds or removes emitted keys)
|
|
26
|
-
|
|
27
|
-
Skips:
|
|
28
|
-
|
|
29
|
-
- Content-only manifest regens (backfill helper adds descriptions to source files; content_hash changes but no schema shift)
|
|
30
|
-
- Comment-only edits to schema or extractor
|
|
31
|
-
|
|
32
|
-
## What the rule requires
|
|
33
|
-
|
|
34
|
-
When a PR changes the manifest schema OR output shape:
|
|
35
|
-
|
|
36
|
-
1. **Ledger entry** — add a new entry to `standards/lite-manifest-schema-changes.md` in the same PR. Format per the ledger's format section. Newest-first ordering.
|
|
37
|
-
2. **Version bump** — pin the entry to a specific `manifest_version` bump. Per the schema title description policy:
|
|
38
|
-
- Adding an optional field → MINOR bump
|
|
39
|
-
- Adding a required field → MAJOR bump (breaking)
|
|
40
|
-
- Removing a field → MAJOR bump
|
|
41
|
-
- Content-only change → PATCH bump
|
|
42
|
-
3. **Downstream cure named** — the entry names what adopters need to do. If nothing (backward-compatible add), say so explicitly. If code change (like the v0.36.0 `upstream_commit` removal), name the pattern.
|
|
43
|
-
4. **Release script pre-flight** — before every `/release`, the script reads the ledger and confirms an entry exists for the outgoing `manifest_version`. Missing entry BLOCKs the cascade.
|
|
44
|
-
|
|
45
|
-
## Anti-patterns
|
|
46
|
-
|
|
47
|
-
**Schema field added but no ledger entry.** Release script pre-flight BLOCKs.
|
|
48
|
-
INSTEAD: add the entry in the same PR.
|
|
49
|
-
|
|
50
|
-
**Ledger entry written but wrong version bump.** Adopters plan their pin update against the wrong version.
|
|
51
|
-
INSTEAD: correct the bump before merge. AJV validation of the entry format catches inconsistency.
|
|
52
|
-
|
|
53
|
-
**Downstream cure vague (no name for the class).** Adopters at cold-sync can't reason about which script needs fixing.
|
|
54
|
-
INSTEAD: cite the class + link to a reference cure like bassclef-web c9a9da7.
|
|
55
|
-
|
|
56
|
-
**Schema change ships without adopter coordination.** Even with a ledger entry, adopters that exact-pin the manifest_version need advance warning.
|
|
57
|
-
INSTEAD: coord comment on bassclef-web#256 + bassclef-cli#51 BEFORE the release cascade per Linus L6 pre-mortem cure.
|
|
58
|
-
|
|
59
|
-
## Override
|
|
60
|
-
|
|
61
|
-
`SKIP_LITE_MANIFEST_SCHEMA_LEDGER=1 <command>` — logged via trace-helper. Use only when:
|
|
62
|
-
|
|
63
|
-
- The schema change is a comment-only edit that keeps the shape stable
|
|
64
|
-
- The change reverses a prior entry (a rollback) and the prior entry names both the change and the rollback
|
|
65
|
-
- One-shot migration script that touches the schema during a migration window
|
|
66
|
-
|
|
67
|
-
INSTEAD of overriding for routine work: write the entry. The cost is small (one section in the ledger); the discipline compounds across every adopter that syncs.
|
|
68
|
-
|
|
69
|
-
## Composes with
|
|
70
|
-
|
|
71
|
-
- file-rename-discipline (standard tier) — sister at the file surface
|
|
72
|
-
- `.claude/rules/we-dont-break-adopters.md` — parent discipline (ADR-031)
|
|
73
|
-
- `.claude/rules/cold-adopter-harness-discipline.md` — sibling smoke fires against ledger entries before release
|
|
74
|
-
- `.claude/rules/bootstrap-pair-discipline.md` — this rule + hook + tests + settings wire ship together
|
|
75
|
-
- `.claude/rules/testing-tier-config.md` — Tier 0 strict TDD on ledger format tests
|
|
76
|
-
- `.claude/rules/blocked-items.md` — BLOCK protocol the release-script pre-flight fires
|
|
77
|
-
- `standards/lite-manifest.schema.json` — the schema this ledger tracks
|
|
78
|
-
- `standards/lite-manifest-schema-changes.md` — the ledger this rule enforces
|
|
79
|
-
- `scripts/release-to-bassclef.sh` — release-script pre-flight (Step 3.6)
|
|
80
|
-
- ADR-031 (we-don't-break-adopters)
|
|
81
|
-
- ADR-029 (release pipeline)
|
|
82
|
-
- @luminary linus-torvalds — lead. Adopter contract; the ledger is the operational form of Torvalds's rule at the schema surface
|
|
83
|
-
- @luminary tony-hoare — pre/postcondition contract on schema changes
|
|
84
|
-
- @luminary michael-nygard — stability pattern (block-on-missing-entry)
|
|
85
|
-
- @luminary michael-feathers — characterization test on the ledger format
|
|
86
|
-
|
|
87
|
-
## Refs
|
|
88
|
-
|
|
89
|
-
- Parent ticket: sunj-labs/bassclef-web#269 (promote: ship migration notes when lite-manifest schema removes or renames fields)
|
|
90
|
-
- Root cause: v0.36.0 upstream_commit removal broke 3 bassclef-web scripts (commit `c9a9da7` on bassclef-web repaired downstream)
|
|
91
|
-
- Goal: `docs/iteration-bets/2026-09-07c-lite-manifest-schema-plus-extractor-plus-backfill-plus-ledger.md`
|
|
92
|
-
- Risk ledger: `docs/risk-ledgers/2026-09-07c-lite-manifest-schema-extractor-backfill-ledger.md` Linus L6 + Hoare H6
|
|
93
|
-
- Sister rule: file-rename-discipline (standard tier)
|
|
94
|
-
- @luminary linus-torvalds — Torvalds's rule at the schema surface
|
|
95
|
-
|
|
96
|
-
## Retirement condition
|
|
97
|
-
|
|
98
|
-
This rule retires only if bassclef stops shipping a lite manifest. Adopter count and change cadence may evolve; the discipline of documenting every schema change at the PR that ships it persists.
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
description: When a plan doc at docs/next-session-plan-*.md (modified within 48 hours) carries a ## Recommended session sequence (or equivalent) section, /longrun prep MUST skip the full Steps…
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /longrun prep — compress when plan doc pre-picks scope
|
|
7
|
-
|
|
8
|
-
When a plan doc at `docs/next-session-plan-*.md` (modified within 48 hours) carries a `## Recommended session sequence` (or equivalent) section, `/longrun prep` MUST skip the full Steps 1.4c-1.7b option-table ceremony and present the pre-authored sequence directly. This rule closes bassclef-upstream#1307 R1 — the workflow-overhead class where prep re-authors 15-25 turns of ceremony an earlier session already shipped in a plan doc.
|
|
9
|
-
|
|
10
|
-
This rule is the methodology layer. The mechanism is the /longrun SKILL body Step 0.85 (bassclef-upstream#1307 R1). V2 Stop-hook enforcement is deferred per pre-mortem R5.
|
|
11
|
-
|
|
12
|
-
## When this rule fires
|
|
13
|
-
|
|
14
|
-
Every `/longrun prep` dispatch. The SKILL body Step 0.85 checks for a plan doc first. When one is found, the compressed prep path fires. When none matches, the full ceremony holds.
|
|
15
|
-
|
|
16
|
-
Detection criteria (all three must match):
|
|
17
|
-
|
|
18
|
-
1. File matching `docs/next-session-plan-*.md` exists at repo root
|
|
19
|
-
2. File was modified within the last 48 hours (`find -mtime -2`)
|
|
20
|
-
3. File body contains one of: `## Recommended session sequence`, `## Recommended sequence`, `## Next-session pickup`
|
|
21
|
-
|
|
22
|
-
## What the compressed path requires
|
|
23
|
-
|
|
24
|
-
When the compressed path fires, prep still ships the three-block opener per `.claude/rules/operator-facing-prose.md` Rule 3 (Problem + Value + Evidence). The compression targets Steps 1.4c-1.7b:
|
|
25
|
-
|
|
26
|
-
- **Skip:** re-authoring the full 5-axis-per-option block for every option (SKILL Step 1.5)
|
|
27
|
-
- **Skip:** re-authoring a full card for every non-recommended option (SKILL Step 1.6)
|
|
28
|
-
- **Skip:** re-authoring step cards + per-step compounding blocks (SKILL Steps 1.7 + 1.7a) for options the plan doc did not recommend
|
|
29
|
-
- **Keep:** scan-table at the top (3-5 rows summarizing the plan doc's items)
|
|
30
|
-
- **Keep:** one card for the recommended item per SKILL Step 1.6
|
|
31
|
-
- **Keep:** step cards + per-step compounding for the recommended item only per SKILL Steps 1.7 + 1.7a
|
|
32
|
-
- **Keep:** recommendation sentence per SKILL Step 1.7b
|
|
33
|
-
- **Add:** plan doc file path cited inline as source
|
|
34
|
-
|
|
35
|
-
Operators still pick from the scan table. The plan doc's ranking becomes the default, not a mandate.
|
|
36
|
-
|
|
37
|
-
## Anti-patterns
|
|
38
|
-
|
|
39
|
-
**Full ceremony fires despite plan doc present.** The exact class #1307 R1 filed. Cure: run the SKILL Step 0.85 detection first.
|
|
40
|
-
|
|
41
|
-
**Plan doc detection succeeds but prep still authors 5-axis blocks for every option.** Partial compression is not compression. Cure: skip the per-option 5-axis blocks; keep them only for the recommended item's card.
|
|
42
|
-
|
|
43
|
-
**Compressed prep drops the recommendation sentence.** Operators still need one-line rationale. Cure: keep Step 1.7b.
|
|
44
|
-
|
|
45
|
-
**Compressed prep skips the three-block opener.** Rule 3 discipline holds regardless of compression. Cure: Problem + Value + Evidence always land before scan-table.
|
|
46
|
-
|
|
47
|
-
INSTEAD of any of these: check for plan doc first (SKILL Step 0.85 detection); use the recommended sequence verbatim; ask operator to confirm or reshape.
|
|
48
|
-
|
|
49
|
-
## Override
|
|
50
|
-
|
|
51
|
-
`SKIP_LONGRUN_COMPRESS=1 <command>` — logged via trace-helper. Use only when the plan doc is out of date and the operator wants a fresh option set. In that case, dispatch full ceremony and note the override reason in the prep opener.
|
|
52
|
-
|
|
53
|
-
INSTEAD of overriding routinely: update the plan doc. A stale plan doc is a bad plan doc; fixing it upstream compounds across every future prep.
|
|
54
|
-
|
|
55
|
-
## V2 mechanical layer (deferred)
|
|
56
|
-
|
|
57
|
-
V1 ships this rule + SKILL body Step 0.85 amendment. V2 (deferred follow-on ticket) will add a Stop hook that:
|
|
58
|
-
|
|
59
|
-
1. Detects `/longrun prep` output in the assistant's most recent message
|
|
60
|
-
2. Detects presence of a fresh plan doc via `find -mtime -2`
|
|
61
|
-
3. Checks whether the prep output carries 3+ per-option 5-axis blocks (evidence of full ceremony)
|
|
62
|
-
4. Emits ADVISORY finding when full ceremony fires despite plan doc being present
|
|
63
|
-
|
|
64
|
-
Defer V2 until this rule (V1 methodology) has shipped through 3-5 preps and the mechanical extension has stable heuristics.
|
|
65
|
-
|
|
66
|
-
## Composes with
|
|
67
|
-
|
|
68
|
-
- `.claude/skills/longrun/SKILL.md` Step 0.85 — the SKILL amendment this rule prescribes
|
|
69
|
-
- `.claude/rules/operator-facing-prose.md` Rule 3 — three-block opener still fires under compression
|
|
70
|
-
- `.claude/rules/compounding-sequence-fresh-analysis.md` — per-option 5-axis fresh analysis still holds for the recommended item's card
|
|
71
|
-
- `.claude/rules/plan-enumeration-needs-value-props.md` — every option in the compressed scan-table still carries a value-prop cell
|
|
72
|
-
- `.claude/rules/blocked-items.md` — silence is not deferral (plan doc detection reports fire vs skip explicitly)
|
|
73
|
-
- `.claude/rules/bootstrap-pair-discipline.md` — this rule + SKILL amendment ship as paired bootstrap
|
|
74
|
-
- @luminary john-ousterhout — deep module (compression path hides plan-doc detection behind narrow interface)
|
|
75
|
-
- @luminary donald-norman — signifier + feedback (plan doc presence is a signifier; compressed vs full ceremony is user feedback)
|
|
76
|
-
- @luminary frederick-brooks — conceptual integrity (compression preserves the option-table + card + step-card shape; only volume shrinks)
|
|
77
|
-
|
|
78
|
-
## Refs
|
|
79
|
-
|
|
80
|
-
- bassclef-upstream#1307 R1 — this rule's filing ticket
|
|
81
|
-
- `docs/next-session-plan-2026-08-20.md` — the plan doc that motivated the R1 class filing
|
|
82
|
-
- operator_recap_2026-08-19e L96 — evidence source (25-40t ceremony vs 5t needed)
|
|
83
|
-
- `.claude/skills/longrun/SKILL.md` Step 0.85 — mechanism this rule prescribes
|
|
84
|
-
|
|
85
|
-
## Retirement condition
|
|
86
|
-
|
|
87
|
-
This rule retires only if `/longrun` stops accepting plan docs as pre-authored scope. Until then, the discipline of compressing prep against pre-authored sequences survives.
|
|
88
|
-
|
|
89
|
-
Closes bassclef-upstream#1307 R1.
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
description: Every step that ships code or substrate runs the six-step cycle for shipping code or substrate.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /loop discipline — methodology layer
|
|
7
|
-
|
|
8
|
-
Every step that ships code or substrate runs the six-step cycle below. This rule is the methodology layer; the full cycle spec lives with operator substrate.
|
|
9
|
-
|
|
10
|
-
## When this rule fires
|
|
11
|
-
|
|
12
|
-
The rule fires when an agent or operator opens a feature branch, commits, opens a PR, runs review, or merges. The discipline applies regardless of work scope — single-issue fix, multi-step /longrun, and substrate-defect filing all run the same six steps.
|
|
13
|
-
|
|
14
|
-
## What the rule requires
|
|
15
|
-
|
|
16
|
-
Before merging a PR that touches code or substrate, the agent has done all six main steps plus three sub-steps:
|
|
17
|
-
|
|
18
|
-
0.5. `/pre-mortem` light fired (3 luminary lenses, 5-8 risks per lens, 30 min per Klein workshop shape) BEFORE Step 1 /temperance. Marker exists at `state/markers/pre-mortem/<branch-slug>.marker` citing the risk ledger path. Strongest concerns fold into the plan before edits begin. Per `.claude/skills/pre-mortem/SKILL.md` light mode.
|
|
19
|
-
1. `/temperance` fired with answers stated (smallest shape, blast radius, brute-force check). Marker exists at `state/markers/temperance/<branch-slug>.marker`.
|
|
20
|
-
2. `/luminary` picked at least one primary lens. Marker exists at `state/markers/luminary/<branch-slug>.marker`. Slugs recorded in the evidence row's `authoring_luminaries` field.
|
|
21
|
-
2a. Marker declares `lead` field naming one primary luminary; `supporting` field lists the others. Lead is the luminary whose lens verifies the ship at Step 5.5. Format mirrors bet-doc frontmatter `authoring_luminaries.primary` and `.supporting`.
|
|
22
|
-
3. Tier 0 strict TDD satisfied where the testing tier requires it. Tests pass. The `testing-tier-enforce` hook has not blocked the commit.
|
|
23
|
-
4. Review run. Findings categorized as red, amber, green, note. CodeReviewer agent dispatched OR inline review with luminary lens applied.
|
|
24
|
-
5. Red and amber findings resolved through one or more iterations. Iteration count recorded. When the change is a SKILL body rewrite (any file under `.claude/skills/*/SKILL.md`), the intent check is measurable — run `scripts/intent-drift-check.sh --skill <slug>`. Cosine at or above 0.90 versus the saved vector at `.claude/embeddings/skills/<slug>.json` passes. Cosine below threshold means intent drifted and the rewrite iterates or reverts. Subjective promise-list checks satisfy the step ONLY when no saved vector exists (new skill). Threshold raised from 0.85 to 0.90 per #790 (2026-07-19) after first-6-cures median landed at 0.987.
|
|
25
|
-
5.5. Lead lens confirms all red and amber findings cleared before Step 6 merge. Marker exists at `state/markers/lead-lens-signoff/<branch-slug>.marker` naming the lead luminary and either "no findings" or the specific finding IDs cleared. Rubber-stamp sign-off is a discipline miss — sign-off must cite finding IDs or state "no findings" with rationale.
|
|
26
|
-
6. PR body carries the structured evidence including the three markers from Steps 0.5, 2a, 5.5. Squash merge. Evidence row status flips to merged.
|
|
27
|
-
|
|
28
|
-
Silence at any step is not deferral. Explicit deferral with stated rationale is the only acceptable skip.
|
|
29
|
-
|
|
30
|
-
The three sub-steps (0.5 + 2a + 5.5) close the aggregate-GREEN balancing check gap named in #845 body Cure B. When every gate reports GREEN independently but the fix ships in the wrong shape, the missing signal is a balancing check — a lens that reads the aggregate and asks "does this actually solve the problem." The lead luminary IS the balancing check. Ships per #836.
|
|
31
|
-
|
|
32
|
-
## What this rule does NOT require
|
|
33
|
-
|
|
34
|
-
- A specific number of luminaries (one minimum; five maximum per `/luminary` skill ceiling).
|
|
35
|
-
- A specific finding count (red and amber findings should exist; zero on every PR signals shallow review).
|
|
36
|
-
- A specific iteration count (zero is acceptable when first review is clean).
|
|
37
|
-
- The CodeReviewer agent specifically — inline review with luminary lens is acceptable for smaller scope.
|
|
38
|
-
- A standalone evidence document. Tier 1 evidence rows live in PR body sections; tier 0 in standalone files. Both satisfy the rule.
|
|
39
|
-
|
|
40
|
-
## Skip path with explicit deferral
|
|
41
|
-
|
|
42
|
-
Some work skips part of the cycle by declaration:
|
|
43
|
-
|
|
44
|
-
- **Trivial change** — typo, dependency bump, single-line rename. Commit message line `loop: skipped — trivial change, no review surface` records the skip.
|
|
45
|
-
- **Documented emergency** — production incident with operator-approved bypass. PR body carries authorization.
|
|
46
|
-
- **Operator direct merge** — operator authors the change and merges. The discipline applies to the agent work that surfaces it, not to the operator's edit.
|
|
47
|
-
|
|
48
|
-
Silence is not skip. Default is run the cycle.
|
|
49
|
-
|
|
50
|
-
## Composes with
|
|
51
|
-
|
|
52
|
-
- `standards/construction-evidence-discipline.md` — the artifact produced per cycle
|
|
53
|
-
- `.claude/rules/testing-tier-config.md` — step 3 enforcement
|
|
54
|
-
- `.claude/rules/wu-sequencing-compounds.md` — sister discipline at the multi-step bet level
|
|
55
|
-
- `.claude/rules/blocked-items.md` — the protocol for surfacing skipped steps that should have run
|
|
56
|
-
- `.claude/skills/pre-mortem/SKILL.md` — Step 0.5 method; light mode shape (3 lenses, 30 min)
|
|
57
|
-
- `.claude/luminaries/gary-klein.md` — Step 0.5 anchor (pre-mortem originator)
|
|
58
|
-
|
|
59
|
-
## Mechanical enforcement
|
|
60
|
-
|
|
61
|
-
V1 ships this rule + the standard. V2 (deferred) extends `pre-commit-gate.sh` to verify both markers exist for the branch before any commit, and adds a PR-open hook that verifies the evidence section is present in the PR body.
|
|
62
|
-
|
|
63
|
-
Per memory `feedback_hooks_beat_methodology_for_substrate_quality`: V2 hook ships alongside the methodology — both required for the discipline to hold across context boundaries.
|
|
64
|
-
|
|
65
|
-
## Override path
|
|
66
|
-
|
|
67
|
-
`SKIP_LOOP_DISCIPLINE=1 <command>` — logged via trace-helper. Use only for migration scripts that author many goal docs at once, or for emergency rescue. Routine skip is not an override target; routine skip is a methodology miss.
|
|
68
|
-
|
|
69
|
-
## Source dialogue
|
|
70
|
-
|
|
71
|
-
2026-06-23 overnight bet 23a (discipline mechanization three disciplines). The loop was exercised on every step during the goal; this rule and the companion standard codify what the goal did.
|
|
72
|
-
|
|
73
|
-
## Refs
|
|
74
|
-
|
|
75
|
-
- goal doc `docs/iteration-bets/2026-06-23a-discipline-mechanization-three-disciplines.md` — the goal that ran the loop and proved the discipline
|
|
76
|
-
- `.claude/luminaries/kent-beck.md` — primary lineage (red-green-refactor)
|
|
77
|
-
- `.claude/luminaries/gary-klein.md` — Step 0.5 pre-mortem lineage
|
|
78
|
-
- Memory `feedback_hooks_beat_methodology_for_substrate_quality` — pattern for V2 mechanical layer
|
|
79
|
-
- Ticket 836 — parent filing (three sub-steps + hook extension)
|
|
80
|
-
- Ticket 845 — Cure B (aggregate-GREEN balancing check) — Step 5.5 lead-lens sign-off ships that cure
|
|
81
|
-
- Goal doc `docs/iteration-bets/2026-07-24a-ship-836-loop-discipline-extension.md` — ship vehicle for the three sub-steps
|