@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.
Files changed (293) hide show
  1. package/dist/cli.cjs +431 -135
  2. package/dist/cli.js +433 -137
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/lite/.bassclef-source.json +10 -0
  7. package/{substrate → dist/lite}/.claude/hooks/artifact-ingestion-gate.sh +0 -0
  8. package/{substrate → dist/lite}/.claude/hooks/assert-verify-steering.sh +0 -0
  9. package/{substrate → dist/lite}/.claude/hooks/bassclef-source-config-validate.sh +0 -0
  10. package/{substrate → dist/lite}/.claude/hooks/bassclef-sync.sh +0 -0
  11. package/{substrate → dist/lite}/.claude/hooks/compound-noun-scrub.sh +0 -0
  12. package/{substrate → dist/lite}/.claude/hooks/kiss-expansion-inject.sh +0 -0
  13. package/{substrate → dist/lite}/.claude/hooks/longrun-prep-compounding-sequence-check.sh +0 -0
  14. package/{substrate → dist/lite}/.claude/hooks/plain-english-steering.sh +0 -0
  15. package/{substrate → dist/lite}/.claude/hooks/post-skill-friction-check.sh +0 -0
  16. package/{substrate → dist/lite}/.claude/hooks/post-skill-telemetry.sh +0 -0
  17. package/{substrate → dist/lite}/.claude/hooks/pre-build-gate.sh +0 -0
  18. package/{substrate → dist/lite}/.claude/hooks/pre-commit-gate.sh +0 -0
  19. package/{substrate → dist/lite}/.claude/hooks/session-end.sh +0 -0
  20. package/{substrate → dist/lite}/.claude/hooks/session-reflection.sh +0 -0
  21. package/{substrate → dist/lite}/.claude/hooks/skill-body-grade-gate.sh +0 -0
  22. package/{substrate → dist/lite}/.claude/hooks/skill-body-intent-drift.sh +0 -0
  23. package/{substrate → dist/lite}/.claude/hooks/state-validate.sh +0 -0
  24. package/{substrate → dist/lite}/.claude/hooks/substrate-clarity-gate.sh +0 -0
  25. package/{substrate → dist/lite}/.claude/hooks/temperance-gate.sh +0 -0
  26. package/{substrate → dist/lite}/.claude/hooks/testing-tier-enforce.sh +0 -0
  27. package/{substrate → dist/lite}/.claude/hooks/turn-prose-grade-measure.sh +0 -0
  28. package/{substrate → dist/lite}/.claude/hooks/turn-prose-kiss-check.sh +0 -0
  29. package/{substrate → dist/lite}/.claude/hooks/vocabulary-migration-check.sh +0 -0
  30. package/{substrate → dist/lite}/.claude/hooks/whereami-utc-gate.sh +0 -0
  31. package/dist/lite/.claude/settings.json +212 -0
  32. package/dist/lite/CLAUDE.md +41 -0
  33. package/dist/lite/gitignore +58 -0
  34. package/dist/lite/standards/bassclef-wiring-manifest.json +497 -0
  35. package/dist/lite/whereami.md +24 -0
  36. package/package.json +8 -2
  37. package/substrate/.bassclef/lite-manifest.json +0 -2701
  38. package/substrate/.claude/agents/architect.md +0 -70
  39. package/substrate/.claude/agents/builder.md +0 -114
  40. package/substrate/.claude/agents/designer.md +0 -156
  41. package/substrate/.claude/agents/reviewer.md +0 -88
  42. package/substrate/.claude/hooks/longrun-prep-compounding-axis-check.sh +0 -492
  43. package/substrate/.claude/hooks/skill-step-list-check.sh +0 -171
  44. package/substrate/.claude/luminaries/alan-cooper.md +0 -170
  45. package/substrate/.claude/luminaries/alistair-cockburn.md +0 -140
  46. package/substrate/.claude/luminaries/amazon-pr-faq.md +0 -34
  47. package/substrate/.claude/luminaries/ash-maurya.md +0 -121
  48. package/substrate/.claude/luminaries/bill-buxton.md +0 -210
  49. package/substrate/.claude/luminaries/charles-sanders-peirce.md +0 -150
  50. package/substrate/.claude/luminaries/david-ogilvy.md +0 -192
  51. package/substrate/.claude/luminaries/don-norman.md +0 -173
  52. package/substrate/.claude/luminaries/edward-tufte.md +0 -179
  53. package/substrate/.claude/luminaries/eric-evans.md +0 -160
  54. package/substrate/.claude/luminaries/frederick-brooks.md +0 -50
  55. package/substrate/.claude/luminaries/gang-of-four.md +0 -157
  56. package/substrate/.claude/luminaries/glenford-myers.md +0 -230
  57. package/substrate/.claude/luminaries/hunt-thomas.md +0 -115
  58. package/substrate/.claude/luminaries/hyrum-wright.md +0 -94
  59. package/substrate/.claude/luminaries/jason-fried-dhh.md +0 -46
  60. package/substrate/.claude/luminaries/jesse-james-garrett.md +0 -154
  61. package/substrate/.claude/luminaries/john-ousterhout.md +0 -94
  62. package/substrate/.claude/luminaries/karl-popper.md +0 -132
  63. package/substrate/.claude/luminaries/kent-beck.md +0 -168
  64. package/substrate/.claude/luminaries/linus-torvalds.md +0 -218
  65. package/substrate/.claude/luminaries/martin-fowler.md +0 -164
  66. package/substrate/.claude/luminaries/michael-feathers.md +0 -125
  67. package/substrate/.claude/luminaries/michael-nygard.md +0 -118
  68. package/substrate/.claude/luminaries/robert-c-martin.md +0 -164
  69. package/substrate/.claude/luminaries/saltzer-schroeder.md +0 -194
  70. package/substrate/.claude/luminaries/sophia-prater.md +0 -193
  71. package/substrate/.claude/luminaries/stephen-toulmin.md +0 -131
  72. package/substrate/.claude/luminaries/tony-hoare.md +0 -170
  73. package/substrate/.claude/luminaries/vaughn-vernon.md +0 -50
  74. package/substrate/.claude/luminaries/w-edwards-deming.md +0 -158
  75. package/substrate/.claude/rules/accessor-library-discipline.md +0 -138
  76. package/substrate/.claude/rules/adr-discipline.md +0 -120
  77. package/substrate/.claude/rules/api-conventions.md +0 -125
  78. package/substrate/.claude/rules/artifact-ingestion.md +0 -179
  79. package/substrate/.claude/rules/assert-only-after-verify.md +0 -137
  80. package/substrate/.claude/rules/blocked-items.md +0 -146
  81. package/substrate/.claude/rules/bootstrap-pair-discipline.md +0 -141
  82. package/substrate/.claude/rules/branching.md +0 -28
  83. package/substrate/.claude/rules/cold-adopter-harness-discipline.md +0 -129
  84. package/substrate/.claude/rules/commit-conventions.md +0 -22
  85. package/substrate/.claude/rules/compounding-axis-fresh-analysis.md +0 -188
  86. package/substrate/.claude/rules/compounding-sequence-fresh-analysis.md +0 -188
  87. package/substrate/.claude/rules/context-engineering.md +0 -202
  88. package/substrate/.claude/rules/context-management.md +0 -85
  89. package/substrate/.claude/rules/defensive-bash.md +0 -68
  90. package/substrate/.claude/rules/deferred-actions.md +0 -233
  91. package/substrate/.claude/rules/destructive-operations.md +0 -69
  92. package/substrate/.claude/rules/diagnosis.md +0 -38
  93. package/substrate/.claude/rules/github-issue-flash-tweet.md +0 -156
  94. package/substrate/.claude/rules/guardrails.md +0 -73
  95. package/substrate/.claude/rules/hook-wire-on-author.md +0 -103
  96. package/substrate/.claude/rules/identifier-leak-prevention.md +0 -104
  97. package/substrate/.claude/rules/iteration-bet-brief-completeness.md +0 -54
  98. package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +0 -98
  99. package/substrate/.claude/rules/longrun-prep-plan-doc-compression.md +0 -89
  100. package/substrate/.claude/rules/loop-discipline.md +0 -81
  101. package/substrate/.claude/rules/manual-prod-approval.md +0 -100
  102. package/substrate/.claude/rules/marker-enrichment-discipline.md +0 -99
  103. package/substrate/.claude/rules/mobile-ephemeral-session.md +0 -109
  104. package/substrate/.claude/rules/new-dependency-check.md +0 -51
  105. package/substrate/.claude/rules/oo-ad-entry-point.md +0 -117
  106. package/substrate/.claude/rules/operator-facing-prose.md +0 -196
  107. package/substrate/.claude/rules/option-label-discipline.md +0 -108
  108. package/substrate/.claude/rules/pattern-annotation.md +0 -100
  109. package/substrate/.claude/rules/plain-english-discipline.md +0 -156
  110. package/substrate/.claude/rules/plan-enumeration-needs-value-props.md +0 -211
  111. package/substrate/.claude/rules/pr-body-shape.md +0 -317
  112. package/substrate/.claude/rules/pr-strategy.md +0 -167
  113. package/substrate/.claude/rules/pr-title-shape.md +0 -161
  114. package/substrate/.claude/rules/prototype-workflow.md +0 -65
  115. package/substrate/.claude/rules/reserved-skill-names.md +0 -123
  116. package/substrate/.claude/rules/schema-management.md +0 -49
  117. package/substrate/.claude/rules/sdlc-gates.md +0 -149
  118. package/substrate/.claude/rules/security.md +0 -37
  119. package/substrate/.claude/rules/session-artifacts.md +0 -236
  120. package/substrate/.claude/rules/skill-composition-declarations.md +0 -124
  121. package/substrate/.claude/rules/skill-description-clarity.md +0 -247
  122. package/substrate/.claude/rules/skill-procedure-step-list.md +0 -137
  123. package/substrate/.claude/rules/state-schema-validation.md +0 -162
  124. package/substrate/.claude/rules/stuck-signal-diagnostic.md +0 -140
  125. package/substrate/.claude/rules/substrate-config-schema.md +0 -98
  126. package/substrate/.claude/rules/test-list-discipline.md +0 -175
  127. package/substrate/.claude/rules/test-sufficiency.md +0 -210
  128. package/substrate/.claude/rules/testing-tier-config.md +0 -145
  129. package/substrate/.claude/rules/testing.md +0 -38
  130. package/substrate/.claude/rules/turn-estimate-grounding.md +0 -134
  131. package/substrate/.claude/rules/visual-hierarchy.md +0 -437
  132. package/substrate/.claude/rules/we-dont-break-adopters.md +0 -126
  133. package/substrate/.claude/rules/whereami-load-bearing.md +0 -202
  134. package/substrate/.claude/rules/writing-craft-discipline.md +0 -92
  135. package/substrate/.claude/rules/wu-sequencing-compounds.md +0 -145
  136. package/substrate/.claude/skills/build/SKILL.md +0 -640
  137. package/substrate/.claude/skills/chronicle/SKILL.md +0 -55
  138. package/substrate/.claude/skills/clean-artifacts/SKILL.md +0 -249
  139. package/substrate/.claude/skills/decompose/SKILL.md +0 -280
  140. package/substrate/.claude/skills/diagnose/SKILL.md +0 -297
  141. package/substrate/.claude/skills/feynman/SKILL.md +0 -90
  142. package/substrate/.claude/skills/howdoi/SKILL.md +0 -105
  143. package/substrate/.claude/skills/ia-model/SKILL.md +0 -108
  144. package/substrate/.claude/skills/interaction-design/SKILL.md +0 -112
  145. package/substrate/.claude/skills/interpret-input/SKILL.md +0 -180
  146. package/substrate/.claude/skills/journal/SKILL.md +0 -209
  147. package/substrate/.claude/skills/kiss/SKILL.md +0 -449
  148. package/substrate/.claude/skills/launch/SKILL.md +0 -915
  149. package/substrate/.claude/skills/lean-canvas/SKILL.md +0 -332
  150. package/substrate/.claude/skills/longrun/SKILL.md +0 -463
  151. package/substrate/.claude/skills/luminary/SKILL.md +0 -481
  152. package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +0 -177
  153. package/substrate/.claude/skills/onboard-repo/SKILL.md +0 -1624
  154. package/substrate/.claude/skills/pattern-review/SKILL.md +0 -99
  155. package/substrate/.claude/skills/personas/SKILL.md +0 -207
  156. package/substrate/.claude/skills/promote/SKILL.md +0 -283
  157. package/substrate/.claude/skills/requirement/SKILL.md +0 -98
  158. package/substrate/.claude/skills/retro/SKILL.md +0 -117
  159. package/substrate/.claude/skills/riff/SKILL.md +0 -114
  160. package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +0 -163
  161. package/substrate/.claude/skills/session-end/SKILL.md +0 -309
  162. package/substrate/.claude/skills/session-log/SKILL.md +0 -299
  163. package/substrate/.claude/skills/skills/SKILL.md +0 -228
  164. package/substrate/.claude/skills/spec/SKILL.md +0 -105
  165. package/substrate/.claude/skills/sprint/SKILL.md +0 -392
  166. package/substrate/.claude/skills/stage/SKILL.md +0 -384
  167. package/substrate/.claude/skills/state-a-problem/SKILL.md +0 -185
  168. package/substrate/.claude/skills/temperance/SKILL.md +0 -108
  169. package/substrate/.claude/skills/use-case/SKILL.md +0 -417
  170. package/substrate/.claude/skills/user-stories/SKILL.md +0 -268
  171. package/substrate/.claude/skills/value-prop/SKILL.md +0 -251
  172. package/substrate/.claude/skills/verify/SKILL.md +0 -160
  173. package/substrate/.claude/skills/visual-review/SKILL.md +0 -503
  174. package/substrate/.claude/skills/whats-the-plan/SKILL.md +0 -202
  175. package/substrate/.claude/skills/whereami/SKILL.md +0 -307
  176. package/substrate/AGENTS.md +0 -79
  177. package/substrate/CLAUDE-lite.md +0 -85
  178. package/substrate/CODE_OF_CONDUCT.md +0 -28
  179. package/substrate/CONTRIBUTING.md +0 -177
  180. package/substrate/README.md +0 -173
  181. package/substrate/SECURITY.md +0 -19
  182. package/substrate/architecture/decisions/ADR-029-release-pipeline.md +0 -79
  183. package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +0 -139
  184. package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +0 -192
  185. package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +0 -145
  186. package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +0 -155
  187. package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +0 -162
  188. package/substrate/lib/clean-artifacts-sweep.sh +0 -112
  189. package/substrate/lib/code-comment-discipline.sh +0 -144
  190. package/substrate/lib/composer-preflight.sh +0 -459
  191. package/substrate/lib/hook-inject.sh +0 -255
  192. package/substrate/lib/luminary-pick.sh +0 -96
  193. package/substrate/lib/output-discipline.sh +0 -143
  194. package/substrate/lib/prose-scan-boundary.sh +0 -171
  195. package/substrate/lib/rewrite-check.sh +0 -214
  196. package/substrate/lib/state.sh +0 -1372
  197. package/substrate/lib/telemetry.sh +0 -205
  198. package/substrate/lib/tier-check.sh +0 -187
  199. package/substrate/lib/tier-dependency-audit.sh +0 -1088
  200. package/substrate/presence/install/bassclef-hook-connect.sh +0 -178
  201. package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +0 -841
  202. package/substrate/presence/install/bassclef-sync.template.sh +0 -2076
  203. package/substrate/presence/install/schedule-auto-save.cron.sh +0 -88
  204. package/substrate/presence/install/schedule-auto-save.taskscheduler.md +0 -122
  205. package/substrate/scripts/aggregate-telemetry.sh +0 -217
  206. package/substrate/scripts/analyze-tier-dependencies.sh +0 -239
  207. package/substrate/scripts/generate-lite-manifest.sh +0 -505
  208. package/substrate/scripts/generate-tier-manifest.sh +0 -28
  209. package/substrate/scripts/intent-drift-check.sh +0 -456
  210. package/substrate/scripts/lite-manifest-drift-check.sh +0 -146
  211. package/substrate/scripts/render-lite-manifest-doc.sh +0 -150
  212. package/substrate/standards/adr-template.md +0 -86
  213. package/substrate/standards/api-conventions/nextjs.md +0 -84
  214. package/substrate/standards/artifact-composition.md +0 -209
  215. package/substrate/standards/bash-hook-safety.md +0 -246
  216. package/substrate/standards/bassclef-configs-schema.md +0 -232
  217. package/substrate/standards/bassclef-evolution.md +0 -143
  218. package/substrate/standards/bassclef-internal-jargon.md +0 -244
  219. package/substrate/standards/bassclef-managed-sentinel.md +0 -96
  220. package/substrate/standards/bassclef-source-config.md +0 -228
  221. package/substrate/standards/branch-stacking.md +0 -408
  222. package/substrate/standards/code-safety-principles.md +0 -176
  223. package/substrate/standards/composer-prerequisites.md +0 -155
  224. package/substrate/standards/deferred-actions-schema.md +0 -204
  225. package/substrate/standards/dependency-discipline/cargo.md +0 -39
  226. package/substrate/standards/dependency-discipline/gem.md +0 -43
  227. package/substrate/standards/dependency-discipline/go-mod.md +0 -41
  228. package/substrate/standards/dependency-discipline/npm.md +0 -42
  229. package/substrate/standards/dependency-discipline/pip.md +0 -42
  230. package/substrate/standards/deployment-topology/ec2-tailscale.md +0 -225
  231. package/substrate/standards/deployment-topology.md +0 -69
  232. package/substrate/standards/docs-sync-allowlist.md +0 -76
  233. package/substrate/standards/domain-and-dns.md +0 -145
  234. package/substrate/standards/frontend-stack.md +0 -67
  235. package/substrate/standards/frontmatter-schema.md +0 -154
  236. package/substrate/standards/graceful-exit.md +0 -227
  237. package/substrate/standards/hook-idempotency.md +0 -102
  238. package/substrate/standards/hook-injection-discipline.md +0 -202
  239. package/substrate/standards/hook-install-class.md +0 -215
  240. package/substrate/standards/input-handler-interface.md +0 -152
  241. package/substrate/standards/lite-manifest-schema-changes.md +0 -135
  242. package/substrate/standards/luminary-matching.md +0 -105
  243. package/substrate/standards/luminary-problem-patterns.md +0 -481
  244. package/substrate/standards/migration-discipline/active-record.md +0 -50
  245. package/substrate/standards/migration-discipline/alembic.md +0 -43
  246. package/substrate/standards/migration-discipline/gorm.md +0 -50
  247. package/substrate/standards/migration-discipline/prisma.md +0 -53
  248. package/substrate/standards/migration-discipline/sqlalchemy.md +0 -51
  249. package/substrate/standards/mobile-ephemeral-session.md +0 -167
  250. package/substrate/standards/model-routing-discipline.md +0 -160
  251. package/substrate/standards/ogilvy-writing-rules.md +0 -225
  252. package/substrate/standards/opener-discipline.md +0 -96
  253. package/substrate/standards/operator-facing-prose-discipline.md +0 -201
  254. package/substrate/standards/persona-schema.md +0 -229
  255. package/substrate/standards/pluggable-luminaries.md +0 -323
  256. package/substrate/standards/pr-body-discipline.md +0 -115
  257. package/substrate/standards/preview-state-schema.md +0 -189
  258. package/substrate/standards/project-directory-layout.md +0 -276
  259. package/substrate/standards/release-tagging.md +0 -137
  260. package/substrate/standards/reserved-skill-names.md +0 -120
  261. package/substrate/standards/scannable-multi-option-output.md +0 -261
  262. package/substrate/standards/sdlc-compliance.md +0 -286
  263. package/substrate/standards/sdlc-gates/typescript.md +0 -57
  264. package/substrate/standards/secrets-lifecycle.md +0 -210
  265. package/substrate/standards/security-scanner-adapter.md +0 -145
  266. package/substrate/standards/session-board.md +0 -256
  267. package/substrate/standards/skill-output-discipline.md +0 -90
  268. package/substrate/standards/state-spine-contract.md +0 -255
  269. package/substrate/standards/state-spine.md +0 -511
  270. package/substrate/standards/steering-hints/kiss-words.md +0 -11
  271. package/substrate/standards/substrate-config-schema.md +0 -267
  272. package/substrate/standards/tech-stack-config.md +0 -109
  273. package/substrate/standards/tier-dependency-analysis.md +0 -167
  274. package/substrate/standards/tier-runtime-deps/lite.md +0 -57
  275. package/substrate/standards/tier-tag-schema.md +0 -155
  276. package/substrate/standards/two-layer-config.md +0 -99
  277. package/substrate/standards/use-case-format.md +0 -292
  278. package/substrate/standards/user-story-invest.md +0 -268
  279. package/substrate/standards/velocity-and-appetite.md +0 -229
  280. package/substrate/standards/voice-input-pattern.md +0 -119
  281. package/substrate/standards/whereami-schema.md +0 -301
  282. package/substrate/standards/worktree-management.md +0 -211
  283. package/substrate/standards/writing-guide.md +0 -213
  284. package/substrate/templates/chronicle-template.md +0 -75
  285. package/substrate/templates/deferred-action-template.md +0 -45
  286. package/substrate/templates/memory-proposal-template.md +0 -77
  287. package/substrate/templates/persona-template.md +0 -200
  288. package/substrate/templates/pr-faq.md +0 -45
  289. package/substrate/templates/secret-rotation-template.md +0 -162
  290. package/substrate/templates/spec-template.md +0 -131
  291. package/substrate/templates/use-case-template.md +0 -194
  292. package/substrate/templates/user-story-template.md +0 -107
  293. package/substrate/templates/whereami-template.md +0 -101
@@ -1,154 +0,0 @@
1
- ---
2
- tier: lite
3
- name: Jesse James Garrett
4
- slug: jesse-james-garrett
5
- claimed_by: [designer]
6
- referenced_by_skills: [ia-model, canvas, spec]
7
- primary_domain: ux
8
- depth: full
9
- sources:
10
- - type: book
11
- title: "The Elements of User Experience: User-Centered Design for the Web and Beyond (2nd edition)"
12
- authors: ["Jesse James Garrett"]
13
- year: 2010
14
- url: "https://www.pearson.com/en-us/subject-catalog/p/elements-of-user-experience-the-user-centered-design-for-the-web-and-beyond/P200000009272"
15
- isbn: "9780321683687"
16
- methodology_covered:
17
- - "Five planes of UX — Strategy, Scope, Structure, Skeleton, Surface"
18
- - "Decisions sequence from abstract (strategy) to concrete (surface)"
19
- - "Each plane constrains the next; clarity at one plane prevents thrashing at others"
20
- - "Information architecture as a structural-plane concern, distinct from skeleton (wireframe) or surface (visual)"
21
- verification_status: verified
22
- solves_problems_brownfield:
23
- - "Project mixes strategy, scope, structure, skeleton, and surface decisions in one conversation"
24
- - "Surface decisions are over-determining structural choices in the existing UI"
25
- - "Team can't agree on which decisions belong at which level"
26
- solves_problems_greenfield:
27
- - "Starting a multi-surface product where the five planes should sequence design decisions"
28
- - "Building a UX strategy that decomposes work into orderable layers from day one"
29
- - "Planning a product where strategy precedes scope precedes structure precedes skeleton precedes surface"
30
- - "Designing a multi-month product where UX governance needs explicit decision-tier vocabulary"
31
- anti_patterns:
32
- - "Tactical UI fixes where the five planes is overhead"
33
- - "Single-page or single-screen work"
34
- description: "\"Every user experience has five planes: strategy, scope, structure, skeleton, surface."
35
- ---
36
-
37
- # Jesse James Garrett
38
-
39
- ## Signature
40
-
41
- *"Every user experience has five planes: strategy, scope, structure, skeleton, surface. Skip one and the next collapses."*
42
-
43
- Co-founder of Adaptive Path; author of **The Elements of User Experience**.
44
- Coiner of **Ajax** (2005). The bassclef framework for thinking about UX
45
- as a layered set of decisions that must be made in sequence — each plane
46
- constrains the next.
47
-
48
- ## Core methods
49
-
50
- - **The Five Planes of UX** — From bottom (abstract) to top (concrete):
51
- - **Strategy** — user needs + product objectives. What success means.
52
- - **Scope** — functional specifications + content requirements. What
53
- the product contains.
54
- - **Structure** — interaction design + information architecture. How
55
- it's organized.
56
- - **Skeleton** — interface design, navigation design, information
57
- design. Where things are placed.
58
- - **Surface** — sensory design (visual, auditory). How it looks and
59
- feels.
60
- - **Bottom-up sequence** — Each plane must be resolved before the plane
61
- above it. Surface decisions made before strategy produce pretty
62
- products that serve no one.
63
- - **Plane consistency** — Decisions on one plane must cohere across that
64
- plane. An app with two incompatible IAs (one by section, one by
65
- feature) has a structure-plane failure.
66
- - **Abstract-to-concrete progression** — Planes move from invisible
67
- decisions (strategy) to visible output (surface). A team skipping
68
- straight to surface design has no grounding for why.
69
-
70
- ## When to channel this luminary
71
-
72
- When the biggest risk is getting the layers out of sequence — jumping to
73
- visual design before structure is resolved, or committing to scope
74
- before strategy is clear. Garrett dominates in project planning and
75
- SDLC-flow work: ensuring the right decisions happen in the right order.
76
- Think: new-product definition, UX audits of existing products, pedagogy
77
- for designers or teams new to systematic UX.
78
-
79
- Do NOT channel Garrett for: tactical interaction design decisions (use
80
- Norman, Tidwell), object-modeling (use Prater), visual polish (use
81
- Lupton, Ive).
82
-
83
- ## Stack translation
84
-
85
- Garrett's planes map directly onto the bassclef SDLC:
86
-
87
- - **Strategy plane** → `/canvas` (Thesis stage) + iteration bet framing
88
- - **Scope plane** → `/canvas` (Shape stage) + `/spec` + feature list
89
- - **Structure plane** → `/ia-model` + `/jtbd-tasks` + `/task-scenarios`
90
- - **Skeleton plane** → `/interaction-design` + `/decompose` (responsibility)
91
- - **Surface plane** → `/frontend-design` + `/visual-review` + design tokens
92
-
93
- The bassclef UX translation chain (JTBD → HTA → IA → Interaction Design)
94
- is Garrett's structure plane made operational. `/riff-prototypes`
95
- skips to skeleton/surface only when the lower planes are resolved.
96
-
97
- ## Anti-patterns it prevents
98
-
99
- - **Surface-first design** — starting with visual mockups before
100
- structure or scope is settled. Produces beautiful products that fail
101
- strategy tests.
102
- - **Premature plane commitment** — locking visual design before
103
- interaction design is complete. Forces structure decisions to fit
104
- pre-made mockups.
105
- - **Plane-skipping** — jumping from strategy to surface, or scope to
106
- skeleton. Missing planes leave load-bearing decisions implicit.
107
- - **Plane inconsistency** — a strategy plane that says "operator tool"
108
- paired with a surface plane that says "consumer SaaS." Reveals
109
- uncoordinated decisions.
110
- - **Deliverable confusion** — treating wireframes (skeleton) as final
111
- design, or treating mockups (surface) as structure. Each plane has
112
- its own deliverables and can't substitute.
113
-
114
- ## Worked example
115
-
116
- For POA's deal pipeline feature planning, Garrett's five planes produce:
117
-
118
- 1. **Strategy**: Operator needs efficient pipeline management; product
119
- objective is reducing time-to-close. Success = X% faster deal
120
- throughput.
121
- 2. **Scope**: Functional = deal CRUD, stage transitions, broker
122
- association, note logging, search, export. Content = deal types,
123
- stage definitions, standard fields, extension fields.
124
- 3. **Structure**: Interaction = stage-transition flow, note-logging
125
- flow, broker-assignment flow. IA = object-first nav (Deals, Brokers,
126
- Sellers) with facets (stage, source, age).
127
- 4. **Skeleton**: List-detail pattern for deals; right-rail for
128
- secondary info; sticky stage-progress at top of detail view;
129
- collapsed sections for enrichment data.
130
- 5. **Surface**: Design tokens (colors, typography, spacing); dense
131
- table view; status chips per stage; hover states and transitions.
132
-
133
- Each plane's output is input to the next. Skipping directly from
134
- Strategy to Surface (shopping for a pretty template) would produce a
135
- product that looks great and serves no specific operator workflow.
136
-
137
- ## Sources
138
-
139
- - *The Elements of User Experience: User-Centered Design for the Web
140
- and Beyond* — Garrett, New Riders (1st ed 2002, 2nd ed 2010)
141
- - *"Ajax: A New Approach to Web Applications"* — Garrett, Adaptive
142
- Path essay (2005) that coined the term
143
- - jjg.net — Garrett's primary site (maintains classic Elements diagram)
144
-
145
- ## Related luminaries
146
-
147
- - **Sophia Prater** — OOUX lives at Garrett's structure plane. Not a
148
- replacement; a specific method for that plane.
149
- - **Alan Cooper** — Goal-Directed Design operates across planes but
150
- grounds in strategy (user goals) and scope (task lists).
151
- - **Peter Morville** — IA work is structure-plane; Morville + Garrett
152
- pair naturally.
153
- - **Ellen Lupton** — Typography is surface-plane; don't invoke until
154
- skeleton is resolved.
@@ -1,94 +0,0 @@
1
- ---
2
- tier: lite
3
- name: John Ousterhout
4
- slug: john-ousterhout
5
- claimed_by: [architect, reviewer, builder]
6
- referenced_by_skills: [pattern-review, decompose]
7
- primary_domain: engineering
8
- depth: stub
9
- sources:
10
- - type: book
11
- title: "A Philosophy of Software Design"
12
- authors: ["John Ousterhout"]
13
- year: 2021
14
- edition: "2nd"
15
- url: "https://web.stanford.edu/~ouster/cgi-bin/aposd.php"
16
- isbn: "9781732102217"
17
- methodology_covered:
18
- - "Deep modules — small interface hiding complex implementation"
19
- - "Complexity is incremental — small drips add up; resist each one"
20
- - "Define errors out of existence — design APIs so error conditions cannot occur"
21
- - "Comments encode design decisions the code itself cannot"
22
- - "Strategic vs tactical programming — invest in design over short-term wins"
23
- - "Information hiding — modules expose only what callers need; the rest stays internal"
24
- - type: course
25
- title: "Stanford CS 190 — Software Design Studio"
26
- authors: ["John Ousterhout"]
27
- year: 2018
28
- url: "https://web.stanford.edu/class/cs190/"
29
- methodology_covered:
30
- - "Source course where the principles in A Philosophy of Software Design were developed and tested"
31
- verification_status: verified
32
- description: "\"Complexity is anything that makes software hard to understand or modify."
33
- ---
34
-
35
- # John Ousterhout
36
-
37
- ## Signature
38
-
39
- *"Complexity is anything that makes software hard to understand or modify. The goal of software design is to reduce complexity."*
40
-
41
- Stanford professor. Creator of the Tcl scripting language and Raft consensus protocol. Author of **A Philosophy of Software Design** (2018, 2nd ed 2021), the modern SENTINEL_bassclef_text on simplicity, deep modules, and complexity-as-incremental-drift. Pairs with Beck (TDD) and Fowler (refactoring tactics): Beck asks "is it tested?", Fowler asks "how do I restructure it?", Ousterhout asks "is it the right shape in the first place?"
42
-
43
- ## Discipline anchor
44
-
45
- **Design judgment + complexity-as-enemy.** Ousterhout supplies the WHY-to-refactor framing that Beck and Fowler leave to the engineer's judgment.
46
- INSTEAD: Beck owns the red-green-refactor cycle; Fowler owns the catalog of refactorings; Ousterhout owns the design-quality lens that tells you whether the shape you're refactoring toward is actually better. Without this lens, refactors can shuffle complexity without reducing it.
47
-
48
- This luminary fires on architectural-judgment moments — picking module boundaries, naming interfaces, deciding whether to split a class, evaluating whether a comment is doing real work or restating the code.
49
- INSTEAD of citing Ousterhout for test mechanics, refactoring tactics, or pattern catalog selection: route those concerns to Beck, Fowler, and GoF respectively.
50
-
51
- ## Key principles
52
-
53
- - **Deep modules** — A module is deep when it has a small interface and a large, complex implementation hidden behind it. Shallow modules push knowledge to callers and produce a system where understanding the whole requires understanding every part. When tempted to split a class for "smaller files," ask: does the split produce TWO deep modules, or TWO shallow ones?
54
- INSTEAD of defaulting to file-size as the splitting metric: use interface-shape as the metric. Two deep modules from a split is a win; two shallow modules from a split is a regression even if the line count drops.
55
-
56
- - **Complexity is incremental** — Complexity accumulates one small decision at a time. A single special case, a single dependency, a single inconsistency feels harmless. Sum across a session, a release, a year — that's how systems become unmaintainable. The discipline is to resist each small drip rather than promise to clean up the puddle later.
57
- INSTEAD of deferring cleanup to a future refactor: refuse the small drip at the moment it appears. Future-refactor cleanups almost never happen; the cost of resisting at write-time is the cheapest moment.
58
-
59
- - **Define errors out of existence** — Design APIs so error conditions cannot occur, rather than designing APIs that throw errors and asking every caller to handle them. The classic example: `unset` on a variable that does not exist is an error in older shells.
60
- INSTEAD: the right shape is for `unset` to be idempotent. Applied to bassclef: hooks that BLOCK on missing artifacts are weaker than hooks that bootstrap the artifact when absent, where bootstrapping is safe.
61
-
62
- - **Comments encode design decisions code cannot** — Code says what it does. Comments must say what the code cannot — the WHY (invariant), the WHAT-IF (alternative considered and rejected), the WATCH-OUT (subtle constraint a future reader will miss).
63
- INSTEAD of comments that restate code: write comments that record decisions. This principle is load-bearing for bassclef's `bassclef-configs.jsonc` discipline: inline comments are the adopter-discovery surface, not exhaust.
64
-
65
- ## When to cite this luminary
66
-
67
- Cite `@luminary john-ousterhout` when:
68
-
69
- - **Reviewing module boundaries** (`/pattern-review`) — is this class deep or shallow? Would splitting it make two deep modules or two shallow ones?
70
- - **Decomposing responsibilities** (`/decompose` GRASP audit) — does each responsibility assignment produce a deep module, or push complexity to callers?
71
- - **Designing bassclef-configs.jsonc or other adopter-edit surfaces** — inline comments must encode WHY-to-pick and WHEN-to-pick, not restate the field name. This is "comments-as-design" applied to substrate configuration.
72
- - **Evaluating whether complexity is essential or accidental** — when a feature feels harder to ship than it should, ask whether the difficulty is in the problem domain (essential) or in how earlier decisions shaped the code (accidental). Accidental complexity is the refactor signal.
73
-
74
- When the question is test mechanics, refactoring step-by-step, design-pattern selection, distributed-systems scalability, or algorithmic complexity, route elsewhere.
75
- INSTEAD: cite Beck (test mechanics), Fowler (refactoring tactics), GoF (pattern selection), Kleppmann (Phase C, scalability anchor), Bentley (Phase C, Big-O practical discipline).
76
-
77
- ## Composes with
78
-
79
- - **Kent Beck** — TDD makes deep modules testable. Tests verify that the interface is actually small; without tests, deep modules look the same as shallow ones from outside.
80
- - **Martin Fowler** — Refactoring tactics serve Ousterhout's design judgment. Fowler tells you HOW to extract a method; Ousterhout tells you WHETHER the extraction produces a deeper module or shuffles complexity.
81
- - **Gang of Four** — Design patterns are deep-module exemplars when applied well. The Decorator pattern is a deep module; the over-applied Visitor pattern is often shallow because it pushes traversal logic to callers.
82
- - **Michael Feathers** (bassclef luminary catalog) — Characterization testing makes it safe to refactor toward deeper modules in legacy code where the original boundaries are unclear.
83
-
84
- ## Refs
85
-
86
- - bassclef#1036 — this luminary's filing ticket
87
- - bassclef#867 — anchor-luminary verification pattern (stub-tier shape this entry follows)
88
- - bassclef#1037 — sibling ticket; testing-tier-config primitive (Ousterhout's comments-as-design framing anchors the Tier 0 vs Tier 3 comment rules)
89
- - bassclef#478 — `@pattern` annotation discipline (analog for `@luminary` citation discipline)
90
-
91
- ## Stub-to-full
92
-
93
- This is a stub entry per bassclef#867 verification pattern — frontmatter plus 4-section body grounded in primary source. Full body (worked examples in bassclef's own substrate, anti-patterns catalog, signature stack-translation paragraph) is deferred to a luminary-authoring follow-on bet.
94
- INSTEAD of blocking citation on full-body completion: the stub is sufficient for `/pattern-review` and `/decompose` to invoke the lens today; the full entry deepens worked examples in a later pass.
@@ -1,132 +0,0 @@
1
- ---
2
- tier: lite
3
- name: Karl Popper
4
- slug: karl-popper
5
- claimed_by: [architect, reviewer, closer]
6
- referenced_by_skills: [diagnose, architect-review, promote, state-a-problem]
7
- primary_domain: philosophy
8
- depth: full
9
- sources:
10
- - type: book
11
- title: "The Logic of Scientific Discovery"
12
- authors: ["Karl R. Popper"]
13
- year: 1959
14
- original_year: 1935
15
- url: "https://www.routledge.com/The-Logic-of-Scientific-Discovery/Popper/p/book/9780415278447"
16
- isbn: "9780415278447"
17
- methodology_covered:
18
- - "Falsifiability as demarcation criterion for scientific claims"
19
- - "Bold conjectures + severe tests as the actual method"
20
- - "Verification is impossible; falsification is decisive"
21
- - type: book
22
- title: "Conjectures and Refutations: The Growth of Scientific Knowledge"
23
- authors: ["Karl R. Popper"]
24
- year: 1963
25
- url: "https://www.routledge.com/Conjectures-and-Refutations-The-Growth-of-Scientific-Knowledge/Popper/p/book/9780415285940"
26
- isbn: "9780415285940"
27
- methodology_covered:
28
- - "Knowledge grows by refutation, not confirmation"
29
- - "Better theories forbid more; the more a theory forbids the better"
30
- - "All observation is theory-laden; there is no view from nowhere"
31
- - type: book
32
- title: "The Open Society and Its Enemies"
33
- authors: ["Karl R. Popper"]
34
- year: 1945
35
- url: "https://press.princeton.edu/books/paperback/9780691158136/the-open-society-and-its-enemies"
36
- isbn: "9780691158136"
37
- methodology_covered:
38
- - "Piecemeal social engineering over utopian planning"
39
- - "Institutions that expose leaders to falsification"
40
- - "Critical rationalism as social discipline"
41
- verification_status: verified
42
- description: "\"Good tests kill flawed theories; we remain alive to guess again.\""
43
- ---
44
-
45
- # Karl Popper
46
-
47
- ## Signature
48
-
49
- *"Good tests kill flawed theories; we remain alive to guess again."*
50
-
51
- Austrian-British philosopher (1902-1994). Author of *The Logic of Scientific Discovery* (Hutchinson, 1935 German / 1959 English) and *Conjectures and Refutations* (1963). The bassclef voice on falsifiability, hypothesis testing, and the discipline that a claim which cannot be falsified is steering language, not truth.
52
-
53
- ## Core methods
54
-
55
- - **Falsifiability as demarcation** — a claim is scientific to the extent that it can be shown wrong. Unfalsifiable claims may be inspiring; they are not knowledge. In substrate work: an assertion with no rebuttal cell is either a definition or an act of faith.
56
- - **Conjectures and refutations** — knowledge grows by making bold conjectures and then trying hard to break them. The bolder the claim, the more the world it forbids, the more informative it is when it survives testing.
57
- - **The severity of tests** — a test that could have refuted the claim but did not is severe. A test the claim was designed to pass is weak. Testing is not a formality; it is the entire epistemic engine.
58
- - **Piecemeal engineering** — for social + technical systems, small changes that can be reverted are better than sweeping redesigns that cannot. The value is not the change itself; it is the reversibility.
59
- - **All observation is theory-laden** — there is no raw data. Every observation runs through the framework the observer brings. This is why the warrant matters, not just the data.
60
-
61
- ## When to channel this luminary
62
-
63
- When the primary risk is root-cause claims, cure recommendations, or diagnostic assertions shipping without stated conditions for being wrong. Popper dominates for `/diagnose` output (root-cause hypotheses), audit findings (severity claims), cure recommendations (why THIS cure, not another), and any assertion the operator will act on. Pair with Toulmin (Popper's rebuttal cell IS Toulmin's rebuttal cell) and Peirce (Peirce names the alternatives; Popper says test each).
64
-
65
- Pass-through cases (Popper adds no value):
66
-
67
- - Pure definition claims ("this is what we call X"). INSTEAD of falsification testing: preserve the definition; it is a naming act, not a knowledge claim.
68
- - Aesthetic preference statements. INSTEAD of falsification testing: preserve the preference; it is Peirce's pragmatic-maxim category, not Popper's.
69
- - Operator-authored directives. INSTEAD of falsification testing: honor the directive; operator preference is a starting point for inquiry, not a hypothesis to be falsified.
70
-
71
- ## Stack translation
72
-
73
- In bassclef substrate work:
74
-
75
- - **`/diagnose` output** → hypothesis + falsification test. What repro would show the hypothesis is wrong? Write it before writing the fix.
76
- - **Audit finding severity** → what evidence would demote HIGH to MEDIUM? Name it. If nothing would demote it, the severity is either a definition or a decree.
77
- - **Cure recommendation** → what evidence would show this cure does not close the class? Name the test. If no test would falsify, the cure is faith not analysis.
78
- - **Turn estimate** → the estimate is a prediction. What actuals would falsify it? Grounding estimates in prior WU turn counts is Popper's discipline — the prior WUs are the tests the estimate survives.
79
- - **Root-cause claim** → the cause is the hypothesis. Removing it should remove the symptom. If removal does not remove the symptom, the cause was wrong. Test before shipping.
80
-
81
- ## Anti-patterns it prevents
82
-
83
- - **Unfalsifiable severity** — "This is HIGH-severity because it matters." No evidence would demote it. Not a claim.
84
-
85
- INSTEAD: state the criteria that would demote the finding. If none exist, the finding is a decree, not evidence.
86
-
87
- - **Root-cause attribution without repro** — "The cause is X" with no test that would show removing X does not remove the symptom.
88
-
89
- INSTEAD: state the repro that would falsify. Run it. Ship the fix only after the test discriminates.
90
-
91
- - **Cure recommendation without a losing condition** — "This cure closes the class" with no criterion that would show it does not.
92
-
93
- INSTEAD: state the observation that would show the class still reproduces after the cure. That IS the acceptance test.
94
-
95
- - **Confirmation-only diagnosis** — running only the test the hypothesis passes.
96
-
97
- INSTEAD: run the severest test the hypothesis could survive. If it survives that, it is stronger than a test that was designed to pass.
98
-
99
- - **Sweeping redesign** — replacing a hook, a rule, or a substrate primitive with a cleaner version, all at once, no reversibility path.
100
-
101
- INSTEAD: ship the smallest reversible change. Piecemeal engineering ships smaller changes with revert paths.
102
-
103
- ## Worked example
104
-
105
- For a claim that a hook is dead-letter:
106
-
107
- Popper's discipline:
108
-
109
- - **Conjecture**: The hook `X.sh` is dead-letter — it exists on disk but is not wired in `.claude/settings.json`. Its checks do not fire.
110
- - **Severe test**: Deliberately trigger the condition the hook is supposed to catch. Author a file that violates the hook's stated rule; attempt to write it. If the write succeeds without the hook firing, the conjecture is confirmed. If the hook fires and blocks the write, the conjecture is falsified.
111
- - **Result**: Wrote the violating file. Write succeeded. No BLOCK message. The hook did not fire. Conjecture survives; hook is dead-letter.
112
- - **What would falsify**: A BLOCK message appearing in the write attempt. It did not appear.
113
-
114
- Without Popper's discipline the diagnosis would read "the hook seems broken" — no test, no falsification criterion, no way to distinguish "actually broken" from "I did not trigger it right." INSTEAD: state the conjecture, name the severe test, run it, report the result.
115
-
116
- ## Sources
117
-
118
- - *The Logic of Scientific Discovery* — Popper, Hutchinson (1935 German original; 1959 English translation; Routledge reprint)
119
- - *Conjectures and Refutations: The Growth of Scientific Knowledge* — Popper, Routledge (1963)
120
- - *The Open Society and Its Enemies* — Popper, Routledge (1945; Princeton reissue 2020)
121
- - *Objective Knowledge: An Evolutionary Approach* — Popper, Oxford University Press (1972)
122
- - Stanford Encyclopedia of Philosophy: entry on Popper — plato.stanford.edu/entries/popper/
123
-
124
- ## Related luminaries
125
-
126
- - **Stephen Toulmin** — Toulmin's argument model gives the shape (claim/data/warrant); Popper sharpens the rebuttal cell. A Toulmin argument without the rebuttal cell is a Popperian pseudo-claim. Both ship in bet 2026-07-01b WU-2.
127
- - **Charles Sanders Peirce** — Peirce's abductive reasoning names multiple hypotheses; Popper says test each one severely. Peirce fills the alternatives; Popper says which alternative survives. Both ship in bet 2026-07-01b WU-2.
128
- - **W. Edwards Deming** — Deming's PDCA cycle is Popper's conjecture-and-refutation applied to management. Plan (conjecture), Do (test), Check (see if the test broke the plan), Act (revise).
129
- - **Michael Feathers** — Feathers' characterization tests are severe tests for legacy code. Without characterization tests, refactoring is unfalsifiable — no test would show the refactor broke behavior.
130
- - **Kent Beck** — Beck's TDD is Popper at the code layer. The red test is the severe test the claim must survive to become green. TDD without a red step is unfalsifiable design.
131
-
132
- Anchors `.claude/rules/assert-only-after-verify.md` alongside Toulmin + Peirce. Primary luminary for `/diagnose` skill in root-cause hypothesis testing.
@@ -1,168 +0,0 @@
1
- ---
2
- tier: lite
3
- name: Kent Beck
4
- slug: kent-beck
5
- claimed_by: [builder, reviewer]
6
- referenced_by_skills: [verify, pattern-review]
7
- primary_domain: engineering
8
- depth: full
9
- sources:
10
- - type: book
11
- title: "Test-Driven Development: By Example"
12
- authors: ["Kent Beck"]
13
- year: 2002
14
- url: "https://www.pearson.com/en-us/subject-catalog/p/test-driven-development-by-example/P200000009450"
15
- isbn: "9780321146533"
16
- methodology_covered:
17
- - "TDD red/green/refactor cycle"
18
- - "Test-first as design discipline, not verification afterthought"
19
- - "Tests as the first client of your code"
20
- - type: book
21
- title: "Extreme Programming Explained: Embrace Change"
22
- authors: ["Kent Beck", "Cynthia Andres"]
23
- year: 2004
24
- url: "https://www.pearson.com/en-us/subject-catalog/p/extreme-programming-explained-embrace-change/P200000009290"
25
- isbn: "9780321278654"
26
- methodology_covered:
27
- - "XP practices: TDD, pair programming, continuous integration, simple design"
28
- - "Embrace change as a competitive advantage"
29
- - "Four rules of simple design — passes tests, reveals intention, no duplication, fewest elements"
30
- - type: book
31
- title: "Tidy First? A Personal Exercise in Empirical Software Design"
32
- authors: ["Kent Beck"]
33
- year: 2023
34
- url: "https://www.oreilly.com/library/view/tidy-first/9781098151232/"
35
- isbn: "9781098151249"
36
- methodology_covered:
37
- - "Tidy First — structural changes commit separately from behavioral changes"
38
- - "Don't bundle refactor and feature in one PR"
39
- - "Empirical software design — measure what works, adjust accordingly"
40
- verification_status: verified
41
- description: "\"Make it work. Make it right. Make it fast. Tests are the first client of your code.\""
42
- ---
43
-
44
- # Kent Beck
45
-
46
- ## Signature
47
-
48
- *"Make it work. Make it right. Make it fast. Tests are the first client of your code."*
49
-
50
- Extreme Programming (XP) creator. Co-author of **the JUnit framework**.
51
- Author of **Test-Driven Development: By Example** and **Extreme Programming
52
- Explained**. The bassclef voice on TDD, simple design, and iterative
53
- engineering practice.
54
-
55
- ## Core methods
56
-
57
- - **TDD red/green/refactor** — write failing test, write minimum code
58
- to pass, refactor with tests passing. Not "write tests after" — the
59
- test comes first and drives the design.
60
- - **Four rules of simple design** — (1) passes all tests, (2) reveals
61
- intention, (3) no duplication, (4) fewest elements. Apply in order
62
- during refactoring.
63
- - **Three phases of development** — Make it work (get the feature
64
- functional), make it right (clean it up with tests protecting),
65
- make it fast (optimize, measured).
66
- - **Patterns for testability** — Fake It ('Til You Make It, Obvious
67
- Implementation, Triangulation. Techniques for moving from red to
68
- green without skipping steps.
69
- - **XP practices** — pair programming, continuous integration, small
70
- releases, simple design, refactoring, collective ownership.
71
- Practices reinforce each other; removing any degrades the rest.
72
- - **Tidy First** — distinguishing between structural changes (tidying,
73
- no behavior change) and behavioral changes. Commit them separately.
74
-
75
- ## When to channel this luminary
76
-
77
- When the primary risk is code quality degrading under change pressure.
78
- Beck dominates for teams new to TDD, Construction work where tests
79
- aren't yet a reflex, and refactoring-heavy iterations. Pair with Fowler
80
- (refactoring catalog) and Uncle Bob (SOLID principles) for the
81
- engineering-quality triad.
82
-
83
- Do NOT channel Beck for: research code that will be thrown away,
84
- spike work where discovery matters more than sustainability, or work
85
- on systems where the test infrastructure doesn't yet exist (wrong
86
- layer — infrastructure first).
87
-
88
- ## Stack translation
89
-
90
- In Next.js + vitest + Playwright:
91
-
92
- - **TDD for pure functions** → write failing unit test in
93
- `src/__tests__/`, write function to pass, refactor. Scoring logic,
94
- parsing, validation all belong here.
95
- - **TDD for components** → failing React Testing Library assertion,
96
- minimum component to pass, refactor for structure.
97
- - **TDD for API routes** → failing integration test against real DB +
98
- Redis, minimum route implementation to pass.
99
- - **Tidy First** → structural refactor commits separate from feature
100
- commits. "refactor: extract ScoringStrategy interface" + "feat: add
101
- ML scorer" as two PRs, not one.
102
- - **Three phases** → first PR makes feature work, subsequent PRs
103
- right/fast. Don't bundle all three.
104
-
105
- ## Anti-patterns it prevents
106
-
107
- - **Test-after** — writing tests once the code "works" produces tests
108
- that confirm what exists, not tests that drive design. Beck rejects
109
- this as TDD.
110
- - **Batched refactoring** — saving all cleanup for a quarterly "tech
111
- debt sprint." Refactoring is continuous, inside the red/green/refactor
112
- loop.
113
- - **Premature optimization** — making it fast before making it work.
114
- The order matters.
115
- - **Pristine-never-commits** — holding a branch to "get it perfect"
116
- before merging. Beck's XP favors small, frequent merges.
117
- - **Test-less refactors** — rearranging code without tests is just
118
- changing code. Can't claim refactor without behavior preservation,
119
- and you can't prove preservation without tests.
120
- - **Tidy mixed with feature** — commit that both refactors and adds
121
- behavior makes review and revert harder.
122
-
123
- ## Worked example
124
-
125
- For adding POA deal-stage validation:
126
-
127
- Beck's approach:
128
- 1. **Red**: write failing test
129
- `test('deal cannot advance past LOI without signed NDA', ...)`
130
- 2. **Green**: add minimum code to pass — if-check in the stage-advance
131
- controller
132
- 3. **Refactor**: extract `IStageTransitionPolicy` interface,
133
- `NdaSignedPolicy` implementation, `StagePolicyRegistry`
134
- 4. **Tidy commit** separate from feature: "refactor: extract stage
135
- transition policy interface" → PR merged first
136
- 5. **Feature commit**: "feat: enforce NDA-signed requirement for LOI
137
- advance" → PR merged second
138
-
139
- What Beck would NOT produce: a single 400-line PR that adds the
140
- feature, refactors the policy structure, adds telemetry, and fixes
141
- three unrelated smells. That's everything bundled.
142
-
143
- ## Sources
144
-
145
- - *Test-Driven Development: By Example* — Beck, Addison-Wesley (2002)
146
- - *Extreme Programming Explained: Embrace Change* — Beck, Addison-Wesley
147
- (2nd ed 2004)
148
- - *Tidy First?* — Beck, O'Reilly (2023)
149
- - *Implementation Patterns* — Beck (2007)
150
- - kentbeck.com + kent-beck.com — primary sites
151
- - JUnit — software itself is bassclef reference
152
-
153
- ## Related luminaries
154
-
155
- - **Martin Fowler** — Refactoring catalog operationalizes Beck's
156
- red/green/refactor loop. Beck credited Fowler's work as foundational.
157
- - **Robert C. Martin** — SOLID principles frame what "right" looks
158
- like in Beck's make-it-right step.
159
- - **Ward Cunningham** — XP co-creator, Wiki inventor. Historically
160
- inseparable from Beck.
161
- - **Michael Feathers** — Working with Legacy Code handles the
162
- before-state (no tests exist) that TDD assumes away. Both
163
- luminaries became verification-side primaries on bassclef's
164
- `/architect-review` SKILL per bet 27c WU-9.5 (2026-06-27); per
165
- ADR-035 substrate-as-system tenet, every rule's mechanism claim
166
- is a contract Beck's TDD pins + Feathers's characterization
167
- tests verify. See `architecture/audits/2026-06-27-audit-method-blind-spot.md`
168
- for the recursive Act phase that named the lens-gap.