@thebassclef/lite 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +85 -4
  3. package/dist/cli.cjs +1610 -0
  4. package/dist/cli.js +1587 -0
  5. package/dist/index.cjs +4 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +4 -0
  8. package/package.json +51 -3
  9. package/substrate/.bassclef/lite-manifest.json +1794 -0
  10. package/substrate/.claude/agents/architect.md +70 -0
  11. package/substrate/.claude/agents/builder.md +114 -0
  12. package/substrate/.claude/agents/designer.md +156 -0
  13. package/substrate/.claude/agents/reviewer.md +88 -0
  14. package/substrate/.claude/hooks/artifact-ingestion-gate.sh +357 -0
  15. package/substrate/.claude/hooks/assert-verify-steering.sh +77 -0
  16. package/substrate/.claude/hooks/bassclef-source-config-validate.sh +215 -0
  17. package/substrate/.claude/hooks/bassclef-sync.sh +634 -0
  18. package/substrate/.claude/hooks/compound-noun-scrub.sh +292 -0
  19. package/substrate/.claude/hooks/kiss-expansion-inject.sh +69 -0
  20. package/substrate/.claude/hooks/plain-english-steering.sh +156 -0
  21. package/substrate/.claude/hooks/post-skill-friction-check.sh +177 -0
  22. package/substrate/.claude/hooks/post-skill-telemetry.sh +62 -0
  23. package/substrate/.claude/hooks/pre-build-gate.sh +511 -0
  24. package/substrate/.claude/hooks/pre-commit-gate.sh +452 -0
  25. package/substrate/.claude/hooks/session-end.sh +433 -0
  26. package/substrate/.claude/hooks/session-reflection.sh +303 -0
  27. package/substrate/.claude/hooks/skill-body-grade-gate.sh +219 -0
  28. package/substrate/.claude/hooks/skill-body-intent-drift.sh +107 -0
  29. package/substrate/.claude/hooks/skill-step-list-check.sh +171 -0
  30. package/substrate/.claude/hooks/state-validate.sh +271 -0
  31. package/substrate/.claude/hooks/substrate-clarity-gate.sh +1110 -0
  32. package/substrate/.claude/hooks/temperance-gate.sh +147 -0
  33. package/substrate/.claude/hooks/testing-tier-enforce.sh +233 -0
  34. package/substrate/.claude/hooks/turn-prose-grade-measure.sh +219 -0
  35. package/substrate/.claude/hooks/turn-prose-kiss-check.sh +434 -0
  36. package/substrate/.claude/hooks/vocabulary-migration-check.sh +171 -0
  37. package/substrate/.claude/hooks/whereami-utc-gate.sh +142 -0
  38. package/substrate/.claude/luminaries/alan-cooper.md +170 -0
  39. package/substrate/.claude/luminaries/alistair-cockburn.md +140 -0
  40. package/substrate/.claude/luminaries/amazon-pr-faq.md +34 -0
  41. package/substrate/.claude/luminaries/ash-maurya.md +121 -0
  42. package/substrate/.claude/luminaries/bill-buxton.md +210 -0
  43. package/substrate/.claude/luminaries/charles-sanders-peirce.md +150 -0
  44. package/substrate/.claude/luminaries/david-ogilvy.md +192 -0
  45. package/substrate/.claude/luminaries/don-norman.md +173 -0
  46. package/substrate/.claude/luminaries/edward-tufte.md +179 -0
  47. package/substrate/.claude/luminaries/eric-evans.md +160 -0
  48. package/substrate/.claude/luminaries/frederick-brooks.md +50 -0
  49. package/substrate/.claude/luminaries/gang-of-four.md +157 -0
  50. package/substrate/.claude/luminaries/jason-fried-dhh.md +46 -0
  51. package/substrate/.claude/luminaries/jesse-james-garrett.md +154 -0
  52. package/substrate/.claude/luminaries/john-ousterhout.md +94 -0
  53. package/substrate/.claude/luminaries/karl-popper.md +132 -0
  54. package/substrate/.claude/luminaries/kent-beck.md +168 -0
  55. package/substrate/.claude/luminaries/linus-torvalds.md +218 -0
  56. package/substrate/.claude/luminaries/martin-fowler.md +164 -0
  57. package/substrate/.claude/luminaries/michael-feathers.md +125 -0
  58. package/substrate/.claude/luminaries/michael-nygard.md +118 -0
  59. package/substrate/.claude/luminaries/robert-c-martin.md +164 -0
  60. package/substrate/.claude/luminaries/saltzer-schroeder.md +194 -0
  61. package/substrate/.claude/luminaries/sophia-prater.md +193 -0
  62. package/substrate/.claude/luminaries/stephen-toulmin.md +131 -0
  63. package/substrate/.claude/rules/artifact-ingestion.md +179 -0
  64. package/substrate/.claude/rules/assert-only-after-verify.md +137 -0
  65. package/substrate/.claude/rules/blocked-items.md +146 -0
  66. package/substrate/.claude/rules/branching.md +28 -0
  67. package/substrate/.claude/rules/commit-conventions.md +22 -0
  68. package/substrate/.claude/rules/context-engineering.md +202 -0
  69. package/substrate/.claude/rules/context-management.md +85 -0
  70. package/substrate/.claude/rules/destructive-operations.md +69 -0
  71. package/substrate/.claude/rules/diagnosis.md +38 -0
  72. package/substrate/.claude/rules/guardrails.md +73 -0
  73. package/substrate/.claude/rules/identifier-leak-prevention.md +104 -0
  74. package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +98 -0
  75. package/substrate/.claude/rules/oo-ad-entry-point.md +117 -0
  76. package/substrate/.claude/rules/operator-facing-prose.md +196 -0
  77. package/substrate/.claude/rules/plain-english-discipline.md +154 -0
  78. package/substrate/.claude/rules/pr-body-shape.md +317 -0
  79. package/substrate/.claude/rules/pr-strategy.md +167 -0
  80. package/substrate/.claude/rules/sdlc-gates.md +149 -0
  81. package/substrate/.claude/rules/session-artifacts.md +236 -0
  82. package/substrate/.claude/rules/state-schema-validation.md +162 -0
  83. package/substrate/.claude/rules/whereami-load-bearing.md +202 -0
  84. package/substrate/.claude/rules/writing-craft-discipline.md +92 -0
  85. package/substrate/.claude/skills/build/SKILL.md +640 -0
  86. package/substrate/.claude/skills/decompose/SKILL.md +280 -0
  87. package/substrate/.claude/skills/diagnose/SKILL.md +297 -0
  88. package/substrate/.claude/skills/howdoi/SKILL.md +105 -0
  89. package/substrate/.claude/skills/ia-model/SKILL.md +108 -0
  90. package/substrate/.claude/skills/interaction-design/SKILL.md +112 -0
  91. package/substrate/.claude/skills/interpret-input/SKILL.md +180 -0
  92. package/substrate/.claude/skills/kiss/SKILL.md +449 -0
  93. package/substrate/.claude/skills/launch/SKILL.md +924 -0
  94. package/substrate/.claude/skills/lean-canvas/SKILL.md +332 -0
  95. package/substrate/.claude/skills/longrun/SKILL.md +426 -0
  96. package/substrate/.claude/skills/luminary/SKILL.md +481 -0
  97. package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +177 -0
  98. package/substrate/.claude/skills/onboard-repo/SKILL.md +2190 -0
  99. package/substrate/.claude/skills/pattern-review/SKILL.md +99 -0
  100. package/substrate/.claude/skills/personas/SKILL.md +207 -0
  101. package/substrate/.claude/skills/promote/SKILL.md +283 -0
  102. package/substrate/.claude/skills/requirement/SKILL.md +98 -0
  103. package/substrate/.claude/skills/retro/SKILL.md +117 -0
  104. package/substrate/.claude/skills/riff/SKILL.md +114 -0
  105. package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +163 -0
  106. package/substrate/.claude/skills/session-end/SKILL.md +309 -0
  107. package/substrate/.claude/skills/session-log/SKILL.md +299 -0
  108. package/substrate/.claude/skills/skills/SKILL.md +228 -0
  109. package/substrate/.claude/skills/spec/SKILL.md +105 -0
  110. package/substrate/.claude/skills/sprint/SKILL.md +392 -0
  111. package/substrate/.claude/skills/stage/SKILL.md +384 -0
  112. package/substrate/.claude/skills/state-a-problem/SKILL.md +185 -0
  113. package/substrate/.claude/skills/temperance/SKILL.md +108 -0
  114. package/substrate/.claude/skills/use-case/SKILL.md +417 -0
  115. package/substrate/.claude/skills/user-stories/SKILL.md +268 -0
  116. package/substrate/.claude/skills/value-prop/SKILL.md +251 -0
  117. package/substrate/.claude/skills/verify/SKILL.md +160 -0
  118. package/substrate/.claude/skills/whereami/SKILL.md +307 -0
  119. package/substrate/AGENTS.md +79 -0
  120. package/substrate/CLAUDE-lite.md +85 -0
  121. package/substrate/CODE_OF_CONDUCT.md +28 -0
  122. package/substrate/CONTRIBUTING.md +177 -0
  123. package/substrate/README.md +173 -0
  124. package/substrate/SECURITY.md +19 -0
  125. package/substrate/architecture/decisions/ADR-029-release-pipeline.md +79 -0
  126. package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +139 -0
  127. package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +192 -0
  128. package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +145 -0
  129. package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +155 -0
  130. package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +162 -0
  131. package/substrate/lib/clean-artifacts-sweep.sh +112 -0
  132. package/substrate/lib/code-comment-discipline.sh +144 -0
  133. package/substrate/lib/composer-preflight.sh +459 -0
  134. package/substrate/lib/hook-inject.sh +255 -0
  135. package/substrate/lib/luminary-pick.sh +96 -0
  136. package/substrate/lib/output-discipline.sh +143 -0
  137. package/substrate/lib/rewrite-check.sh +214 -0
  138. package/substrate/lib/state.sh +1372 -0
  139. package/substrate/lib/telemetry.sh +205 -0
  140. package/substrate/lib/tier-check.sh +138 -0
  141. package/substrate/lib/tier-dependency-audit.sh +933 -0
  142. package/substrate/presence/install/bassclef-hook-connect.sh +178 -0
  143. package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +841 -0
  144. package/substrate/presence/install/bassclef-sync.template.sh +2076 -0
  145. package/substrate/presence/install/schedule-auto-save.cron.sh +88 -0
  146. package/substrate/presence/install/schedule-auto-save.taskscheduler.md +122 -0
  147. package/substrate/scripts/aggregate-telemetry.sh +217 -0
  148. package/substrate/scripts/analyze-tier-dependencies.sh +239 -0
  149. package/substrate/scripts/generate-lite-manifest.sh +489 -0
  150. package/substrate/scripts/generate-tier-manifest.sh +28 -0
  151. package/substrate/scripts/intent-drift-check.sh +456 -0
  152. package/substrate/scripts/lite-manifest-drift-check.sh +146 -0
  153. package/substrate/scripts/render-lite-manifest-doc.sh +150 -0
  154. package/substrate/standards/bassclef-configs-schema.md +232 -0
  155. package/substrate/standards/bassclef-evolution.md +143 -0
  156. package/substrate/standards/bassclef-internal-jargon.md +244 -0
  157. package/substrate/standards/bassclef-managed-sentinel.md +96 -0
  158. package/substrate/standards/bassclef-source-config.md +228 -0
  159. package/substrate/standards/deferred-actions-schema.md +204 -0
  160. package/substrate/standards/docs-sync-allowlist.md +76 -0
  161. package/substrate/standards/graceful-exit.md +227 -0
  162. package/substrate/standards/hook-idempotency.md +102 -0
  163. package/substrate/standards/lite-manifest-schema-changes.md +75 -0
  164. package/substrate/standards/luminary-problem-patterns.md +481 -0
  165. package/substrate/standards/ogilvy-writing-rules.md +225 -0
  166. package/substrate/standards/opener-discipline.md +96 -0
  167. package/substrate/standards/operator-facing-prose-discipline.md +201 -0
  168. package/substrate/standards/project-directory-layout.md +276 -0
  169. package/substrate/standards/release-tagging.md +137 -0
  170. package/substrate/standards/sdlc-compliance.md +286 -0
  171. package/substrate/standards/secrets-lifecycle.md +210 -0
  172. package/substrate/standards/security-scanner-adapter.md +145 -0
  173. package/substrate/standards/skill-output-discipline.md +90 -0
  174. package/substrate/standards/state-spine.md +511 -0
  175. package/substrate/standards/tech-stack-config.md +109 -0
  176. package/substrate/standards/tier-dependency-analysis.md +167 -0
  177. package/substrate/standards/tier-runtime-deps/lite.md +57 -0
  178. package/substrate/standards/tier-tag-schema.md +155 -0
  179. package/substrate/standards/whereami-schema.md +301 -0
  180. package/substrate/standards/writing-guide.md +213 -0
  181. package/substrate/templates/deferred-action-template.md +45 -0
  182. package/substrate/templates/whereami-template.md +101 -0
@@ -0,0 +1,157 @@
1
+ ---
2
+ tier: lite
3
+ name: Gang of Four (Gamma, Helm, Johnson, Vlissides)
4
+ slug: gang-of-four
5
+ claimed_by: [builder]
6
+ referenced_by_skills: [pattern-review, decompose, architect-review]
7
+ primary_domain: engineering
8
+ depth: full
9
+ sources:
10
+ - type: book
11
+ title: "Design Patterns: Elements of Reusable Object-Oriented Software"
12
+ authors: ["Erich Gamma", "Richard Helm", "Ralph Johnson", "John Vlissides"]
13
+ year: 1994
14
+ url: "https://www.pearson.com/en-us/subject-catalog/p/design-patterns-elements-of-reusable-object-oriented-software/P200000009480"
15
+ isbn: "9780201633610"
16
+ methodology_covered:
17
+ - "23 named patterns across Creational, Structural, Behavioral categories"
18
+ - "Program to an interface, not an implementation"
19
+ - "Favor object composition over class inheritance"
20
+ - "Decorator for cross-cutting concerns; Strategy for algorithm variation; Observer for event propagation"
21
+ - "Pattern language as shared vocabulary for design discussion"
22
+ verification_status: verified
23
+ description: "\"Program to an interface, not an implementation."
24
+ ---
25
+
26
+ # Gang of Four (GoF)
27
+
28
+ ## Signature
29
+
30
+ *"Program to an interface, not an implementation. Favor object composition over class inheritance."*
31
+
32
+ Authors of **Design Patterns: Elements of Reusable Object-Oriented
33
+ Software** (1994). The bassclef reference for 23 named OO patterns
34
+ across three categories (Creational, Structural, Behavioral). The
35
+ book every serious engineer has read; the patterns every codebase
36
+ implements, named or not.
37
+
38
+ ## Core methods
39
+
40
+ ### Creational patterns (how objects are made)
41
+ - **Factory Method** — defer instantiation to subclasses
42
+ - **Abstract Factory** — families of related objects
43
+ - **Builder** — step-by-step complex construction
44
+ - **Prototype** — clone existing instances
45
+ - **Singleton** — one shared instance (use sparingly)
46
+
47
+ ### Structural patterns (how objects compose)
48
+ - **Adapter** — translate one interface to another
49
+ - **Bridge** — decouple abstraction from implementation
50
+ - **Composite** — tree structures of uniform objects
51
+ - **Decorator** — add behavior without subclassing (critical for
52
+ cross-cutting concerns — see `/decompose` Phase 3)
53
+ - **Facade** — simplified interface to subsystem
54
+ - **Flyweight** — share state for many small objects
55
+ - **Proxy** — placeholder controlling access
56
+
57
+ ### Behavioral patterns (how objects collaborate)
58
+ - **Chain of Responsibility** — pass request through handlers
59
+ - **Command** — encapsulate request as object
60
+ - **Interpreter** — language grammar evaluation
61
+ - **Iterator** — sequential access without exposing structure
62
+ - **Mediator** — reduce inter-object coupling
63
+ - **Memento** — capture and restore state
64
+ - **Observer** — notify dependents of state change
65
+ - **State** — behavior varies by internal state
66
+ - **Strategy** — algorithm varies at runtime
67
+ - **Template Method** — skeleton with overridable steps
68
+ - **Visitor** — operations over object structure
69
+
70
+ ## When to channel this luminary
71
+
72
+ When the primary risk is reinventing solved structural problems badly.
73
+ GoF dominates for Construction pattern selection, code review, and
74
+ decomposition work. Pair with Fowler (enterprise patterns extend GoF),
75
+ Uncle Bob (SOLID shapes how patterns apply), and Cockburn (Hexagonal
76
+ Architecture places patterns in structural context).
77
+
78
+ Do NOT channel GoF for: trivial code where no pattern applies,
79
+ greenfield work where you should first ask whether the problem is
80
+ really structural, or to justify over-engineering.
81
+
82
+ ## Stack translation
83
+
84
+ In Next.js + React + TypeScript:
85
+
86
+ - **Facade** → server actions composing multiple services for a single
87
+ operation (`app/actions/create-deal.ts`).
88
+ - **Adapter** → `lib/adapters/[vendor].ts` wraps external APIs with
89
+ consistent interface.
90
+ - **Strategy** → `IScoringStrategy` with multiple implementations;
91
+ registry selects at runtime.
92
+ - **Decorator** → `ObservedImputer` wraps `IAssociationImputer` for
93
+ tracing; `CachedRepository` wraps `IRepository` for caching. THE
94
+ pattern for cross-cutting concerns per `/decompose` Phase 3.
95
+ - **Observer** → React context + useEffect for subscription; Prisma
96
+ middleware for data-change events.
97
+ - **Factory** → `createClient()` functions that return configured instances.
98
+ - **State** → XState machines for complex UI state (deal-stage wizard).
99
+ - **Template Method** → base classes with abstract steps (rare in
100
+ modern React; prefer composition).
101
+ - **Proxy** → Next.js middleware for auth; SWR for cached API access.
102
+
103
+ ## Anti-patterns it prevents
104
+
105
+ - **Pattern invention** — creating novel structural solutions to solved
106
+ problems. Results are always worse than the pattern.
107
+ - **Pattern without need** — using Observer where a simple callback
108
+ works; Strategy where an if-statement works. Pattern overhead without
109
+ variation pressure.
110
+ - **Mis-fit pattern** — applying a pattern whose preconditions don't
111
+ hold. Factory for simple `new` calls. Decorator for behavior that's
112
+ intrinsic (not cross-cutting).
113
+ - **Pattern stacking** — using five patterns where two would suffice.
114
+ Each pattern has cognitive cost.
115
+ - **Inheritance as default structural tool** — GoF's opening principle
116
+ is "favor composition over inheritance." Deep inheritance hierarchies
117
+ are usually wrong.
118
+
119
+ ## Worked example
120
+
121
+ For POA's email-imputation facade (per `/decompose` Phase 3):
122
+
123
+ GoF pattern selection:
124
+ - **Facade**: `AssociationImputer` exposes simple interface, hides
125
+ LLM provider complexity
126
+ - **Strategy**: Different providers (Haiku, Gemma) as interchangeable
127
+ implementations of `IAssociationImputer`
128
+ - **Adapter**: `AnthropicAdapter`, `GeminiAdapter` wrap vendor SDKs
129
+ behind common interface
130
+ - **Decorator**: `ObservedImputer` wraps any imputer with Langfuse
131
+ tracing — cross-cutting observability
132
+ - **Proxy**: `CachedImputer` wraps any imputer with recent-result
133
+ caching — cross-cutting performance
134
+ - **Chain of Responsibility** (future): multiple imputers in fallback
135
+ chain — Haiku first, Gemma on low confidence, human review on very
136
+ low confidence
137
+
138
+ What GoF would NOT produce: one concrete `HaikuImputer` class with
139
+ observability, caching, error handling, and provider logic all
140
+ intertwined. That's the anti-pattern `/decompose` evolution was
141
+ built to prevent.
142
+
143
+ ## Sources
144
+
145
+ - *Design Patterns: Elements of Reusable Object-Oriented Software* —
146
+ Gamma, Helm, Johnson, Vlissides, Addison-Wesley (1994)
147
+ - No primary website (the book is the source)
148
+
149
+ ## Related luminaries
150
+
151
+ - **Robert C. Martin** — SOLID principles guide pattern application.
152
+ - **Martin Fowler** — PoEAA extends GoF patterns to enterprise context.
153
+ - **Erich Gamma** individually — co-author, later led VS Code.
154
+ - **Christopher Alexander** — "A Pattern Language" (architecture, 1977)
155
+ inspired the software pattern movement.
156
+ - **Head First Design Patterns** (Freeman, Robson) — accessible entry
157
+ to GoF for learners.
@@ -0,0 +1,46 @@
1
+ ---
2
+ tier: lite
3
+ name: Jason Fried / DHH (David Heinemeier Hansson)
4
+ slug: jason-fried-dhh
5
+ claimed_by: [shaper]
6
+ referenced_by_skills: [canvas, sprint]
7
+ primary_domain: shaping
8
+ depth: stub
9
+ description: "\"It doesn't have to be crazy at work.\""
10
+ ---
11
+
12
+ # Jason Fried / DHH
13
+
14
+ ## Signature
15
+
16
+ *"It doesn't have to be crazy at work."*
17
+
18
+ Basecamp founders; the philosophical foundation behind Shape Up. Canonical
19
+ voices on **calm, independent, opinionated product work** — small teams
20
+ shipping polished software on a rhythm, without the manufactured urgency
21
+ of startup culture.
22
+
23
+ ## Core methods
24
+
25
+ - **Appetite over estimation** (later operationalized by Singer as Shape Up) —
26
+ Fixed time, variable scope. Don't estimate; bet.
27
+ - **Six-week cycles + two-week cool-down** — Deliberately slow cadence.
28
+ Reject agile theater of weekly sprints.
29
+ - **Interruption is the enemy** — Long uninterrupted time is the actual
30
+ productivity multiplier. Meetings, chat, "quick syncs" destroy it.
31
+ - **Opinionated software** — Products that make choices for users reduce
32
+ decision fatigue. Neutrality is a design failure.
33
+
34
+ ## Sources
35
+
36
+ - *Rework* — Fried, Hansson, Crown Business (2010)
37
+ - *It Doesn't Have to Be Crazy at Work* — Fried, Hansson, Harper Business (2018)
38
+ - *Getting Real* — 37signals (2006), free online at gettingreal.37signals.com
39
+ - basecamp.com/books — all 37signals/Basecamp books free
40
+
41
+ ## Related luminaries
42
+
43
+ - **Ryan Singer** — Singer operationalized Fried/DHH's philosophy into
44
+ Shape Up; they are the underlying philosophy, he is the method.
45
+ - **Catherine Wu (Anthropic)** — "Underfund on purpose" echoes Fried/DHH's
46
+ appetite discipline.
@@ -0,0 +1,154 @@
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.
@@ -0,0 +1,94 @@
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.
@@ -0,0 +1,132 @@
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.