@thebassclef/lite 1.1.1 → 1.2.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 (135) hide show
  1. package/dist/cli.cjs +23 -6
  2. package/dist/cli.js +23 -6
  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/.claude/bassclef-configs.jsonc +56 -0
  7. package/dist/lite/.claude/bassclef-orientation.md +120 -0
  8. package/dist/lite/.claude/hooks/adr-discipline-check.sh +132 -0
  9. package/dist/lite/.claude/hooks/atomic-pr-check.sh +169 -0
  10. package/dist/lite/.claude/hooks/auto-save-idle.sh +51 -0
  11. package/dist/lite/.claude/hooks/bassclef-sync.sh +51 -13
  12. package/dist/lite/.claude/hooks/bet-doc-gate.sh +283 -0
  13. package/dist/lite/.claude/hooks/bug-diagnosis.sh +64 -0
  14. package/dist/lite/.claude/hooks/destructive-command-guard.sh +136 -0
  15. package/dist/lite/.claude/hooks/file-rename-discipline-check.sh +147 -0
  16. package/dist/lite/.claude/hooks/hook-classifier-canary.sh +158 -0
  17. package/dist/lite/.claude/hooks/kiss-default-check.sh +129 -0
  18. package/dist/lite/.claude/hooks/multi-tenancy-check.sh +83 -0
  19. package/dist/lite/.claude/hooks/oo-ad-entry-point-check.sh +216 -0
  20. package/dist/lite/.claude/hooks/operator-private-path-check.sh +203 -0
  21. package/dist/lite/.claude/hooks/pattern-annotation-validate.sh +142 -0
  22. package/dist/lite/.claude/hooks/plain-english-steering.sh +15 -1
  23. package/dist/lite/.claude/hooks/post-write-trace.sh +66 -0
  24. package/dist/lite/.claude/hooks/pr-body-scrub-check.sh +446 -0
  25. package/dist/lite/.claude/hooks/pre-commit-identifier-leak-scrub.sh +137 -0
  26. package/dist/lite/.claude/hooks/pre-gh-pr-body-scrub.sh +192 -0
  27. package/dist/lite/.claude/hooks/pre-gh-pr-title-scrub.sh +172 -0
  28. package/dist/lite/.claude/hooks/role-entry-gate.sh +115 -0
  29. package/dist/lite/.claude/hooks/save-state.sh +268 -0
  30. package/dist/lite/.claude/hooks/session-reflection.d/08-settings-drift.sh +8 -1
  31. package/dist/lite/.claude/hooks/session-reflection.d/10-abrupt-stop-recovery.sh +52 -0
  32. package/dist/lite/.claude/hooks/session-reflection.d/55-orientation-gate.sh +40 -4
  33. package/dist/lite/.claude/hooks/session-reflection.d/80-hook-heartbeat-check.sh +12 -5
  34. package/dist/lite/.claude/hooks/session-reflection.d/81-hook-manifest-staleness.sh +18 -2
  35. package/dist/lite/.claude/hooks/session-reflection.d/91-npm-version-drift.sh +54 -0
  36. package/dist/lite/.claude/hooks/session-reflection.d/tests/10-abrupt-stop-recovery.test.sh +95 -0
  37. package/dist/lite/.claude/hooks/session-reflection.sh +62 -15
  38. package/dist/lite/.claude/hooks/tool-failure-diagnosis.sh +50 -0
  39. package/dist/lite/.claude/luminaries/andrej-karpathy.md +165 -0
  40. package/dist/lite/.claude/luminaries/dave-gray.md +155 -0
  41. package/dist/lite/.claude/luminaries/gary-klein.md +166 -0
  42. package/dist/lite/.claude/luminaries/kaoru-ishikawa.md +162 -0
  43. package/dist/lite/.claude/luminaries/lean-product-canvas.md +33 -0
  44. package/dist/lite/.claude/luminaries/luke-wroblewski.md +224 -0
  45. package/dist/lite/.claude/luminaries/ryan-singer.md +113 -0
  46. package/dist/lite/.claude/luminaries/steve-krug.md +168 -0
  47. package/dist/lite/.claude/luminaries/tony-ulwick.md +134 -0
  48. package/dist/lite/.claude/rules/arc-level-orientation-before-leaf.md +60 -0
  49. package/dist/lite/.claude/rules/architect-review-discipline.md +71 -0
  50. package/dist/lite/.claude/rules/auto-fix-criteria.md +126 -0
  51. package/dist/lite/.claude/rules/bassclef-hook-drift-blocker.md +144 -0
  52. package/dist/lite/.claude/rules/bassclef-models-discovery.md +107 -0
  53. package/dist/lite/.claude/rules/bassclef-workflow-parity.md +104 -0
  54. package/dist/lite/.claude/rules/cost-governance.md +154 -0
  55. package/dist/lite/.claude/rules/file-rename-discipline.md +95 -0
  56. package/dist/lite/.claude/rules/mechanism-fidelity.md +88 -0
  57. package/dist/lite/.claude/rules/prototype-production-coupling.md +125 -0
  58. package/dist/lite/.claude/rules/quick-fix-criteria.md +90 -0
  59. package/dist/lite/.claude/rules/session-artifacts.md +30 -0
  60. package/dist/lite/.claude/rules/sibling-smoke-after-substrate-change.md +107 -0
  61. package/dist/lite/.claude/rules/substrate-as-system.md +67 -0
  62. package/dist/lite/.claude/rules/usability.md +22 -0
  63. package/dist/lite/.claude/settings.json +20 -0
  64. package/dist/lite/.claude/skills/agent-research-spawn/SKILL.md +100 -0
  65. package/dist/lite/.claude/skills/architect-review/SKILL.md +201 -0
  66. package/dist/lite/.claude/skills/auto-fix/SKILL.md +297 -0
  67. package/dist/lite/.claude/skills/autonomous/SKILL.md +300 -0
  68. package/dist/lite/.claude/skills/bind-subdomain/SKILL.md +232 -0
  69. package/dist/lite/.claude/skills/canvas/SKILL.md +41 -0
  70. package/dist/lite/.claude/skills/deploy-prod/SKILL.md +106 -0
  71. package/dist/lite/.claude/skills/docs-sync/SKILL.md +188 -0
  72. package/dist/lite/.claude/skills/eisenhower/SKILL.md +273 -0
  73. package/dist/lite/.claude/skills/empathy-map/SKILL.md +168 -0
  74. package/dist/lite/.claude/skills/frontend-design/SKILL.md +53 -0
  75. package/dist/lite/.claude/skills/interview-me/SKILL.md +171 -0
  76. package/dist/lite/.claude/skills/journal-export/SKILL.md +293 -0
  77. package/dist/lite/.claude/skills/jtbd-tasks/SKILL.md +203 -0
  78. package/dist/lite/.claude/skills/objectory-decompose/SKILL.md +256 -0
  79. package/dist/lite/.claude/skills/pick-luminaries/SKILL.md +100 -0
  80. package/dist/lite/.claude/skills/pre-mortem/SKILL.md +180 -0
  81. package/dist/lite/.claude/skills/prototype-gallery/SKILL.md +264 -0
  82. package/dist/lite/.claude/skills/provision-deploy-host/SKILL.md +257 -0
  83. package/dist/lite/.claude/skills/quick-fix/SKILL.md +273 -0
  84. package/dist/lite/.claude/skills/release/SKILL.md +311 -0
  85. package/dist/lite/.claude/skills/release-notes/SKILL.md +202 -0
  86. package/dist/lite/.claude/skills/rfc/SKILL.md +222 -0
  87. package/dist/lite/.claude/skills/riff-prototypes/SKILL.md +637 -0
  88. package/dist/lite/.claude/skills/secrets-bootstrap/SKILL.md +209 -0
  89. package/dist/lite/.claude/skills/skill/SKILL.md +304 -0
  90. package/dist/lite/.claude/skills/smoke-test/SKILL.md +100 -0
  91. package/dist/lite/.claude/skills/state/SKILL.md +204 -0
  92. package/dist/lite/.claude/skills/substrate-check/SKILL.md +218 -0
  93. package/dist/lite/.claude/skills/synthetic-user/SKILL.md +381 -0
  94. package/dist/lite/.claude/skills/task-scenarios/SKILL.md +105 -0
  95. package/dist/lite/.claude/skills/tier-dependency-audit/SKILL.md +139 -0
  96. package/dist/lite/.claude/skills/ux-migration/SKILL.md +424 -0
  97. package/dist/lite/.claude/skills/value-prop-canvas/SKILL.md +297 -0
  98. package/dist/lite/README.md +5 -1
  99. package/dist/lite/gitignore +6 -0
  100. package/dist/lite/lib/bassclef-dir-resolver.sh +85 -0
  101. package/dist/lite/lib/clone-failure-classifier.sh +59 -0
  102. package/dist/lite/lib/fixture-builder.sh +190 -0
  103. package/dist/lite/lib/fresh-install-check.sh +49 -0
  104. package/dist/lite/lib/hook-heartbeat.sh +0 -1
  105. package/dist/lite/lib/mechanism-fidelity.sh +569 -0
  106. package/dist/lite/lib/npm-version-check.sh +112 -0
  107. package/dist/lite/lib/preview-state.sh +229 -0
  108. package/dist/lite/lib/session-rescue.sh +0 -1
  109. package/dist/lite/scripts/generate-lite-manifest.sh +145 -4
  110. package/dist/lite/scripts/lite-manifest-drift-check.sh +5 -1
  111. package/dist/lite/standards/architect-review-discipline.md +222 -0
  112. package/dist/lite/standards/bassclef-platform.md +249 -0
  113. package/dist/lite/standards/bassclef-test-repos.md +97 -0
  114. package/dist/lite/standards/bassclef-wiring-manifest.json +25 -1
  115. package/dist/lite/standards/cold-adopter-harness.md +205 -0
  116. package/dist/lite/standards/data-management.md +135 -0
  117. package/dist/lite/standards/frontend-stack/nextjs-prisma.md +124 -0
  118. package/dist/lite/standards/lite-manifest-schema-changes.md +27 -0
  119. package/dist/lite/standards/lite-manifest.json +1456 -14
  120. package/dist/lite/standards/mechanism-fidelity.md +205 -0
  121. package/dist/lite/standards/operator-private-discipline.md +200 -0
  122. package/dist/lite/standards/operator-to-public-flow.md +195 -0
  123. package/dist/lite/standards/prototype-gallery.md +251 -0
  124. package/dist/lite/standards/pseudonym-key-schema.md +109 -0
  125. package/dist/lite/standards/sibling-validation-checklist.md +181 -0
  126. package/dist/lite/standards/slack-notifications.md +161 -0
  127. package/dist/lite/standards/synthetic-user-testing.md +173 -0
  128. package/dist/lite/standards/vendor-bindings.md +165 -0
  129. package/dist/lite/standards/vendor-plugins/frontend-design.md +66 -0
  130. package/dist/lite/standards/vpc-fit-validation.md +167 -0
  131. package/dist/lite/templates/gallery-yml.md +113 -0
  132. package/dist/lite/templates/product-canvas.md +169 -0
  133. package/dist/lite/templates/value-prop-canvas.md +180 -0
  134. package/package.json +3 -3
  135. /package/dist/lite/{whereami.md → docs/whereami.md} +0 -0
@@ -0,0 +1,222 @@
1
+ ---
2
+ tier: lite
3
+ name: rfc
4
+ description: "Run an outside-luminary council review on a proposed design. Picks 3-5 luminaries not in the authoring set. Applies each lens to risks and decisions. Writes findings with severity and disposition options. Catches what the authoring lenses miss."
5
+ problem: "Design proposals get one lens set from the authoring session. Blind spots ship into HIGH-severity findings later."
6
+ value: "Outside-luminary council review on a proposed design. Picks 3-5 luminaries not in the authoring set."
7
+ inputs: [A goal doc path, Optional --lenses override for manual pick]
8
+ outputs: [RFC doc at docs/rfcs/, Severity-tagged findings per lens, Disposition options]
9
+ user_invocable: true
10
+ disable_model_invocation: false
11
+ composes_with: [architect-review, pre-mortem, luminary, pick-luminaries, state-a-problem, kiss, value-prop]
12
+ depends_on: [luminary]
13
+ ---
14
+ <!-- andon-allow: operator-private -->
15
+
16
+ # /rfc — outside-luminary council review
17
+
18
+ ## What you get
19
+
20
+ An RFC document. It carries findings from luminaries the authoring session did not use. Each finding gets a severity. Each severity gets a disposition. You pick which findings cure inline. You pick which defer.
21
+
22
+ The output is `docs/rfcs/RFC-NNNN-<slug>.md`. Field shape follows RFC-0001 from bassclef-cli scope-b1. See `standards/rfc-shape.md` for the field list.
23
+
24
+ ## When to use it
25
+
26
+ Use `/rfc` when all of these hold:
27
+
28
+ - A goal doc or ADR has been drafted with 2-6 authoring luminaries
29
+ - `/architect-review` and `/pre-mortem` have already run against it
30
+ - The scope is consequential enough that a HIGH finding at Step 7 signoff would cost 100+ turns to cure
31
+ - The authoring session did not pick lenses outside its own lens set
32
+
33
+ Skip `/rfc` when the scope is trivial. A typo cure does not owe a council.
34
+
35
+ ## When NOT to use
36
+
37
+ Do not use `/rfc` as a substitute for `/architect-review` or `/pre-mortem`. Those two must run first. They ground the RFC in real content.
38
+ INSTEAD: run `/architect-review` first. Then run `/pre-mortem`. Then dispatch `/rfc`.
39
+
40
+ Do not use `/rfc` on scope where the authoring set already crosses 6+ luminaries. The outside-set constraint is hard to honor without repeating what already got said.
41
+ INSTEAD: for wide authoring sets, run a second `/pre-mortem` with a new lens instead of `/rfc`. The new lens gets fresh eyes without the outside-set constraint.
42
+
43
+ Do not use `/rfc` to fix findings. `/rfc` surfaces findings; the operator picks the cure.
44
+ INSTEAD: dispatch `/build` or open a follow-on goal to ship the cure.
45
+
46
+ ## FAQ
47
+
48
+ ### What is the outside-set constraint?
49
+
50
+ The RFC picks luminaries who are NOT in the goal doc's `authoring_luminaries` list. This prevents lens echo chamber. The same lenses that shaped the design cannot review it.
51
+
52
+ Per bassclef-cli#38 — RFC-0001 caught 6 HIGH findings. All 6 came from lenses outside the authoring set. Without the RFC pass, they would have hit at Step 7 signoff.
53
+
54
+ The 6 HIGH findings came from `linus-torvalds` + `hyrum-wright` + `frederick-brooks` + `saltzer-schroeder` + `don-norman`. None of these were in scope-b1's authoring set.
55
+
56
+ ### Which luminaries make good outside-set picks?
57
+
58
+ Pick lenses that reveal blind spots the design lenses cannot see. Five standing candidates per RFC-0001 evidence:
59
+
60
+ <!-- FKGL-EXEMPT: table row shape carries lens + role paired -->
61
+
62
+ | Lens | What it catches |
63
+ |---|---|
64
+ | `linus-torvalds` | Adopter compatibility (keep userspace working); silent adopter migration |
65
+ | `hyrum-wright` | Observable behavior binding; schema-as-API surface |
66
+ | `frederick-brooks` | Second-system effect; scope creep beyond the goal |
67
+ | `saltzer-schroeder` | Defense in depth; least privilege; security envelope |
68
+ | `don-norman` | User model; progress signals; error messages; adopter mental model |
69
+
70
+ <!-- /FKGL-EXEMPT -->
71
+
72
+ Other strong picks — `alan-cooper` (persona review), `martin-fowler` (refactoring debt), `michael-nygard` (stability), `clayton-christensen` (JTBD fit).
73
+
74
+ ### What does a severity look like?
75
+
76
+ Three levels per RFC-0001:
77
+
78
+ - **HIGH** — would break an adopter or cost 100+ turns to cure at Step 7. Cure inline or defer with a specific plan.
79
+ - **MEDIUM** — would cost 20-50 turns to cure post-ship. Cure inline if scope allows.
80
+ - **LOW** — nice-to-have. Advisory only.
81
+
82
+ ### What are disposition options?
83
+
84
+ Three shapes per RFC-0001:
85
+
86
+ - **Revised A** — accept scope. Cure HIGH findings inline.
87
+ - **Revised B** — trim scope. Move some steps to a follow-on plan doc.
88
+ - **Revised C** — split scope. Ship the safe part now. Defer the risky part.
89
+
90
+ The operator picks. Deferrals land in a follow-on plan doc.
91
+ INSTEAD of silent drops: the follow-on doc is the landing pad. Every deferral gets a home.
92
+
93
+ ### How does /rfc compose with /architect-review + /pre-mortem?
94
+
95
+ <!-- FKGL-EXEMPT: workflow table shape -->
96
+
97
+ | Skill | When it fires | What it produces |
98
+ |---|---|---|
99
+ | `/architect-review` | After goal doc draft; before RFC | audit findings against ADRs + tenets |
100
+ | `/pre-mortem` | After goal doc draft; before RFC | risk ledger with lenses from authoring set |
101
+ | `/rfc` | After both above; before Step 4 build | RFC doc with outside-set findings + disposition |
102
+ | `/build` | After RFC disposition | ships the revised scope |
103
+
104
+ <!-- /FKGL-EXEMPT -->
105
+
106
+ ### What is the estimated cost?
107
+
108
+ Per bassclef-cli#38 evidence — RFC-0001 took ~50 turns to run. Ratio ~1:12 turn savings vs curing HIGH findings at Step 7. The ratio compounds per consequential goal.
109
+
110
+ ### How does /rfc know which luminaries to pick?
111
+
112
+ Two modes:
113
+
114
+ - **auto** (default) — dispatches `/pick-luminaries` with the intent paragraph from the goal doc. Filters out the authoring set. Picks the top 3-5 outside-lens roles (Linus + Hyrum + Brooks + Saltzer-Schroeder + Norman + Cooper). Falls back to the standing 5 when `pick-luminaries` is unavailable at the adopter tier.
115
+ - **manual** — operator names the 3-5 luminaries at dispatch (`/rfc --lenses linus,hyrum,cooper`).
116
+
117
+ ## Details below the fold
118
+
119
+ ### Procedure — full
120
+
121
+ **Step 0 — Pre-flight.** Verify:
122
+
123
+ - Goal doc exists at `docs/iteration-bets/<slug>.md`
124
+ - Goal doc has `authoring_luminaries` frontmatter with 2-6 named lenses
125
+ - `/architect-review` output exists (marker or doc; see `.claude/rules/architect-review-discipline.md`)
126
+ - `/pre-mortem` risk ledger exists at `docs/risk-ledgers/<slug>.md`
127
+
128
+ If any missing, BLOCK with the missing artifact named. Silence is not deferral.
129
+
130
+ **Step 1 — Read the design content.** Read every artifact the goal doc references. Compose `/state-a-problem` on any finding this pass surfaces.
131
+
132
+ **Step 2 — Pick the outside-set council.** Per FAQ. Default auto mode. Cite each pick's lens role in one line.
133
+
134
+ **Step 3 — Apply each lens.** For each picked luminary:
135
+
136
+ - Read `.claude/luminaries/<slug>.md`
137
+ - Walk each named risk in the ledger + each design decision in the goal doc
138
+ - Write findings with severity (HIGH / MEDIUM / LOW) tied to concrete artifacts
139
+
140
+ Every finding cites a file path, a decision, or a risk row.
141
+ INSTEAD of abstract concerns: cite the artifact per finding. Vague concerns get dropped or rewritten with a citation.
142
+
143
+ **Step 4 — Group findings + propose dispositions.** Group by severity. Propose 3-4 disposition options (Revised A / B / C — accept scope / trim scope / split scope). Cite which HIGH findings each disposition addresses.
144
+
145
+ **Step 5 — Surface to operator.** Print the finding table + disposition options. Wait for pick.
146
+
147
+ **Step 6 — Write the RFC doc.** Compose `docs/rfcs/RFC-NNNN-<slug>.md` per `standards/rfc-shape.md`. Fields:
148
+
149
+ - Frontmatter — tier, goal, council, disposition, references
150
+ - Council section — one row per luminary + lens role
151
+ - Findings section — grouped by severity, per-finding artifact citation
152
+ - Disposition section — chosen shape + rationale + deferrals
153
+ - Follow-on plan section — links to `docs/next-longrun-prep-<date>-<slug>.md` if scope trimmed
154
+
155
+ **Step 7 — Update the risk ledger + goal doc.** Amend the ledger with the RFC absorption. Add an `rfc_signoff` row to the goal doc frontmatter. Update any ADR being amended.
156
+
157
+ **Step 8 — Land deferrals.** If scope trimmed, write the follow-on plan doc at `docs/next-longrun-prep-<date>-<slug>.md` naming the deferred steps + reason.
158
+
159
+ **Step 9 — Report.** Surface RFC path + disposition + deferrals. Return control.
160
+
161
+ ### Modes
162
+
163
+ - Default — auto pick + full 9-step procedure
164
+ - `/rfc --lenses linus,hyrum,cooper` — manual lens picks
165
+ - `/rfc --dry-run` — Steps 0-3 only. Surface findings without writing the RFC doc.
166
+ - `/rfc --council-only` — Steps 0-2 only. Propose the council. Wait for operator confirm before applying lenses.
167
+
168
+ ### Override paths
169
+
170
+ - `SKIP_RFC_PREFLIGHT=1` — bypass Step 0 checks. Use only when a prior session skipped `/architect-review` or `/pre-mortem` on purpose. The reason must live in the goal doc.
171
+ - `RFC_LENS_MIN=3` — override the 3-lens minimum.
172
+ INSTEAD: 3-5 lenses is the calibrated range per RFC-0001. Dropping below 3 loses lens diversity.
173
+ - `RFC_LENS_MAX=8` — override the 5-lens ceiling. Wider councils cost more turns.
174
+ INSTEAD: 5 is the calibrated ceiling per RFC-0001. Add more only when scope crosses multiple bounded contexts.
175
+
176
+ INSTEAD of habitual overrides: run the 9-step procedure. The turn cost is bounded per RFC-0001 evidence (~50t). The Step-7-signoff cost is not.
177
+
178
+ ### Reads
179
+
180
+ - `docs/iteration-bets/<slug>.md` — goal doc
181
+ - `docs/risk-ledgers/<slug>.md` — pre-mortem risk ledger
182
+ - `architecture/decisions/ADR-*.md` — any ADR being amended
183
+ - `docs/decompositions/<slug>-domain.md` — decomposition if present
184
+ - `.claude/luminaries/<slug>.md` — one read per picked luminary
185
+ - `standards/rfc-shape.md` — RFC field list
186
+
187
+ ### Writes
188
+
189
+ - `docs/rfcs/RFC-NNNN-<slug>.md` — the output
190
+ - `docs/risk-ledgers/<slug>.md` — amended with RFC absorption
191
+ - `docs/iteration-bets/<slug>.md` — `rfc_signoff` row added to frontmatter
192
+ - `docs/next-longrun-prep-<date>-<slug>.md` — deferrals if scope trimmed
193
+ - `state/markers/rfc/<slug>.marker` — audit trail
194
+
195
+ ### Grace window on old vocabulary
196
+
197
+ Old vocabulary — `bet`, `WU`, `appetite`, `chronicle` — still works through 2026-10-31 per ADR-031 and `.claude/rules/we-dont-break-adopters.md`. New RFC docs use `goal`, `step`, `time budget`, `session log`.
198
+
199
+ ## Refs
200
+
201
+ - bassclef-cli#38 — parent ticket (evolution ask from adopter)
202
+ - RFC-0001 — the exemplar output at `~/src/sunj-labs/bassclef-cli/docs/rfcs/RFC-0001-npm-lite-substrate-bundling-review.md`
203
+ - `.claude/rules/architect-review-discipline.md` — precondition rule
204
+ - `.claude/skills/architect-review/SKILL.md` — precondition skill
205
+ - `.claude/skills/pre-mortem/SKILL.md` — precondition skill
206
+ - `.claude/skills/pick-luminaries/SKILL.md` — auto-mode dependency
207
+ - `standards/rfc-shape.md` — field list (companion standard to ship with this skill)
208
+ - `@luminary linus-torvalds` — standing outside-lens candidate
209
+ - `@luminary hyrum-wright` — standing outside-lens candidate
210
+ - `@luminary frederick-brooks` — standing outside-lens candidate
211
+ - `@luminary jerome-saltzer-and-michael-schroeder` — standing outside-lens candidate
212
+ - `@luminary don-norman` — standing outside-lens candidate
213
+
214
+ ## Anchor luminaries
215
+
216
+ - `@luminary daniel-kahneman` — outside-view discipline. System 2 slows down when the inside-view lens has run.
217
+ - `@luminary gary-klein` — pre-mortem precedent. `/rfc` extends pre-mortem with an outside-set lens council.
218
+ - `@luminary frederick-brooks` — conceptual integrity via multiple reviewers per "The Mythical Man-Month" §"Aristocracy and Democracy".
219
+
220
+ ## Retirement
221
+
222
+ Retires if outside-set council review becomes noise (operator dispatches fewer than 1 per month across sessions). Also retires if authoring lens sets grow past 6 luminaries by default. Wider default sets make the outside-set constraint impractical.