@azure-id/orc 2.1.0 → 2.1.1
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 +54 -0
- package/README.md +20 -32
- package/bin/build-agents.js +205 -205
- package/bin/cli.js +47417 -47417
- package/bin/verify-contracts.js +5552 -5552
- package/bin/verify-package.js +716 -716
- package/bin/webui/fixtures/extra.js +2036 -2036
- package/mock-run/a-normal-day.md +2 -2
- package/mock-run/extra-slots.md +177 -177
- package/mock-run/orc-fast.md +2 -2
- package/mock-run/orc-quick.md +146 -146
- package/mock-run/orc.md +157 -157
- package/package.json +1 -1
- package/templates/agents/MODEL-MAPPING.md +176 -176
- package/templates/agents/{orc-recon-sonnet-4-6-med.md → orc-recon-sonnet-5-med.md} +4 -4
- package/templates/commands/orc-fast.md +10 -10
- package/templates/skills/_shared/extra-dispatch.md +1331 -1331
- package/templates/skills/_shared/opus5-only.md +137 -137
- package/templates/skills/orc/SKILL.md +227 -227
- package/templates/skills/orc/examples/full-run-mock.md +74 -74
- package/templates/skills/orc/references/effort-and-mode.md +222 -222
- package/templates/skills/orc-fast/SKILL.md +210 -210
- package/templates/skills/orc-grill/SKILL.md +232 -232
- package/templates/skills/orc-grill/references/grill-doc.md +1 -1
- package/templates/skills/orc-quick/README.md +536 -536
- package/templates/skills/orc-quick/references/context-doc.md +145 -145
- package/templates/skills/orc-quick/references/dispatch-gate.md +220 -220
|
@@ -1,137 +1,137 @@
|
|
|
1
|
-
# Shared contract — Opus-5-only dispatch mode (hard-gated, forcing)
|
|
2
|
-
|
|
3
|
-
Canonical rule for routing EVERY dispatched role to Opus 5. Consumed by the full
|
|
4
|
-
orc spine, the ultra lane, and every lane with a fixed-role dispatch; the lint
|
|
5
|
-
pins the `opus5-only.md` pointer into each of them.
|
|
6
|
-
|
|
7
|
-
## The gate
|
|
8
|
-
|
|
9
|
-
Read the resolved config at run start (`config.md` defaults ← `orc.config.yaml`).
|
|
10
|
-
The mode is **hard-gated**: absolutely nothing changes unless `opus5_only: true`.
|
|
11
|
-
When it is false (the default), dispatch every role exactly as today — this file
|
|
12
|
-
is inert.
|
|
13
|
-
|
|
14
|
-
## The mapping (only when `opus5_only: true`)
|
|
15
|
-
|
|
16
|
-
**Scored executors** — one model, EFFORT as the cost dial, replacing the 5-band
|
|
17
|
-
mixed-model table:
|
|
18
|
-
|
|
19
|
-
| Score | Executor agent |
|
|
20
|
-
|-----------|---------------------------|
|
|
21
|
-
| `[0,90)` | `orc-executor-opus-5-low` |
|
|
22
|
-
| `[90,100]` | `orc-executor-opus-5-med` |
|
|
23
|
-
|
|
24
|
-
Two bands, sharing the 90 edge with the default table's top two rows. Since
|
|
25
|
-
v1.0.0 the default table's high end is ALREADY Opus 5.5 with effort as the dial,
|
|
26
|
-
so this mode differs from it only below 41 — a third band here would be a
|
|
27
|
-
distinction the default table stopped making.
|
|
28
|
-
|
|
29
|
-
**Fixed roles** — dispatch the Opus 5.5 variant **instead of** the default role
|
|
30
|
-
agent: same task slice, same return contract, same phase.
|
|
31
|
-
|
|
32
|
-
| Role | Default agent | Opus-5-only variant |
|
|
33
|
-
|------|---------------|---------------------|
|
|
34
|
-
| mini executor | `orc-executor-sonnet-5-high` | `orc-executor-opus-5-low` |
|
|
35
|
-
| fast executor | `orc-executor-sonnet-
|
|
36
|
-
| mini analyze | `orc-analyze-mini-sonnet-5-high` | `orc-analyze-mini-opus-5-med` |
|
|
37
|
-
| mini plan | `orc-planner-mini-sonnet-5-high` | `orc-planner-mini-opus-5-med` |
|
|
38
|
-
| scout | `orc-scout-sonnet-4-6-high` | `orc-scout-opus-5-low` |
|
|
39
|
-
| pattern codify | `orc-pattern-codifier-sonnet-5-high` | `orc-pattern-codifier-opus-5-med` |
|
|
40
|
-
| wiki scan | `orc-wiki-scanner-sonnet-5-high` (light) | `orc-wiki-scanner-opus-5-low` |
|
|
41
|
-
| retro mine | `orc-retro-sonnet-5-high` | `orc-retro-opus-5-med` |
|
|
42
|
-
|
|
43
|
-
The eleven roles already pinned to `claude-opus-5-5` — analyst, planner, reviewer,
|
|
44
|
-
verifier, test-author, combiner, learn-writer, advisor, judge, CLAUDE.md writer
|
|
45
|
-
(`orc-claude-writer-opus-5-low`), deep wiki scanner (`orc-wiki-scanner-opus-5-low`)
|
|
46
|
-
— are already
|
|
47
|
-
compliant and dispatch unchanged (their efforts are NOT rewritten by this mode).
|
|
48
|
-
|
|
49
|
-
**The wiki scan tier ladder (v0.46.0) needs no new pair.**
|
|
50
|
-
Off, the ladder picks deep or light per delta. ON, this mode flips the light tier
|
|
51
|
-
to `orc-wiki-scanner-opus-5-low`. The deep tier is already that agent. So **both
|
|
52
|
-
tiers collapse onto that one shipped agent** and the ladder simply stops applying.
|
|
53
|
-
Do not add a second Opus 5.5 scanner variant. A pair for a tier that cannot occur
|
|
54
|
-
while the flag is on is exactly the phantom this table exists to prevent. Ladder: `../orc-wiki/references/partial-refresh.md`.
|
|
55
|
-
|
|
56
|
-
## Out of scope — never forced
|
|
57
|
-
|
|
58
|
-
- **`orc-trace-writer-haiku-4-5` stays Haiku 4.5.** It transcribes a packet the
|
|
59
|
-
orchestrator hands it — no reasoning, no source reads. It is never in the
|
|
60
|
-
roster.
|
|
61
|
-
- **`orc-graph-noter-sonnet-4-6-med` is not dispatched at all.** It has no Opus 5.5
|
|
62
|
-
variant: under the mode a code lane skips graph notes and prints
|
|
63
|
-
`graph notes: skipped (opus5_only)` (`code-graph.md` §6). The graph's structure
|
|
64
|
-
layer costs no model, so nothing else about the graph changes.
|
|
65
|
-
- **`orc-diy`.** Its score table is compile-owned (`orc diy compile` →
|
|
66
|
-
`flow.lock.json`); a DIY flow dispatches whatever its lock says. Re-compile to
|
|
67
|
-
change it.
|
|
68
|
-
- **`orc-quick` — the ONE exception to the flat precedence below.** Its dispatch
|
|
69
|
-
gate asks the USER which agent to spawn before every single dispatch, and that
|
|
70
|
-
hard gate is the lane's entire premise. A forcing mode that collapsed the menu
|
|
71
|
-
to one option would silently delete it, so the mode is fully INERT there:
|
|
72
|
-
`opus5_only` is neither read nor honored by `orc-quick`. When the mode is on,
|
|
73
|
-
the lane SAYS so at the gate (`orc-quick ignores opus5_only — both options are
|
|
74
|
-
live`), because a shadowed setting must never be silent in either direction.
|
|
75
|
-
- **`/orc-challenge` — UNAFFECTED, not exempt.** All three of its agents are
|
|
76
|
-
already `claude-opus-5-5` (judge high, advisor medium, reader low), so the mode
|
|
77
|
-
has nothing to force: zero new pairs, no rename churn, no roster row. The
|
|
78
|
-
reader's `low` effort is a MEASUREMENT choice, not a cost one — a
|
|
79
|
-
harder-thinking cold reader reasons around exactly the gaps D4 exists to find
|
|
80
|
-
— so nothing may ever "upgrade" it.
|
|
81
|
-
See `orc-quick/references/dispatch-gate.md`.
|
|
82
|
-
|
|
83
|
-
## It FORCES — precedence is flat while ON
|
|
84
|
-
|
|
85
|
-
`opus5_only: true` outranks every other dispatch selector:
|
|
86
|
-
|
|
87
|
-
- each role's default frontmatter pin;
|
|
88
|
-
- **`rubric_bands_override`** — a hand-written executor table is ignored while
|
|
89
|
-
the mode is on.
|
|
90
|
-
|
|
91
|
-
Turning the mode off restores both. `rubric_bands` remains granularity
|
|
92
|
-
only, never a preset selector, in both modes.
|
|
93
|
-
|
|
94
|
-
The forcing is flat across every lane that HONORS the mode — `orc-quick` does
|
|
95
|
-
not, per "Out of scope" above.
|
|
96
|
-
|
|
97
|
-
### `orc extra` sits ABOVE the mode, and it is not a fourth thing it overrides
|
|
98
|
-
|
|
99
|
-
Extra decides **whether a Claude agent runs at all**. `opus5_only` and the score
|
|
100
|
-
tables only decide WHICH Claude agent runs where extra did not take it. So the
|
|
101
|
-
mode is neither shadowed nor shadowing — it is simply **NOT CONSULTED** for the
|
|
102
|
-
work extra took:
|
|
103
|
-
|
|
104
|
-
- **a scored task** — an extra route row covering that score outranks the mode;
|
|
105
|
-
every score no row covers still resolves on the Opus 5.5 ladder.
|
|
106
|
-
- **a POSITION** (v0.55.0 — `quick-executor`, `fast-executor`, `doc-writer`,
|
|
107
|
-
`doc-checker`, `wiki-scanner-deep`, `wiki-scanner-light`) — an extra slot row
|
|
108
|
-
holding that position outranks the mode's variant of that slot's agent; **a
|
|
109
|
-
position with no row is fully governed by the mode.** With `doc-writer` routed
|
|
110
|
-
and `doc-checker` not, `opus5_only` is entirely live for the checker.
|
|
111
|
-
|
|
112
|
-
"Not consulted for that slot" and "inert" are different claims, and only the
|
|
113
|
-
first one is true. `orc config list` and `orc config set` NAME the taken bands
|
|
114
|
-
AND the taken positions for exactly that reason: a shadowed setting must never
|
|
115
|
-
be silent, and neither must a partly shadowed one.
|
|
116
|
-
|
|
117
|
-
Both wiki slots collapse onto `orc-wiki-scanner-opus-5-low` while the mode is on,
|
|
118
|
-
which is why the slot table adds **no agent and no pair**. A slot names the
|
|
119
|
-
POSITION, not the model.
|
|
120
|
-
|
|
121
|
-
## Tier honesty
|
|
122
|
-
|
|
123
|
-
A subagent can never outrank the main session. With the mode ON, EVERY dispatch
|
|
124
|
-
needs an Opus 5.5 main session — not just the top executor band. On a lower
|
|
125
|
-
session every role silently falls back to the session model and the tier-honesty
|
|
126
|
-
rule (`return-validation.md`) reports a downgrade on **every** return. That is
|
|
127
|
-
correct behavior, not a bug: hooks cannot block on model, only on effort, so the
|
|
128
|
-
`orc config set opus5_only true` notice is the only up-front warning.
|
|
129
|
-
|
|
130
|
-
This also means `orc-fast`'s "the orchestrator runs fine at Sonnet medium" holds
|
|
131
|
-
only while the mode is OFF. The effort guard is unchanged — it still matches the
|
|
132
|
-
exact skill name `orc`, and orc-fast is never added to it.
|
|
133
|
-
|
|
134
|
-
## Trace
|
|
135
|
-
|
|
136
|
-
Phase 1's `CONFIG` line always records the resolved `opus5_only`, so
|
|
137
|
-
`/orc-retro` can segment per-band outcomes BY dispatch mode.
|
|
1
|
+
# Shared contract — Opus-5-only dispatch mode (hard-gated, forcing)
|
|
2
|
+
|
|
3
|
+
Canonical rule for routing EVERY dispatched role to Opus 5. Consumed by the full
|
|
4
|
+
orc spine, the ultra lane, and every lane with a fixed-role dispatch; the lint
|
|
5
|
+
pins the `opus5-only.md` pointer into each of them.
|
|
6
|
+
|
|
7
|
+
## The gate
|
|
8
|
+
|
|
9
|
+
Read the resolved config at run start (`config.md` defaults ← `orc.config.yaml`).
|
|
10
|
+
The mode is **hard-gated**: absolutely nothing changes unless `opus5_only: true`.
|
|
11
|
+
When it is false (the default), dispatch every role exactly as today — this file
|
|
12
|
+
is inert.
|
|
13
|
+
|
|
14
|
+
## The mapping (only when `opus5_only: true`)
|
|
15
|
+
|
|
16
|
+
**Scored executors** — one model, EFFORT as the cost dial, replacing the 5-band
|
|
17
|
+
mixed-model table:
|
|
18
|
+
|
|
19
|
+
| Score | Executor agent |
|
|
20
|
+
|-----------|---------------------------|
|
|
21
|
+
| `[0,90)` | `orc-executor-opus-5-low` |
|
|
22
|
+
| `[90,100]` | `orc-executor-opus-5-med` |
|
|
23
|
+
|
|
24
|
+
Two bands, sharing the 90 edge with the default table's top two rows. Since
|
|
25
|
+
v1.0.0 the default table's high end is ALREADY Opus 5.5 with effort as the dial,
|
|
26
|
+
so this mode differs from it only below 41 — a third band here would be a
|
|
27
|
+
distinction the default table stopped making.
|
|
28
|
+
|
|
29
|
+
**Fixed roles** — dispatch the Opus 5.5 variant **instead of** the default role
|
|
30
|
+
agent: same task slice, same return contract, same phase.
|
|
31
|
+
|
|
32
|
+
| Role | Default agent | Opus-5-only variant |
|
|
33
|
+
|------|---------------|---------------------|
|
|
34
|
+
| mini executor | `orc-executor-sonnet-5-high` | `orc-executor-opus-5-low` |
|
|
35
|
+
| fast executor | `orc-executor-sonnet-5-med` | `orc-executor-opus-5-low` |
|
|
36
|
+
| mini analyze | `orc-analyze-mini-sonnet-5-high` | `orc-analyze-mini-opus-5-med` |
|
|
37
|
+
| mini plan | `orc-planner-mini-sonnet-5-high` | `orc-planner-mini-opus-5-med` |
|
|
38
|
+
| scout | `orc-scout-sonnet-4-6-high` | `orc-scout-opus-5-low` |
|
|
39
|
+
| pattern codify | `orc-pattern-codifier-sonnet-5-high` | `orc-pattern-codifier-opus-5-med` |
|
|
40
|
+
| wiki scan | `orc-wiki-scanner-sonnet-5-high` (light) | `orc-wiki-scanner-opus-5-low` |
|
|
41
|
+
| retro mine | `orc-retro-sonnet-5-high` | `orc-retro-opus-5-med` |
|
|
42
|
+
|
|
43
|
+
The eleven roles already pinned to `claude-opus-5-5` — analyst, planner, reviewer,
|
|
44
|
+
verifier, test-author, combiner, learn-writer, advisor, judge, CLAUDE.md writer
|
|
45
|
+
(`orc-claude-writer-opus-5-low`), deep wiki scanner (`orc-wiki-scanner-opus-5-low`)
|
|
46
|
+
— are already
|
|
47
|
+
compliant and dispatch unchanged (their efforts are NOT rewritten by this mode).
|
|
48
|
+
|
|
49
|
+
**The wiki scan tier ladder (v0.46.0) needs no new pair.**
|
|
50
|
+
Off, the ladder picks deep or light per delta. ON, this mode flips the light tier
|
|
51
|
+
to `orc-wiki-scanner-opus-5-low`. The deep tier is already that agent. So **both
|
|
52
|
+
tiers collapse onto that one shipped agent** and the ladder simply stops applying.
|
|
53
|
+
Do not add a second Opus 5.5 scanner variant. A pair for a tier that cannot occur
|
|
54
|
+
while the flag is on is exactly the phantom this table exists to prevent. Ladder: `../orc-wiki/references/partial-refresh.md`.
|
|
55
|
+
|
|
56
|
+
## Out of scope — never forced
|
|
57
|
+
|
|
58
|
+
- **`orc-trace-writer-haiku-4-5` stays Haiku 4.5.** It transcribes a packet the
|
|
59
|
+
orchestrator hands it — no reasoning, no source reads. It is never in the
|
|
60
|
+
roster.
|
|
61
|
+
- **`orc-graph-noter-sonnet-4-6-med` is not dispatched at all.** It has no Opus 5.5
|
|
62
|
+
variant: under the mode a code lane skips graph notes and prints
|
|
63
|
+
`graph notes: skipped (opus5_only)` (`code-graph.md` §6). The graph's structure
|
|
64
|
+
layer costs no model, so nothing else about the graph changes.
|
|
65
|
+
- **`orc-diy`.** Its score table is compile-owned (`orc diy compile` →
|
|
66
|
+
`flow.lock.json`); a DIY flow dispatches whatever its lock says. Re-compile to
|
|
67
|
+
change it.
|
|
68
|
+
- **`orc-quick` — the ONE exception to the flat precedence below.** Its dispatch
|
|
69
|
+
gate asks the USER which agent to spawn before every single dispatch, and that
|
|
70
|
+
hard gate is the lane's entire premise. A forcing mode that collapsed the menu
|
|
71
|
+
to one option would silently delete it, so the mode is fully INERT there:
|
|
72
|
+
`opus5_only` is neither read nor honored by `orc-quick`. When the mode is on,
|
|
73
|
+
the lane SAYS so at the gate (`orc-quick ignores opus5_only — both options are
|
|
74
|
+
live`), because a shadowed setting must never be silent in either direction.
|
|
75
|
+
- **`/orc-challenge` — UNAFFECTED, not exempt.** All three of its agents are
|
|
76
|
+
already `claude-opus-5-5` (judge high, advisor medium, reader low), so the mode
|
|
77
|
+
has nothing to force: zero new pairs, no rename churn, no roster row. The
|
|
78
|
+
reader's `low` effort is a MEASUREMENT choice, not a cost one — a
|
|
79
|
+
harder-thinking cold reader reasons around exactly the gaps D4 exists to find
|
|
80
|
+
— so nothing may ever "upgrade" it.
|
|
81
|
+
See `orc-quick/references/dispatch-gate.md`.
|
|
82
|
+
|
|
83
|
+
## It FORCES — precedence is flat while ON
|
|
84
|
+
|
|
85
|
+
`opus5_only: true` outranks every other dispatch selector:
|
|
86
|
+
|
|
87
|
+
- each role's default frontmatter pin;
|
|
88
|
+
- **`rubric_bands_override`** — a hand-written executor table is ignored while
|
|
89
|
+
the mode is on.
|
|
90
|
+
|
|
91
|
+
Turning the mode off restores both. `rubric_bands` remains granularity
|
|
92
|
+
only, never a preset selector, in both modes.
|
|
93
|
+
|
|
94
|
+
The forcing is flat across every lane that HONORS the mode — `orc-quick` does
|
|
95
|
+
not, per "Out of scope" above.
|
|
96
|
+
|
|
97
|
+
### `orc extra` sits ABOVE the mode, and it is not a fourth thing it overrides
|
|
98
|
+
|
|
99
|
+
Extra decides **whether a Claude agent runs at all**. `opus5_only` and the score
|
|
100
|
+
tables only decide WHICH Claude agent runs where extra did not take it. So the
|
|
101
|
+
mode is neither shadowed nor shadowing — it is simply **NOT CONSULTED** for the
|
|
102
|
+
work extra took:
|
|
103
|
+
|
|
104
|
+
- **a scored task** — an extra route row covering that score outranks the mode;
|
|
105
|
+
every score no row covers still resolves on the Opus 5.5 ladder.
|
|
106
|
+
- **a POSITION** (v0.55.0 — `quick-executor`, `fast-executor`, `doc-writer`,
|
|
107
|
+
`doc-checker`, `wiki-scanner-deep`, `wiki-scanner-light`) — an extra slot row
|
|
108
|
+
holding that position outranks the mode's variant of that slot's agent; **a
|
|
109
|
+
position with no row is fully governed by the mode.** With `doc-writer` routed
|
|
110
|
+
and `doc-checker` not, `opus5_only` is entirely live for the checker.
|
|
111
|
+
|
|
112
|
+
"Not consulted for that slot" and "inert" are different claims, and only the
|
|
113
|
+
first one is true. `orc config list` and `orc config set` NAME the taken bands
|
|
114
|
+
AND the taken positions for exactly that reason: a shadowed setting must never
|
|
115
|
+
be silent, and neither must a partly shadowed one.
|
|
116
|
+
|
|
117
|
+
Both wiki slots collapse onto `orc-wiki-scanner-opus-5-low` while the mode is on,
|
|
118
|
+
which is why the slot table adds **no agent and no pair**. A slot names the
|
|
119
|
+
POSITION, not the model.
|
|
120
|
+
|
|
121
|
+
## Tier honesty
|
|
122
|
+
|
|
123
|
+
A subagent can never outrank the main session. With the mode ON, EVERY dispatch
|
|
124
|
+
needs an Opus 5.5 main session — not just the top executor band. On a lower
|
|
125
|
+
session every role silently falls back to the session model and the tier-honesty
|
|
126
|
+
rule (`return-validation.md`) reports a downgrade on **every** return. That is
|
|
127
|
+
correct behavior, not a bug: hooks cannot block on model, only on effort, so the
|
|
128
|
+
`orc config set opus5_only true` notice is the only up-front warning.
|
|
129
|
+
|
|
130
|
+
This also means `orc-fast`'s "the orchestrator runs fine at Sonnet medium" holds
|
|
131
|
+
only while the mode is OFF. The effort guard is unchanged — it still matches the
|
|
132
|
+
exact skill name `orc`, and orc-fast is never added to it.
|
|
133
|
+
|
|
134
|
+
## Trace
|
|
135
|
+
|
|
136
|
+
Phase 1's `CONFIG` line always records the resolved `opus5_only`, so
|
|
137
|
+
`/orc-retro` can segment per-band outcomes BY dispatch mode.
|