@azure-id/orc 0.56.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2367 -2218
- package/README-id.md +49 -107
- package/README.md +45 -133
- package/bin/build-agents.js +18 -11
- package/bin/cli.js +33060 -29855
- package/bin/onboarding-content.js +0 -3
- package/bin/test-run.js +491 -0
- package/bin/verify-contracts.js +4256 -3277
- package/bin/verify-package.js +563 -498
- package/bin/webui/api.js +1186 -1163
- package/bin/webui/app.html +9 -0
- package/bin/webui/css/06-responsive.css +120 -108
- package/bin/webui/css/panels/extra.css +29 -0
- package/bin/webui/css/panels/lanes.css +134 -0
- package/bin/webui/css/panels/settings.css +79 -3
- package/bin/webui/fixtures/extra.js +2036 -1934
- package/bin/webui/fixtures/flow.js +2 -2
- package/bin/webui/fixtures/index.js +503 -486
- package/bin/webui/fixtures/lanes.js +218 -0
- package/bin/webui/fixtures/settings.js +261 -34
- package/bin/webui/fixtures/stats.js +3 -3
- package/bin/webui/i18n/TERMS.md +135 -134
- package/bin/webui/i18n/en/extra.json +345 -313
- package/bin/webui/i18n/en/lanes.json +29 -0
- package/bin/webui/i18n/en/nav.json +1 -0
- package/bin/webui/i18n/en/overview.json +2 -0
- package/bin/webui/i18n/en/settings.json +16 -5
- package/bin/webui/i18n/id/extra.json +345 -313
- package/bin/webui/i18n/id/lanes.json +29 -0
- package/bin/webui/i18n/id/nav.json +1 -0
- package/bin/webui/i18n/id/overview.json +2 -0
- package/bin/webui/i18n/id/settings.json +15 -4
- package/bin/webui/js/01-i18n.js +1 -0
- package/bin/webui/js/panels/extra.js +3199 -3011
- package/bin/webui/js/panels/lanes.js +259 -0
- package/bin/webui/js/panels/overview.js +10 -0
- package/bin/webui/js/panels/settings.js +149 -3
- package/package.json +39 -39
- package/templates/agents/MODEL-MAPPING.md +23 -35
- package/templates/agents/orc-executor-opus-4-7-high.md +1 -1
- package/templates/agents/orc-executor-opus-4-7-med.md +1 -1
- package/templates/agents/orc-executor-opus-4-8-high.md +1 -1
- package/templates/agents/orc-executor-opus-5-high.md +1 -1
- package/templates/agents/orc-executor-opus-5-low.md +1 -1
- package/templates/agents/orc-executor-opus-5-med.md +1 -1
- package/templates/agents/orc-retro-opus-5-med.md +73 -73
- package/templates/agents/orc-retro-sonnet-5-high.md +72 -72
- package/templates/agents/orc-trace-writer-haiku-4-5.md +107 -107
- package/templates/commands/orc-route.md +1 -1
- package/templates/commands/orc.md +1 -1
- package/templates/skills/_shared/README.md +7 -3
- package/templates/skills/_shared/config-precedence.md +198 -0
- package/templates/skills/_shared/drift-recovery.md +1 -1
- package/templates/skills/_shared/extra-dispatch.md +159 -7
- package/templates/skills/_shared/interview.md +1 -1
- package/templates/skills/_shared/opus5-only.md +9 -7
- package/templates/skills/_shared/phases/README.md +82 -0
- package/templates/skills/{orc/references → _shared/phases}/analyst-gates.md +15 -3
- package/templates/skills/_shared/phases/execution.md +143 -0
- package/templates/skills/{orc/references → _shared/phases}/house-rules.md +13 -1
- package/templates/skills/{orc/references → _shared/phases}/intake.md +15 -2
- package/templates/skills/_shared/phases/mock-example.md +56 -0
- package/templates/skills/{orc/references → _shared/phases}/plan-handoff.md +16 -3
- package/templates/skills/_shared/phases/planning.md +135 -0
- package/templates/skills/_shared/phases/preflight.md +76 -0
- package/templates/skills/_shared/phases/review.md +53 -0
- package/templates/skills/_shared/phases/scoring.md +65 -0
- package/templates/skills/{orc/references → _shared/phases}/security-checklist.md +12 -1
- package/templates/skills/_shared/phases/security.md +55 -0
- package/templates/skills/_shared/phases/ship.md +88 -0
- package/templates/skills/{orc/references/stop-and-resume.md → _shared/phases/stop-resume.md} +169 -160
- package/templates/skills/_shared/phases/summary.md +48 -0
- package/templates/skills/_shared/phases/testgen.md +51 -0
- package/templates/skills/{orc/references/trace-protocol.md → _shared/phases/trace.md} +49 -6
- package/templates/skills/_shared/phases/verify.md +70 -0
- package/templates/skills/{orc/references → _shared/phases}/wave-grouping.md +14 -2
- package/templates/skills/{orc/references → _shared/phases}/wiki-consult.md +13 -1
- package/templates/skills/_shared/read-ladder.md +48 -0
- package/templates/skills/context-combiner/SKILL.md +214 -187
- package/templates/skills/orc/README.md +148 -150
- package/templates/skills/orc/SKILL.md +70 -358
- package/templates/skills/orc/config.md +137 -389
- package/templates/skills/orc/examples/full-run-mock.md +1 -1
- package/templates/skills/orc/references/effort-and-mode.md +16 -18
- package/templates/skills/orc/references/phases/intake.md +47 -0
- package/templates/skills/orc/references/phases/integration.md +19 -0
- package/templates/skills/orc/references/preflight-report.md +4 -4
- package/templates/skills/orc/references/ultra-mode.md +117 -123
- package/templates/skills/orc/schemas/planning-output.md +279 -279
- package/templates/skills/orc/subskills/orc-planner/SKILL.md +260 -264
- package/templates/skills/orc/subskills/orc-pr/stack-gate.md +4 -1
- package/templates/skills/orc-aftermath/SKILL.md +153 -136
- package/templates/skills/orc-analyze/SKILL.md +247 -220
- package/templates/skills/orc-analyze/references/branching.md +51 -51
- package/templates/skills/orc-analyze/references/thin-input.md +1 -1
- package/templates/skills/orc-analyze-mini/SKILL.md +128 -112
- package/templates/skills/orc-boundary/SKILL.md +244 -208
- package/templates/skills/orc-brainstorm/SKILL.md +372 -339
- package/templates/skills/orc-budget/SKILL.md +243 -225
- package/templates/skills/orc-challenge/README.md +1 -1
- package/templates/skills/orc-challenge/SKILL.md +293 -255
- package/templates/skills/orc-challenge/examples/council-full-roster.md +1 -1
- package/templates/skills/orc-claude/SKILL.md +216 -199
- package/templates/skills/orc-diy/README.md +2 -1
- package/templates/skills/orc-diy/SKILL.md +129 -70
- package/templates/skills/orc-diy/references/blocks/analyze.md +1 -1
- package/templates/skills/orc-diy/references/compile.md +21 -7
- package/templates/skills/orc-diy/references/flow-schema.md +2 -2
- package/templates/skills/orc-doc/SKILL.md +44 -7
- package/templates/skills/orc-explain/SKILL.md +19 -0
- package/templates/skills/orc-export/SKILL.md +26 -5
- package/templates/skills/orc-fast/SKILL.md +215 -187
- package/templates/skills/orc-grill/SKILL.md +233 -207
- package/templates/skills/orc-handoff/SKILL.md +223 -204
- package/templates/skills/orc-learn/SKILL.md +176 -156
- package/templates/skills/orc-mini/SKILL.md +41 -23
- package/templates/skills/orc-pact/SKILL.md +250 -218
- package/templates/skills/orc-pattern/SKILL.md +149 -124
- package/templates/skills/orc-poly/SKILL.md +237 -216
- package/templates/skills/orc-poly/references/gather.md +1 -1
- package/templates/skills/orc-pr-driver/SKILL.md +196 -167
- package/templates/skills/orc-pr-driver/references/orc-run-split.md +1 -1
- package/templates/skills/orc-pr-setup/SKILL.md +212 -184
- package/templates/skills/orc-quick/README.md +2 -2
- package/templates/skills/orc-quick/SKILL.md +45 -12
- package/templates/skills/orc-quick/references/dispatch-gate.md +2 -3
- package/templates/skills/orc-retro/SKILL.md +244 -222
- package/templates/skills/orc-retro/examples/retro-mock.md +171 -171
- package/templates/skills/orc-route/SKILL.md +183 -165
- package/templates/skills/orc-verify/SKILL.md +100 -86
- package/templates/skills/orc-wiki/SKILL.md +55 -206
- package/templates/skills/orc-wiki/references/phases/phase-0.md +71 -0
- package/templates/skills/orc-wiki/references/phases/phase-1.md +35 -0
- package/templates/skills/orc-wiki/references/phases/phase-2.md +52 -0
- package/templates/skills/orc-wiki/references/phases/phase-3.md +57 -0
- package/templates/skills/orc-wiki/references/phases/phase-3c.md +36 -0
- package/templates/agents/orc-advisor-fable-5.md +0 -50
- package/templates/agents/orc-analyst-fable-5.md +0 -115
- package/templates/agents/orc-judge-fable-5.md +0 -79
- package/templates/agents/orc-planner-fable-5.md +0 -152
- package/templates/agents/orc-reviewer-fable-5.md +0 -57
- package/templates/skills/_shared/fable5-override.md +0 -56
- package/templates/skills/orc-diy/references/blocks/execution.md +0 -42
- package/templates/skills/orc-diy/references/blocks/mock-example.md +0 -22
- package/templates/skills/orc-diy/references/blocks/planning.md +0 -34
- package/templates/skills/orc-diy/references/blocks/review.md +0 -18
- package/templates/skills/orc-diy/references/blocks/scoring.md +0 -16
- package/templates/skills/orc-diy/references/blocks/security.md +0 -25
- package/templates/skills/orc-diy/references/blocks/ship.md +0 -25
- package/templates/skills/orc-diy/references/blocks/summary.md +0 -18
- package/templates/skills/orc-diy/references/blocks/testgen.md +0 -17
- package/templates/skills/orc-diy/references/blocks/trace.md +0 -28
- package/templates/skills/orc-diy/references/blocks/verify.md +0 -25
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* fixtures/lanes.js — canned data for `orc ui --fixtures`.
|
|
3
|
+
The `orc lane` noun: the registry, one lane's phases, and the call catalogue.
|
|
4
|
+
|
|
5
|
+
THE RULE FOR EVERY FILE IN HERE: carry ONE OF EVERY STATE, including the
|
|
6
|
+
ugly ones. For this panel the states that matter are the ones a happy lane
|
|
7
|
+
never shows you:
|
|
8
|
+
|
|
9
|
+
· a lane with NO COMMAND — dispatched by something else, never invoked;
|
|
10
|
+
· a lane with NO SHARED PHASES — five keep their pipeline in their own
|
|
11
|
+
spine on purpose, and "none" has to read as an ANSWER rather than as a
|
|
12
|
+
fetch that failed;
|
|
13
|
+
· a phase whose `when` is not `always`, and one carrying `optional_when`;
|
|
14
|
+
· a phase that catalogues NO calls, beside one that catalogues seven;
|
|
15
|
+
· a call that COSTS something, beside the free ones.
|
|
16
|
+
|
|
17
|
+
Shapes MUST match what `bin/cli.js --json` really emits — a drifted fixture
|
|
18
|
+
is worse than no fixture. These were copied from `orc lane list --json`,
|
|
19
|
+
`orc lane phases <lane> --json` and `orc lane calls --all --json`. */
|
|
20
|
+
|
|
21
|
+
const laneList = {
|
|
22
|
+
ok: true,
|
|
23
|
+
count: 5,
|
|
24
|
+
lanes: [
|
|
25
|
+
// NO COMMAND, and the note that says what opens it instead. An unexplained
|
|
26
|
+
// null reads as an oversight, which is why the CLI refuses to have one.
|
|
27
|
+
{
|
|
28
|
+
lane: "context-combiner",
|
|
29
|
+
command: null,
|
|
30
|
+
command_note: "a PHASE inside an orc-analyze run — dispatched, never invoked (v0.42.0)",
|
|
31
|
+
keys: 2,
|
|
32
|
+
inert: 0,
|
|
33
|
+
},
|
|
34
|
+
{ lane: "orc", command: "/orc", command_note: null, keys: 40, inert: 0 },
|
|
35
|
+
{ lane: "orc-mini", command: "/orc-mini", command_note: null, keys: 9, inert: 0 },
|
|
36
|
+
// INERT rules — the count that tells you some of this lane's keys do
|
|
37
|
+
// nothing here however they are set.
|
|
38
|
+
{ lane: "orc-quick", command: "/orc-quick", command_note: null, keys: 6, inert: 5 },
|
|
39
|
+
{ lane: "orc-wiki", command: "/orc-wiki", command_note: null, keys: 11, inert: 0 },
|
|
40
|
+
],
|
|
41
|
+
aliases: {},
|
|
42
|
+
rank_states: ["resolved", "partly-resolved", "not-read", "inert", "demoted", "absent"],
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const lanePhases = {
|
|
46
|
+
orc: {
|
|
47
|
+
ok: true,
|
|
48
|
+
lane: "orc",
|
|
49
|
+
all: false,
|
|
50
|
+
count: 6,
|
|
51
|
+
layer_set: ["core", "full"],
|
|
52
|
+
phase_files: 6,
|
|
53
|
+
lanes: [
|
|
54
|
+
{
|
|
55
|
+
lane: "orc",
|
|
56
|
+
trace_tier: "Build lanes",
|
|
57
|
+
trace_token: "orc",
|
|
58
|
+
phases: [
|
|
59
|
+
{
|
|
60
|
+
ord: 1,
|
|
61
|
+
id: "preflight",
|
|
62
|
+
file: "_shared/phases/preflight.md",
|
|
63
|
+
layers: ["core", "full"],
|
|
64
|
+
read: "whole",
|
|
65
|
+
when: "always",
|
|
66
|
+
optional_when: null,
|
|
67
|
+
calls: [
|
|
68
|
+
"lane-config",
|
|
69
|
+
"wiki-status",
|
|
70
|
+
"pattern-status",
|
|
71
|
+
"gotcha-status",
|
|
72
|
+
"pact-status",
|
|
73
|
+
"boundary-status",
|
|
74
|
+
"aftermath-status",
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
// A phase that catalogues NO call, directly beside one that
|
|
78
|
+
// catalogues seven — the empty list has to be visibly empty.
|
|
79
|
+
{
|
|
80
|
+
ord: 2,
|
|
81
|
+
id: "trace",
|
|
82
|
+
file: "_shared/phases/trace.md",
|
|
83
|
+
layers: ["core"],
|
|
84
|
+
read: "whole",
|
|
85
|
+
when: "always",
|
|
86
|
+
optional_when: null,
|
|
87
|
+
calls: [],
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
ord: 3,
|
|
91
|
+
id: "intake",
|
|
92
|
+
file: "_shared/phases/intake.md",
|
|
93
|
+
layers: ["core"],
|
|
94
|
+
read: "whole",
|
|
95
|
+
when: "on-phase",
|
|
96
|
+
optional_when: null,
|
|
97
|
+
calls: [],
|
|
98
|
+
},
|
|
99
|
+
// A row that names a HEADING rather than a file — the manifest rule
|
|
100
|
+
// says a row is one or the other, never both and never neither.
|
|
101
|
+
{
|
|
102
|
+
ord: 4,
|
|
103
|
+
id: "waves",
|
|
104
|
+
file: null,
|
|
105
|
+
heading: "## Phase 4 — waves",
|
|
106
|
+
layers: ["core"],
|
|
107
|
+
read: "section",
|
|
108
|
+
when: "on-phase",
|
|
109
|
+
optional_when: null,
|
|
110
|
+
calls: ["boundary-status"],
|
|
111
|
+
},
|
|
112
|
+
// OPTIONAL, with the condition spelled out. A phase that only
|
|
113
|
+
// sometimes runs and does not say when is a phase nobody can plan
|
|
114
|
+
// around.
|
|
115
|
+
{
|
|
116
|
+
ord: 5,
|
|
117
|
+
id: "security",
|
|
118
|
+
file: "_shared/phases/security.md",
|
|
119
|
+
layers: ["full"],
|
|
120
|
+
read: "whole",
|
|
121
|
+
when: "on-phase",
|
|
122
|
+
optional_when: "only when security_review is on and a task scored >= 70",
|
|
123
|
+
calls: [],
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
ord: 6,
|
|
127
|
+
id: "stop-resume",
|
|
128
|
+
file: "_shared/phases/stop-resume.md",
|
|
129
|
+
layers: ["core"],
|
|
130
|
+
read: "whole",
|
|
131
|
+
when: "always",
|
|
132
|
+
optional_when: null,
|
|
133
|
+
calls: ["run-list"],
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
},
|
|
139
|
+
// IN-SPINE: no shared phases at all. This is the state the panel has to
|
|
140
|
+
// render as an answer — five lanes are deliberately like this, and a blank
|
|
141
|
+
// card would make "this lane owns its pipeline" look like "the read failed".
|
|
142
|
+
"orc-mini": {
|
|
143
|
+
ok: true,
|
|
144
|
+
lane: "orc-mini",
|
|
145
|
+
all: false,
|
|
146
|
+
count: 0,
|
|
147
|
+
layer_set: [],
|
|
148
|
+
phase_files: 0,
|
|
149
|
+
lanes: [{ lane: "orc-mini", trace_tier: "Build lanes", trace_token: "orc-mini", phases: [] }],
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
const laneCalls = {
|
|
154
|
+
ok: true,
|
|
155
|
+
lane: null,
|
|
156
|
+
all: true,
|
|
157
|
+
count: 4,
|
|
158
|
+
calls: [
|
|
159
|
+
{
|
|
160
|
+
id: "lane-config",
|
|
161
|
+
cmd: "orc lane config <lane> [--json]",
|
|
162
|
+
what: "what did this lane's config resolve to, with every shadow and inertness already worded",
|
|
163
|
+
exits: { 0: "answered", 2: "unknown lane" },
|
|
164
|
+
states: null,
|
|
165
|
+
cost: "free",
|
|
166
|
+
when: "once, at preflight, before the first decision that reads a setting",
|
|
167
|
+
on_absent:
|
|
168
|
+
"exit ≠ 0 → say the CLI is unavailable and use the documented defaults, out loud, treating every P0 forcing mode as OFF",
|
|
169
|
+
never:
|
|
170
|
+
"never merge `.claude/orc.config.yaml` yourself, and never re-derive a precedence — the answer already carries it",
|
|
171
|
+
canonical: "_shared/config-precedence.md",
|
|
172
|
+
lanes: ["orc", "orc-mini", "orc-quick", "orc-wiki"],
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
id: "wiki-status",
|
|
176
|
+
cmd: "orc wiki status [--json]",
|
|
177
|
+
what: "does a wiki exist here, and how stale is its worst doc",
|
|
178
|
+
exits: { 0: "answered in every state, including none" },
|
|
179
|
+
states: ["none", "unregistered", "FRESH", "AGING", "STALE"],
|
|
180
|
+
cost: "free",
|
|
181
|
+
when: "once, at preflight",
|
|
182
|
+
on_absent: "state `none` is an ANSWER — there is no wiki, so nothing consults one",
|
|
183
|
+
never: "never compute the tier yourself, and never store it",
|
|
184
|
+
canonical: "_shared/detecting-artifacts.md",
|
|
185
|
+
lanes: ["orc", "orc-fast", "orc-learn", "orc-wiki"],
|
|
186
|
+
},
|
|
187
|
+
// A call that COSTS. Every other row here is free, and a panel where every
|
|
188
|
+
// chip says the same word teaches nothing.
|
|
189
|
+
{
|
|
190
|
+
id: "wiki-refresh",
|
|
191
|
+
cmd: "/orc-wiki refresh --top <n>",
|
|
192
|
+
what: "re-scan the ranked docs a delta actually touched",
|
|
193
|
+
exits: { 0: "refreshed", 1: "nothing pending" },
|
|
194
|
+
states: null,
|
|
195
|
+
cost: "paid",
|
|
196
|
+
when: "only when the user asked for it, and only after every free repair ran",
|
|
197
|
+
on_absent: "nothing pending is an ANSWER — do not scan to produce work",
|
|
198
|
+
never: "never run it to clear a caution the free repairs would have cleared",
|
|
199
|
+
canonical: "orc-wiki/references/staleness.md",
|
|
200
|
+
lanes: ["orc-wiki"],
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
id: "run-list",
|
|
204
|
+
cmd: "orc run list [--limit <n>] [--json]",
|
|
205
|
+
what: "which runs are unfinished, and what each one was doing when it stopped",
|
|
206
|
+
exits: { 0: "answered, including an empty list" },
|
|
207
|
+
states: null,
|
|
208
|
+
cost: "free",
|
|
209
|
+
when: "at a stop, and when the user asks what is open",
|
|
210
|
+
on_absent: "an empty list is an ANSWER — no run is waiting",
|
|
211
|
+
never: "never claim a run finished; the disk only proves it stopped",
|
|
212
|
+
canonical: "_shared/phases/stop-resume.md",
|
|
213
|
+
lanes: ["orc", "orc-doc", "orc-mini"],
|
|
214
|
+
},
|
|
215
|
+
],
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
module.exports = { laneList, lanePhases, laneCalls };
|
|
@@ -9,7 +9,10 @@
|
|
|
9
9
|
test asserts this, so a new state cannot ship without one.
|
|
10
10
|
|
|
11
11
|
Shapes MUST match what `bin/cli.js --json` really emits — a drifted
|
|
12
|
-
fixture is worse than no fixture.
|
|
12
|
+
fixture is worse than no fixture. The v1.0.0 W2 fields (answers/family/prio/
|
|
13
|
+
lanes/gated_by per key, and the `families` table) were copied straight from
|
|
14
|
+
the live registry for that reason — a shadow you can design against has to
|
|
15
|
+
carry the RANK that causes it, not just the sentence. */
|
|
13
16
|
|
|
14
17
|
const { PROJECT } = require("./shell.js");
|
|
15
18
|
|
|
@@ -17,40 +20,52 @@ const config = {
|
|
|
17
20
|
config_path: PROJECT + "/.claude/orc.config.yaml",
|
|
18
21
|
exists: true,
|
|
19
22
|
keys: [
|
|
20
|
-
{ key: "max_wave_tasks", tier: "common", value: 4, default: 3, is_overridden: true, is_shadowed: false, shadow_reason: null, desc: "Max parallel tasks per execution wave (higher = more parallelism, more collision risk).", options: [2, 3, 4, 5], control: { kind: "int", choices: null, min: 1, max: null } },
|
|
21
|
-
{ key: "batch_pause_every", tier: "common", value: 2, default: 2, is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "Waves between stop-and-continue pauses (1 = pause every wave).", options: [1, 2, 3, 4, 5], control: { kind: "int", choices: null, min: 1, max: null } },
|
|
22
|
-
{ key: "rubric_bands", tier: "common", value: 5, default: 5, is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "Scoring granularity (2-5 narrow preset, 6-8 wide preset).", options: [2, 3, 4, 5, 6, 7, 8], control: { kind: "range", choices: null, min: 2, max: 8 } },
|
|
23
|
-
{ key: "pattern_findings", tier: "common", value: "on", default: "ask", is_overridden: true, is_shadowed: false, shadow_reason: null, desc: "Code-pattern gate on an FE/BE cache miss.", options: ["ask", "on", "off"], control: { kind: "enum", choices: ["ask", "on", "off"], min: null, max: null } },
|
|
24
|
-
{ key: "generate_tests", tier: "common", value: false, default: false, is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "Opt-in Phase 6.5: author test cases before ship.", options: ["true", "false"], control: { kind: "enum", choices: ["true", "false"], min: null, max: null } },
|
|
25
|
-
// ON,
|
|
26
|
-
// §6.2 calls the single best argument for the project.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
{ key: "
|
|
31
|
-
{ key: "wiki_fresh_max", tier: "advanced", value: 10, default: 10, is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "Wiki freshness: commit distance < this → FRESH.", options: null, control: { kind: "int", choices: null, min: 1, max: null } },
|
|
32
|
-
{ key: "wiki_aging_max", tier: "advanced", value: 30, default: 30, is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "Wiki freshness: commit distance <= this → AGING; beyond → STALE.", options: null, control: { kind: "int", choices: null, min: 1, max: null } },
|
|
33
|
-
{ key: "log_dir", tier: "advanced", value: ".claude/orc/logs", default: ".claude/orc/logs", is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "Persistent trace folder (never auto-deleted).", options: null, control: { kind: "path", choices: null, min: null, max: null } },
|
|
34
|
-
{ key: "retro_repo", tier: "advanced", value: "azure-id/orc", default: "azure-id/orc", is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "GitHub owner/repo that receives /orc-retro reports.", options: null, control: { kind: "repo", choices: null, min: null, max: null } },
|
|
23
|
+
{ key: "max_wave_tasks", tier: "common", answers: [{"family":"waves","prio":"P2","mode":"replace"}], family: "waves", prio: "P2", lanes: ["orc","orc-diy"], gated_by: null, value: 4, default: 3, is_overridden: true, is_shadowed: false, shadow_reason: null, desc: "Max parallel tasks per execution wave (higher = more parallelism, more collision risk).", options: [2, 3, 4, 5], control: { kind: "int", choices: null, min: 1, max: null } },
|
|
24
|
+
{ key: "batch_pause_every", tier: "common", answers: [{"family":"waves","prio":"P2","mode":"replace"}], family: "waves", prio: "P2", lanes: ["orc","orc-diy"], gated_by: null, value: 2, default: 2, is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "Waves between stop-and-continue pauses (1 = pause every wave).", options: [1, 2, 3, 4, 5], control: { kind: "int", choices: null, min: 1, max: null } },
|
|
25
|
+
{ key: "rubric_bands", tier: "common", answers: [{"family":"scoring","prio":"P2","mode":"replace"}], family: "scoring", prio: "P2", lanes: ["orc","orc-diy"], gated_by: null, value: 5, default: 5, is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "Scoring granularity (2-5 narrow preset, 6-8 wide preset).", options: [2, 3, 4, 5, 6, 7, 8], control: { kind: "range", choices: null, min: 2, max: 8 } },
|
|
26
|
+
{ key: "pattern_findings", tier: "common", answers: [{"family":"patterns","prio":"P2","mode":"replace"}], family: "patterns", prio: "P2", lanes: ["orc","orc-pattern","orc-wiki"], gated_by: null, value: "on", default: "ask", is_overridden: true, is_shadowed: false, shadow_reason: null, desc: "Code-pattern gate on an FE/BE cache miss.", options: ["ask", "on", "off"], control: { kind: "enum", choices: ["ask", "on", "off"], min: null, max: null } },
|
|
27
|
+
{ key: "generate_tests", tier: "common", answers: [{"family":"testing","prio":"P2","mode":"replace"}], family: "testing", prio: "P2", lanes: ["orc","orc-mini"], gated_by: null, value: false, default: false, is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "Opt-in Phase 6.5: author test cases before ship.", options: ["true", "false"], control: { kind: "enum", choices: ["true", "false"], min: null, max: null } },
|
|
28
|
+
// ON, and PARTLY SHADOWED by the extra overlay above it — the animation
|
|
29
|
+
// §6.2 calls the single best argument for the project. Since v1.0.0 W3
|
|
30
|
+
// removed the Fable 5 block, the overlay is the ONLY way a registry key
|
|
31
|
+
// reaches `is_shadowed`, so this row is the fixture set's whole coverage of
|
|
32
|
+
// that state. Do not quietly make it false.
|
|
33
|
+
{ key: "opus5_only", tier: "common", answers: [{"family":"executor-band","prio":"P1","mode":"replace"},{"family":"fixed-role-model","prio":"P1","mode":"replace"}], family: "executor-band", prio: "P1", lanes: ["orc","orc-analyze","orc-challenge","orc-claude","orc-diy","orc-doc","orc-fast","orc-mini","orc-pattern","orc-quick","orc-retro","orc-wiki"], gated_by: null, value: "true", default: false, is_overridden: true, is_shadowed: true, shadow_reason: "partly shadowed by extra_enabled — [0,30), [30,55), [50,60), [60,70) are routed to a non-Claude worker; the quick-executor, doc-writer position is held by one too (not consulted here); every other score and position still resolves here", desc: "EVERY dispatched role uses ONE model — Opus 5 — with EFFORT as the cost dial.", options: ["true", "false"], control: { kind: "enum", choices: ["true", "false"], min: null, max: null } },
|
|
34
|
+
{ key: "wiki_fresh_max", tier: "advanced", answers: [{"family":"wiki","prio":"P2","mode":"replace"}], family: "wiki", prio: "P2", lanes: ["orc","orc-fast","orc-learn","orc-wiki"], gated_by: null, value: 10, default: 10, is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "Wiki freshness: commit distance < this → FRESH.", options: null, control: { kind: "int", choices: null, min: 1, max: null } },
|
|
35
|
+
{ key: "wiki_aging_max", tier: "advanced", answers: [{"family":"wiki","prio":"P2","mode":"replace"}], family: "wiki", prio: "P2", lanes: ["orc","orc-fast","orc-learn","orc-wiki"], gated_by: null, value: 30, default: 30, is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "Wiki freshness: commit distance <= this → AGING; beyond → STALE.", options: null, control: { kind: "int", choices: null, min: 1, max: null } },
|
|
36
|
+
{ key: "log_dir", tier: "advanced", answers: [{"family":"paths","prio":"P2","mode":"replace"}], family: "paths", prio: "P2", lanes: ["context-combiner","orc","orc-aftermath","orc-analyze","orc-analyze-mini","orc-boundary","orc-brainstorm","orc-budget","orc-challenge","orc-claude","orc-diy","orc-doc","orc-explain","orc-export","orc-fast","orc-grill","orc-handoff","orc-learn","orc-mini","orc-pact","orc-pattern","orc-poly","orc-pr-driver","orc-pr-setup","orc-quick","orc-retro","orc-route","orc-verify","orc-wiki"], gated_by: null, value: ".claude/orc/logs", default: ".claude/orc/logs", is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "Persistent trace folder (never auto-deleted).", options: null, control: { kind: "path", choices: null, min: null, max: null } },
|
|
37
|
+
{ key: "retro_repo", tier: "advanced", answers: [{"family":"retro","prio":"P2","mode":"replace"}], family: "retro", prio: "P2", lanes: ["orc","orc-retro"], gated_by: null, value: "azure-id/orc", default: "azure-id/orc", is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "GitHub owner/repo that receives /orc-retro reports.", options: null, control: { kind: "repo", choices: null, min: null, max: null } },
|
|
35
38
|
// v0.50.0 — the nine `orc extra` keys, copied from the live registry so the
|
|
36
39
|
// shapes cannot drift. `extra_enabled` is TRUE here on purpose: an ARMED
|
|
37
40
|
// subsystem is the state that needs designing.
|
|
38
|
-
{"key": "extra_enabled", "tier": "common", "value": true, "default": false, "is_overridden": true, "is_shadowed": false, "shadow_reason": null, "desc": "Master gate for `orc extra` — dispatching a scored task to a non-Claude worker (DeepSeek, GLM, Kimi, a local Ollama, any OpenAI-/Anthropic-compatible endpoint you can name). NOTHING changes unless true
|
|
39
|
-
{"key": "extra_roles", "tier": "common", "value": "[executor]", "default": "[executor]", "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "Which dispatched roles may go foreign (CSV). Executor only by default, deliberately: an executor's output is checked by the smoke gate, the TDD gate, the reviewer and the worktree-delta check, all of which are engine-blind — while a REVIEWER you cannot trust is worse than no reviewer at all, because it launders a finding nobody made.", "options": ["executor", "reviewer", "verifier", "analyst", "planner", "scout", "test-author", "doc-writer", "doc-checker"], "control": {"kind": "subset", "choices": ["executor", "reviewer", "verifier", "analyst", "planner", "scout", "test-author", "doc-writer", "doc-checker"], "min": null, "max": null}},
|
|
40
|
-
{"key": "extra_risk_tasks", "tier": "common", "value": "off", "default": "off", "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "Whether a task with a non-empty cited `risk[]` (auth, money, migration, security, concurrency, data-integrity) may leave Claude. OFF holds it on the Claude ladder whatever the route table says, and the preflight NAMES it as held back. ORC already refuses to send a refund-endpoint change to a cheap model; this keeps Extra from becoming the hole in that rule.", "options": ["off", "on"], "control": {"kind": "enum", "choices": ["off", "on"], "min": null, "max": null}},
|
|
41
|
-
{"key": "extra_on_failure", "tier": "common", "value": "fallback", "default": "fallback", "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "What an unreachable endpoint, a 401, a 429 past backoff, a timeout or a malformed return does. `fallback` re-dispatches the task to the Claude band it would have had, ANNOUNCED, and the run continues. `stop` is for people who would rather stop than silently start paying Anthropic rates. A failed foreign dispatch is never a dead run either way.", "options": ["fallback", "stop"], "control": {"kind": "enum", "choices": ["fallback", "stop"], "min": null, "max": null}},
|
|
42
|
-
{"key": "extra_max_concurrent", "tier": "common", "value": 1, "default": 1, "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "Foreign dispatches in flight at once. Per-provider rate limits are undocumented in aggregate, so 1 is the honest default — a wave of 3 that 429s costs more in repairs than the parallelism saved.", "options": [1, 2, 3], "control": {"kind": "int", "choices": null, "min": 1, "max": null}},
|
|
43
|
-
{"key": "extra_unlock", "tier": "common", "value": "per-run", "default": "per-run", "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "When a vault-stored key asks for its passphrase. `per-run` asks ONCE at the Phase-1 stop the lane already has, so an unattended wave can actually run. `per-dispatch` prompts every time and REFUSES to start an unattended wave, naming why — it is interactive-only by design. Irrelevant when the credential source is an environment variable, which is the recommended one.", "options": ["per-run", "per-dispatch"], "control": {"kind": "enum", "choices": ["per-run", "per-dispatch"], "min": null, "max": null}},
|
|
44
|
-
{"key": "extra_vault_max_attempts", "tier": "advanced", "value": 10, "default": 10, "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "Wrong passphrases before the encrypted key DELETES ITSELF. It is a key rather than a magic number so the count is inspectable and testable — NOT so it can be switched off; below 3 is refused. The counter stops someone at your keyboard; it does not stop someone who copies the vault file and tries offline, and scrypt's cost is the only defence there.", "options": null, "control": {"kind": "int", "choices": null, "min": 3, "max": null}},
|
|
45
|
-
{"key": "extra_timeout_s", "tier": "advanced", "value": 900, "default": 900, "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "Per-dispatch wall clock for a foreign worker. The child's own timeouts are DERIVED from this rather than set independently, so three timeouts cannot disagree about which one fires first.", "options": null, "control": {"kind": "int", "choices": null, "min": 30, "max": null}},
|
|
46
|
-
{"key": "extra_verify_max_days", "tier": "advanced", "value": 7, "default": 7, "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "Past this a profile's verification reads STALE and is re-pinged before wave 1. A STALE profile STILL ROUTES — a stale check is not a failed one (the /orc-pact UNCHECKABLE rule) — and freshness is computed on read, never stored.", "options": null, "control": {"kind": "int", "choices": null, "min": 1, "max": null}},
|
|
47
|
-
{ key: "orchestrator_model", tier: "advanced", value: "claude-opus-4-8", tierNote: null, default: "claude-opus-4-8", is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "Main-session model (below Opus breaks the tier ladder).", options: null, control: { kind: "enum", choices: ["claude-opus-5", "claude-opus-4-8", "claude-sonnet-5"], min: null, max: null } },
|
|
41
|
+
{"key": "extra_enabled", "tier": "common", answers: [{"family":"executor-band","prio":"P0","mode":"overlay"},{"family":"fixed-role-model","prio":"P0","mode":"overlay"}], family: "executor-band", prio: "P0", lanes: ["orc","orc-boundary","orc-challenge","orc-diy","orc-doc","orc-fast","orc-mini","orc-quick","orc-wiki"], gated_by: null, "value": true, "default": false, "is_overridden": true, "is_shadowed": false, "shadow_reason": null, "desc": "Master gate for `orc extra` — dispatching a scored task to a non-Claude worker (DeepSeek, GLM, Kimi, a local Ollama, any OpenAI-/Anthropic-compatible endpoint you can name). NOTHING changes unless true. The orchestrator always stays Claude; what moves is who executes a slice. Every run that will cross the boundary PRINTS it at Phase 1 — routing work off Claude silently is the failure mode this whole subsystem is shaped around.", "options": ["true", "false"], "control": {"kind": "enum", "choices": ["true", "false"], "min": null, "max": null}},
|
|
42
|
+
{"key": "extra_roles", "tier": "common", answers: [{"family":"extra","prio":"P2","mode":"replace"}], family: "extra", prio: "P2", lanes: ["orc-doc","orc-wiki"], gated_by: "extra_enabled", "value": "[executor]", "default": "[executor]", "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "Which dispatched roles may go foreign (CSV). Executor only by default, deliberately: an executor's output is checked by the smoke gate, the TDD gate, the reviewer and the worktree-delta check, all of which are engine-blind — while a REVIEWER you cannot trust is worse than no reviewer at all, because it launders a finding nobody made.", "options": ["executor", "reviewer", "verifier", "analyst", "planner", "scout", "test-author", "doc-writer", "doc-checker"], "control": {"kind": "subset", "choices": ["executor", "reviewer", "verifier", "analyst", "planner", "scout", "test-author", "doc-writer", "doc-checker"], "min": null, "max": null}},
|
|
43
|
+
{"key": "extra_risk_tasks", "tier": "common", answers: [{"family":"extra","prio":"P2","mode":"replace"}], family: "extra", prio: "P2", lanes: ["orc","orc-diy","orc-mini"], gated_by: "extra_enabled", "value": "off", "default": "off", "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "Whether a task with a non-empty cited `risk[]` (auth, money, migration, security, concurrency, data-integrity) may leave Claude. OFF holds it on the Claude ladder whatever the route table says, and the preflight NAMES it as held back. ORC already refuses to send a refund-endpoint change to a cheap model; this keeps Extra from becoming the hole in that rule.", "options": ["off", "on"], "control": {"kind": "enum", "choices": ["off", "on"], "min": null, "max": null}},
|
|
44
|
+
{"key": "extra_on_failure", "tier": "common", answers: [{"family":"extra","prio":"P2","mode":"replace"}], family: "extra", prio: "P2", lanes: ["orc-quick","orc-wiki"], gated_by: "extra_enabled", "value": "fallback", "default": "fallback", "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "What an unreachable endpoint, a 401, a 429 past backoff, a timeout or a malformed return does. `fallback` re-dispatches the task to the Claude band it would have had, ANNOUNCED, and the run continues. `stop` is for people who would rather stop than silently start paying Anthropic rates. A failed foreign dispatch is never a dead run either way.", "options": ["fallback", "stop"], "control": {"kind": "enum", "choices": ["fallback", "stop"], "min": null, "max": null}},
|
|
45
|
+
{"key": "extra_max_concurrent", "tier": "common", answers: [{"family":"extra","prio":"P2","mode":"replace"}], family: "extra", prio: "P2", lanes: [], gated_by: "extra_enabled", "value": 1, "default": 1, "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "Foreign dispatches in flight at once. Per-provider rate limits are undocumented in aggregate, so 1 is the honest default — a wave of 3 that 429s costs more in repairs than the parallelism saved.", "options": [1, 2, 3], "control": {"kind": "int", "choices": null, "min": 1, "max": null}},
|
|
46
|
+
{"key": "extra_unlock", "tier": "common", answers: [{"family":"extra","prio":"P2","mode":"replace"}], family: "extra", prio: "P2", lanes: [], gated_by: "extra_enabled", "value": "per-run", "default": "per-run", "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "When a vault-stored key asks for its passphrase. `per-run` asks ONCE at the Phase-1 stop the lane already has, so an unattended wave can actually run. `per-dispatch` prompts every time and REFUSES to start an unattended wave, naming why — it is interactive-only by design. Irrelevant when the credential source is an environment variable, which is the recommended one.", "options": ["per-run", "per-dispatch"], "control": {"kind": "enum", "choices": ["per-run", "per-dispatch"], "min": null, "max": null}},
|
|
47
|
+
{"key": "extra_vault_max_attempts", "tier": "advanced", answers: [{"family":"extra","prio":"P2","mode":"replace"}], family: "extra", prio: "P2", lanes: [], gated_by: "extra_enabled", "value": 10, "default": 10, "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "Wrong passphrases before the encrypted key DELETES ITSELF. It is a key rather than a magic number so the count is inspectable and testable — NOT so it can be switched off; below 3 is refused. The counter stops someone at your keyboard; it does not stop someone who copies the vault file and tries offline, and scrypt's cost is the only defence there.", "options": null, "control": {"kind": "int", "choices": null, "min": 3, "max": null}},
|
|
48
|
+
{"key": "extra_timeout_s", "tier": "advanced", answers: [{"family":"extra","prio":"P2","mode":"replace"}], family: "extra", prio: "P2", lanes: [], gated_by: "extra_enabled", "value": 900, "default": 900, "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "Per-dispatch wall clock for a foreign worker. The child's own timeouts are DERIVED from this rather than set independently, so three timeouts cannot disagree about which one fires first.", "options": null, "control": {"kind": "int", "choices": null, "min": 30, "max": null}},
|
|
49
|
+
{"key": "extra_verify_max_days", "tier": "advanced", answers: [{"family":"extra","prio":"P2","mode":"replace"}], family: "extra", prio: "P2", lanes: [], gated_by: "extra_enabled", "value": 7, "default": 7, "is_overridden": false, "is_shadowed": false, "shadow_reason": null, "desc": "Past this a profile's verification reads STALE and is re-pinged before wave 1. A STALE profile STILL ROUTES — a stale check is not a failed one (the /orc-pact UNCHECKABLE rule) — and freshness is computed on read, never stored.", "options": null, "control": {"kind": "int", "choices": null, "min": 1, "max": null}},
|
|
50
|
+
{ key: "orchestrator_model", tier: "advanced", answers: [{"family":"session","prio":"P2","mode":"replace"}], family: "session", prio: "P2", lanes: ["orc"], gated_by: null, value: "claude-opus-4-8", tierNote: null, default: "claude-opus-4-8", is_overridden: false, is_shadowed: false, shadow_reason: null, desc: "Main-session model (below Opus breaks the tier ladder).", options: null, control: { kind: "enum", choices: ["claude-opus-5", "claude-opus-4-8", "claude-sonnet-5"], min: null, max: null } },
|
|
48
51
|
],
|
|
49
52
|
// The registry-less, hand-written key — read-only everywhere, and shadowed here.
|
|
50
53
|
hand_edited: [
|
|
51
|
-
{ key: "rubric_bands_override", value: "[[0,50,'orc-executor-sonnet-5-high'],[50,100,'orc-executor-opus-5-high']]", is_shadowed: true, shadow_reason: "shadowed by opus5_only — executors use the fixed
|
|
54
|
+
{ key: "rubric_bands_override", value: "[[0,50,'orc-executor-sonnet-5-high'],[50,100,'orc-executor-opus-5-high']]", is_shadowed: true, shadow_reason: "shadowed by opus5_only — executors use the fixed 2-band Opus 5 ladder", editable: false },
|
|
52
55
|
],
|
|
53
56
|
legacy_keys: [{ key: "opus5_executor_only", renamed_to: "opus5_only" }],
|
|
57
|
+
// A key that was REMOVED, not renamed — the ugly state `--fixtures` exists to
|
|
58
|
+
// carry. You cannot design the "still on disk, no longer read" row against a
|
|
59
|
+
// clean config, and a panel that renders it as an editable setting is the
|
|
60
|
+
// failure this field prevents.
|
|
61
|
+
retired_keys: [
|
|
62
|
+
{
|
|
63
|
+
key: "fable5_enabled",
|
|
64
|
+
value: "true",
|
|
65
|
+
removed_in: "1.0.0",
|
|
66
|
+
why: "the Fable 5 role override was removed — every role dispatches its shipped Claude agent, or the Opus 5 variant under opus5_only",
|
|
67
|
+
},
|
|
68
|
+
],
|
|
54
69
|
score_table: {
|
|
55
70
|
active: "opus5_only",
|
|
56
71
|
default: [
|
|
@@ -58,17 +73,229 @@ const config = {
|
|
|
58
73
|
{ from: 30, to: 40, inclusive_to: false, agent: "orc-executor-sonnet-4-6-med" },
|
|
59
74
|
{ from: 40, to: 55, inclusive_to: false, agent: "orc-executor-sonnet-4-6-high" },
|
|
60
75
|
{ from: 55, to: 65, inclusive_to: false, agent: "orc-executor-sonnet-5-high" },
|
|
61
|
-
{ from: 65, to:
|
|
62
|
-
{ from:
|
|
63
|
-
{ from: 80, to: 90, inclusive_to: false, agent: "orc-executor-opus-4-8-high" },
|
|
64
|
-
{ from: 90, to: 100, inclusive_to: true, agent: "orc-executor-opus-5-high" },
|
|
76
|
+
{ from: 65, to: 90, inclusive_to: false, agent: "orc-executor-opus-5-low" },
|
|
77
|
+
{ from: 90, to: 100, inclusive_to: true, agent: "orc-executor-opus-5-med" },
|
|
65
78
|
],
|
|
66
79
|
opus5_only: [
|
|
67
|
-
{ from: 0, to:
|
|
68
|
-
{ from:
|
|
69
|
-
{ from: 80, to: 100, inclusive_to: true, agent: "orc-executor-opus-5-high" },
|
|
80
|
+
{ from: 0, to: 90, inclusive_to: false, agent: "orc-executor-opus-5-low" },
|
|
81
|
+
{ from: 90, to: 100, inclusive_to: true, agent: "orc-executor-opus-5-med" },
|
|
70
82
|
],
|
|
71
83
|
},
|
|
84
|
+
families: {
|
|
85
|
+
"executor-band": {
|
|
86
|
+
"contested": true,
|
|
87
|
+
"question": "which model executes a SCORED task",
|
|
88
|
+
"ranks": [
|
|
89
|
+
{
|
|
90
|
+
"prio": "P0",
|
|
91
|
+
"key": "extra_enabled",
|
|
92
|
+
"mode": "overlay"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"prio": "P1",
|
|
96
|
+
"key": "opus5_only",
|
|
97
|
+
"mode": "replace"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"prio": "P2",
|
|
101
|
+
"key": "rubric_bands_override",
|
|
102
|
+
"mode": "replace",
|
|
103
|
+
"registry_less": true,
|
|
104
|
+
"shadow_note": "shadowed by {by} — executors use the fixed 2-band Opus 5 ladder"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"prio": "P3",
|
|
108
|
+
"key": null,
|
|
109
|
+
"terminal": "the shipped score→model table"
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
"fixed-role-model": {
|
|
114
|
+
"contested": true,
|
|
115
|
+
"question": "which model runs a role that has no score",
|
|
116
|
+
"ranks": [
|
|
117
|
+
{
|
|
118
|
+
"prio": "P0",
|
|
119
|
+
"key": "extra_enabled",
|
|
120
|
+
"mode": "overlay"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"prio": "P1",
|
|
124
|
+
"key": "opus5_only",
|
|
125
|
+
"mode": "replace"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"prio": "P2",
|
|
129
|
+
"key": null,
|
|
130
|
+
"terminal": "the agent shipped for that position"
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
},
|
|
134
|
+
"waves": {
|
|
135
|
+
"contested": false,
|
|
136
|
+
"question": "how a run is broken into waves and when it pauses"
|
|
137
|
+
},
|
|
138
|
+
"scoring": {
|
|
139
|
+
"contested": false,
|
|
140
|
+
"question": "how finely a task is scored"
|
|
141
|
+
},
|
|
142
|
+
"analysis": {
|
|
143
|
+
"contested": false,
|
|
144
|
+
"question": "how wide the analyst sweeps before planning"
|
|
145
|
+
},
|
|
146
|
+
"testing": {
|
|
147
|
+
"contested": false,
|
|
148
|
+
"question": "which tests a run writes, and how long it repairs"
|
|
149
|
+
},
|
|
150
|
+
"patterns": {
|
|
151
|
+
"contested": false,
|
|
152
|
+
"question": "when the project's code conventions are learned"
|
|
153
|
+
},
|
|
154
|
+
"gotchas": {
|
|
155
|
+
"contested": false,
|
|
156
|
+
"question": "what repair memory is kept and injected"
|
|
157
|
+
},
|
|
158
|
+
"security": {
|
|
159
|
+
"contested": false,
|
|
160
|
+
"question": "when a security pass runs"
|
|
161
|
+
},
|
|
162
|
+
"mock": {
|
|
163
|
+
"contested": false,
|
|
164
|
+
"question": "when a runnable mocked example is produced"
|
|
165
|
+
},
|
|
166
|
+
"pr": {
|
|
167
|
+
"contested": false,
|
|
168
|
+
"question": "when a change ships as a stack instead of one PR"
|
|
169
|
+
},
|
|
170
|
+
"extra": {
|
|
171
|
+
"contested": false,
|
|
172
|
+
"question": "how a foreign dispatch behaves once extra is on"
|
|
173
|
+
},
|
|
174
|
+
"pact": {
|
|
175
|
+
"contested": false,
|
|
176
|
+
"question": "what a drifted promise does to a run"
|
|
177
|
+
},
|
|
178
|
+
"boundary": {
|
|
179
|
+
"contested": false,
|
|
180
|
+
"question": "what a refused area does to a wave"
|
|
181
|
+
},
|
|
182
|
+
"handoff": {
|
|
183
|
+
"contested": false,
|
|
184
|
+
"question": "whether a non-engineer may write a graded surface"
|
|
185
|
+
},
|
|
186
|
+
"budget": {
|
|
187
|
+
"contested": false,
|
|
188
|
+
"question": "how a cost forecast is computed and shown"
|
|
189
|
+
},
|
|
190
|
+
"aftermath": {
|
|
191
|
+
"contested": false,
|
|
192
|
+
"question": "how far back a run is graded from the repo's future"
|
|
193
|
+
},
|
|
194
|
+
"challenge": {
|
|
195
|
+
"contested": false,
|
|
196
|
+
"question": "what counts as a pass, and which lenses run"
|
|
197
|
+
},
|
|
198
|
+
"doc": {
|
|
199
|
+
"contested": false,
|
|
200
|
+
"question": "how a long document is written and checked"
|
|
201
|
+
},
|
|
202
|
+
"wiki": {
|
|
203
|
+
"contested": false,
|
|
204
|
+
"question": "how the project wiki is scanned and when it is stale"
|
|
205
|
+
},
|
|
206
|
+
"crosslink": {
|
|
207
|
+
"contested": false,
|
|
208
|
+
"question": "when a peer repo's wiki reads stale"
|
|
209
|
+
},
|
|
210
|
+
"retro": {
|
|
211
|
+
"contested": false,
|
|
212
|
+
"question": "where a retro is delivered"
|
|
213
|
+
},
|
|
214
|
+
"paths": {
|
|
215
|
+
"contested": false,
|
|
216
|
+
"question": "where ORC writes on disk"
|
|
217
|
+
},
|
|
218
|
+
"session": {
|
|
219
|
+
"contested": false,
|
|
220
|
+
"question": "what the main session itself runs as"
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
// THE FAMILY TABLE RESOLVED (v1.0.0 W16), and the state set is why it is here.
|
|
224
|
+
// `families` above is the static registry; this is what those ranks actually
|
|
225
|
+
// did. Shapes copied from `orc config list --json`'s `families_resolved`.
|
|
226
|
+
//
|
|
227
|
+
// ONE OF EVERY REACHABLE STATE, per this folder's standing rule. `demoted` is
|
|
228
|
+
// the ugly one and the reason the fixture is shaped this way at all: you
|
|
229
|
+
// cannot design a demotion row against a project where nothing was ever
|
|
230
|
+
// demoted, and the wording has to carry the run, the profiles and the command
|
|
231
|
+
// that clears it.
|
|
232
|
+
//
|
|
233
|
+
// TWO of the six states are DELIBERATELY not here, each because the real CLI
|
|
234
|
+
// could not emit it either — a fixture carrying a state its own command
|
|
235
|
+
// cannot produce is a fixture lying about the thing it stands in for.
|
|
236
|
+
//
|
|
237
|
+
// `inert` — inertness is a fact about a LANE ("/orc-quick does not read
|
|
238
|
+
// this"), and `families_resolved` resolves project-wide with no
|
|
239
|
+
// lane. It IS on this panel, on the per-key rows, where
|
|
240
|
+
// `state: "inert"` genuinely occurs; `orc lane config <lane>
|
|
241
|
+
// --json` is the command that produces it in a family.
|
|
242
|
+
// `absent` — a rank is `absent` only when it was CONSULTED and declined.
|
|
243
|
+
// Here `opus5_only` is on and resolves at P1, so everything
|
|
244
|
+
// below it is `not-read` instead. It is the state a project with
|
|
245
|
+
// nothing configured shows for every rank — the default `orc ui`
|
|
246
|
+
// experience — and it renders as a plain chip exactly like
|
|
247
|
+
// `not-read`, so there is no styling it hides.
|
|
248
|
+
//
|
|
249
|
+
// The legend still shows the CLI's whole closed set, because that is what
|
|
250
|
+
// `rank_states` publishes and the legend's job is to explain the vocabulary,
|
|
251
|
+
// not to inventory this page.
|
|
252
|
+
families_resolved: {
|
|
253
|
+
"executor-band": {
|
|
254
|
+
contested: true,
|
|
255
|
+
question: "which model executes a SCORED task",
|
|
256
|
+
resolved_by: "opus5_only",
|
|
257
|
+
resolved_at: "P1",
|
|
258
|
+
inert: false,
|
|
259
|
+
inert_reason: null,
|
|
260
|
+
ranks: [
|
|
261
|
+
{
|
|
262
|
+
prio: "P0",
|
|
263
|
+
key: "extra_enabled",
|
|
264
|
+
terminal: null,
|
|
265
|
+
state: "demoted",
|
|
266
|
+
why: 'deepseek demoted for run add-oauth-login — 2 consecutive stalled dispatches. 1 row(s) on another profile still route. orc extra promote add-oauth-login --reason "<why>"',
|
|
267
|
+
},
|
|
268
|
+
{ prio: "P1", key: "opus5_only", terminal: null, state: "resolved", why: null },
|
|
269
|
+
{ prio: "P2", key: "rubric_bands_override", terminal: null, state: "not-read", why: "a higher rank resolved" },
|
|
270
|
+
{ prio: "P3", key: null, terminal: "the shipped score→model table", state: "not-read", why: "a higher rank resolved" },
|
|
271
|
+
],
|
|
272
|
+
},
|
|
273
|
+
"fixed-role-model": {
|
|
274
|
+
contested: true,
|
|
275
|
+
question: "which model runs a role that has no score",
|
|
276
|
+
// `partly-resolved` does NOT set `resolved_by` — an overlay takes only
|
|
277
|
+
// the positions its slot rows name, so the ladder carries on and the rank
|
|
278
|
+
// BELOW it is the one that answered. Getting this wrong in a fixture
|
|
279
|
+
// would teach the panel to render a contradiction.
|
|
280
|
+
resolved_by: "opus5_only",
|
|
281
|
+
resolved_at: "P1",
|
|
282
|
+
inert: false,
|
|
283
|
+
inert_reason: null,
|
|
284
|
+
ranks: [
|
|
285
|
+
{
|
|
286
|
+
prio: "P0",
|
|
287
|
+
key: "extra_enabled",
|
|
288
|
+
terminal: null,
|
|
289
|
+
state: "partly-resolved",
|
|
290
|
+
why: "the quick-executor and doc-writer positions are held by a route row; every other position falls through",
|
|
291
|
+
},
|
|
292
|
+
{ prio: "P1", key: "opus5_only", terminal: null, state: "resolved", why: null },
|
|
293
|
+
{ prio: "P2", key: null, terminal: "the agent shipped for that position", state: "not-read", why: "a higher rank resolved" },
|
|
294
|
+
],
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
// The CLI's closed set, published so the legend never invents a word.
|
|
298
|
+
rank_states: ["resolved", "partly-resolved", "not-read", "inert", "demoted", "absent"],
|
|
72
299
|
behavior_trace: { always_on: true, configurable_key: "log_dir" },
|
|
73
300
|
};
|
|
74
301
|
|
|
@@ -48,14 +48,14 @@ const budgetForecast = {
|
|
|
48
48
|
price_table: { as_of: "2026-08-01", age_days: 9, stale: false, path: "bin/pricing.json" },
|
|
49
49
|
quota: { available: true, plan: "max20", label: "Max 20x", window_pct: 18.2, weekly_pct: 4.1 },
|
|
50
50
|
// A task at CONTEXT RISK — the state that cannot be designed on a small plan.
|
|
51
|
-
context_risk: [{ task: "T12", agent: "orc-executor-opus-5-
|
|
51
|
+
context_risk: [{ task: "T12", agent: "orc-executor-opus-5-med", peak: 189000, window: 200000, pct: 95 }],
|
|
52
52
|
bands: [
|
|
53
53
|
{ band: "[0,30)", agent: "orc-executor-haiku-4-5", count: 2, tasks: ["T01", "T02"], samples: 9, p50: { input: 1200, cache_write: 6400, cache_read: 11800, output: 900 }, p90: { input: 1800, cache_write: 9200, cache_read: 17000, output: 1400 } },
|
|
54
54
|
{ band: "[40,55)", agent: "orc-executor-sonnet-4-6-high", count: 3, tasks: ["T03", "T05", "T07"], samples: 12, p50: { input: 7800, cache_write: 52100, cache_read: 104000, output: 8400 }, p90: { input: 11000, cache_write: 75000, cache_read: 150000, output: 12000 } },
|
|
55
|
-
{ band: "[
|
|
55
|
+
{ band: "[65,90)", agent: "orc-executor-opus-5-low", count: 1, tasks: ["T04"], samples: 6, p50: { input: 5700, cache_write: 40200, cache_read: 81000, output: 9300 }, p90: { input: 8100, cache_write: 58000, cache_read: 117000, output: 13400 } },
|
|
56
56
|
// A band with insufficient history — the low-confidence warning is not
|
|
57
57
|
// optional chrome, so the fixture has to be able to trigger it.
|
|
58
|
-
{ band: "[90,100]", agent: "orc-executor-opus-5-
|
|
58
|
+
{ band: "[90,100]", agent: "orc-executor-opus-5-med", count: 1, tasks: ["T12"], samples: 2, p50: { input: 9100, cache_write: 61000, cache_read: 128000, output: 17000 }, p90: { input: 14000, cache_write: 94000, cache_read: 198000, output: 26000 } },
|
|
59
59
|
],
|
|
60
60
|
fixed_roles: [
|
|
61
61
|
{ role: "orc-system-analyst-opus-5-high", samples: 11, p50: { input: 6100, cache_write: 41000, cache_read: 82000, output: 9000 }, p90: { input: 8600, cache_write: 58000, cache_read: 116000, output: 13000 } },
|