@mindrian_os/install 1.13.0-beta.17 → 1.13.0-beta.21

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 (199) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.mcp.json +6 -1
  3. package/CHANGELOG.md +31 -0
  4. package/README.md +51 -56
  5. package/bin/mindrian-brain-mcp-client.cjs +152 -0
  6. package/commands/act.md +1 -0
  7. package/commands/admin.md +1 -0
  8. package/commands/analyze-needs.md +2 -0
  9. package/commands/analyze-systems.md +2 -0
  10. package/commands/analyze-timing.md +2 -0
  11. package/commands/auto-explore.md +2 -0
  12. package/commands/beautiful-question.md +2 -0
  13. package/commands/brain-derive.md +2 -0
  14. package/commands/build-knowledge.md +2 -0
  15. package/commands/build-thesis.md +2 -0
  16. package/commands/causal.md +2 -0
  17. package/commands/challenge-assumptions.md +2 -0
  18. package/commands/compare-ventures.md +2 -0
  19. package/commands/dashboard.md +2 -1
  20. package/commands/deep-grade.md +2 -0
  21. package/commands/diagnose.md +21 -1
  22. package/commands/diagnostics.md +14 -3
  23. package/commands/doctor.md +6 -2
  24. package/commands/dogfood-flush.md +92 -0
  25. package/commands/dominant-designs.md +2 -0
  26. package/commands/explain-decision.md +2 -0
  27. package/commands/explore-domains.md +2 -0
  28. package/commands/explore-futures.md +2 -0
  29. package/commands/explore-trends.md +2 -0
  30. package/commands/export.md +1 -0
  31. package/commands/feynman-timeline-refresh.md +2 -0
  32. package/commands/file-meeting.md +2 -0
  33. package/commands/find-analogies.md +1 -0
  34. package/commands/find-bottlenecks.md +2 -0
  35. package/commands/find-connections.md +2 -0
  36. package/commands/funding.md +1 -0
  37. package/commands/grade.md +2 -0
  38. package/commands/graph.md +1 -0
  39. package/commands/hat-briefing.md +1 -0
  40. package/commands/heal.md +22 -170
  41. package/commands/help.md +54 -334
  42. package/commands/hmi-status.md +23 -144
  43. package/commands/jtbd.md +1 -0
  44. package/commands/leadership.md +2 -0
  45. package/commands/lean-canvas.md +2 -0
  46. package/commands/macro-trends.md +2 -0
  47. package/commands/map-unknowns.md +2 -0
  48. package/commands/memory.md +1 -0
  49. package/commands/models.md +1 -0
  50. package/commands/mos-reason.md +2 -0
  51. package/commands/mos.md +139 -0
  52. package/commands/mullins.md +2 -0
  53. package/commands/mva-brief.md +2 -0
  54. package/commands/mva-option.md +2 -0
  55. package/commands/new-project.md +2 -0
  56. package/commands/onboard.md +20 -7
  57. package/commands/operator.md +1 -0
  58. package/commands/opportunities.md +1 -0
  59. package/commands/organize.md +22 -469
  60. package/commands/persona.md +1 -0
  61. package/commands/pipeline.md +2 -0
  62. package/commands/present.md +1 -0
  63. package/commands/publish.md +2 -0
  64. package/commands/query.md +24 -102
  65. package/commands/radar.md +2 -0
  66. package/commands/reanalyze.md +1 -0
  67. package/commands/research.md +2 -0
  68. package/commands/room.md +2 -0
  69. package/commands/rooms.md +1 -0
  70. package/commands/root-cause.md +2 -0
  71. package/commands/rs-experts.md +1 -0
  72. package/commands/rs-explain.md +1 -0
  73. package/commands/rs-fetch.md +1 -0
  74. package/commands/rs-thesis.md +1 -0
  75. package/commands/scenario-plan.md +2 -0
  76. package/commands/scheduled-tasks.md +1 -0
  77. package/commands/score-innovation.md +2 -0
  78. package/commands/scout.md +1 -0
  79. package/commands/setup.md +2 -0
  80. package/commands/snapshot.md +2 -0
  81. package/commands/speakers.md +1 -0
  82. package/commands/splash.md +5 -2
  83. package/commands/status.md +1 -0
  84. package/commands/structure-argument.md +2 -0
  85. package/commands/suggest-next.md +2 -0
  86. package/commands/systems-thinking.md +2 -0
  87. package/commands/think-hats.md +2 -0
  88. package/commands/update.md +2 -0
  89. package/commands/user-needs.md +2 -0
  90. package/commands/validate.md +2 -0
  91. package/commands/value-proposition.md +2 -0
  92. package/commands/vault.md +2 -0
  93. package/commands/visualize.md +24 -29
  94. package/commands/whitespace.md +2 -1
  95. package/commands/wiki.md +1 -0
  96. package/hooks/hooks.json +22 -88
  97. package/lib/agents/auto-explore-agent.cjs +82 -0
  98. package/lib/core/breakthrough/canary.cjs +134 -0
  99. package/lib/core/breakthrough/canary.test.cjs +136 -0
  100. package/lib/core/breakthrough/detectors.cjs +359 -0
  101. package/lib/core/breakthrough/detectors.test.cjs +333 -0
  102. package/lib/core/breakthrough/ethics-fence.cjs +127 -0
  103. package/lib/core/breakthrough/ethics-fence.test.cjs +178 -0
  104. package/lib/core/breakthrough/resurfacing.cjs +150 -0
  105. package/lib/core/breakthrough/resurfacing.test.cjs +233 -0
  106. package/lib/core/breakthrough/review-queue.cjs +154 -0
  107. package/lib/core/breakthrough/review-queue.test.cjs +160 -0
  108. package/lib/core/breakthrough/scanner-d17-d18.test.cjs +229 -0
  109. package/lib/core/breakthrough/scanner.cjs +426 -0
  110. package/lib/core/breakthrough/scanner.test.cjs +267 -0
  111. package/lib/core/breakthrough/schema.cjs +164 -0
  112. package/lib/core/breakthrough/schema.test.cjs +256 -0
  113. package/lib/core/breakthrough/scoring.cjs +293 -0
  114. package/lib/core/breakthrough/scoring.test.cjs +423 -0
  115. package/lib/core/breakthrough/verb-dispatch.cjs +221 -0
  116. package/lib/core/breakthrough/verb-dispatch.test.cjs +185 -0
  117. package/lib/core/breakthrough/voice-scaffold.cjs +247 -0
  118. package/lib/core/breakthrough/voice-scaffold.test.cjs +251 -0
  119. package/lib/core/directive-envelope.cjs +175 -0
  120. package/lib/core/directive-envelope.test.cjs +225 -0
  121. package/lib/core/doctor/class-m-brain-smoke.cjs +278 -0
  122. package/lib/core/doctor/class-m-brain-smoke.test.cjs +310 -0
  123. package/lib/core/first-touch-version-stamper.cjs +113 -0
  124. package/lib/core/larry-thinness-acknowledgment.cjs +64 -0
  125. package/lib/core/larry-thinness-acknowledgment.test.cjs +97 -0
  126. package/lib/core/llm-name-suggester.cjs +194 -0
  127. package/lib/core/llm-name-suggester.test.cjs +132 -0
  128. package/lib/core/mcp-profiles.cjs +1 -1
  129. package/lib/core/migration-snapshot.cjs +172 -0
  130. package/lib/core/migration-snapshot.test.cjs +174 -0
  131. package/lib/core/mindrian-brain-shim.test.cjs +214 -0
  132. package/lib/core/mva-orchestrator.cjs +41 -0
  133. package/lib/core/mva-telemetry.cjs +31 -143
  134. package/lib/core/navigation/edges.cjs +35 -0
  135. package/lib/core/navigation/memory-events.cjs +126 -0
  136. package/lib/core/room-auto-create.cjs +318 -0
  137. package/lib/core/room-auto-create.test.cjs +198 -0
  138. package/lib/core/room-discard-cascade.cjs +225 -0
  139. package/lib/core/room-discard-cascade.test.cjs +135 -0
  140. package/lib/core/room-name-validator.cjs +132 -0
  141. package/lib/core/room-name-validator.test.cjs +156 -0
  142. package/lib/core/room-naming-selector.cjs +357 -0
  143. package/lib/core/room-naming-selector.test.cjs +277 -0
  144. package/lib/core/room-receipt-emit.cjs +63 -0
  145. package/lib/core/room-skeleton-scaffold.cjs +315 -0
  146. package/lib/core/room-skeleton-scaffold.test.cjs +291 -0
  147. package/lib/core/rs-nl-to-query.cjs +1 -1
  148. package/lib/core/stale-copy-scanner.cjs +190 -0
  149. package/lib/core/state-aware-router.cjs +78 -0
  150. package/lib/core/telemetry/schema.cjs +168 -0
  151. package/lib/core/telemetry/schema.test.cjs +124 -0
  152. package/lib/core/telemetry/validator.cjs +200 -0
  153. package/lib/core/telemetry/validator.test.cjs +188 -0
  154. package/lib/core/telemetry/writer.cjs +141 -0
  155. package/lib/core/telemetry/writer.test.cjs +331 -0
  156. package/lib/core/terminal-capability.cjs +88 -0
  157. package/lib/core/tier0-messaging.cjs +109 -0
  158. package/lib/core/tier0-messaging.test.cjs +218 -0
  159. package/lib/core/venture-shape-nudge.cjs +163 -0
  160. package/lib/core/venture-shape-nudge.test.cjs +161 -0
  161. package/lib/core/visual-ops.cjs +70 -2
  162. package/lib/hmi/selector-dispatcher.cjs +90 -1
  163. package/lib/hmi/shape-f7-breakthrough-renderer.cjs +222 -0
  164. package/lib/hmi/shape-f7-breakthrough-renderer.test.cjs +233 -0
  165. package/lib/memory/body-shape-coverage.test.cjs +268 -0
  166. package/lib/memory/brain-derivation-graceful-degradation.test.cjs +2 -2
  167. package/lib/memory/doctor-deprecation-surface.test.cjs +185 -0
  168. package/lib/memory/first-touch-version.test.cjs +198 -0
  169. package/lib/memory/help-coverage.test.cjs +108 -0
  170. package/lib/memory/help-renderer.test.cjs +145 -0
  171. package/lib/memory/mos-status-renderer.test.cjs +2 -2
  172. package/lib/memory/navigation-engine-core.test.cjs +1 -1
  173. package/lib/memory/palette-consistency.test.cjs +127 -0
  174. package/lib/memory/pending-tension-store.cjs +80 -0
  175. package/lib/memory/render-v2-disposition.test.cjs +199 -0
  176. package/lib/memory/run-feynman-tests.cjs +223 -0
  177. package/lib/memory/sessionstart-coordinator.test.cjs +446 -0
  178. package/lib/memory/skill-vs-code-drift.test.cjs +257 -0
  179. package/lib/memory/soft-alias.test.cjs +144 -0
  180. package/lib/memory/stale-copy-scanner.test.cjs +291 -0
  181. package/lib/memory/state-aware-router.test.cjs +90 -0
  182. package/lib/memory/statusline-two-row.test.cjs +338 -0
  183. package/lib/memory/terminal-capability.test.cjs +155 -0
  184. package/lib/render/ROOM.md +74 -22
  185. package/lib/sessionstart/budget-compressor.cjs +130 -0
  186. package/lib/sessionstart/contributor-interface.cjs +134 -0
  187. package/lib/sessionstart/contributor-isolator.cjs +128 -0
  188. package/lib/sessionstart/precedence-ladder.cjs +47 -0
  189. package/lib/statusline/governing-thought-truncator.cjs +45 -0
  190. package/lib/statusline/two-row-renderer.cjs +186 -0
  191. package/lib/statusline/version-resolver.cjs +81 -0
  192. package/package.json +1 -1
  193. package/references/visual/ROOM.md +55 -0
  194. package/references/visual/palette.json +54 -0
  195. package/skills/larry-personality/SKILL.md +34 -0
  196. package/skills/ui-system/SKILL.md +109 -1
  197. package/skills/ui-system/rules/dual-palette.md +156 -0
  198. package/skills/ui-system/rules/glyph-disambiguation.md +171 -0
  199. package/skills/ui-system/rules/shape-f-zero-and-six.md +169 -0
@@ -0,0 +1,171 @@
1
+ ---
2
+ name: glyph-disambiguation
3
+ description: >
4
+ ODD 4 resolution (Phase 121.5, 2026-05-16). Documents the 🎯 glyph overload
5
+ (three surfaces, three meanings) and the "JTBD" word collision (Phase 37
6
+ bash nudges vs Phase 100 typed engine) as explicit position-anchored
7
+ exceptions in SKILL.md §3 -- mirroring the existing no-emoji + statusline
8
+ carve-out pattern. The lower-risk path: document the seam, not move it.
9
+ Renumbering / renaming deferred to v1.14.0 cleanup.
10
+ ---
11
+
12
+ # Glyph + Word Disambiguation Rule (ODD 4 Resolution)
13
+
14
+ Phase 121.5 (Terminal Coherence Capstone) found two vocabulary collisions in
15
+ v1.13.0 that needed resolution before the final release gate. The lower-risk
16
+ path chosen 2026-05-16: DOCUMENT both as explicit position-anchored exceptions
17
+ in `skills/ui-system/SKILL.md` §3, mirroring the existing no-emoji +
18
+ statusline carve-out pattern. The pattern is: a global rule with a precisely-
19
+ named exception, position-anchored.
20
+
21
+ Renumbering the glyphs and renaming "JTBD" the word were considered and
22
+ deferred to v1.14.0. Rationale:
23
+
24
+ 1. Phase 121.5 is consolidation, not expansion (Canon Part 7). Renaming "JTBD"
25
+ the word ripples through 24+ files, Brain context packets, telemetry
26
+ event types. Cost-benefit too high for the closing milestone.
27
+ 2. The collisions are real but CONTEXT-DISAMBIGUATING: each occurrence is
28
+ resolved by surface position. 🎯 in statusline Row 2 next to "JTBD" means
29
+ "what job"; 🎯 in /mos:jtbd output means "broadcast"; 🎯 in
30
+ EXPLORATION_LABELS means problem-definition. Each surface owns its
31
+ position-anchored meaning.
32
+ 3. Documenting the overload + carve-out is the SAME shape of exception the
33
+ existing emoji carve-out (no-emoji rule with statusline exception) already
34
+ does. We follow the same pattern.
35
+
36
+ Future v1.14.0 may renumber the glyphs OR rename "JTBD". For v1.13.0 final we
37
+ mark the seam, not move it.
38
+
39
+ ---
40
+
41
+ ## 1. The 🎯 glyph overload (three surfaces, three meanings)
42
+
43
+ The 🎯 emoji is used on three distinct surfaces with three distinct meanings.
44
+ Each surface owns its position-anchored meaning; the three meanings never
45
+ collide on the same surface at the same time.
46
+
47
+ | Surface | 🎯 meaning | Source path |
48
+ |--------------------------------------------------|-----------------------------------------------------------------------------------|----------------------------------------------|
49
+ | Statusline Row 2 (the JTBD label prefix) | "What job are you in right now." | `scripts/context-monitor` |
50
+ | `/mos:jtbd` command output + JTBD broadcast | "This is the job we're proposing." (recommendation prefix) | `commands/jtbd.md` + JTBD nudge rendering |
51
+ | `EXPLORATION_LABELS` problem-definition emoji | "Where the wicked navigator starts." (stage emoji for problem-definition phase) | `lib/core/visual-ops.cjs` EXPLORATION_LABELS |
52
+
53
+ **Reader disambiguation rule.** Ask: WHERE is the 🎯?
54
+
55
+ - Statusline row 2? -> active JTBD context (what job).
56
+ - Command output / broadcast banner? -> JTBD recommendation (which job).
57
+ - EXPLORATION_LABELS render path (visual ops, stage-labeled output)? ->
58
+ problem-definition stage emoji.
59
+
60
+ The three surfaces are physically separate render paths; they never appear
61
+ together in the same line, the same paragraph, or the same selector block.
62
+
63
+ ---
64
+
65
+ ## 2. The "JTBD" word collision (two systems)
66
+
67
+ The acronym "JTBD" (Jobs-To-Be-Done) names two unrelated systems in the
68
+ plugin:
69
+
70
+ | System | Status | Source path |
71
+ |---------------------------------|----------------------------------------------|-------------------------------------------------------------------|
72
+ | Phase 37 nudge templates | Internal prompt-engineering layer (legacy) | `lib/hmi/build-jtbd-nudges` (bash, prompt-engineering style) |
73
+ | Phase 100 typed engine | AUTHORITATIVE 13-JTBD taxonomy + verb engine | `lib/hmi/jtbd-taxonomy.json` (cues / methodology hooks / verbs) |
74
+
75
+ **Resolution rule.** When SKILL.md, the Mindrian canon, or any user-facing
76
+ surface says "JTBD" without qualification, it means the **Phase 100 typed
77
+ engine** (`lib/hmi/jtbd-taxonomy.json` -- the 13-JTBD taxonomy with
78
+ methodology hooks, next_move_verbs, and completion patterns).
79
+
80
+ The Phase 37 nudges are an internal prompt-engineering layer beneath the
81
+ engine. User-facing surfaces never name them directly. If a code path needs to
82
+ distinguish, the convention is:
83
+
84
+ - "JTBD" (unqualified) -> Phase 100 engine.
85
+ - "JTBD nudge template" / "build-jtbd-nudges" -> Phase 37 layer (internal
86
+ reference only).
87
+
88
+ ---
89
+
90
+ ## 3. The carve-out pattern
91
+
92
+ This rule mirrors the structure of the existing emoji carve-out in
93
+ `skills/ui-system/SKILL.md` §3:
94
+
95
+ > Global rule: NO EMOJI. EVER.
96
+ > Carve-out: `scripts/context-monitor` statusline is excepted (position-
97
+ > anchored: the host terminal renders it as a passive signal surface, not a
98
+ > MindrianOS command output body).
99
+
100
+ ODD 4 follows the same shape:
101
+
102
+ > Global rule: One glyph -> one meaning. One word -> one system.
103
+ > Carve-out: 🎯 has three position-anchored meanings (statusline row 2 / `/mos:jtbd`
104
+ > output / EXPLORATION_LABELS). "JTBD" has two position-anchored systems
105
+ > (Phase 100 engine = authoritative; Phase 37 nudges = internal-only).
106
+
107
+ The pattern is: precision in the exception, anchored by surface position.
108
+ Future cleanup may move the seam; until then, the surfaces own the meaning.
109
+
110
+ ---
111
+
112
+ ## 4. The v1.14.0 cleanup proposal
113
+
114
+ A future v1.14.0 cleanup phase MAY:
115
+
116
+ - Renumber the 🎯 glyph by SURFACE: e.g. statusline uses 🎯, broadcast uses
117
+ `🔆` or a new 12-glyph CLI vocabulary entry, EXPLORATION_LABELS uses a
118
+ distinct stage emoji.
119
+ - Rename one of the two "JTBD" systems: e.g. Phase 37 nudges become
120
+ "JTBD-nudges-v0" or "preinference-nudges"; Phase 100 engine retains "JTBD"
121
+ unqualified.
122
+
123
+ Both are renaming exercises with ripple costs: ~24 files for "JTBD" rename,
124
+ 3+ render paths for 🎯. Neither is in scope for v1.13.0. Track in
125
+ `docs/CANON-PHASE-MAP.md` v1.14.0 backlog under Canon Part 7 (Reuse Before
126
+ Build) -- the bar for renumbering is "this REPLACES / reconciles N existing
127
+ things," not "this is the N+1th."
128
+
129
+ ---
130
+
131
+ ## 5. Verification
132
+
133
+ This rule passes when:
134
+
135
+ 1. SKILL.md §3 contains the "ODD 4 resolution" paragraph documenting both
136
+ collisions (grep `ODD 4 resolution` returns >= 1 hit).
137
+ 2. SKILL.md §3 still preserves the existing no-emoji + statusline carve-out
138
+ (the ODD 4 paragraph is APPENDED, not replacing).
139
+ 3. SKILL.md §3 cross-references this rule file
140
+ (`skills/ui-system/rules/glyph-disambiguation.md`).
141
+ 4. No new glyphs were added to the 12-glyph CLI vocabulary table in SKILL.md
142
+ §3 (Canon Part 7 invariant: ZERO new glyphs in 121.5).
143
+ 5. No code paths were renamed (Canon Part 7 invariant: ZERO concept renames
144
+ in 121.5).
145
+
146
+ ---
147
+
148
+ ## 6. Canon Refs
149
+
150
+ - **Part 3 (UI Ruling System enforcement)** -- the carve-out is the
151
+ documented exception in the ruling system's vocabulary contract.
152
+ - **Part 7 (Reuse Before Build)** -- consolidation only. ZERO new commands,
153
+ glyphs, renames.
154
+ - **Part 8 (Graph Boundary)** -- no Brain query depends on the disambiguation;
155
+ glyph + word use is LOCAL render-path concern.
156
+ - **Part 10 (Conversation as Product)** -- the terminal must coherently
157
+ express its vocabulary. ODD 4 resolution closes a coherence gap before the
158
+ v1.13.0 final gate.
159
+
160
+ ---
161
+
162
+ ## 7. See Also
163
+
164
+ - `skills/ui-system/SKILL.md` §3 -- the carve-out lives there in canonical
165
+ form; this rule file is the expansion.
166
+ - `.planning/phases/121.5-terminal-coherence-capstone/121.5-CONTEXT.md` --
167
+ ODD 4 (item 8 + "Open Design Decisions" section).
168
+ - `lib/hmi/jtbd-taxonomy.json` -- the authoritative Phase 100 JTBD system.
169
+ - `lib/hmi/build-jtbd-nudges` -- the Phase 37 layer (internal only).
170
+ - `scripts/context-monitor` -- statusline 🎯 (active JTBD prefix).
171
+ - `lib/core/visual-ops.cjs` -- EXPLORATION_LABELS 🎯 (problem-definition).
@@ -0,0 +1,169 @@
1
+ ---
2
+ name: shape-f-zero-and-six
3
+ description: >
4
+ Shape F.0 (Mini Decision Gate) and Shape F.6 (Plan Review Round) sub-shape
5
+ documentation. Both shipped in Phase 88.2. Surface them at queryable
6
+ granularity so the skill auto-loader can pull this rule independently of
7
+ the full SKILL.md when only F.0 or F.6 is in scope. Part of the current
8
+ Shape F catalog as of Phase 121.5 (additive expansion reserved for future
9
+ lens-aware variants).
10
+ ---
11
+
12
+ # Shape F.0 + Shape F.6 -- Sub-shape Documentation
13
+
14
+ This rule documents the two Shape F sub-shapes that landed in Phase 88.2 and are
15
+ shipped but were missing from `skills/ui-system/SKILL.md` until the Phase 121.5
16
+ reconciliation pass. The five original sub-shapes (F.1 through F.5) are
17
+ documented in SKILL.md §2 and remain unchanged. F.0 is the lightweight
18
+ binary-or-trinary gate that fires BEFORE the larger Shape F slate; F.6 is the
19
+ Plan Mode wrap that closes a planning round (and, per Phase 101-01, is also the
20
+ JTBD-aware variant of Shape F selected by the dispatcher when a JTBD signal is
21
+ set).
22
+
23
+ The Shape F catalog as of Phase 121.5 carries seven sub-shapes (F.0 / F.1 / F.2
24
+ / F.3 / F.4 / F.5 / F.6). This is the current catalog; future v1.14.0+ work may
25
+ add lens-aware variants (the dual-graph proposal under review 2026-05-16 may
26
+ introduce ASSOCIATION_LENS / TRANSITION_LENS lens-class variants).
27
+
28
+ ---
29
+
30
+ ## Shape F.0 -- Mini Decision Gate
31
+
32
+ **Shipped:** Phase 88.2 (Plan 88.2-05 / UISEL-88.2-07).
33
+
34
+ **Implementation:** `lib/hmi/shape-f0-renderer.cjs` (pure CJS, node built-ins
35
+ only, zero new runtime deps).
36
+
37
+ **Purpose.** Tiny binary or trinary decision gate. Lighter than F.1 (which
38
+ carries 3-5 options). F.0 is the minimum-viable gate when the navigator only
39
+ needs a yes / no / defer call before the larger selector slate fires.
40
+
41
+ **When to use.** A surface needs a confirmation BEFORE producing the larger F.1
42
+ selector. Most common pairing: F.0 (accept this recommendation?) -> F.1 (now
43
+ choose next move). Used for binary commits that need an explicit edge produced
44
+ even when the navigator wants to keep moving.
45
+
46
+ **Verb set.** EXACTLY 3 verbs (closed vocabulary, shipped value):
47
+
48
+ - Approve -- cascade now (collapses to Run Methodology or whatever the
49
+ recommendation called for)
50
+ - Reject -- capture reason -> REJECTED_BECAUSE typed edge (graph data, no
51
+ silent dismiss path -- Canon Part 4)
52
+ - Defer -- queue for milestone audit (Defer verb)
53
+
54
+ **No Free-Text slot.** F.0 omits Free-Text by design. The Reject path captures
55
+ the reason as a REJECTED_BECAUSE edge property, which preserves free-form intent
56
+ without expanding the verb vocabulary. F.0 ALWAYS produces a typed edge; there
57
+ is no silent dismiss path.
58
+
59
+ **Header format.**
60
+
61
+ ```
62
+ [filled-square] [CONTEXT] - MINI GATE - decision gate
63
+ [right-triangle-filled] {short binary or trinary question}
64
+ ```
65
+
66
+ Single-line ASCII border (the visual sub-decision cue). Persona-agnostic
67
+ visually (D-AMEND-04 from Phase 88.2 CONTEXT.md).
68
+
69
+ **Keyboard.** Standard F-family keyboard. up-arrow / down-arrow (or J / K) to
70
+ navigate, Enter to select, `?` to inspect, Esc to cancel.
71
+
72
+ **No RECOMMENDED marker.** F.0 is itself the recommendation surface. Marking
73
+ one of the three options would double-cue. RECOMMENDED markers are an F.1
74
+ through F.5 concept.
75
+
76
+ **State-update hook.** Append to STATE.md Decisions section with the chosen
77
+ verb + a tiny one-line context snapshot (F.0 gates are lightweight; do NOT
78
+ bloat Decisions with full context). Typed edge `(navigator) -[CHOSE_MINI
79
+ {verb}]-> (recommendation-node)` lands in the local graph. Reject additionally
80
+ writes REJECTED_BECAUSE with `{reason, rejected_at, parent_decision_id,
81
+ actor_id?, confidence_self_report?}` via Phase 109 `logEvent` (eventType
82
+ `selector_rejection_captured`).
83
+
84
+ **Canon refs.** Part 3 (the gate), Part 4 (rejection is data), Part 8 (reason
85
+ text is graph-local; never egresses to Brain).
86
+
87
+ ---
88
+
89
+ ## Shape F.6 -- Plan Review Round
90
+
91
+ **Shipped:** Phase 88.2 (Plan 88.2-06 plan-review variant) + Phase 101-01
92
+ (JTBD-aware Next Move variant).
93
+
94
+ **Implementation:** Two co-existing renderers at collision-safe paths:
95
+ - `lib/hmi/shape-f6-plan-review-renderer.cjs` -- Plan Review Round variant
96
+ (Phase 88.2-06; double-line border for structural distinction from F.0).
97
+ - `lib/hmi/shape-f6-renderer.cjs` -- JTBD-aware Next Move variant (Phase
98
+ 101-01; falls through to F.1 if JTBD taxonomy entry missing).
99
+
100
+ The umbrella `F` branch in `lib/hmi/selector-dispatcher.cjs` (`F_SUBSHAPES =
101
+ ['F.0', 'F.1', 'F.2', 'F.3', 'F.4', 'F.5', 'F.6']`) routes to the Phase 101-01
102
+ JTBD-aware module when `jtbd` is non-null; explicit `requestedShape: 'F.6'`
103
+ (string) routes to the plan-review renderer.
104
+
105
+ **Purpose.** Plan Mode wrap. When the navigator has been in a planning surface
106
+ (e.g. after a methodology session that produced a plan), F.6 closes the round
107
+ with an explicit Review verb selection BEFORE returning to Plan vs Build mode.
108
+ The JTBD-aware variant produces a JTBD-anchored Next Move slate sourced from
109
+ `lib/hmi/jtbd-taxonomy.json` `next_move_verbs`.
110
+
111
+ **When to use.**
112
+ - End of a plan-producing methodology session (Plan Review variant).
113
+ - Any Shape F surface where a non-null JTBD is in play and the renderer
114
+ should produce a JTBD-aware Next Move slate (JTBD-aware variant).
115
+
116
+ **Verb set.** 3-5 verbs. Plan-review typical slate:
117
+
118
+ - Approve plan -> Synthesize (plan becomes confirmed artifact;
119
+ review_status proposed -> confirmed, Canon Part 9)
120
+ - Revise plan -> Reformulate (re-runs the planning verb with edits)
121
+ - Replan from scratch -> Reformulate from a fresh seed
122
+ - Defer review -> Defer (milestone-audit TodoWrite row)
123
+ - Free-Text -> Free-Text routes to interpretation
124
+
125
+ JTBD-aware variant draws verbs from the taxonomy entry's `next_move_verbs`.
126
+
127
+ **Header format.**
128
+
129
+ ```
130
+ [filled-square] [CONTEXT] - PLAN REVIEW - decision gate
131
+ [down-triangle] LOCAL / BRAIN / SIGNAL
132
+ [right-triangle-filled] Review this plan:
133
+ ```
134
+
135
+ Double-line border on the Plan Review variant (parent shape -- structural
136
+ distinction from F.0's single-line border).
137
+
138
+ **Keyboard.** Standard F-family keyboard (inherits from F.1 per Phase 101-01
139
+ D-01).
140
+
141
+ **State-update hook.**
142
+ - On Approve, plan is promoted `review_status: proposed -> confirmed` (Canon
143
+ Part 9 truth-state machine).
144
+ - On Revise/Replan, original plan stays `proposed` and a new revision edge is
145
+ created.
146
+ - On Defer, a milestone-audit TodoWrite row queues the review.
147
+ - Plan-review variant additionally writes REVIEWED typed edges per question
148
+ position with `{round_id, position, latency_ms, was_decoy, response,
149
+ confidence_self_report}` via Phase 109 `logEvent` (eventType
150
+ `selector_response`). Round close emits a `f6_round_completed` event.
151
+
152
+ **Decoy ethics.** The Plan Review variant runs decoys (interleaved per
153
+ position) with a debrief Shape A action report at round-end that discloses
154
+ which questions were decoys (round-state `room/decisions/decision-decoy-
155
+ ethics.md`).
156
+
157
+ **Canon refs.** Part 3 (the gate), Part 9 (truth states), Part 4 (every
158
+ response is a typed edge), Part 8 (response text is graph-local).
159
+
160
+ ---
161
+
162
+ ## Sub-shape catalog notes
163
+
164
+ The Shape F catalog as shipped through Phase 88.2 carries seven sub-shapes
165
+ (F.0 / F.1 / F.2 / F.3 / F.4 / F.5 / F.6). This is the current catalog as of
166
+ Phase 121.5. The catalog is expandable, not foreclosed: lens-aware variants
167
+ (e.g. the dual-graph ASSOCIATION_LENS / TRANSITION_LENS work under review
168
+ 2026-05-16) may add future Shape F sub-shapes in v1.14.0+. SKILL.md treats
169
+ today's seven sub-shapes as the shipped vocabulary, not a terminal set.