@azure-id/orc 1.9.1 → 2.0.2

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 (224) hide show
  1. package/CHANGELOG.md +390 -0
  2. package/README-id.md +20 -36
  3. package/README.md +24 -34
  4. package/bin/build-agents.js +206 -109
  5. package/bin/cli.js +760 -62
  6. package/bin/gotcha-import.js +1081 -0
  7. package/bin/gotcha.js +1286 -0
  8. package/bin/graph-query.js +1 -1
  9. package/bin/graph.js +717 -717
  10. package/bin/habit.js +1453 -0
  11. package/bin/mockrun-catalog.js +281 -276
  12. package/bin/onboarding-content.js +4 -4
  13. package/bin/pricing.json +207 -200
  14. package/bin/run-undo.js +398 -0
  15. package/bin/trace-write.js +657 -0
  16. package/bin/verify-contracts.js +527 -81
  17. package/bin/verify-package.js +58 -11
  18. package/bin/webui/api.js +26 -0
  19. package/bin/webui/app.html +239 -232
  20. package/bin/webui/css/00-tokens.css +110 -92
  21. package/bin/webui/css/04-motion.css +249 -152
  22. package/bin/webui/css/06-responsive.css +203 -178
  23. package/bin/webui/css/panels/behaviour.css +205 -0
  24. package/bin/webui/css/panels/knowledge.css +563 -116
  25. package/bin/webui/fixtures/behaviour.js +532 -0
  26. package/bin/webui/fixtures/extra.js +2036 -2036
  27. package/bin/webui/fixtures/hookui.js +5 -5
  28. package/bin/webui/fixtures/index.js +34 -0
  29. package/bin/webui/fixtures/knowledge.js +7 -1
  30. package/bin/webui/fixtures/settings.js +305 -305
  31. package/bin/webui/fixtures/stats.js +16 -0
  32. package/bin/webui/i18n/en/behaviour.json +143 -0
  33. package/bin/webui/i18n/en/knowledge.json +117 -2
  34. package/bin/webui/i18n/en/nav.json +25 -24
  35. package/bin/webui/i18n/en/tour.json +37 -35
  36. package/bin/webui/i18n/id/behaviour.json +143 -0
  37. package/bin/webui/i18n/id/knowledge.json +117 -2
  38. package/bin/webui/i18n/id/nav.json +25 -24
  39. package/bin/webui/i18n/id/tour.json +37 -35
  40. package/bin/webui/js/01-i18n.js +155 -154
  41. package/bin/webui/js/90-tour.js +498 -494
  42. package/bin/webui/js/91-shortcuts.js +126 -126
  43. package/bin/webui/js/99-boot.js +121 -118
  44. package/bin/webui/js/panels/behaviour.js +1022 -0
  45. package/bin/webui/js/panels/knowledge.js +552 -7
  46. package/bin/webui/js/panels/overview.js +13 -4
  47. package/mock-run/INDEX.md +109 -107
  48. package/mock-run/context-combiner.md +100 -100
  49. package/mock-run/gotcha-import.md +118 -0
  50. package/mock-run/habits.md +129 -0
  51. package/mock-run/orc-budget.md +534 -534
  52. package/mock-run/orc-challenge-council.md +262 -262
  53. package/mock-run/orc-quick.md +6 -1
  54. package/mock-run/orc-ultra.md +103 -103
  55. package/package.json +1 -1
  56. package/templates/agents/MODEL-MAPPING.md +49 -49
  57. package/templates/agents/orc-advisor-opus-5-xhigh.md +50 -56
  58. package/templates/agents/orc-analyze-mini-opus-5-med.md +55 -60
  59. package/templates/agents/orc-analyze-mini-sonnet-5-high.md +55 -58
  60. package/templates/agents/orc-challenge-advisor-opus-5-med.md +75 -75
  61. package/templates/agents/orc-challenge-contrarian-opus-5-high.md +110 -110
  62. package/templates/agents/orc-challenge-executor-opus-5-med.md +114 -114
  63. package/templates/agents/orc-challenge-expansionist-opus-5-med.md +112 -112
  64. package/templates/agents/orc-challenge-judge-opus-5-high.md +132 -132
  65. package/templates/agents/orc-challenge-outsider-opus-5-low.md +109 -109
  66. package/templates/agents/orc-challenge-principles-opus-5-high.md +109 -109
  67. package/templates/agents/orc-challenge-reader-opus-5-low.md +90 -90
  68. package/templates/agents/orc-claude-writer-opus-4-8-high.md +48 -53
  69. package/templates/agents/orc-claude-writer-opus-5-med.md +48 -55
  70. package/templates/agents/orc-context-combiner-opus-5-high.md +78 -88
  71. package/templates/agents/orc-doc-checker-opus-5-low.md +108 -108
  72. package/templates/agents/orc-doc-writer-opus-5-med.md +134 -134
  73. package/templates/agents/orc-executor-haiku-4-5.md +14 -6
  74. package/templates/agents/orc-executor-opus-4-7-high.md +14 -6
  75. package/templates/agents/orc-executor-opus-4-7-med.md +14 -6
  76. package/templates/agents/orc-executor-opus-4-8-high.md +14 -6
  77. package/templates/agents/orc-executor-opus-5-high.md +15 -7
  78. package/templates/agents/orc-executor-opus-5-low.md +15 -7
  79. package/templates/agents/orc-executor-opus-5-med.md +15 -7
  80. package/templates/agents/orc-executor-sonnet-4-6-high.md +14 -6
  81. package/templates/agents/orc-executor-sonnet-4-6-med.md +14 -6
  82. package/templates/agents/orc-executor-sonnet-5-high.md +14 -6
  83. package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +1 -10
  84. package/templates/agents/orc-judge-opus-5-xhigh.md +81 -85
  85. package/templates/agents/orc-learn-writer-opus-5-low.md +67 -73
  86. package/templates/agents/orc-pattern-codifier-opus-5-med.md +58 -65
  87. package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +58 -63
  88. package/templates/agents/orc-planner-mini-opus-5-med.md +4 -7
  89. package/templates/agents/orc-planner-mini-sonnet-5-high.md +2 -3
  90. package/templates/agents/orc-planner-opus-5-med.md +157 -160
  91. package/templates/agents/orc-recon-opus-5-low.md +3 -10
  92. package/templates/agents/orc-recon-sonnet-4-6-med.md +1 -8
  93. package/templates/agents/orc-retro-opus-5-med.md +8 -10
  94. package/templates/agents/orc-retro-sonnet-5-high.md +6 -7
  95. package/templates/agents/orc-reviewer-opus-5-med.md +96 -60
  96. package/templates/agents/orc-scout-opus-5-low.md +35 -40
  97. package/templates/agents/orc-scout-sonnet-4-6-high.md +35 -39
  98. package/templates/agents/orc-system-analyst-opus-5-high.md +115 -120
  99. package/templates/agents/orc-test-author-opus-5-med.md +70 -71
  100. package/templates/agents/orc-test-designer-opus-5-high.md +158 -158
  101. package/templates/agents/orc-test-interpreter-opus-5-low.md +130 -130
  102. package/templates/agents/orc-trace-writer-haiku-4-5.md +3 -7
  103. package/templates/agents/orc-verifier-opus-5-med.md +77 -69
  104. package/templates/agents/orc-wiki-scanner-opus-4-8-high.md +74 -79
  105. package/templates/agents/orc-wiki-scanner-opus-5-med.md +74 -81
  106. package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +97 -106
  107. package/templates/commands/orc-analyze.md +13 -21
  108. package/templates/commands/orc-fast.md +10 -15
  109. package/templates/commands/orc-poly.md +12 -21
  110. package/templates/commands/orc-pr-driver.md +11 -30
  111. package/templates/commands/orc-pr-setup.md +10 -31
  112. package/templates/commands/orc-route.md +11 -41
  113. package/templates/commands/orc-test.md +5 -60
  114. package/templates/commands/orc-ultra.md +17 -17
  115. package/templates/commands/orc-verify.md +11 -11
  116. package/templates/hooks/README.md +36 -2
  117. package/templates/hooks/orc-effort-guard.js +178 -178
  118. package/templates/hooks/orc-session-hook.js +264 -0
  119. package/templates/hooks/orc-statusline.js +9 -7
  120. package/templates/skills/_shared/README.md +9 -0
  121. package/templates/skills/_shared/code-graph.md +48 -56
  122. package/templates/skills/_shared/config-precedence.md +200 -198
  123. package/templates/skills/_shared/extra-dispatch.md +1331 -1346
  124. package/templates/skills/_shared/gotchas.md +228 -177
  125. package/templates/skills/_shared/habits.md +101 -0
  126. package/templates/skills/_shared/lane-contract.md +84 -0
  127. package/templates/skills/_shared/opus5-only.md +8 -8
  128. package/templates/skills/_shared/phases/README.md +142 -83
  129. package/templates/skills/_shared/phases/analyst-gates.md +125 -136
  130. package/templates/skills/_shared/phases/execution.md +8 -14
  131. package/templates/skills/_shared/phases/house-rules.md +27 -32
  132. package/templates/skills/_shared/phases/intake.md +127 -133
  133. package/templates/skills/_shared/phases/mock-example.md +46 -56
  134. package/templates/skills/_shared/phases/plan-handoff.md +91 -97
  135. package/templates/skills/_shared/phases/planning.md +7 -17
  136. package/templates/skills/_shared/phases/preflight.md +19 -42
  137. package/templates/skills/_shared/phases/review.md +23 -27
  138. package/templates/skills/_shared/phases/rules.md +18 -42
  139. package/templates/skills/_shared/phases/scoring.md +55 -65
  140. package/templates/skills/_shared/phases/security-checklist.md +46 -50
  141. package/templates/skills/_shared/phases/security.md +45 -55
  142. package/templates/skills/_shared/phases/ship.md +6 -15
  143. package/templates/skills/_shared/phases/stop-resume.md +2 -5
  144. package/templates/skills/_shared/phases/summary.md +73 -48
  145. package/templates/skills/_shared/phases/testgen.md +41 -51
  146. package/templates/skills/_shared/phases/trace-verbs.md +433 -0
  147. package/templates/skills/_shared/phases/trace.md +136 -367
  148. package/templates/skills/_shared/phases/verify.md +62 -70
  149. package/templates/skills/_shared/phases/wave-grouping.md +128 -133
  150. package/templates/skills/_shared/phases/wiki-consult.md +10 -6
  151. package/templates/skills/_shared/read-ladder.md +2 -55
  152. package/templates/skills/_shared/return-validation.md +17 -70
  153. package/templates/skills/_shared/review-slice.md +79 -0
  154. package/templates/skills/_shared/smoke-gate.md +46 -28
  155. package/templates/skills/context-combiner/SKILL.md +16 -45
  156. package/templates/skills/context-combiner/schemas/combined-report.md +78 -78
  157. package/templates/skills/orc/README.md +2 -2
  158. package/templates/skills/orc/SKILL.md +41 -69
  159. package/templates/skills/orc/config.md +9 -9
  160. package/templates/skills/orc/examples/full-run-mock.md +73 -73
  161. package/templates/skills/orc/references/effort-and-mode.md +222 -222
  162. package/templates/skills/orc/references/pattern-gate.md +89 -89
  163. package/templates/skills/orc/references/phases/intake.md +41 -47
  164. package/templates/skills/orc/references/phases/integration.md +13 -19
  165. package/templates/skills/orc/references/preflight-report.md +10 -11
  166. package/templates/skills/orc/references/ultra-mode.md +11 -9
  167. package/templates/skills/orc/subskills/orc-execution/SKILL.md +27 -73
  168. package/templates/skills/orc/subskills/orc-execution/core.md +12 -99
  169. package/templates/skills/orc/subskills/orc-execution/subagent.md +14 -13
  170. package/templates/skills/orc/subskills/orc-planner/SKILL.md +2 -2
  171. package/templates/skills/orc/subskills/orc-planner-mini/SKILL.md +121 -121
  172. package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +35 -76
  173. package/templates/skills/orc/subskills/orc-review-verify/core.md +52 -135
  174. package/templates/skills/orc/subskills/orc-review-verify/subagent.md +7 -7
  175. package/templates/skills/orc/subskills/orc-testgen/SKILL.md +34 -45
  176. package/templates/skills/orc/subskills/orc-testgen/core.md +20 -59
  177. package/templates/skills/orc/subskills/orc-testgen/subagent.md +7 -7
  178. package/templates/skills/orc-advisor/SKILL.md +56 -60
  179. package/templates/skills/orc-analyze/SKILL.md +32 -68
  180. package/templates/skills/orc-analyze/examples/analyze-mock.md +42 -42
  181. package/templates/skills/orc-analyze/schemas/report-audit.md +84 -83
  182. package/templates/skills/orc-analyze/schemas/report-prose.md +64 -63
  183. package/templates/skills/orc-analyze/schemas/report-requirement.md +78 -78
  184. package/templates/skills/orc-analyze-mini/SKILL.md +35 -70
  185. package/templates/skills/orc-challenge/README.md +142 -142
  186. package/templates/skills/orc-challenge/examples/council-full-roster.md +273 -273
  187. package/templates/skills/orc-challenge/references/council.md +315 -315
  188. package/templates/skills/orc-challenge/references/intake.md +171 -171
  189. package/templates/skills/orc-claude/SKILL.md +14 -14
  190. package/templates/skills/orc-diy/README.md +174 -143
  191. package/templates/skills/orc-diy/SKILL.md +23 -74
  192. package/templates/skills/orc-diy/references/blocks/pattern.md +18 -18
  193. package/templates/skills/orc-diy/references/flow-schema.md +1 -1
  194. package/templates/skills/orc-doc/README.md +229 -229
  195. package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +325 -325
  196. package/templates/skills/orc-doc/references/chunking.md +527 -527
  197. package/templates/skills/orc-fast/SKILL.md +45 -73
  198. package/templates/skills/orc-judge/SKILL.md +77 -82
  199. package/templates/skills/orc-learn/SKILL.md +14 -14
  200. package/templates/skills/orc-learn/examples/learn-run-mock.md +61 -61
  201. package/templates/skills/orc-mini/SKILL.md +65 -113
  202. package/templates/skills/orc-pattern/SKILL.md +27 -48
  203. package/templates/skills/orc-poly/SKILL.md +32 -61
  204. package/templates/skills/orc-pr-driver/SKILL.md +25 -51
  205. package/templates/skills/orc-pr-driver/references/green-gate.md +113 -105
  206. package/templates/skills/orc-pr-setup/SKILL.md +20 -45
  207. package/templates/skills/orc-quick/README.md +43 -2
  208. package/templates/skills/orc-quick/SKILL.md +76 -107
  209. package/templates/skills/orc-quick/references/dispatch-gate.md +16 -5
  210. package/templates/skills/orc-quick/references/gh-mode.md +48 -1
  211. package/templates/skills/orc-quick/references/look.md +3 -1
  212. package/templates/skills/orc-retro/SKILL.md +19 -18
  213. package/templates/skills/orc-retro/examples/retro-mock.md +1 -1
  214. package/templates/skills/orc-route/SKILL.md +25 -45
  215. package/templates/skills/orc-test/SKILL.md +16 -37
  216. package/templates/skills/orc-verify/SKILL.md +21 -39
  217. package/templates/skills/orc-verify/examples/verify-mock.md +33 -33
  218. package/templates/skills/orc-wait/SKILL.md +156 -163
  219. package/templates/skills/orc-wiki/references/extra.md +1 -1
  220. package/templates/skills/orc-wiki/references/phases/phase-0.md +1 -6
  221. package/templates/skills/orc-wiki/references/phases/phase-1.md +1 -6
  222. package/templates/skills/orc-wiki/references/phases/phase-2.md +1 -6
  223. package/templates/skills/orc-wiki/references/phases/phase-3.md +1 -6
  224. package/templates/skills/orc-wiki/references/phases/phase-3c.md +1 -6
@@ -1,262 +1,262 @@
1
- # Mock run — the `/orc-challenge` council
2
-
3
- > One reviewer sees one kind of problem. The council is six more ways of looking, and YOU choose which ones run.
4
-
5
- ---
6
-
7
- ## 1. The problem with one reviewer
8
-
9
- `/orc-challenge` already reads your finished document and tells you what is
10
- wrong with it. But it reads it **one way**: *does this document do what a
11
- document is supposed to do?*
12
-
13
- That misses whole kinds of problem. Six of them, in fact — and each one is
14
- missed for a different reason:
15
-
16
- | The way of looking | The question it asks | What goes wrong without it |
17
- |---|---|---|
18
- | **The Contrarian** | where is the fatal flaw? | everyone assumes the document is fine and stops looking |
19
- | **The First Principles Thinker** | are we even solving the right problem? | nobody questions the thing you asked for |
20
- | **The Expansionist** | what is being undervalued here? | only the bad news gets counted |
21
- | **The Outsider** | what does this assume I already know? | an expert cannot un-know things |
22
- | **The Executor** | what do you actually do on Monday? | the theory is graded, the first step never is |
23
-
24
- Plus **The Cold Reader**, which you already had: *can a stranger answer the
25
- questions this document promised to answer?*
26
-
27
- That is six. The seventh — **The Judge** — always runs, and it is the one that
28
- decides what happens to everything the other six find.
29
-
30
- ---
31
-
32
- ## 2. ORC suggests. You pick.
33
-
34
- This is the part that matters, and it is the one rule the whole design is built
35
- around:
36
-
37
- > **ORC suggests a council. You choose it. ORC never chooses for you.**
38
-
39
- Choosing the council is choosing **which kinds of criticism you are allowed to
40
- hear**. That is a bigger decision than any single thing the review will find, so
41
- ORC will not make it for you. If you do not answer, the command refuses:
42
-
43
- ```
44
- ❌ --council is required and has no default. ORC SUGGESTS a roster (from the kind
45
- and the goal); the user PICKS it.
46
- ```
47
-
48
- When you open a cycle, question 7 looks like this:
49
-
50
- ```
51
- 7 Who is on the council for this review? (judge always runs; advisor runs on a fail)
52
-
53
- ORC suggests, for a TSD aimed at implementers:
54
- [x] cold reader can a stranger answer this document's own questions?
55
- [x] contrarian assume it has a fatal flaw, then go find it
56
- [x] executor can this be started on Monday? where is the first step?
57
- [ ] outsider what does this assume you already know?
58
- [ ] principles is this even the right problem? (never blocks)
59
- [ ] expansionist what upside is being missed? (never blocks)
60
-
61
- Reply with the ones you want (or "all", or "none").
62
- Each one is one extra read-only Opus 5 dispatch per iteration.
63
- ```
64
-
65
- Three things about that block:
66
-
67
- - **The suggestion is worked out from what you told it** — the kind of document
68
- and what it is for. That is a fact, so ORC is allowed to work it out.
69
- - **The cost is in dispatches, never in money.** ORC will not put a dollar figure
70
- on anything it has not priced from a real, dated price table.
71
- - **"none" is a real answer.** It gives you exactly the review you had before,
72
- and nothing is lost by saying it.
73
-
74
- ---
75
-
76
- ## 3. Two of them never block anything
77
-
78
- Four of the six find **problems**. Two of them cannot, and pretending otherwise
79
- would make them lie.
80
-
81
- ### The Expansionist finds upside, not defects
82
-
83
- Its whole job is *"what is this worth that nobody is counting?"* — which, by
84
- definition, is **not** something you asked for. So it cannot report a problem
85
- against your goal, because there is no goal to report it against.
86
-
87
- It writes **opportunities** instead. An opportunity has no severity, never
88
- blocks a pass, and always comes with a first step:
89
-
90
- ```
91
- OPPORTUNITIES — not work, nothing here blocks
92
-
93
- X-001 the retry table would work for every write in the service, not just this one
94
- first step: list the four existing retry rules side by side
95
- route: /orc-brainstorm
96
- ```
97
-
98
- You keep it or you let it go, and either way you say why. An idea that quietly
99
- disappears looks exactly like an idea nobody ever had.
100
-
101
- ### The First Principles Thinker questions your goal
102
-
103
- It is the only one allowed to say **the goal is wrong**. And that is exactly why
104
- it cannot report a problem: a problem is measured *against* the goal, and this
105
- one is arguing about the goal itself. Those cannot be the same thing.
106
-
107
- It writes a **premise challenge**, and when there is one, it is the first thing
108
- you read:
109
-
110
- ```
111
- OPEN PREMISE CHALLENGE — read this before the findings
112
-
113
- Q-001 disputes: goal
114
-
115
- Reframe: the real job here is not "describe self-serve signup"; it is
116
- "decide whether signup is self-serve at all". Three sections answer the
117
- second question as if the first were already settled.
118
-
119
- Cheapest test: ask the growth lead whether the decision has been taken.
120
- One message. No rewrite.
121
-
122
- Neither answer is automatic and ORC never picks:
123
- agree orc challenge goals <slug> --set <path> --reason "…"
124
- disagree orc challenge premise <slug> Q-001 --dismiss --reason "…"
125
- ```
126
-
127
- **Only a person can settle this.** If you agree, you write a new goal and the
128
- review starts measuring against that instead. If you disagree, you say why — and
129
- your reason stays in the report forever.
130
-
131
- The Judge never sees this report. Handing a judge a document arguing that the
132
- goal is wrong would bend every single thing it says afterwards.
133
-
134
- ---
135
-
136
- ## 4. What stops six reviewers from being a waste of money
137
-
138
- The obvious way this goes wrong: six reviewers run, the Judge quietly ignores
139
- four of them, and the review looks exactly the same as before while costing five
140
- times more.
141
-
142
- So the CLI **reads what each reviewer wrote, from disk**, and demands that the
143
- Judge account for every single thing they raised:
144
-
145
- ```
146
- ❌ malformed verdict — council coverage is below 100% — every id the council
147
- raised needs exactly ONE disposition (adopted | merged | rejected |
148
- out-of-goal). Missing: O-003
149
- ```
150
-
151
- The Judge cannot make the list shorter by leaving something out, because the
152
- list was never the Judge's to write.
153
-
154
- Four possible answers, and three of them need a reason:
155
-
156
- | Answer | Means |
157
- |---|---|
158
- | `adopted` | agreed — it becomes a real finding |
159
- | `merged` | the same problem as another finding (and it must say which) |
160
- | `rejected` | read it, disagreed — **and says why** |
161
- | `out-of-goal` | real, but nothing you asked for covers it — **and says why**. Reported, never quietly dropped |
162
-
163
- ---
164
-
165
- ## 5. Whoever found it, keeps the credit
166
-
167
- When the Judge agrees with something the Contrarian found, it stays `C-004`.
168
- Forever — in this review, in the report, and in iteration nine.
169
-
170
- That is not tidiness. It is the only way you ever find out whether a reviewer is
171
- worth what it costs:
172
-
173
- ```
174
- RAN reader raised 3 · adopted 2 · merged 1 · rejected 0
175
- RAN contrarian raised 6 · adopted 4 · merged 1 · rejected 1
176
- RAN outsider raised 3 · adopted 1 · merged 2 · rejected 0
177
- RAN executor raised 2 · adopted 2 · merged 0 · rejected 0
178
- NOT-RUN principles usage limit reached mid-batch
179
- ```
180
-
181
- After two rounds you can see plainly that the Contrarian found four of the six
182
- things that mattered, and that one reviewer has never landed anything. Drop it.
183
-
184
- ---
185
-
186
- ## 6. A reviewer that did not run is never silent
187
-
188
- Look at that last line again. `principles` did not run, and it says so, with the
189
- reason.
190
-
191
- If a reviewer you chose simply vanished from the report, "it found nothing" and
192
- "it never ran" would look identical — and one of those means you should relax
193
- and the other means you should look again. So a reviewer that was selected and
194
- did not run is **rejected as malformed** unless it says why:
195
-
196
- ```
197
- ❌ malformed verdict — executor is on the roster but returned neither a report
198
- nor an explicit { "lens": "executor", "ran": false, "reason": "…" }.
199
- A selected role is never silently absent.
200
- ```
201
-
202
- ---
203
-
204
- ## 7. What you actually do Monday morning
205
-
206
- The Executor writes one thing that nobody else does — the literal first three
207
- things an implementer would do with your document today:
208
-
209
- ```
210
- What you would actually do first
211
-
212
- 1. open docs/tsd-payments.md §4.2 and write the retry window in seconds
213
- 2. ask the payments lead which queue the dead letters go to
214
- 3. — stops here. The document never names the queue.
215
- ```
216
-
217
- **That third line is the useful one.** It does not pretend. If the list cannot be
218
- finished, it says exactly where it stops and why — and that sentence is usually
219
- the clearest thing in the whole review for somebody who does not read code.
220
-
221
- ---
222
-
223
- ## 8. You can change your mind
224
-
225
- The council is frozen per review, like the goal and the template. Changing it is
226
- a recorded decision with a reason:
227
-
228
- ```bash
229
- orc challenge council my-tsd --set contrarian,executor \
230
- --reason "the framing question is settled; what is left is completeness"
231
- ```
232
-
233
- The timeline draws a line at that point, because a round judged by three
234
- reviewers and a round judged by six are not comparable.
235
-
236
- **Anything still open stays open.** The Judge answers every carried finding
237
- whatever found it — it re-reads your document from disk every time, so it never
238
- needed the original reviewer. You can change the council freely and lose
239
- nothing.
240
-
241
- ---
242
-
243
- ## 9. What this never does
244
-
245
- - **It never picks the council for you.**
246
- - **It never lets an opportunity or a premise block a pass.** Neither has a
247
- severity, and neither ever will.
248
- - **It never bumps a severity because two reviewers agreed.** Agreement is a
249
- signal worth showing you. It is not a verdict.
250
- - **It never fixes anything.** Same as before: ORC judges, you fix somewhere
251
- else, ORC judges again.
252
- - **It never quietly leaves a reviewer out.**
253
-
254
- ---
255
-
256
- ## 10. What it costs
257
-
258
- One extra read-only dispatch per reviewer, per round. That is it.
259
-
260
- The suggestion defaults to three, `none` is free and gives you the old review
261
- exactly, and the per-reviewer numbers in section 5 tell you within two rounds
262
- which ones to keep.
1
+ # Mock run — the `/orc-challenge` council
2
+
3
+ > One reviewer sees one kind of problem. The council is six more ways of looking, and YOU choose which ones run.
4
+
5
+ ---
6
+
7
+ ## 1. The problem with one reviewer
8
+
9
+ `/orc-challenge` already reads your finished document and tells you what is
10
+ wrong with it. But it reads it **one way**: *does this document do what a
11
+ document is supposed to do?*
12
+
13
+ That misses whole kinds of problem. Six of them, in fact — and each one is
14
+ missed for a different reason:
15
+
16
+ | The way of looking | The question it asks | What goes wrong without it |
17
+ |---|---|---|
18
+ | **The Contrarian** | where is the fatal flaw? | everyone assumes the document is fine and stops looking |
19
+ | **The First Principles Thinker** | are we even solving the right problem? | nobody questions the thing you asked for |
20
+ | **The Expansionist** | what is being undervalued here? | only the bad news gets counted |
21
+ | **The Outsider** | what does this assume I already know? | an expert cannot un-know things |
22
+ | **The Executor** | what do you actually do on Monday? | the theory is graded, the first step never is |
23
+
24
+ Plus **The Cold Reader**, which you already had: *can a stranger answer the
25
+ questions this document promised to answer?*
26
+
27
+ That is six. The seventh — **The Judge** — always runs, and it is the one that
28
+ decides what happens to everything the other six find.
29
+
30
+ ---
31
+
32
+ ## 2. ORC suggests. You pick.
33
+
34
+ This is the part that matters, and it is the one rule the whole design is built
35
+ around:
36
+
37
+ > **ORC suggests a council. You choose it. ORC never chooses for you.**
38
+
39
+ Choosing the council is choosing **which kinds of criticism you are allowed to
40
+ hear**. That is a bigger decision than any single thing the review will find, so
41
+ ORC will not make it for you. If you do not answer, the command refuses:
42
+
43
+ ```
44
+ ❌ --council is required and has no default. ORC SUGGESTS a roster (from the kind
45
+ and the goal); the user PICKS it.
46
+ ```
47
+
48
+ When you open a cycle, question 7 looks like this:
49
+
50
+ ```
51
+ 7 Who is on the council for this review? (judge always runs; advisor runs on a fail)
52
+
53
+ ORC suggests, for a TSD aimed at implementers:
54
+ [x] cold reader can a stranger answer this document's own questions?
55
+ [x] contrarian assume it has a fatal flaw, then go find it
56
+ [x] executor can this be started on Monday? where is the first step?
57
+ [ ] outsider what does this assume you already know?
58
+ [ ] principles is this even the right problem? (never blocks)
59
+ [ ] expansionist what upside is being missed? (never blocks)
60
+
61
+ Reply with the ones you want (or "all", or "none").
62
+ Each one is one extra read-only Opus 5.5 dispatch per iteration.
63
+ ```
64
+
65
+ Three things about that block:
66
+
67
+ - **The suggestion is worked out from what you told it** — the kind of document
68
+ and what it is for. That is a fact, so ORC is allowed to work it out.
69
+ - **The cost is in dispatches, never in money.** ORC will not put a dollar figure
70
+ on anything it has not priced from a real, dated price table.
71
+ - **"none" is a real answer.** It gives you exactly the review you had before,
72
+ and nothing is lost by saying it.
73
+
74
+ ---
75
+
76
+ ## 3. Two of them never block anything
77
+
78
+ Four of the six find **problems**. Two of them cannot, and pretending otherwise
79
+ would make them lie.
80
+
81
+ ### The Expansionist finds upside, not defects
82
+
83
+ Its whole job is *"what is this worth that nobody is counting?"* — which, by
84
+ definition, is **not** something you asked for. So it cannot report a problem
85
+ against your goal, because there is no goal to report it against.
86
+
87
+ It writes **opportunities** instead. An opportunity has no severity, never
88
+ blocks a pass, and always comes with a first step:
89
+
90
+ ```
91
+ OPPORTUNITIES — not work, nothing here blocks
92
+
93
+ X-001 the retry table would work for every write in the service, not just this one
94
+ first step: list the four existing retry rules side by side
95
+ route: /orc-brainstorm
96
+ ```
97
+
98
+ You keep it or you let it go, and either way you say why. An idea that quietly
99
+ disappears looks exactly like an idea nobody ever had.
100
+
101
+ ### The First Principles Thinker questions your goal
102
+
103
+ It is the only one allowed to say **the goal is wrong**. And that is exactly why
104
+ it cannot report a problem: a problem is measured *against* the goal, and this
105
+ one is arguing about the goal itself. Those cannot be the same thing.
106
+
107
+ It writes a **premise challenge**, and when there is one, it is the first thing
108
+ you read:
109
+
110
+ ```
111
+ OPEN PREMISE CHALLENGE — read this before the findings
112
+
113
+ Q-001 disputes: goal
114
+
115
+ Reframe: the real job here is not "describe self-serve signup"; it is
116
+ "decide whether signup is self-serve at all". Three sections answer the
117
+ second question as if the first were already settled.
118
+
119
+ Cheapest test: ask the growth lead whether the decision has been taken.
120
+ One message. No rewrite.
121
+
122
+ Neither answer is automatic and ORC never picks:
123
+ agree orc challenge goals <slug> --set <path> --reason "…"
124
+ disagree orc challenge premise <slug> Q-001 --dismiss --reason "…"
125
+ ```
126
+
127
+ **Only a person can settle this.** If you agree, you write a new goal and the
128
+ review starts measuring against that instead. If you disagree, you say why — and
129
+ your reason stays in the report forever.
130
+
131
+ The Judge never sees this report. Handing a judge a document arguing that the
132
+ goal is wrong would bend every single thing it says afterwards.
133
+
134
+ ---
135
+
136
+ ## 4. What stops six reviewers from being a waste of money
137
+
138
+ The obvious way this goes wrong: six reviewers run, the Judge quietly ignores
139
+ four of them, and the review looks exactly the same as before while costing five
140
+ times more.
141
+
142
+ So the CLI **reads what each reviewer wrote, from disk**, and demands that the
143
+ Judge account for every single thing they raised:
144
+
145
+ ```
146
+ ❌ malformed verdict — council coverage is below 100% — every id the council
147
+ raised needs exactly ONE disposition (adopted | merged | rejected |
148
+ out-of-goal). Missing: O-003
149
+ ```
150
+
151
+ The Judge cannot make the list shorter by leaving something out, because the
152
+ list was never the Judge's to write.
153
+
154
+ Four possible answers, and three of them need a reason:
155
+
156
+ | Answer | Means |
157
+ |---|---|
158
+ | `adopted` | agreed — it becomes a real finding |
159
+ | `merged` | the same problem as another finding (and it must say which) |
160
+ | `rejected` | read it, disagreed — **and says why** |
161
+ | `out-of-goal` | real, but nothing you asked for covers it — **and says why**. Reported, never quietly dropped |
162
+
163
+ ---
164
+
165
+ ## 5. Whoever found it, keeps the credit
166
+
167
+ When the Judge agrees with something the Contrarian found, it stays `C-004`.
168
+ Forever — in this review, in the report, and in iteration nine.
169
+
170
+ That is not tidiness. It is the only way you ever find out whether a reviewer is
171
+ worth what it costs:
172
+
173
+ ```
174
+ RAN reader raised 3 · adopted 2 · merged 1 · rejected 0
175
+ RAN contrarian raised 6 · adopted 4 · merged 1 · rejected 1
176
+ RAN outsider raised 3 · adopted 1 · merged 2 · rejected 0
177
+ RAN executor raised 2 · adopted 2 · merged 0 · rejected 0
178
+ NOT-RUN principles usage limit reached mid-batch
179
+ ```
180
+
181
+ After two rounds you can see plainly that the Contrarian found four of the six
182
+ things that mattered, and that one reviewer has never landed anything. Drop it.
183
+
184
+ ---
185
+
186
+ ## 6. A reviewer that did not run is never silent
187
+
188
+ Look at that last line again. `principles` did not run, and it says so, with the
189
+ reason.
190
+
191
+ If a reviewer you chose simply vanished from the report, "it found nothing" and
192
+ "it never ran" would look identical — and one of those means you should relax
193
+ and the other means you should look again. So a reviewer that was selected and
194
+ did not run is **rejected as malformed** unless it says why:
195
+
196
+ ```
197
+ ❌ malformed verdict — executor is on the roster but returned neither a report
198
+ nor an explicit { "lens": "executor", "ran": false, "reason": "…" }.
199
+ A selected role is never silently absent.
200
+ ```
201
+
202
+ ---
203
+
204
+ ## 7. What you actually do Monday morning
205
+
206
+ The Executor writes one thing that nobody else does — the literal first three
207
+ things an implementer would do with your document today:
208
+
209
+ ```
210
+ What you would actually do first
211
+
212
+ 1. open docs/tsd-payments.md §4.2 and write the retry window in seconds
213
+ 2. ask the payments lead which queue the dead letters go to
214
+ 3. — stops here. The document never names the queue.
215
+ ```
216
+
217
+ **That third line is the useful one.** It does not pretend. If the list cannot be
218
+ finished, it says exactly where it stops and why — and that sentence is usually
219
+ the clearest thing in the whole review for somebody who does not read code.
220
+
221
+ ---
222
+
223
+ ## 8. You can change your mind
224
+
225
+ The council is frozen per review, like the goal and the template. Changing it is
226
+ a recorded decision with a reason:
227
+
228
+ ```bash
229
+ orc challenge council my-tsd --set contrarian,executor \
230
+ --reason "the framing question is settled; what is left is completeness"
231
+ ```
232
+
233
+ The timeline draws a line at that point, because a round judged by three
234
+ reviewers and a round judged by six are not comparable.
235
+
236
+ **Anything still open stays open.** The Judge answers every carried finding
237
+ whatever found it — it re-reads your document from disk every time, so it never
238
+ needed the original reviewer. You can change the council freely and lose
239
+ nothing.
240
+
241
+ ---
242
+
243
+ ## 9. What this never does
244
+
245
+ - **It never picks the council for you.**
246
+ - **It never lets an opportunity or a premise block a pass.** Neither has a
247
+ severity, and neither ever will.
248
+ - **It never bumps a severity because two reviewers agreed.** Agreement is a
249
+ signal worth showing you. It is not a verdict.
250
+ - **It never fixes anything.** Same as before: ORC judges, you fix somewhere
251
+ else, ORC judges again.
252
+ - **It never quietly leaves a reviewer out.**
253
+
254
+ ---
255
+
256
+ ## 10. What it costs
257
+
258
+ One extra read-only dispatch per reviewer, per round. That is it.
259
+
260
+ The suggestion defaults to three, `none` is free and gives you the old review
261
+ exactly, and the per-reviewer numbers in section 5 tell you within two rounds
262
+ which ones to keep.
@@ -125,7 +125,12 @@ Your next request becomes entry 2 in the same file, and so on.
125
125
  thread, approves or merges. PR comments are treated as data, never as
126
126
  instructions.
127
127
  - **It never undoes your work.** If you stop while things are red, it prints
128
- the `git` command and leaves your tree alone.
128
+ `orc undo --run <slug>` and leaves your tree alone. That command reverts only
129
+ the files the run changed, and only when you add `--apply`.
130
+ - **The review offer uses the repair memory.** A review gets the gotcha card of
131
+ the files it reads, and the outcome of each finding is recorded. With
132
+ [habits](habits.md) on, your usual answer is marked — the dispatch gate is
133
+ still asked every time.
129
134
  - **A defect is shown red first.** If it cannot be reproduced — no runner, no
130
135
  reachable entry point — the entry says *not reproduced* with the reason, and
131
136
  says it again at the commit offer. It never invents a reproduction.