@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.
- package/CHANGELOG.md +390 -0
- package/README-id.md +20 -36
- package/README.md +24 -34
- package/bin/build-agents.js +206 -109
- package/bin/cli.js +760 -62
- package/bin/gotcha-import.js +1081 -0
- package/bin/gotcha.js +1286 -0
- package/bin/graph-query.js +1 -1
- package/bin/graph.js +717 -717
- package/bin/habit.js +1453 -0
- package/bin/mockrun-catalog.js +281 -276
- package/bin/onboarding-content.js +4 -4
- package/bin/pricing.json +207 -200
- package/bin/run-undo.js +398 -0
- package/bin/trace-write.js +657 -0
- package/bin/verify-contracts.js +527 -81
- package/bin/verify-package.js +58 -11
- package/bin/webui/api.js +26 -0
- package/bin/webui/app.html +239 -232
- package/bin/webui/css/00-tokens.css +110 -92
- package/bin/webui/css/04-motion.css +249 -152
- package/bin/webui/css/06-responsive.css +203 -178
- package/bin/webui/css/panels/behaviour.css +205 -0
- package/bin/webui/css/panels/knowledge.css +563 -116
- package/bin/webui/fixtures/behaviour.js +532 -0
- package/bin/webui/fixtures/extra.js +2036 -2036
- package/bin/webui/fixtures/hookui.js +5 -5
- package/bin/webui/fixtures/index.js +34 -0
- package/bin/webui/fixtures/knowledge.js +7 -1
- package/bin/webui/fixtures/settings.js +305 -305
- package/bin/webui/fixtures/stats.js +16 -0
- package/bin/webui/i18n/en/behaviour.json +143 -0
- package/bin/webui/i18n/en/knowledge.json +117 -2
- package/bin/webui/i18n/en/nav.json +25 -24
- package/bin/webui/i18n/en/tour.json +37 -35
- package/bin/webui/i18n/id/behaviour.json +143 -0
- package/bin/webui/i18n/id/knowledge.json +117 -2
- package/bin/webui/i18n/id/nav.json +25 -24
- package/bin/webui/i18n/id/tour.json +37 -35
- package/bin/webui/js/01-i18n.js +155 -154
- package/bin/webui/js/90-tour.js +498 -494
- package/bin/webui/js/91-shortcuts.js +126 -126
- package/bin/webui/js/99-boot.js +121 -118
- package/bin/webui/js/panels/behaviour.js +1022 -0
- package/bin/webui/js/panels/knowledge.js +552 -7
- package/bin/webui/js/panels/overview.js +13 -4
- package/mock-run/INDEX.md +109 -107
- package/mock-run/context-combiner.md +100 -100
- package/mock-run/gotcha-import.md +118 -0
- package/mock-run/habits.md +129 -0
- package/mock-run/orc-budget.md +534 -534
- package/mock-run/orc-challenge-council.md +262 -262
- package/mock-run/orc-quick.md +6 -1
- package/mock-run/orc-ultra.md +103 -103
- package/package.json +1 -1
- package/templates/agents/MODEL-MAPPING.md +49 -49
- package/templates/agents/orc-advisor-opus-5-xhigh.md +50 -56
- package/templates/agents/orc-analyze-mini-opus-5-med.md +55 -60
- package/templates/agents/orc-analyze-mini-sonnet-5-high.md +55 -58
- package/templates/agents/orc-challenge-advisor-opus-5-med.md +75 -75
- package/templates/agents/orc-challenge-contrarian-opus-5-high.md +110 -110
- package/templates/agents/orc-challenge-executor-opus-5-med.md +114 -114
- package/templates/agents/orc-challenge-expansionist-opus-5-med.md +112 -112
- package/templates/agents/orc-challenge-judge-opus-5-high.md +132 -132
- package/templates/agents/orc-challenge-outsider-opus-5-low.md +109 -109
- package/templates/agents/orc-challenge-principles-opus-5-high.md +109 -109
- package/templates/agents/orc-challenge-reader-opus-5-low.md +90 -90
- package/templates/agents/orc-claude-writer-opus-4-8-high.md +48 -53
- package/templates/agents/orc-claude-writer-opus-5-med.md +48 -55
- package/templates/agents/orc-context-combiner-opus-5-high.md +78 -88
- package/templates/agents/orc-doc-checker-opus-5-low.md +108 -108
- package/templates/agents/orc-doc-writer-opus-5-med.md +134 -134
- package/templates/agents/orc-executor-haiku-4-5.md +14 -6
- package/templates/agents/orc-executor-opus-4-7-high.md +14 -6
- package/templates/agents/orc-executor-opus-4-7-med.md +14 -6
- package/templates/agents/orc-executor-opus-4-8-high.md +14 -6
- package/templates/agents/orc-executor-opus-5-high.md +15 -7
- package/templates/agents/orc-executor-opus-5-low.md +15 -7
- package/templates/agents/orc-executor-opus-5-med.md +15 -7
- package/templates/agents/orc-executor-sonnet-4-6-high.md +14 -6
- package/templates/agents/orc-executor-sonnet-4-6-med.md +14 -6
- package/templates/agents/orc-executor-sonnet-5-high.md +14 -6
- package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +1 -10
- package/templates/agents/orc-judge-opus-5-xhigh.md +81 -85
- package/templates/agents/orc-learn-writer-opus-5-low.md +67 -73
- package/templates/agents/orc-pattern-codifier-opus-5-med.md +58 -65
- package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +58 -63
- package/templates/agents/orc-planner-mini-opus-5-med.md +4 -7
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +2 -3
- package/templates/agents/orc-planner-opus-5-med.md +157 -160
- package/templates/agents/orc-recon-opus-5-low.md +3 -10
- package/templates/agents/orc-recon-sonnet-4-6-med.md +1 -8
- package/templates/agents/orc-retro-opus-5-med.md +8 -10
- package/templates/agents/orc-retro-sonnet-5-high.md +6 -7
- package/templates/agents/orc-reviewer-opus-5-med.md +96 -60
- package/templates/agents/orc-scout-opus-5-low.md +35 -40
- package/templates/agents/orc-scout-sonnet-4-6-high.md +35 -39
- package/templates/agents/orc-system-analyst-opus-5-high.md +115 -120
- package/templates/agents/orc-test-author-opus-5-med.md +70 -71
- package/templates/agents/orc-test-designer-opus-5-high.md +158 -158
- package/templates/agents/orc-test-interpreter-opus-5-low.md +130 -130
- package/templates/agents/orc-trace-writer-haiku-4-5.md +3 -7
- package/templates/agents/orc-verifier-opus-5-med.md +77 -69
- package/templates/agents/orc-wiki-scanner-opus-4-8-high.md +74 -79
- package/templates/agents/orc-wiki-scanner-opus-5-med.md +74 -81
- package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +97 -106
- package/templates/commands/orc-analyze.md +13 -21
- package/templates/commands/orc-fast.md +10 -15
- package/templates/commands/orc-poly.md +12 -21
- package/templates/commands/orc-pr-driver.md +11 -30
- package/templates/commands/orc-pr-setup.md +10 -31
- package/templates/commands/orc-route.md +11 -41
- package/templates/commands/orc-test.md +5 -60
- package/templates/commands/orc-ultra.md +17 -17
- package/templates/commands/orc-verify.md +11 -11
- package/templates/hooks/README.md +36 -2
- package/templates/hooks/orc-effort-guard.js +178 -178
- package/templates/hooks/orc-session-hook.js +264 -0
- package/templates/hooks/orc-statusline.js +9 -7
- package/templates/skills/_shared/README.md +9 -0
- package/templates/skills/_shared/code-graph.md +48 -56
- package/templates/skills/_shared/config-precedence.md +200 -198
- package/templates/skills/_shared/extra-dispatch.md +1331 -1346
- package/templates/skills/_shared/gotchas.md +228 -177
- package/templates/skills/_shared/habits.md +101 -0
- package/templates/skills/_shared/lane-contract.md +84 -0
- package/templates/skills/_shared/opus5-only.md +8 -8
- package/templates/skills/_shared/phases/README.md +142 -83
- package/templates/skills/_shared/phases/analyst-gates.md +125 -136
- package/templates/skills/_shared/phases/execution.md +8 -14
- package/templates/skills/_shared/phases/house-rules.md +27 -32
- package/templates/skills/_shared/phases/intake.md +127 -133
- package/templates/skills/_shared/phases/mock-example.md +46 -56
- package/templates/skills/_shared/phases/plan-handoff.md +91 -97
- package/templates/skills/_shared/phases/planning.md +7 -17
- package/templates/skills/_shared/phases/preflight.md +19 -42
- package/templates/skills/_shared/phases/review.md +23 -27
- package/templates/skills/_shared/phases/rules.md +18 -42
- package/templates/skills/_shared/phases/scoring.md +55 -65
- package/templates/skills/_shared/phases/security-checklist.md +46 -50
- package/templates/skills/_shared/phases/security.md +45 -55
- package/templates/skills/_shared/phases/ship.md +6 -15
- package/templates/skills/_shared/phases/stop-resume.md +2 -5
- package/templates/skills/_shared/phases/summary.md +73 -48
- package/templates/skills/_shared/phases/testgen.md +41 -51
- package/templates/skills/_shared/phases/trace-verbs.md +433 -0
- package/templates/skills/_shared/phases/trace.md +136 -367
- package/templates/skills/_shared/phases/verify.md +62 -70
- package/templates/skills/_shared/phases/wave-grouping.md +128 -133
- package/templates/skills/_shared/phases/wiki-consult.md +10 -6
- package/templates/skills/_shared/read-ladder.md +2 -55
- package/templates/skills/_shared/return-validation.md +17 -70
- package/templates/skills/_shared/review-slice.md +79 -0
- package/templates/skills/_shared/smoke-gate.md +46 -28
- package/templates/skills/context-combiner/SKILL.md +16 -45
- package/templates/skills/context-combiner/schemas/combined-report.md +78 -78
- package/templates/skills/orc/README.md +2 -2
- package/templates/skills/orc/SKILL.md +41 -69
- package/templates/skills/orc/config.md +9 -9
- package/templates/skills/orc/examples/full-run-mock.md +73 -73
- package/templates/skills/orc/references/effort-and-mode.md +222 -222
- package/templates/skills/orc/references/pattern-gate.md +89 -89
- package/templates/skills/orc/references/phases/intake.md +41 -47
- package/templates/skills/orc/references/phases/integration.md +13 -19
- package/templates/skills/orc/references/preflight-report.md +10 -11
- package/templates/skills/orc/references/ultra-mode.md +11 -9
- package/templates/skills/orc/subskills/orc-execution/SKILL.md +27 -73
- package/templates/skills/orc/subskills/orc-execution/core.md +12 -99
- package/templates/skills/orc/subskills/orc-execution/subagent.md +14 -13
- package/templates/skills/orc/subskills/orc-planner/SKILL.md +2 -2
- package/templates/skills/orc/subskills/orc-planner-mini/SKILL.md +121 -121
- package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +35 -76
- package/templates/skills/orc/subskills/orc-review-verify/core.md +52 -135
- package/templates/skills/orc/subskills/orc-review-verify/subagent.md +7 -7
- package/templates/skills/orc/subskills/orc-testgen/SKILL.md +34 -45
- package/templates/skills/orc/subskills/orc-testgen/core.md +20 -59
- package/templates/skills/orc/subskills/orc-testgen/subagent.md +7 -7
- package/templates/skills/orc-advisor/SKILL.md +56 -60
- package/templates/skills/orc-analyze/SKILL.md +32 -68
- package/templates/skills/orc-analyze/examples/analyze-mock.md +42 -42
- package/templates/skills/orc-analyze/schemas/report-audit.md +84 -83
- package/templates/skills/orc-analyze/schemas/report-prose.md +64 -63
- package/templates/skills/orc-analyze/schemas/report-requirement.md +78 -78
- package/templates/skills/orc-analyze-mini/SKILL.md +35 -70
- package/templates/skills/orc-challenge/README.md +142 -142
- package/templates/skills/orc-challenge/examples/council-full-roster.md +273 -273
- package/templates/skills/orc-challenge/references/council.md +315 -315
- package/templates/skills/orc-challenge/references/intake.md +171 -171
- package/templates/skills/orc-claude/SKILL.md +14 -14
- package/templates/skills/orc-diy/README.md +174 -143
- package/templates/skills/orc-diy/SKILL.md +23 -74
- package/templates/skills/orc-diy/references/blocks/pattern.md +18 -18
- package/templates/skills/orc-diy/references/flow-schema.md +1 -1
- package/templates/skills/orc-doc/README.md +229 -229
- package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +325 -325
- package/templates/skills/orc-doc/references/chunking.md +527 -527
- package/templates/skills/orc-fast/SKILL.md +45 -73
- package/templates/skills/orc-judge/SKILL.md +77 -82
- package/templates/skills/orc-learn/SKILL.md +14 -14
- package/templates/skills/orc-learn/examples/learn-run-mock.md +61 -61
- package/templates/skills/orc-mini/SKILL.md +65 -113
- package/templates/skills/orc-pattern/SKILL.md +27 -48
- package/templates/skills/orc-poly/SKILL.md +32 -61
- package/templates/skills/orc-pr-driver/SKILL.md +25 -51
- package/templates/skills/orc-pr-driver/references/green-gate.md +113 -105
- package/templates/skills/orc-pr-setup/SKILL.md +20 -45
- package/templates/skills/orc-quick/README.md +43 -2
- package/templates/skills/orc-quick/SKILL.md +76 -107
- package/templates/skills/orc-quick/references/dispatch-gate.md +16 -5
- package/templates/skills/orc-quick/references/gh-mode.md +48 -1
- package/templates/skills/orc-quick/references/look.md +3 -1
- package/templates/skills/orc-retro/SKILL.md +19 -18
- package/templates/skills/orc-retro/examples/retro-mock.md +1 -1
- package/templates/skills/orc-route/SKILL.md +25 -45
- package/templates/skills/orc-test/SKILL.md +16 -37
- package/templates/skills/orc-verify/SKILL.md +21 -39
- package/templates/skills/orc-verify/examples/verify-mock.md +33 -33
- package/templates/skills/orc-wait/SKILL.md +156 -163
- package/templates/skills/orc-wiki/references/extra.md +1 -1
- package/templates/skills/orc-wiki/references/phases/phase-0.md +1 -6
- package/templates/skills/orc-wiki/references/phases/phase-1.md +1 -6
- package/templates/skills/orc-wiki/references/phases/phase-2.md +1 -6
- package/templates/skills/orc-wiki/references/phases/phase-3.md +1 -6
- 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.
|
package/mock-run/orc-quick.md
CHANGED
|
@@ -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
|
-
|
|
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.
|