@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,261 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
standard: scannable-multi-option-output
|
|
4
|
-
status: accepted
|
|
5
|
-
authoring_luminaries:
|
|
6
|
-
primary:
|
|
7
|
-
- don-norman
|
|
8
|
-
- sophia-prater
|
|
9
|
-
supporting:
|
|
10
|
-
- jesse-james-garrett
|
|
11
|
-
- edward-tufte
|
|
12
|
-
description: Design principles for skills that render multi-option choice surfaces (e.g.
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# Scannable multi-option output
|
|
16
|
-
|
|
17
|
-
Design principles for skills that render multi-option choice surfaces (e.g. `/longrun prep`, `/sprint` Step 7). The principles below apply when the output stacks 3-5 tables covering options + trade-offs + steps and the operator needs to scan + pick fast.
|
|
18
|
-
|
|
19
|
-
## Sources read
|
|
20
|
-
|
|
21
|
-
- `.claude/luminaries/don-norman.md` — signifiers + mapping + feedback + constraints
|
|
22
|
-
- `.claude/luminaries/jesse-james-garrett.md` — five planes of UX (strategy + scope + structure + skeleton + surface)
|
|
23
|
-
- `.claude/luminaries/sophia-prater.md` — OOUX (objects first) + progressive disclosure
|
|
24
|
-
- `.claude/luminaries/edward-tufte.md` — data-ink ratio + small multiples + sparklines + glyph encodes data
|
|
25
|
-
- `docs/personas/sam.md` L33 — "I skim first, dig second, bail third."
|
|
26
|
-
- `docs/personas/2026-07-12-bet11c-louis.md` L25 — "Skims group headings first."
|
|
27
|
-
- Ticket #853 — the filing case for this discipline
|
|
28
|
-
- Bet 24e — this extension adds Tufte + Prater + card template + glyph legend + progressive disclosure
|
|
29
|
-
|
|
30
|
-
## Readers we design for
|
|
31
|
-
|
|
32
|
-
Two personas set the bar.
|
|
33
|
-
|
|
34
|
-
- **Sam** has a 15-30 min Saturday budget. He bounces on friction. He skims, digs, bails.
|
|
35
|
-
- **Louis** skims group headings first. He opens a section only when this week's work needs it.
|
|
36
|
-
|
|
37
|
-
Both punish output that hides structure or repeats content across tables.
|
|
38
|
-
|
|
39
|
-
## The Norman + Garrett debate
|
|
40
|
-
|
|
41
|
-
### Norman on signifiers + feedback
|
|
42
|
-
|
|
43
|
-
Sam bounces on friction. His scan budget cannot afford re-reading the same table twice. Louis skims headings first. Headings ARE the affordance. No heading means no affordance. Signifiers must be OBVIOUS on first scan.
|
|
44
|
-
|
|
45
|
-
On a refinement, delta rendering IS the feedback loop. Silent rebuild breaks the loop.
|
|
46
|
-
|
|
47
|
-
Mapping — one anchor for one concern. Never one anchor for three tables.
|
|
48
|
-
|
|
49
|
-
### Garrett on the five planes
|
|
50
|
-
|
|
51
|
-
Stacked tables live at the skeleton plane. That is where things are placed.
|
|
52
|
-
|
|
53
|
-
A first-cut prep output mixes four planes in one visual block. Strategy plus scope plus structure plus skeleton. Mixed planes break the five-planes rule.
|
|
54
|
-
|
|
55
|
-
Give each plane its own `###` anchor. Reader scans anchors. Reader opens the one they need.
|
|
56
|
-
|
|
57
|
-
## The Tufte + Prater debate (bet 24e extension)
|
|
58
|
-
|
|
59
|
-
### Prater on OOUX
|
|
60
|
-
|
|
61
|
-
Each option is an object. Each object has attributes — Problem, Value, Compounds, Adopter, Risk. Rendering one attribute per table forces the reader to reassemble the object in their head. Schema-mirror UX. The interface should mirror the reader's mental model.
|
|
62
|
-
|
|
63
|
-
One card per option. Object first. Attributes inline with bold labels. Progressive disclosure — options at first glance; step detail expands only for the option the reader picks.
|
|
64
|
-
|
|
65
|
-
### Tufte on data density
|
|
66
|
-
|
|
67
|
-
The 5-table stack is chartjunk. Every cell repeats option labels + carries one axis. Data-ink ratio is low. Same shape repeated per option is small multiples — belongs in one dense structure.
|
|
68
|
-
|
|
69
|
-
Glyphs encode data, not decoration. Color IS the data (🟢 low / 🟡 medium / 🔴 high). Sparkline analog — a single glyph beats a cell full of prose.
|
|
70
|
-
|
|
71
|
-
Progressive disclosure serves data-ink too. Do not render step detail for options the operator will not pick.
|
|
72
|
-
|
|
73
|
-
## Synthesized principles
|
|
74
|
-
|
|
75
|
-
Twelve principles the four lenses agreed on. Skills that render multi-option surfaces MUST follow them.
|
|
76
|
-
|
|
77
|
-
1. **One anchor per concern.** `###` header before each block. Anchor names the plane or concern.
|
|
78
|
-
2. **Bold anchor pattern for sub-blocks.** Where an `###` header would be too heavy, use bold anchor plus blank line.
|
|
79
|
-
3. **Delta rendering on refinements.** When operator asks "add column X", render ONLY the new column with reference to the source anchor by name.
|
|
80
|
-
4. **Horizontal rule between planes.** `---` separates strategy from structure from skeleton. Not between every table.
|
|
81
|
-
5. **Whitespace floor.** At least 2 blank lines OR one HR between top-level anchors.
|
|
82
|
-
6. **Recommendation always at end.** One sentence citing compounding sequence + risk class.
|
|
83
|
-
7. **Compact scan-table first** (Tufte). 4-6 columns, one row per option, glyphs encode risk + compounding rate. Reader scans + picks in 20-30 seconds.
|
|
84
|
-
8. **One card per option** (Prater OOUX). Each card carries Problem + Value + Compounds + Adopter + Risk inline with bold labels.
|
|
85
|
-
9. **Steps rendered only for the recommended option** (Prater + Tufte). Progressive disclosure. Not for all 3 options.
|
|
86
|
-
10. **Problem + Value inline in every option card AND every step card.** Names the user pain the option or step addresses.
|
|
87
|
-
11. **Glyphs encode data, not decoration** (Tufte chartjunk rule). Only glyphs that carry a signal ship.
|
|
88
|
-
12. **Delta rendering as inline callout** — "Added: change class (delta on § Options above)" + small table with only the delta cells.
|
|
89
|
-
|
|
90
|
-
## Card template
|
|
91
|
-
|
|
92
|
-
Every option card ships in this shape:
|
|
93
|
-
|
|
94
|
-
```
|
|
95
|
-
### <label> · <scope> · <turns> · <risk glyph> <risk word>
|
|
96
|
-
|
|
97
|
-
**Problem** — <one sentence naming the user pain this option addresses>
|
|
98
|
-
**Value** — <one sentence naming what the operator gets>
|
|
99
|
-
**Compounds** — <axis 1> · <axis 2> · <axis 3> · <axis 4> · <axis 5>
|
|
100
|
-
**Adopter** — <mechanism> · <visibility> · <action required>
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
Every step card ships in this shape:
|
|
104
|
-
|
|
105
|
-
```
|
|
106
|
-
### Step <N> · <slug> · <turns> · <risk glyph> <risk word>
|
|
107
|
-
|
|
108
|
-
**Problem** — <one sentence naming the pain this step solves>
|
|
109
|
-
**Produces** — <artifact path or decision>
|
|
110
|
-
**Consumes** — <prior step + shared state>
|
|
111
|
-
**Teaches** — <pattern later work reuses>
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
## Glyph legend
|
|
115
|
-
|
|
116
|
-
Only glyphs that encode data. No decoration.
|
|
117
|
-
|
|
118
|
-
| Glyph | Meaning |
|
|
119
|
-
|---|---|
|
|
120
|
-
| 🟢 | low risk |
|
|
121
|
-
| 🟡 | medium risk |
|
|
122
|
-
| 🔴 | high risk |
|
|
123
|
-
| · | axis separator inside an inline value list |
|
|
124
|
-
| § | reference to a named section anchor in delta callouts |
|
|
125
|
-
|
|
126
|
-
Words carry compounding rate — `per-adopter`, `per-session`, `one-time`, `per-quarter`. Arrows and other decorative glyphs stay OUT.
|
|
127
|
-
|
|
128
|
-
## Progressive disclosure — the rule
|
|
129
|
-
|
|
130
|
-
Compact scan-table + per-option cards render for ALL options. Step cards render ONLY for the recommended option.
|
|
131
|
-
|
|
132
|
-
When operator picks a different option, step cards for that option render on the next turn. On operator ask ("show steps for B and C too"), expand for all.
|
|
133
|
-
|
|
134
|
-
Rationale — data-ink and reader attention are finite. Rendering steps for options the operator will not pick is chartjunk.
|
|
135
|
-
|
|
136
|
-
## Delta rendering — the anti-pattern and the cure
|
|
137
|
-
|
|
138
|
-
Silent rebuild:
|
|
139
|
-
|
|
140
|
-
> Operator — "add a change-class column"
|
|
141
|
-
> Agent — re-renders all 4-5 tables verbatim plus one new column
|
|
142
|
-
|
|
143
|
-
Named delta:
|
|
144
|
-
|
|
145
|
-
> Operator — "add a change-class column"
|
|
146
|
-
> Agent — "Adding column to § Options above:"
|
|
147
|
-
> [renders only the new column with the option labels]
|
|
148
|
-
|
|
149
|
-
Full re-render is correct only when the operator asks for it explicitly ("show me the full picture again") OR the underlying option set changed.
|
|
150
|
-
|
|
151
|
-
## When to apply this standard
|
|
152
|
-
|
|
153
|
-
- `/longrun prep` — Steps 1.4c + 1.4d cite this standard
|
|
154
|
-
- `/sprint` Step 7 — Steps 7a + 7b cite this standard
|
|
155
|
-
- Any future skill that renders 3+ option tables with trade-offs
|
|
156
|
-
|
|
157
|
-
## Canonical example — recommendation-first shape (per bassclef-web#152)
|
|
158
|
-
|
|
159
|
-
The example below shows the shape the substrate targets. Reader sees the pick in the first 15 lines. Scan table follows. Card for the recommended option only.
|
|
160
|
-
|
|
161
|
-
### Anti-pattern — decision buried below 5-axis blocks
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
[Three-block opener — Problem + Value + Evidence]
|
|
165
|
-
|
|
166
|
-
## Options
|
|
167
|
-
|
|
168
|
-
| Option | Scope | Turns | Compounds | Risk |
|
|
169
|
-
|---|---|---|---|---|
|
|
170
|
-
| a | Full six-amendment ship | 150-250 | per-session | med |
|
|
171
|
-
| b | Narrow four amendments | 100-150 | per-session | low |
|
|
172
|
-
| c | Adjacent install.sh | 40-80 | per-adopter | med |
|
|
173
|
-
|
|
174
|
-
## Compounding value per option
|
|
175
|
-
|
|
176
|
-
**Option a:** [5-axis block, ~10 lines]
|
|
177
|
-
**Option b:** [5-axis block, ~10 lines]
|
|
178
|
-
**Option c:** [5-axis block, ~10 lines]
|
|
179
|
-
|
|
180
|
-
## Recommended card for Option a
|
|
181
|
-
|
|
182
|
-
[Card ~15 lines]
|
|
183
|
-
|
|
184
|
-
## Steps for Option a
|
|
185
|
-
|
|
186
|
-
[Step cards ~20 lines]
|
|
187
|
-
|
|
188
|
-
## Recommendation
|
|
189
|
-
|
|
190
|
-
Recommend Option a because Y.
|
|
191
|
-
|
|
192
|
-
Reply a, b, or c.
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
Reader scrolls past ~80 lines of options + axes + cards + steps before reaching the pick.
|
|
196
|
-
|
|
197
|
-
### Conformant — recommendation first, cards on demand
|
|
198
|
-
|
|
199
|
-
```
|
|
200
|
-
[Three-block opener — Problem + Value + Evidence]
|
|
201
|
-
|
|
202
|
-
## Recommendation
|
|
203
|
-
|
|
204
|
-
**Recommend:** Option a (six-amendment ship · 150-250 turns · risk 🟡) because per-session compounding beats Option c's per-adopter frequency, and Option b defers /build value by one cycle.
|
|
205
|
-
|
|
206
|
-
## Options
|
|
207
|
-
|
|
208
|
-
| Option | Scope | Turns | Compounds | Risk | Why not (non-rec.) |
|
|
209
|
-
|---|---|---|---|---|---|
|
|
210
|
-
| a | Full six-amendment ship | 150-250 | per-session | 🟡 | rec |
|
|
211
|
-
| b | Narrow four amendments | 100-150 | per-session | 🟢 | drops /build value |
|
|
212
|
-
| c | Adjacent install.sh | 40-80 | per-adopter | 🟡 | drops baseline branch |
|
|
213
|
-
|
|
214
|
-
## Compounding value per option
|
|
215
|
-
|
|
216
|
-
[5-axis block per option — same as anti-pattern; hook postcondition per compounding-sequence-fresh-analysis.md requires per-option coverage today; hook extension to recommended-only lives at follow-on ticket per bassclef-web#152]
|
|
217
|
-
|
|
218
|
-
## Recommended · full · 150-250t · 🟡
|
|
219
|
-
|
|
220
|
-
[Card — Problem / Value / Compounds / Adopter — for Option a only]
|
|
221
|
-
|
|
222
|
-
## Steps for Option a
|
|
223
|
-
|
|
224
|
-
[Step cards — for Option a only]
|
|
225
|
-
|
|
226
|
-
Reply a, b, or c. Ask for "cards for B and C" to expand.
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
Reader sees the pick in the first 8 lines. Scan table follows for context. Cards + step cards on demand for non-recommended.
|
|
230
|
-
|
|
231
|
-
### Anchor luminaries for the reshape
|
|
232
|
-
|
|
233
|
-
- **Sophia Prater (OOUX + progressive disclosure)** — recommended card renders by default; non-recommended cards expand on operator ask
|
|
234
|
-
- **Donald Norman (signifier)** — the recommendation sentence IS the signifier for the decision; place it where the eye lands first
|
|
235
|
-
- **Edward Tufte (data-ink)** — glyphs (🟢/🟡/🔴) encode risk in one character per scan-table cell; drops paragraph prose per option
|
|
236
|
-
- **Jason Fried (say less)** — non-recommended options ship rationale in the `Why not` column; no per-option card
|
|
237
|
-
- **Amazon PR/FAQ (decision at top)** — working-backwards discipline; reader sees "we recommend X because Y" first
|
|
238
|
-
|
|
239
|
-
### Table character class
|
|
240
|
-
|
|
241
|
-
Scan-table cells contain plain alphanumerics per `.claude/rules/visual-hierarchy.md` Section 12. Avoid em-dashes, backticks, quotes, or Unicode ellipsis in cells — Claude Code TUI falls back to key-value paragraphs when these characters appear. Cure per character in the sister rule catalog.
|
|
242
|
-
|
|
243
|
-
## Refs
|
|
244
|
-
|
|
245
|
-
- Ticket #853 — the filing case
|
|
246
|
-
- `.claude/luminaries/don-norman.md`
|
|
247
|
-
- `.claude/luminaries/jesse-james-garrett.md`
|
|
248
|
-
- `.claude/luminaries/sophia-prater.md`
|
|
249
|
-
- `.claude/luminaries/edward-tufte.md`
|
|
250
|
-
- `docs/personas/sam.md`
|
|
251
|
-
- `docs/personas/2026-07-12-bet11c-louis.md`
|
|
252
|
-
- `.claude/skills/longrun/SKILL.md` Steps 1.4c + 1.4d + 1.5-1.7 (card refactor)
|
|
253
|
-
- `.claude/skills/sprint/SKILL.md` Steps 7a + 7b (parity)
|
|
254
|
-
- ADR-040 Decision 4 (SKILL body template shape — this standard offloads the debate content from SKILL bodies to keep template lean)
|
|
255
|
-
- Bet 24d — original filing (principles 1-6)
|
|
256
|
-
- Bet 24e — this extension (principles 7-12 + card template + glyph legend + progressive disclosure)
|
|
257
|
-
- bassclef-web#152 — recommendation-first canonical example (adopter promote landing 2026-08-25)
|
|
258
|
-
|
|
259
|
-
## Retirement
|
|
260
|
-
|
|
261
|
-
Retires only if multi-option surfaces cease to be a bassclef output pattern.
|
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
description: "Defines how gate evidence is captured, where it lives, and how it's queried."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# SDLC Compliance Tracking Standard
|
|
7
|
-
|
|
8
|
-
Defines how gate evidence is captured, where it lives, and how it's queried.
|
|
9
|
-
Replaces the previous trace-log approach (empty action/outcome columns,
|
|
10
|
-
operational problems, now gitignored) with structured compliance data
|
|
11
|
-
embedded in existing artifacts.
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Design Decision: Compliance in Chronicles, Not Separate Files
|
|
16
|
-
|
|
17
|
-
Gate evidence lives **in the chronicle entry**, not in a separate compliance
|
|
18
|
-
report. Rationale:
|
|
19
|
-
|
|
20
|
-
1. Chronicles already capture what happened — compliance is "did the gates
|
|
21
|
-
fire during what happened?"
|
|
22
|
-
2. A separate file creates drift — the chronicle says one thing, the
|
|
23
|
-
compliance report says another
|
|
24
|
-
3. Chronicles are append-only and committed to git — they're auditable
|
|
25
|
-
4. The previous trace-log approach failed because it was a parallel artifact
|
|
26
|
-
nobody maintained
|
|
27
|
-
|
|
28
|
-
The trade-off: compliance data is less machine-queryable embedded in
|
|
29
|
-
chronicles than in structured JSON. If machine querying becomes needed,
|
|
30
|
-
extract it from chronicles rather than maintaining a parallel source of truth.
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Session Timing Fields
|
|
35
|
-
|
|
36
|
-
Every chronicle entry includes timing metadata in the frontmatter.
|
|
37
|
-
These fields close the feedback loop between time budget estimates and
|
|
38
|
-
actual session duration, enabling calibration over time.
|
|
39
|
-
|
|
40
|
-
### Frontmatter timing fields
|
|
41
|
-
|
|
42
|
-
| Field | Type | Required | Description |
|
|
43
|
-
|-------|------|----------|-------------|
|
|
44
|
-
| `started_at` | ISO 8601 datetime | SHOULD | Session start — derived from first commit timestamp or conversation start |
|
|
45
|
-
| `ended_at` | ISO 8601 datetime | SHOULD | Session end — current time at chronicle write |
|
|
46
|
-
| `duration_minutes` | integer | SHOULD | Approximate elapsed minutes (ended_at − started_at) |
|
|
47
|
-
| `turns` | integer or `~N` | SHOULD | Approximate conversation turns this session |
|
|
48
|
-
| `closes` | array of strings | MAY | Issues resolved this session, e.g., `["#37", "#42"]` |
|
|
49
|
-
|
|
50
|
-
All timing fields are optional for backward compatibility — chronicles
|
|
51
|
-
without them are valid historical records. Use `~` prefix for approximate
|
|
52
|
-
values (e.g., `turns: ~40`).
|
|
53
|
-
|
|
54
|
-
### Deriving timing data
|
|
55
|
-
|
|
56
|
-
- `started_at`: First commit on the session's work, or conversation start
|
|
57
|
-
time if available. Approximate is fine — trend data, not billing.
|
|
58
|
-
- `ended_at`: Current timestamp when the chronicle is written.
|
|
59
|
-
- `duration_minutes`: Simple subtraction, rounded to nearest 5 minutes.
|
|
60
|
-
- `turns`: Estimate from conversation length. Exact counting is fragile
|
|
61
|
-
and not worth the precision.
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## Gate Evidence Format
|
|
66
|
-
|
|
67
|
-
Every chronicle entry includes a **Gate Evidence** section after the
|
|
68
|
-
narrative. This section records what gates fired and their outcomes.
|
|
69
|
-
|
|
70
|
-
```markdown
|
|
71
|
-
## Gate evidence
|
|
72
|
-
|
|
73
|
-
| Gate | Fired | Evidence | Outcome |
|
|
74
|
-
|------|-------|----------|---------|
|
|
75
|
-
| Temperance | yes | Stated approach before first edit on feature/NNN | Proceeded — scope matched spec |
|
|
76
|
-
| Diagnosis | n/a | Not a fix branch | — |
|
|
77
|
-
| Pre-build spec check | yes | Spec at docs/specs/crm.md, referenced in iteration goal | Current |
|
|
78
|
-
| Tests | yes | 12 unit, 3 integration, all pass | `npm test` exit 0 |
|
|
79
|
-
| Visual review | yes | docs/visual-reviews/2026-04-07-deal-card.md | PASS WITH NOTES |
|
|
80
|
-
| Verify | yes | Ran /verify after each task (3 tasks) | All passed |
|
|
81
|
-
| Architect review | no — not due | Last review: 2026-04-05 (6 commits ago, threshold is 10) | — |
|
|
82
|
-
|
|
83
|
-
### Gate skip justifications
|
|
84
|
-
- Diagnosis skipped: feature branch, not fix branch (per sdlc-gates rule)
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### Required fields
|
|
88
|
-
|
|
89
|
-
| Field | Description |
|
|
90
|
-
|-------|-------------|
|
|
91
|
-
| Gate | Which gate (from `.claude/rules/sdlc-gates.md`) |
|
|
92
|
-
| Fired | yes / no / n/a (with reason if no or n/a) |
|
|
93
|
-
| Evidence | Where to find proof — file path, commit hash, or inline note |
|
|
94
|
-
| Outcome | Result of the gate check |
|
|
95
|
-
|
|
96
|
-
### Gate skip justifications
|
|
97
|
-
|
|
98
|
-
If a gate was skipped, the reason must be stated. Valid reasons:
|
|
99
|
-
|
|
100
|
-
- **n/a**: Gate doesn't apply (e.g., diagnosis on a feature branch)
|
|
101
|
-
- **Degraded mode**: Infrastructure unavailable (e.g., Playwright MCP missing
|
|
102
|
-
for visual review) — must note what was done instead
|
|
103
|
-
- **Assessed as trivial**: For diagnosis only — cause was immediately obvious
|
|
104
|
-
and reproducible. State the cause.
|
|
105
|
-
|
|
106
|
-
Invalid reasons:
|
|
107
|
-
- "Ran out of time" — gates are non-negotiable
|
|
108
|
-
- "Will do later" — gates fire before commit, not after
|
|
109
|
-
- No reason given — a bare "no" in the Fired column is a compliance failure
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
## Gates to Track
|
|
114
|
-
|
|
115
|
-
These are the gates defined in `.claude/rules/sdlc-gates.md` and
|
|
116
|
-
`strategy/agent-choreography.md` Section 9:
|
|
117
|
-
|
|
118
|
-
### Pre-build gates (before writing code)
|
|
119
|
-
|
|
120
|
-
| Gate | Trigger | Evidence format |
|
|
121
|
-
|------|---------|----------------|
|
|
122
|
-
| Temperance | First edit per branch | "Stated approach: [summary]" |
|
|
123
|
-
| Diagnosis | All fix/ branches | "Is/Is Not completed, root cause: [summary]" or "Assessed as trivial: [cause]" |
|
|
124
|
-
| Spec check | Before Construction | "Spec at [path], current as of [date]" |
|
|
125
|
-
| Issue exists | Before branch creation | "Issue #NNN created/exists" |
|
|
126
|
-
|
|
127
|
-
### Post-build gates (before committing)
|
|
128
|
-
|
|
129
|
-
| Gate | Trigger | Evidence format |
|
|
130
|
-
|------|---------|----------------|
|
|
131
|
-
| Tests | Every commit with logic changes | "[N] unit, [M] integration, all pass" |
|
|
132
|
-
| Verify | Every task completion | "Ran /verify — [outcome]" |
|
|
133
|
-
| Visual review | Every UI change | "Report at [path] — [verdict]" |
|
|
134
|
-
| Architect review | Every 10 commits or before launch | "Last review: [date], [N] commits ago" |
|
|
135
|
-
|
|
136
|
-
### Session gates (phase/session boundaries)
|
|
137
|
-
|
|
138
|
-
| Gate | Trigger | Evidence format |
|
|
139
|
-
|------|---------|----------------|
|
|
140
|
-
| Chronicle | Phase transition + session end | "Chronicle at [path]" |
|
|
141
|
-
| Checkpoint | Exit conditions per graceful-exit.md | "Checkpoint at .claude/CHECKPOINT.md" |
|
|
142
|
-
| LinkedIn draft | Notable decisions (SHOULD) | "Draft at [path]" or "No notable moments this session" |
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## Iteration Goal Closeout
|
|
147
|
-
|
|
148
|
-
When an iteration completes, append a **Closeout** section to the
|
|
149
|
-
iteration goal file. This captures actuals vs time budget and gate compliance
|
|
150
|
-
across the iteration's sessions — the feedback loop that calibrates
|
|
151
|
-
future time budget estimates.
|
|
152
|
-
|
|
153
|
-
### Closeout format
|
|
154
|
-
|
|
155
|
-
```markdown
|
|
156
|
-
## Closeout
|
|
157
|
-
|
|
158
|
-
### Actuals vs appetite
|
|
159
|
-
|
|
160
|
-
| Metric | Time budget | Actual | Delta |
|
|
161
|
-
|--------|----------|--------|-------|
|
|
162
|
-
| Turns | 40 | 52 | +30% |
|
|
163
|
-
| Duration | ~1 session | 2 sessions (75m + 40m) | +1 session |
|
|
164
|
-
| Issues closed | 3 | 2 | -1 (deferred #NNN) |
|
|
165
|
-
|
|
166
|
-
### Gate compliance
|
|
167
|
-
|
|
168
|
-
| Gate | Expected | Fired | Skipped | Notes |
|
|
169
|
-
|------|----------|-------|---------|-------|
|
|
170
|
-
| Temperance | 3 | 3 | 0 | — |
|
|
171
|
-
| Diagnosis | 1 | 1 | 0 | fix branch |
|
|
172
|
-
| Tests | 3 | 2 | 1 | 1 docs-only commit, n/a |
|
|
173
|
-
| Verify | 3 | 3 | 0 | — |
|
|
174
|
-
| Visual review | 0 | 0 | 0 | no UI changes |
|
|
175
|
-
|
|
176
|
-
### Calibration notes
|
|
177
|
-
|
|
178
|
-
[What was over/underscoped. Guidance for next similar iteration.
|
|
179
|
-
Example: "Time budget was tight — the extraction script was underscoped.
|
|
180
|
-
Next similar iteration: budget 50 turns."]
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
### When to write the closeout
|
|
184
|
-
|
|
185
|
-
- When all acceptance criteria are met (or explicitly deferred)
|
|
186
|
-
- Before writing the final chronicle for the iteration
|
|
187
|
-
- The closeout data comes from the session chronicles' timing fields
|
|
188
|
-
and gate evidence tables — it's an aggregation, not a separate data source
|
|
189
|
-
|
|
190
|
-
### Acceptance criteria for closeout
|
|
191
|
-
|
|
192
|
-
The iteration goal's acceptance criteria checkboxes should be updated
|
|
193
|
-
to reflect actual completion state. Deferred items get a note explaining
|
|
194
|
-
why and a reference to the follow-up issue.
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
## Querying Compliance
|
|
199
|
-
|
|
200
|
-
### Manual query (current approach)
|
|
201
|
-
|
|
202
|
-
```bash
|
|
203
|
-
# Find all chronicles with gate evidence
|
|
204
|
-
grep -l "Gate evidence" chronicle/*.md
|
|
205
|
-
|
|
206
|
-
# Find skipped gates
|
|
207
|
-
grep -A 1 "no —\|no $" chronicle/*.md
|
|
208
|
-
|
|
209
|
-
# Find visual review failures
|
|
210
|
-
grep "FAIL" chronicle/*.md
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
### Architect review query
|
|
214
|
-
|
|
215
|
-
During `/architect-review`, the Architect reads the last 5 chronicles
|
|
216
|
-
and checks:
|
|
217
|
-
|
|
218
|
-
1. Are all required gates present in each entry?
|
|
219
|
-
2. Are there unexplained skips?
|
|
220
|
-
3. Is there a pattern of degraded mode (infrastructure not available)?
|
|
221
|
-
4. Are gate skip justifications valid?
|
|
222
|
-
|
|
223
|
-
This is the primary compliance audit mechanism — it runs every 10 commits.
|
|
224
|
-
|
|
225
|
-
### Future: structured extraction
|
|
226
|
-
|
|
227
|
-
If machine-queryable compliance becomes needed:
|
|
228
|
-
|
|
229
|
-
1. Extract gate evidence sections from chronicles into JSON
|
|
230
|
-
2. Script: `scripts/extract-compliance.sh` → `docs/compliance/latest.json`
|
|
231
|
-
3. Run on demand or as part of architect review
|
|
232
|
-
4. The chronicle remains the source of truth; JSON is a derived view
|
|
233
|
-
|
|
234
|
-
Do not build this until there's a real need. The architect review query
|
|
235
|
-
is sufficient for current scale.
|
|
236
|
-
|
|
237
|
-
---
|
|
238
|
-
|
|
239
|
-
## Hook Integration
|
|
240
|
-
|
|
241
|
-
### Existing hooks that produce gate evidence
|
|
242
|
-
|
|
243
|
-
| Hook | What it captures | Where |
|
|
244
|
-
|------|-----------------|-------|
|
|
245
|
-
| `pre-build-gate.sh` | Temperance fired, diagnosis fired (fix branches) | Blocks the edit until gate clears |
|
|
246
|
-
| `pre-commit` (if configured) | Tests pass, lint pass | Blocks the commit |
|
|
247
|
-
| `session-end` / Stop hook | Chronicle written, checkpoint written | Fires at session end |
|
|
248
|
-
|
|
249
|
-
### Agent responsibility
|
|
250
|
-
|
|
251
|
-
Hooks capture mechanical gates (did the tool run?). The agent captures
|
|
252
|
-
semantic gates (was the outcome meaningful?). Both are needed.
|
|
253
|
-
|
|
254
|
-
The agent writes the gate evidence table in the chronicle. Hooks provide
|
|
255
|
-
the enforcement that gates fire at all. Neither replaces the other.
|
|
256
|
-
|
|
257
|
-
---
|
|
258
|
-
|
|
259
|
-
## Compliance Failures
|
|
260
|
-
|
|
261
|
-
A compliance failure is a chronicle entry where:
|
|
262
|
-
|
|
263
|
-
1. A required gate shows "no" without a valid justification
|
|
264
|
-
2. The gate evidence section is missing entirely
|
|
265
|
-
3. Evidence references a file that doesn't exist
|
|
266
|
-
|
|
267
|
-
### Response to compliance failures
|
|
268
|
-
|
|
269
|
-
- **At architect review**: Flag the failure, check if it caused actual harm
|
|
270
|
-
(missed bug, broken deployment, etc.), recommend process fix
|
|
271
|
-
- **At session start**: If the previous chronicle has a compliance failure,
|
|
272
|
-
note it in the current session's chronicle under "Entry state"
|
|
273
|
-
- **Do NOT retroactively fix chronicles** — they're historical records.
|
|
274
|
-
Note the gap and prevent recurrence.
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
## Relationship to Other Standards
|
|
279
|
-
|
|
280
|
-
| Standard | Relationship |
|
|
281
|
-
|----------|-------------|
|
|
282
|
-
| `.claude/rules/sdlc-gates.md` | Defines which gates exist; this standard defines how to track them |
|
|
283
|
-
| `strategy/agent-choreography.md` | Section 9 defines MUST gates; this standard defines evidence format |
|
|
284
|
-
| `standards/graceful-exit.md` | Checkpoint is a tracked gate at session boundaries |
|
|
285
|
-
| `.claude/skills/chronicle/SKILL.md` | Chronicle skill should include gate evidence template |
|
|
286
|
-
| `.claude/skills/architect-review/SKILL.md` | Architect review queries compliance from chronicles |
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
description: Stack-specific instantiation of .claude/rules/sdlc-gates.md for TypeScript.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# SDLC Gates — TypeScript
|
|
7
|
-
|
|
8
|
-
Stack-specific instantiation of `.claude/rules/sdlc-gates.md` for TypeScript. Composed under ARCH-T0 #1133 Path A.
|
|
9
|
-
|
|
10
|
-
## When this sibling fires
|
|
11
|
-
|
|
12
|
-
When adopter's `.claude/bassclef-configs.jsonc` has `tech_stack.lang: typescript`. The loader (future ticket) reads this sibling and applies the TypeScript-specific globs in addition to the universal gates in the parent rule.
|
|
13
|
-
|
|
14
|
-
Until the loader ships, this sibling is discoverable via the cross-reference table in the parent rule. The universal gates fire methodologically regardless of stack.
|
|
15
|
-
|
|
16
|
-
## TypeScript-specific globs
|
|
17
|
-
|
|
18
|
-
```yaml
|
|
19
|
-
globs:
|
|
20
|
-
- src/**/*.ts
|
|
21
|
-
- src/**/*.tsx
|
|
22
|
-
- scripts/**/*.ts
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
These globs scope hook + tooling firing to TypeScript source files. The pre-build temperance + diagnose gates fire on these path matchers; the post-build `/verify` gate runs against these files.
|
|
26
|
-
|
|
27
|
-
## TypeScript-specific tech_stack_match
|
|
28
|
-
|
|
29
|
-
```yaml
|
|
30
|
-
tech_stack_match:
|
|
31
|
-
lang: typescript
|
|
32
|
-
backend: nodejs
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
For adopter configs that opt into the per-stack loader, this match field anchors the sibling to the right adopter declaration in `.claude/bassclef-configs.jsonc`.
|
|
36
|
-
|
|
37
|
-
## TypeScript-specific verify hooks
|
|
38
|
-
|
|
39
|
-
When the universal `/verify` gate fires post-build (per the parent rule), TypeScript-specific checks include:
|
|
40
|
-
|
|
41
|
-
- `tsc --noEmit` for type-checking
|
|
42
|
-
- `eslint` for static-analysis
|
|
43
|
-
- `vitest run` for unit tests
|
|
44
|
-
- (Optional, per adopter) `prettier --check` for formatting
|
|
45
|
-
|
|
46
|
-
The adopter's `package.json` scripts wire these into the `/verify` invocation.
|
|
47
|
-
|
|
48
|
-
## Composition with universal gates
|
|
49
|
-
|
|
50
|
-
Apply the universal gates from `.claude/rules/sdlc-gates.md` first; the TypeScript-specific globs above add file-scoping detail. When the two conflict (e.g., a TypeScript-specific check contradicts the universal failure-chain rule), the universal principle wins; file a `/promote` ticket if you believe the convention should be amended.
|
|
51
|
-
|
|
52
|
-
## Refs
|
|
53
|
-
|
|
54
|
-
- Parent rule: `.claude/rules/sdlc-gates.md`
|
|
55
|
-
- ARCH-T0 #1133 — operator-stack-leakage audit + remediation
|
|
56
|
-
- bassclef#1311 — this sibling (sdlc-gates Path A WU-7 of bet 2026-06-20e)
|
|
57
|
-
- bassclef#1309 — sister Path A (api-conventions WU-6)
|