@thebassclef/lite 0.1.3 → 1.0.1
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 +431 -135
- package/dist/cli.js +433 -137
- 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/{substrate → dist/lite}/.claude/hooks/artifact-ingestion-gate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/assert-verify-steering.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/bassclef-source-config-validate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/bassclef-sync.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/compound-noun-scrub.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/kiss-expansion-inject.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/longrun-prep-compounding-sequence-check.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/plain-english-steering.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/post-skill-friction-check.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/post-skill-telemetry.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/pre-build-gate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/pre-commit-gate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/session-end.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/session-reflection.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/skill-body-grade-gate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/skill-body-intent-drift.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/state-validate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/substrate-clarity-gate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/temperance-gate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/testing-tier-enforce.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/turn-prose-grade-measure.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/turn-prose-kiss-check.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/vocabulary-migration-check.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/whereami-utc-gate.sh +0 -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/longrun-prep-compounding-axis-check.sh +0 -492
- package/substrate/.claude/hooks/skill-step-list-check.sh +0 -171
- 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,100 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
globs: [".github/workflows/**/*.yml", ".github/workflows/**/*.yaml"]
|
|
4
|
-
description: Prod deploys require GitHub Environments with required_reviewers — no exceptions
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Manual Prod Approval Rule
|
|
8
|
-
|
|
9
|
-
Every app repo's production deploy MUST gate on GitHub Environments
|
|
10
|
-
with `required_reviewers` configured. Auto-deploy-to-prod on any
|
|
11
|
-
branch push is a rule violation.
|
|
12
|
-
|
|
13
|
-
## Why
|
|
14
|
-
|
|
15
|
-
`guardrails.md` already says: "Deploy to production without human
|
|
16
|
-
approval — even in orchestrator-gated mode. This is the hardest
|
|
17
|
-
guardrail. No exceptions."
|
|
18
|
-
|
|
19
|
-
This rule specifies the **mechanism** for enforcement: GitHub's
|
|
20
|
-
native Environments feature with reviewer requirements, not agent
|
|
21
|
-
discipline. Agents can and will skip softer forms. Infrastructure-
|
|
22
|
-
enforced gates cannot be skipped.
|
|
23
|
-
|
|
24
|
-
## What satisfies the rule
|
|
25
|
-
|
|
26
|
-
A deploy workflow with a job referencing a GitHub Environment that
|
|
27
|
-
has `required_reviewers` configured:
|
|
28
|
-
|
|
29
|
-
```yaml
|
|
30
|
-
jobs:
|
|
31
|
-
deploy-prod:
|
|
32
|
-
environment:
|
|
33
|
-
name: prod # ← this environment must exist in repo settings
|
|
34
|
-
# with required_reviewers set
|
|
35
|
-
steps:
|
|
36
|
-
- ... actual deploy steps
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Repo settings at github.com/[owner]/[repo]/settings/environments
|
|
40
|
-
must show:
|
|
41
|
-
- Environment named `prod`
|
|
42
|
-
- Deployment protection rules enabled
|
|
43
|
-
- Required reviewers populated (at least one operator)
|
|
44
|
-
|
|
45
|
-
## What violates the rule
|
|
46
|
-
|
|
47
|
-
- `main` branch push auto-deploys to prod without Environment gating
|
|
48
|
-
- Any workflow job deploying to prod without `environment:` field
|
|
49
|
-
- Environment exists but has no required reviewers (empty list = auto-approved)
|
|
50
|
-
- Reviewers are GitHub bots / service accounts (must be human identity)
|
|
51
|
-
|
|
52
|
-
## Detection
|
|
53
|
-
|
|
54
|
-
This rule fires when:
|
|
55
|
-
- A new app repo is scaffolded by `/autonomous start` with
|
|
56
|
-
`deploy_targets.prod` set to a URL
|
|
57
|
-
- `.github/workflows/deploy.yml` is added or modified
|
|
58
|
-
- Pre-commit-gate hook detects workflow changes touching prod deploy steps
|
|
59
|
-
|
|
60
|
-
## Enforcement
|
|
61
|
-
|
|
62
|
-
- Pre-commit-gate hook surfaces a warning if deploy workflow
|
|
63
|
-
touches prod without Environment reference
|
|
64
|
-
- `/substrate-check` skill validates Environment + reviewer configuration
|
|
65
|
-
when `deploy_targets.prod` is set
|
|
66
|
-
- `/deploy-prod` skill refuses to run if Environment validation
|
|
67
|
-
fails
|
|
68
|
-
|
|
69
|
-
## What agents do when rule is violated
|
|
70
|
-
|
|
71
|
-
Fire BLOCKED: (per `blocked-items.md`):
|
|
72
|
-
- `BLOCKED: prod deploy without approval gate — configure GitHub
|
|
73
|
-
Environment 'prod' with required_reviewers before proceeding`
|
|
74
|
-
- Resolve (configure via `gh api` or UI) or explicit defer with
|
|
75
|
-
rationale. Silence is not deferral.
|
|
76
|
-
|
|
77
|
-
## Setup commands (one-time per repo)
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
# Get your user ID
|
|
81
|
-
USER_ID=$(gh api user --jq '.id')
|
|
82
|
-
|
|
83
|
-
# Create prod environment with yourself as reviewer
|
|
84
|
-
gh api repos/$OWNER/$REPO/environments/prod --method PUT -f "wait_timer=0" \
|
|
85
|
-
-f "deployment_branch_policy[protected_branches]=false" \
|
|
86
|
-
-f "deployment_branch_policy[custom_branch_policies]=true"
|
|
87
|
-
|
|
88
|
-
# Add required reviewer
|
|
89
|
-
gh api repos/$OWNER/$REPO/environments/prod \
|
|
90
|
-
--method PUT \
|
|
91
|
-
-F "reviewers[][type]=User" \
|
|
92
|
-
-F "reviewers[][id]=$USER_ID"
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
## Related
|
|
96
|
-
|
|
97
|
-
- `.claude/rules/guardrails.md` — prod deploy human-approved
|
|
98
|
-
- `standards/deployment-topology.md` — bassclef deploy pattern
|
|
99
|
-
- `standards/substrate-config-schema.md` — `prod_approval_reviewers`
|
|
100
|
-
field convention
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
description: Gate marker files (under state/markers/temperance/, state/markers/luminary/, state/markers/arc-walk/, state/markers/orientation-gate/, state/markers/roadmap-reconcile-gate/) MUST…
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Marker Enrichment Discipline
|
|
7
|
-
|
|
8
|
-
Gate marker files (under `state/markers/temperance/`, `state/markers/luminary/`, `state/markers/arc-walk/`, `state/markers/orientation-gate/`, `state/markers/roadmap-reconcile-gate/`) MUST carry body content within the same WU or PR that creates them. Touching a marker without body content satisfies the gate's existence check but leaves no audit trail — months later, a reader cannot recover the scope-decision, luminary lens, or thread context that the marker is supposed to record.
|
|
9
|
-
|
|
10
|
-
This rule is the methodology layer. The mechanical layer is `pre-build-gate.sh` extended with a non-empty-body check on the 5 gate-marker classes (advisory in V1 per the allowlist baseline; BLOCK in V2 after the allowlist is empty).
|
|
11
|
-
|
|
12
|
-
## Why this rule exists
|
|
13
|
-
|
|
14
|
-
Bet 27c WU-11 surfaced "marker-enrichment-gap" as candidate substrate-defect 5. The gate hooks (`pre-build-gate.sh`) check marker file EXISTENCE only. An agent satisfies the gate by running `touch state/markers/temperance/<branch>.marker`. The marker exists; the gate clears; substantive work proceeds. Months later, a reader looking at the marker has zero evidence of what scope decision was made.
|
|
15
|
-
|
|
16
|
-
Bet 27c shipped 13 PRs across the foundation work. Most markers in `state/markers/` are empty files from earlier sessions where the agent satisfied the gate without recording reasoning. The audit trail is missing.
|
|
17
|
-
|
|
18
|
-
INSTEAD of writing empty markers to clear gates: the WU/PR that creates a marker writes its body content in the same change. Format conventions:
|
|
19
|
-
|
|
20
|
-
- **Temperance marker** — date + branch + scope-decision (right-thing answer, right-way answer, drift trigger)
|
|
21
|
-
- **Luminary marker** — date + branch + primary lens(es) + supporting lens(es) + one-line rationale per lens
|
|
22
|
-
- **Arc-walk marker** — date + branch + parent_bet chain (recursive walk) + drivers consumed
|
|
23
|
-
- **Orientation-gate marker** — date + branch + thread-level read completion notes
|
|
24
|
-
- **Roadmap-reconcile-gate marker** — date + branch + reconcile result (no drift / drift detected / no roadmap declared)
|
|
25
|
-
|
|
26
|
-
The bet 28a WU-0 prep + WU-1..5 markers ship as the exemplar pattern.
|
|
27
|
-
|
|
28
|
-
## When this rule fires
|
|
29
|
-
|
|
30
|
-
Any session creating a marker file in the 5 gate-marker directories:
|
|
31
|
-
|
|
32
|
-
- `state/markers/temperance/`
|
|
33
|
-
- `state/markers/luminary/`
|
|
34
|
-
- `state/markers/arc-walk/`
|
|
35
|
-
- `state/markers/orientation-gate/`
|
|
36
|
-
- `state/markers/roadmap-reconcile-gate/`
|
|
37
|
-
|
|
38
|
-
Does NOT fire on:
|
|
39
|
-
|
|
40
|
-
- `state/markers/session-timing/` — transient timing data, machine-written
|
|
41
|
-
- `state/markers/diagnose/` — fix-branch evidence (uses different format)
|
|
42
|
-
- `state/markers/adr/` — ADR decision markers (different rule)
|
|
43
|
-
- `state/markers/turn-prose-surface/` — kiss-surface flags (different rule)
|
|
44
|
-
- Markers in the allowlist `state/markers/marker-enrichment-allowlist.txt` (grandfathered baseline; cleared over time)
|
|
45
|
-
|
|
46
|
-
## What the rule requires
|
|
47
|
-
|
|
48
|
-
When the step that creates a marker commits:
|
|
49
|
-
|
|
50
|
-
1. Marker file exists at the expected path
|
|
51
|
-
2. Marker file is non-empty (>0 bytes)
|
|
52
|
-
3. Marker body contains the format conventions above (date + branch + decision-content; advisory check in V1, mechanical in V2)
|
|
53
|
-
|
|
54
|
-
INSTEAD of `touch state/markers/temperance/<branch>.marker`: use heredoc to write the body inline:
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
cat > state/markers/temperance/<branch>.marker << 'EOF'
|
|
58
|
-
# Temperance marker — <bet> <WU>
|
|
59
|
-
- date: <ISO date>
|
|
60
|
-
- branch: <branch>
|
|
61
|
-
- scope-decision: <right-thing + right-way + drift-trigger>
|
|
62
|
-
EOF
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Mechanical layer (V1 advisory)
|
|
66
|
-
|
|
67
|
-
`pre-build-gate.sh` extended with `check_marker_non_empty()` function. Fires on existence check; if marker exists but is 0 bytes AND not in the allowlist, emits ADVISORY warning to stderr. Does NOT block in V1.
|
|
68
|
-
|
|
69
|
-
V2 (deferred to follow-on goal): flip to BLOCK once the allowlist baseline is fully cleared (operator backfills over time).
|
|
70
|
-
|
|
71
|
-
## Allowlist
|
|
72
|
-
|
|
73
|
-
`.claude/hooks/marker-enrichment-allowlist.txt` lists existing empty markers as of bet 28a WU-5 land date. Entries grandfathered indefinitely. Operator backfills body content over time; when the allowlist is empty, V2 BLOCK flip becomes eligible.
|
|
74
|
-
|
|
75
|
-
## Override
|
|
76
|
-
|
|
77
|
-
`SKIP_MARKER_ENRICHMENT=1 <command>` — for one-shot migration scripts that bootstrap markers from external state. Logged via trace-helper.
|
|
78
|
-
|
|
79
|
-
INSTEAD of overriding for routine work: write the body. The cost is seconds; the audit trail compounds across every future session reading the marker.
|
|
80
|
-
|
|
81
|
-
## Composes with
|
|
82
|
-
|
|
83
|
-
- `.claude/rules/sdlc-gates.md` — temperance + diagnose gate firing semantics
|
|
84
|
-
- `.claude/rules/blocked-items.md` — BLOCK protocol (V2 will use this)
|
|
85
|
-
- `.claude/rules/testing-tier-config.md` — Tier 0 strict-TDD on the hook + tests
|
|
86
|
-
- `.claude/rules/mechanism-fidelity.md` — sister mechanical-enforcement discipline
|
|
87
|
-
- `.claude/hooks/pre-build-gate.sh` — the mechanical implementation
|
|
88
|
-
- `@luminary michael-feathers` — characterization tests as cure; existing empty markers are legacy; cure by enriching as touched
|
|
89
|
-
|
|
90
|
-
## Refs
|
|
91
|
-
|
|
92
|
-
- bet `docs/iteration-bets/2026-06-28a-mechanism-fidelity-cures-proposal.md` (WU-5)
|
|
93
|
-
- bet 27c WU-11 (substrate-defect candidate 5 identification)
|
|
94
|
-
- Closes bassclef-upstream#438
|
|
95
|
-
- Closes part of bassclef-upstream#440
|
|
96
|
-
|
|
97
|
-
## Retirement condition
|
|
98
|
-
|
|
99
|
-
This rule retires only if the gate-marker primitive itself retires. Body-content conventions may evolve; the discipline of marker-as-audit-trail persists.
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
globs: ["**/*"]
|
|
4
|
-
description: Mobile/ephemeral session rules — state round-trips through git, no filesystem-only markers, explicit session-end
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Mobile / Ephemeral Session Rule
|
|
8
|
-
|
|
9
|
-
Fires whenever the session is running in an ephemeral environment
|
|
10
|
-
(claude.ai/code mobile sandbox, CI runner, temporary container). See
|
|
11
|
-
`standards/mobile-ephemeral-session.md` for the full standard.
|
|
12
|
-
|
|
13
|
-
## Detection
|
|
14
|
-
|
|
15
|
-
**Primary signal (required for certainty):**
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
[ "$CLAUDE_EPHEMERAL" = "1" ]
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
Operator sets this as the first command in mobile / CI / ephemeral
|
|
22
|
-
sessions. Explicit opt-in removes guessing. Put it in a bookmarklet,
|
|
23
|
-
shell init, or session template.
|
|
24
|
-
|
|
25
|
-
**Fallback heuristics** (if primary not set, OR of these):
|
|
26
|
-
|
|
27
|
-
| Check | Signal strength |
|
|
28
|
-
|-------|----------------|
|
|
29
|
-
| `pwd` doesn't start with `/Users/` (macOS operator path) | High |
|
|
30
|
-
| `hostname` doesn't match known operator machines | High |
|
|
31
|
-
| `$HOME` isn't operator's real home | High |
|
|
32
|
-
| `/Applications/Tailscale.app/Contents/MacOS/Tailscale` missing | Medium |
|
|
33
|
-
| `git reflog \| wc -l` is very small (fresh clone) | Medium |
|
|
34
|
-
|
|
35
|
-
If ≥2 fallback signals fire, treat as ephemeral with a surfaced
|
|
36
|
-
warning: "Detected ephemeral mode via heuristics — explicit
|
|
37
|
-
`CLAUDE_EPHEMERAL=1` recommended."
|
|
38
|
-
|
|
39
|
-
**First-session bootstrap**: on the very first mobile session, run
|
|
40
|
-
with heuristics OR explicit flag — observe which signals fire —
|
|
41
|
-
refine this list based on actual claude.ai/code sandbox environment.
|
|
42
|
-
Update this rule after empirical data.
|
|
43
|
-
|
|
44
|
-
## Rules when ephemeral
|
|
45
|
-
|
|
46
|
-
1. **All artifacts push immediately.** Auto-save hook does
|
|
47
|
-
`git commit` AND `git push` — not deferred. If push fails, retry
|
|
48
|
-
once with backoff, then surface failure visibly.
|
|
49
|
-
|
|
50
|
-
2. **Markers go git-tracked, not /tmp.** Any skill or hook that writes
|
|
51
|
-
`/tmp/*` markers MUST also write a git-tracked equivalent. The
|
|
52
|
-
bassclef durable surface is `state/markers/<gate>/...`
|
|
53
|
-
(temperance, diagnose, edit-count, session-timing); `/verify` keeps
|
|
54
|
-
its own pre-existing surface at `state/markers/verify/<branch>.marker`
|
|
55
|
-
for backward-compat with `pre-commit-gate.sh`. In ephemeral mode,
|
|
56
|
-
the git-tracked form is authoritative. Consumers of gate evidence
|
|
57
|
-
(pre-build-gate hook, compliance counter, `/chronicle` gate-evidence
|
|
58
|
-
auto-populate) read whichever form exists; dual-write ensures mobile
|
|
59
|
-
firings survive sandbox teardown.
|
|
60
|
-
|
|
61
|
-
3. **Session lock has TTL.** Lock at `.claude/SESSION_LOCK` includes
|
|
62
|
-
ISO 8601 timestamp. Locks older than 30 minutes are cleared with
|
|
63
|
-
an announcement ("Clearing stale lock from [timestamp]"). No
|
|
64
|
-
indefinite holds.
|
|
65
|
-
|
|
66
|
-
4. **Explicit session-end MUST fire.** Stop hook is unreliable in
|
|
67
|
-
ephemeral. Agent must invoke `/session-end` at natural stopping
|
|
68
|
-
points — task complete, context pressure, operator cue.
|
|
69
|
-
|
|
70
|
-
5. **No credential-bearing tools.** Ephemeral sessions do not hold
|
|
71
|
-
SSH keys, AWS access keys, Tailscale tokens, or long-lived PATs.
|
|
72
|
-
Only fine-grained PATs or GitHub App installation tokens with
|
|
73
|
-
short TTL. Deploy work happens in CI after PR merge, never from
|
|
74
|
-
ephemeral.
|
|
75
|
-
|
|
76
|
-
6. **Chronicle read at session start.** If project memory isn't
|
|
77
|
-
available (no MCP memory server), read the last 2-3 chronicles
|
|
78
|
-
at session start as context substitute. This is how ephemeral
|
|
79
|
-
sessions recover "what we were working on."
|
|
80
|
-
|
|
81
|
-
7. **Conservative gating default.** Orchestrator-gated mode requires
|
|
82
|
-
explicit `--ephemeral-ok` flag in ephemeral. Default is operator-
|
|
83
|
-
gated even if orchestrator was requested — ephemeral adds risk
|
|
84
|
-
that deserves confirmation at decision points.
|
|
85
|
-
|
|
86
|
-
## Failures to surface
|
|
87
|
-
|
|
88
|
-
When any of the following happen, session output must prominently
|
|
89
|
-
report it:
|
|
90
|
-
|
|
91
|
-
- Push failure on auto-save (state loss risk)
|
|
92
|
-
- Stale lock cleared (possible other session running)
|
|
93
|
-
- Chronicle read failed at start (no context recovery)
|
|
94
|
-
- Credential-bearing tool invoked (should not happen; rule violation)
|
|
95
|
-
|
|
96
|
-
## Rationale
|
|
97
|
-
|
|
98
|
-
Desktop sessions assume the filesystem survives between steps. Mobile
|
|
99
|
-
sessions don't. A rule that lets agents keep working with the same
|
|
100
|
-
skills and hooks — but with ephemeral-safe behavior — is how
|
|
101
|
-
continuity holds.
|
|
102
|
-
|
|
103
|
-
## Relationship
|
|
104
|
-
|
|
105
|
-
- `standards/mobile-ephemeral-session.md` — full standard with
|
|
106
|
-
all MUST/SHOULD items
|
|
107
|
-
- `.claude/rules/blocked-items.md` — BLOCKED: protocol still applies
|
|
108
|
-
- `.claude/rules/guardrails.md` — "deploy prod requires human approval"
|
|
109
|
-
is reinforced by this rule (ephemeral can't deploy anyway)
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
globs: ["package.json", "package-lock.json", "pnpm-lock.yaml", "yarn.lock", "requirements.txt", "pyproject.toml", "poetry.lock", "Gemfile", "Gemfile.lock", "Cargo.toml", "Cargo.lock", "go.mod", "go.sum"]
|
|
4
|
-
description: New dependency check — verify before adding any package; loads per-pkg-manager sibling
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# New Dependency Check
|
|
8
|
-
|
|
9
|
-
Before adding any new dependency to the project, verify five universal concerns. Then load the per-package-manager sibling under `standards/dependency-discipline/<pkg_manager>.md` for stack-specific specifics.
|
|
10
|
-
|
|
11
|
-
## Universal concerns (every package manager)
|
|
12
|
-
|
|
13
|
-
1. **Stack compatibility** — does it work with the project's framework, language version, build system, and runtime constraints?
|
|
14
|
-
2. **Bundle / install impact** — what does it add to your build artifact, install footprint, or runtime memory?
|
|
15
|
-
3. **Runtime compatibility** — does the package make assumptions about the runtime environment (SSR vs CSR, threaded vs async, target architecture)?
|
|
16
|
-
4. **Maintenance risk** — last publish date, open issues, bus factor. Prefer packages from known maintainers or organizations.
|
|
17
|
-
5. **Alternatives** — can the need be met without a dependency? Built-in standard library? CSS-only? Native HTML? Small inline helper?
|
|
18
|
-
|
|
19
|
-
## Per-package-manager siblings
|
|
20
|
-
|
|
21
|
-
Bassclef's loader logic reads `tech_stack.pkg_manager:` from `.claude/bassclef-configs.jsonc` and loads the matching sibling for stack-specific specifics:
|
|
22
|
-
|
|
23
|
-
| Adopter's `pkg_manager` | Sibling loaded |
|
|
24
|
-
|---|---|
|
|
25
|
-
| `npm` / `pnpm` / `yarn` | `standards/dependency-discipline/npm.md` |
|
|
26
|
-
| `pip` / `poetry` | `standards/dependency-discipline/pip.md` |
|
|
27
|
-
| `cargo` | `standards/dependency-discipline/cargo.md` |
|
|
28
|
-
| `gem` | `standards/dependency-discipline/gem.md` |
|
|
29
|
-
| `go-mod` | `standards/dependency-discipline/go-mod.md` |
|
|
30
|
-
| `none` or unset | Universal concerns only |
|
|
31
|
-
|
|
32
|
-
When the matching sibling does not exist (e.g., a stack bassclef has not yet adopted), the rule fires the universal concerns only and surfaces a `/promote` candidate for the missing sibling.
|
|
33
|
-
|
|
34
|
-
## Process
|
|
35
|
-
|
|
36
|
-
1. State the package name and what it is for.
|
|
37
|
-
2. Run the five universal checks above.
|
|
38
|
-
3. Run the per-PM checks from the matching sibling.
|
|
39
|
-
4. If red flags surface in any check, propose an alternative.
|
|
40
|
-
5. If clear, install and add to the project's Approved Dependencies list (or equivalent — see sibling for the exact list name and location).
|
|
41
|
-
|
|
42
|
-
## Tech stack vocabulary
|
|
43
|
-
|
|
44
|
-
The loader reads `tech_stack.pkg_manager` shipped in bassclef#1127 (WU-2 of bet 2026-06-18a). Adopters set the value at `/onboard-repo` Phase 2.x. When `tech_stack:` block is absent, the universal concerns still apply; sibling-specific guidance is skipped until the operator declares the stack.
|
|
45
|
-
|
|
46
|
-
## Refs
|
|
47
|
-
|
|
48
|
-
- Path A pattern from bassclef#1133 (ARCH-T0 stack-leakage audit).
|
|
49
|
-
- WU-10 of bet `docs/iteration-bets/2026-06-18a-public-adopter-leverage-longrun.md` ships this catalog split.
|
|
50
|
-
- Sister Path A: bassclef#1133 WU-5 (schema-management → migration-discipline catalog).
|
|
51
|
-
- Reads from bassclef#1127 (tech_stack vocabulary).
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
globs: ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js", "src/**/*.py", ".claude/hooks/*.sh", "lib/*.sh", "scripts/*.sh"]
|
|
4
|
-
description: OOA/D entry point — /decompose must fire for all Construction work, not just canvas-driven flow. Extended per bet 24a to cover hook + lib + script code paths per Cockburn ceremony tiering matrix.
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# OOA/D Entry Point Rule
|
|
8
|
-
|
|
9
|
-
Construction work that modifies `src/` source files OR substrate code
|
|
10
|
-
(`.claude/hooks/*.sh`, `lib/*.sh`, `scripts/*.sh`) MUST have `/decompose`
|
|
11
|
-
evidence in the session before the first substantive commit. This applies
|
|
12
|
-
regardless of the starting artifact — canvas, spec, epic, defect ticket,
|
|
13
|
-
or bug report.
|
|
14
|
-
|
|
15
|
-
Ceremony scales with code class per Alistair Cockburn's use-case tiering
|
|
16
|
-
(skip / casual / brief / fully-dressed). Table amended per canvas
|
|
17
|
-
`docs/canvases/2026-08-25-ooad-chain-as-substrate-offering.md` Axis 1 —
|
|
18
|
-
adds a skip row at the top and lifts new substrate hook/lib to fully-dressed
|
|
19
|
-
with ADR consult per Ousterhout + Beck + Brooks convergence:
|
|
20
|
-
|
|
21
|
-
| Code class | Ceremony minimum | Artifact path |
|
|
22
|
-
|---|---|---|
|
|
23
|
-
| Typo, comment fix, doc edit | Skip. No chain fires. | — |
|
|
24
|
-
| One-line change inside existing function | Casual use case sentence in commit body | Commit body |
|
|
25
|
-
| Existing code extension (add arg, add case) | Brief use case + /decompose entry-point check | `docs/use-cases/UC-*.md` (brief) |
|
|
26
|
-
| Adopter app code (`src/*.ts`, new module or route) | Fully-dressed use case + /decompose + /spec | `docs/use-cases/UC-*.md` |
|
|
27
|
-
| Substrate hook (new `.claude/hooks/*.sh`) | Fully-dressed use case + /decompose + ADR consult | `docs/use-cases/UC-hook-*.md` |
|
|
28
|
-
| Substrate lib (new `lib/*.sh` module) | Fully-dressed use case + /decompose + ADR consult | `docs/use-cases/UC-lib-*.md` |
|
|
29
|
-
| Adopter-facing script (new `scripts/*.sh`) | Brief use case + Tier 0 tests | `docs/use-cases/UC-script-*.md` |
|
|
30
|
-
|
|
31
|
-
Cockburn's rule — ceremony scales with the audience for the artifact.
|
|
32
|
-
Fully-dressed reads by future maintainers, testers, product folks. Brief
|
|
33
|
-
reads by devs on the same team. Casual reads by the author six weeks later.
|
|
34
|
-
|
|
35
|
-
Bet 24a extended the trigger to substrate code paths so hooks + libs +
|
|
36
|
-
scripts get the same design-first discipline that adopter app code gets.
|
|
37
|
-
Per Feathers legacy-code retrofit — characterization tests come first for
|
|
38
|
-
existing code; brief use case follows the tests.
|
|
39
|
-
|
|
40
|
-
## Why this rule exists
|
|
41
|
-
|
|
42
|
-
The `/decompose` skill catches the Langfuse-inside-HaikuImputer class
|
|
43
|
-
of mistakes: cross-cutting concerns (observability, testability,
|
|
44
|
-
extensibility, security, cacheability) bolted into implementations
|
|
45
|
-
instead of resolved as Decorators wrapping interfaces.
|
|
46
|
-
|
|
47
|
-
Recurring pattern: when Construction starts from a canvas, the UX
|
|
48
|
-
translation chain (canvas → spec → ia-model → interaction-design →
|
|
49
|
-
sequence diagrams → /decompose) runs naturally. When it starts from
|
|
50
|
-
an epic or bug, agents jump to implementation and skip /decompose
|
|
51
|
-
entirely — reproducing the exact failure mode the skill was built
|
|
52
|
-
to prevent.
|
|
53
|
-
|
|
54
|
-
Evidence:
|
|
55
|
-
- POA 2026-04-09: Langfuse tracing bolted into HaikuImputer instead
|
|
56
|
-
of wrapping AssociationImputer facade
|
|
57
|
-
- POA 2026-04-12: Credit-tracking logic added inline to scraper-api.ts
|
|
58
|
-
instead of ScraperMetricsDecorator wrapping interface (epic #472)
|
|
59
|
-
|
|
60
|
-
Both were epic-driven (no canvas). /decompose was skipped.
|
|
61
|
-
|
|
62
|
-
## What triggers the rule
|
|
63
|
-
|
|
64
|
-
Creating changes to `src/` files on a Construction branch
|
|
65
|
-
(`feature/*`, `fix/*`) without prior /decompose evidence.
|
|
66
|
-
|
|
67
|
-
## What satisfies the rule
|
|
68
|
-
|
|
69
|
-
One of:
|
|
70
|
-
|
|
71
|
-
1. **Decomposition artifact** at `docs/decompositions/[slug].md` or
|
|
72
|
-
inline in the spec, produced by running `/decompose`.
|
|
73
|
-
2. **Explicit trivial-work deferral**: "Skipped /decompose — trivial
|
|
74
|
-
change, no responsibility reassignment" stated in session.
|
|
75
|
-
3. **Bug-hotfix deferral**: "Skipped /decompose — hotfix, diagnosis
|
|
76
|
-
identified specific failure site, no cross-cutting concerns
|
|
77
|
-
involved" stated in session.
|
|
78
|
-
|
|
79
|
-
Silence is not deferral (per blocked-items rule).
|
|
80
|
-
|
|
81
|
-
## Entry-point variants (per /decompose)
|
|
82
|
-
|
|
83
|
-
- State 1 (canvas path): sequence diagrams drive decomposition
|
|
84
|
-
- State 2 (epic/defect): reverse-engineer from spec + current code
|
|
85
|
-
- State 3 (bug/hotfix): decompose the failure site, identify missing
|
|
86
|
-
interface/decorator
|
|
87
|
-
|
|
88
|
-
All three produce the same artifact format; agents must not skip the
|
|
89
|
-
skill just because the input shape differs from State 1.
|
|
90
|
-
|
|
91
|
-
## Enforcement
|
|
92
|
-
|
|
93
|
-
This rule ships at `tier: lite` — every adopter tier loads the discipline as methodology guidance.
|
|
94
|
-
The mechanical BLOCK layer ships at `tier: standard`:
|
|
95
|
-
|
|
96
|
-
**Methodology layer (all tiers — lite, standard, ultra).**
|
|
97
|
-
Rule loads in session context. Agents self-check at Construction branch creation per the ceremony matrix above.
|
|
98
|
-
|
|
99
|
-
**Mechanical layer (standard, ultra only).**
|
|
100
|
-
Hook at `.claude/hooks/oo-ad-entry-point-check.sh` (bassclef-upstream#1169) fires on PreToolUse Edit/Write against paths in the frontmatter globs. It BLOCKs new-file writes when the required artifacts are missing.
|
|
101
|
-
|
|
102
|
-
The hook checks two conditions:
|
|
103
|
-
- Decomposition — marker at `state/markers/decompose/<branch>.marker` OR any file under `docs/decompositions/`
|
|
104
|
-
- Use case — matching `docs/use-cases/UC-*.md` per code class (UC-hook-*, UC-lib-*, UC-script-*, or unprefixed UC-*)
|
|
105
|
-
|
|
106
|
-
Existing file Edit passes through (Cockburn casual tier — commit body carries the discipline).
|
|
107
|
-
Override: `SKIP_OO_AD_ENTRY_POINT=1` logged via trace-helper.
|
|
108
|
-
|
|
109
|
-
**Lite adopter behavior.** Rule guides ceremony choice; no BLOCK fires on lite. Canvas Axis 1 (docs/canvases/2026-08-25-ooad-chain-as-substrate-offering.md) applied Ousterhout + Beck + Brooks lens — mechanical enforcement fits standard+ scope. INSTEAD of BLOCK on lite: rule guidance shapes agent behavior at construction branch creation. Methodology guidance benefits all adopters; mechanical BLOCK is standard+ scope.
|
|
110
|
-
|
|
111
|
-
## Relationship to other rules
|
|
112
|
-
|
|
113
|
-
- `sdlc-gates.md` Pre-Build section — temperance + diagnosis gates
|
|
114
|
-
fire before this one
|
|
115
|
-
- `blocked-items.md` — entry-point skip is a BLOCKED condition; resolve
|
|
116
|
-
or explicitly defer
|
|
117
|
-
- `testing.md` — new interfaces identified via /decompose need tests
|