@azure-id/orc 1.9.2 → 2.1.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 +722 -0
- package/README-id.md +56 -42
- package/README.md +58 -41
- package/bin/build-agents.js +125 -29
- package/bin/clear-logs.js +620 -0
- package/bin/cli.js +1873 -180
- package/bin/fix.js +459 -0
- package/bin/gotcha-import.js +1081 -0
- package/bin/gotcha.js +1566 -0
- package/bin/graph-query.js +1 -1
- package/bin/graph.js +717 -717
- package/bin/habit.js +1538 -0
- package/bin/mockrun-catalog.js +284 -276
- package/bin/onboarding-content.js +2 -1
- package/bin/pricing.json +28 -21
- package/bin/run-undo.js +398 -0
- package/bin/trace-write.js +869 -0
- package/bin/verify-contracts.js +627 -100
- package/bin/verify-package.js +68 -10
- package/bin/webui/api.js +151 -6
- package/bin/webui/app.html +239 -232
- package/bin/webui/css/00-tokens.css +110 -92
- package/bin/webui/css/04-motion.css +87 -0
- package/bin/webui/css/06-responsive.css +203 -178
- package/bin/webui/css/panels/behaviour.css +205 -0
- package/bin/webui/css/panels/hookui.css +79 -0
- package/bin/webui/fixtures/behaviour.js +562 -0
- package/bin/webui/fixtures/extra.js +9 -9
- package/bin/webui/fixtures/flow.js +81 -81
- package/bin/webui/fixtures/hookui.js +506 -431
- package/bin/webui/fixtures/index.js +66 -3
- package/bin/webui/fixtures/knowledge.js +9 -3
- package/bin/webui/fixtures/maintenance.js +123 -42
- package/bin/webui/fixtures/rules.js +1007 -1002
- package/bin/webui/fixtures/settings.js +6 -7
- package/bin/webui/fixtures/stats.js +25 -6
- package/bin/webui/fixtures/wait.js +98 -97
- package/bin/webui/i18n/en/behaviour.json +156 -0
- package/bin/webui/i18n/en/hookui.json +290 -194
- package/bin/webui/i18n/en/maintenance.json +71 -52
- package/bin/webui/i18n/en/nav.json +25 -24
- package/bin/webui/i18n/en/settings.json +60 -60
- package/bin/webui/i18n/en/tour.json +37 -35
- package/bin/webui/i18n/id/behaviour.json +156 -0
- package/bin/webui/i18n/id/hookui.json +290 -194
- package/bin/webui/i18n/id/maintenance.json +71 -52
- package/bin/webui/i18n/id/nav.json +25 -24
- package/bin/webui/i18n/id/settings.json +60 -60
- package/bin/webui/i18n/id/tour.json +37 -35
- package/bin/webui/js/01-i18n.js +155 -154
- package/bin/webui/js/05-banners.js +181 -172
- package/bin/webui/js/06-edit.js +193 -183
- 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 +1087 -0
- package/bin/webui/js/panels/hookui.js +2196 -1691
- package/bin/webui/js/panels/maintenance.js +336 -235
- package/bin/webui/js/panels/settings.js +726 -719
- package/mock-run/INDEX.md +110 -107
- package/mock-run/extra-slots.md +1 -1
- package/mock-run/gotcha-import.md +118 -0
- package/mock-run/habits.md +129 -0
- package/mock-run/orc-aftermath.md +392 -392
- package/mock-run/orc-budget.md +29 -33
- package/mock-run/orc-cli.md +200 -200
- package/mock-run/orc-explain.md +86 -86
- package/mock-run/orc-extra.md +389 -392
- package/mock-run/orc-fix.md +87 -0
- package/mock-run/orc-pattern.md +112 -112
- package/mock-run/orc-quick.md +6 -1
- package/mock-run/orc.md +157 -157
- package/package.json +1 -1
- package/templates/agents/MODEL-MAPPING.md +37 -34
- package/templates/agents/orc-advisor-opus-5-xhigh.md +1 -7
- package/templates/agents/orc-analyze-mini-opus-5-med.md +1 -6
- package/templates/agents/orc-analyze-mini-sonnet-5-high.md +2 -5
- package/templates/agents/{orc-claude-writer-opus-4-8-high.md → orc-claude-writer-opus-5-low.md} +48 -53
- package/templates/agents/orc-context-combiner-opus-5-high.md +1 -11
- 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 +14 -6
- package/templates/agents/orc-executor-opus-5-low.md +14 -6
- package/templates/agents/orc-executor-opus-5-med.md +14 -6
- 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 +15 -7
- package/templates/agents/orc-executor-sonnet-5-low.md +155 -0
- package/templates/agents/orc-executor-sonnet-5-med.md +155 -0
- package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +1 -10
- package/templates/agents/orc-judge-opus-5-xhigh.md +5 -9
- package/templates/agents/orc-learn-writer-opus-5-low.md +1 -7
- package/templates/agents/orc-pattern-codifier-opus-5-med.md +1 -8
- package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +58 -63
- package/templates/agents/orc-planner-mini-opus-5-med.md +1 -4
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +2 -3
- package/templates/agents/orc-planner-opus-5-med.md +1 -4
- package/templates/agents/orc-recon-opus-5-low.md +1 -8
- package/templates/agents/orc-recon-sonnet-4-6-med.md +1 -8
- package/templates/agents/orc-retro-opus-5-med.md +6 -8
- package/templates/agents/orc-retro-sonnet-5-high.md +7 -8
- package/templates/agents/orc-reviewer-opus-5-low.md +96 -0
- package/templates/agents/orc-scout-opus-5-low.md +1 -6
- package/templates/agents/orc-scout-sonnet-4-6-high.md +35 -39
- package/templates/agents/orc-system-analyst-opus-5-high.md +1 -6
- package/templates/agents/orc-test-author-opus-5-med.md +4 -5
- package/templates/agents/orc-trace-writer-haiku-4-5.md +3 -7
- package/templates/agents/orc-verifier-opus-5-med.md +16 -8
- package/templates/agents/{orc-wiki-scanner-opus-4-8-high.md → orc-wiki-scanner-opus-5-low.md} +74 -79
- 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-fix.md +18 -0
- 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-wiki.md +64 -64
- package/templates/hooks/README.md +109 -7
- package/templates/hooks/orc-session-hook.js +339 -0
- package/templates/hooks/orc-statusline-render.js +317 -23
- package/templates/hooks/orc-statusline.js +165 -50
- package/templates/hooks/orc-subagent-line.js +23 -5
- package/templates/hooks/orc-weather-fetch.js +123 -0
- package/templates/skills/_shared/README.md +9 -0
- package/templates/skills/_shared/code-graph.md +47 -55
- package/templates/skills/_shared/config-precedence.md +3 -1
- package/templates/skills/_shared/extra-dispatch.md +78 -93
- package/templates/skills/_shared/gotchas.md +248 -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 +14 -14
- package/templates/skills/_shared/phases/README.md +142 -83
- package/templates/skills/_shared/phases/analyst-gates.md +10 -21
- 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 +24 -28
- 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 +447 -0
- package/templates/skills/_shared/phases/trace.md +66 -297
- 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 +106 -0
- package/templates/skills/_shared/smoke-gate.md +46 -28
- package/templates/skills/_shared/wait.md +1 -0
- package/templates/skills/context-combiner/SKILL.md +15 -44
- package/templates/skills/orc/README.md +2 -2
- package/templates/skills/orc/SKILL.md +35 -63
- package/templates/skills/orc/config.md +25 -27
- package/templates/skills/orc/examples/full-run-mock.md +2 -1
- package/templates/skills/orc/references/effort-and-mode.md +17 -17
- 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 +11 -12
- package/templates/skills/orc/references/ultra-mode.md +9 -7
- package/templates/skills/orc/schemas/checkpoint.md +122 -122
- 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-review-verify/SKILL.md +12 -53
- 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 +11 -22
- 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 +33 -67
- package/templates/skills/orc-analyze/schemas/report-audit.md +2 -1
- package/templates/skills/orc-analyze/schemas/report-prose.md +2 -1
- package/templates/skills/orc-analyze-mini/SKILL.md +35 -70
- package/templates/skills/orc-claude/SKILL.md +14 -14
- package/templates/skills/orc-claude/examples/claude-run-mock.md +65 -65
- package/templates/skills/orc-diy/README.md +31 -0
- package/templates/skills/orc-diy/SKILL.md +27 -78
- package/templates/skills/orc-diy/references/blocks/pattern.md +18 -18
- package/templates/skills/orc-fast/SKILL.md +49 -75
- package/templates/skills/orc-fix/SKILL.md +110 -0
- package/templates/skills/orc-judge/SKILL.md +77 -82
- package/templates/skills/orc-mini/SKILL.md +64 -112
- package/templates/skills/orc-mini/examples/mini-run-mock.md +4 -2
- 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 +44 -3
- package/templates/skills/orc-quick/SKILL.md +77 -108
- package/templates/skills/orc-quick/references/dispatch-gate.md +18 -6
- package/templates/skills/orc-quick/references/gh-mode.md +50 -1
- package/templates/skills/orc-quick/references/look.md +3 -1
- package/templates/skills/orc-retro/SKILL.md +20 -19
- package/templates/skills/orc-retro/examples/retro-mock.md +17 -17
- 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 +14 -32
- package/templates/skills/orc-wait/SKILL.md +156 -163
- package/templates/skills/orc-wiki/README.md +325 -325
- package/templates/skills/orc-wiki/SKILL.md +195 -195
- package/templates/skills/orc-wiki/examples/wiki-run-mock.md +37 -37
- package/templates/skills/orc-wiki/references/extra.md +2 -2
- package/templates/skills/orc-wiki/references/partial-refresh.md +276 -271
- package/templates/skills/orc-wiki/references/phases/phase-0.md +2 -7
- package/templates/skills/orc-wiki/references/phases/phase-1.md +1 -6
- package/templates/skills/orc-wiki/references/phases/phase-2.md +4 -9
- package/templates/skills/orc-wiki/references/phases/phase-3.md +1 -6
- package/templates/skills/orc-wiki/references/phases/phase-3c.md +4 -8
- package/templates/agents/orc-claude-writer-opus-5-med.md +0 -55
- package/templates/agents/orc-reviewer-opus-5-med.md +0 -60
- package/templates/agents/orc-wiki-scanner-opus-5-med.md +0 -81
|
@@ -1,28 +1,46 @@
|
|
|
1
|
-
# Smoke gate (read-only build + test ship gate)
|
|
2
|
-
|
|
3
|
-
Canonical procedure for the smoke gate run by orc-mini (Phase M) and orc-fast
|
|
4
|
-
(Phase F3). The gate is the orchestrator's INDEPENDENT check — the executor's
|
|
5
|
-
`evidence` is a claim; your run is the verification (when they disagree, say
|
|
6
|
-
so). Running build+test is read-only and is NOT implementation: you still
|
|
7
|
-
never write code.
|
|
8
|
-
|
|
9
|
-
## Procedure
|
|
10
|
-
|
|
11
|
-
1. Discover the commands: prefer the wiki manifest's `commands` block when it
|
|
12
|
-
exists (recorded at scan time — don't rediscover tooling); otherwise detect
|
|
13
|
-
the stack's build + test runner once and say which you chose.
|
|
14
|
-
2. Run build, then the fast test suite, once each.
|
|
15
|
-
3. Verdict (emit the `VERDICT pass|fail` trace line):
|
|
16
|
-
- **GREEN** → proceed to the lane's next step (test-ask / ship).
|
|
17
|
-
- **RED** → **never offer commit/ship.**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
1
|
+
# Smoke gate (read-only build + test ship gate)
|
|
2
|
+
|
|
3
|
+
Canonical procedure for the smoke gate run by orc-mini (Phase M) and orc-fast
|
|
4
|
+
(Phase F3). The gate is the orchestrator's INDEPENDENT check — the executor's
|
|
5
|
+
`evidence` is a claim; your run is the verification (when they disagree, say
|
|
6
|
+
so). Running build+test is read-only and is NOT implementation: you still
|
|
7
|
+
never write code.
|
|
8
|
+
|
|
9
|
+
## Procedure
|
|
10
|
+
|
|
11
|
+
1. Discover the commands: prefer the wiki manifest's `commands` block when it
|
|
12
|
+
exists (recorded at scan time — don't rediscover tooling); otherwise detect
|
|
13
|
+
the stack's build + test runner once and say which you chose.
|
|
14
|
+
2. Run build, then the fast test suite, once each.
|
|
15
|
+
3. Verdict (emit the `VERDICT pass|fail` trace line):
|
|
16
|
+
- **GREEN** → proceed to the lane's next step (test-ask / ship).
|
|
17
|
+
- **RED** → **never offer commit/ship.** Run the flaky check first
|
|
18
|
+
(§Flaky). Still red → surface the failure verbatim, then
|
|
19
|
+
ONE repair round: re-dispatch the SAME executor with the failing output
|
|
20
|
+
as `failure_reason`, and re-run this gate. A second RED → STOP and
|
|
21
|
+
surface; the lane names its escalation options (mini: stop; fast:
|
|
22
|
+
escalate to orc-mini / switch to full `/orc` / stop).
|
|
23
|
+
- **No runnable build/test** (docs-only repo) → say so explicitly; the
|
|
24
|
+
gate is N/A — never silently skip it.
|
|
25
|
+
|
|
26
|
+
## Flaky — before any repair round
|
|
27
|
+
|
|
28
|
+
**Everywhere a test runs** (this gate, `/orc-quick` §3.2, `/orc` verify's TDD
|
|
29
|
+
gate, every repair loop): a RED test run gets ONE identical re-run of ONLY the
|
|
30
|
+
failing tests, before any repair. Save both outputs, then ask the CLI — never
|
|
31
|
+
judge it yourself:
|
|
32
|
+
|
|
33
|
+
`orc ci flaky --first <log> --rerun <log> [--rerun-exit <n>] --json`
|
|
34
|
+
|
|
35
|
+
- `--first` alone names the failing tests to re-run (`tests_failed[]`).
|
|
36
|
+
- Exit 0 = **FLAKY**: every failing test passed on the re-run. Emit its
|
|
37
|
+
`gate_line` (`GATE flaky :: <tests>`), report the tests, and do NOT start a
|
|
38
|
+
repair round. A flaky run is not red and does not use a round.
|
|
39
|
+
- Exit 1 = red (a test failed again, did not run, or the re-run exited ≠ 0) →
|
|
40
|
+
the repair round as usual. Exit 3 = no test name in the log → red.
|
|
41
|
+
- One re-run only. Never re-run until green.
|
|
42
|
+
|
|
43
|
+
## What it is not
|
|
44
|
+
|
|
45
|
+
Smoke, not verification: no findings classification, no criteria matrix, no
|
|
46
|
+
severity ladder. A run that needs that depth belongs in the full lane.
|
|
@@ -110,6 +110,7 @@ the other fails the suite.
|
|
|
110
110
|
| `/orc-pattern` | none | single dispatch |
|
|
111
111
|
| `/orc-claude` | none | single dispatch |
|
|
112
112
|
| `/orc-explain` | none | read-only, seconds long |
|
|
113
|
+
| `/orc-fix` | none | after the record is written |
|
|
113
114
|
| `/orc-route` | none | read-only, seconds long |
|
|
114
115
|
| `/orc-boundary` | none | read-only, seconds long |
|
|
115
116
|
| `/orc-budget` | none | read-only, seconds long |
|
|
@@ -1,20 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: context-combiner
|
|
3
3
|
description: >
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
analyses actually overlap (shared files/requirements/scope) and challenges the
|
|
9
|
-
user if they look unrelated; pools ALL source requirements into one table and
|
|
10
|
-
reconciles them (exact/semantic duplicates, partial overlaps split — never
|
|
11
|
-
collapsed, conflicts, ordering) one issue at a time; proves NOTHING WAS LOST
|
|
12
|
-
via a source coverage matrix and a 100% coverage gate before handoff;
|
|
13
|
-
spot-checks inherited evidence and marks stale anchors; writes
|
|
14
|
-
combined-report.md + combined-requirement-spec.md, which reuse the
|
|
15
|
-
requirement-spec schema, so the planner/build pipeline is unchanged. Full
|
|
16
|
-
lane only. The orchestrator DISPATCHES this to a subagent — it never
|
|
17
|
-
combines itself, and the combiner never spawns subagents.
|
|
4
|
+
Internal to /orc: merges 2+ RELATED, confirmed orc-analyze analyses into ONE
|
|
5
|
+
deduped, conflict-resolved requirement context. Dispatched when the user picks
|
|
6
|
+
"pass to context-combiner" at orc-analyze's Phase F.
|
|
7
|
+
disable-model-invocation: true
|
|
18
8
|
---
|
|
19
9
|
|
|
20
10
|
# CONTEXT-COMBINER
|
|
@@ -80,11 +70,9 @@ it were a single analysis — with PROOF that no source requirement was lost.
|
|
|
80
70
|
|
|
81
71
|
## Phases
|
|
82
72
|
|
|
83
|
-
`orc lane phases context-combiner --json` is this lane's pipeline
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
manifest, because a `read: section` pointer names a HEADING and a renamed heading
|
|
87
|
-
is a pointer into nothing.
|
|
73
|
+
`orc lane phases context-combiner --json` is this lane's pipeline. **The CLI owns the order**:
|
|
74
|
+
never derive it from the headings below, and never rename or renumber one
|
|
75
|
+
without the manifest (`../_shared/lane-contract.md` §Phases).
|
|
88
76
|
|
|
89
77
|
## Phase A — Load sources
|
|
90
78
|
Read every source `requirement-spec.md` (2+) the orchestrator hands you, plus
|
|
@@ -194,29 +182,12 @@ withheld until the open conflict is resolved and coverage is complete.
|
|
|
194
182
|
## No mini variant
|
|
195
183
|
Full lane only. `orc-analyze-mini` / `orc-mini` do not use the combiner.
|
|
196
184
|
|
|
197
|
-
##
|
|
185
|
+
## Lane contract (`../_shared/lane-contract.md` — read it ONLY when a call exits ≠ 0)
|
|
198
186
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
**ONE catalogue, and it is not you:** `orc lane calls context-combiner --json` names every
|
|
208
|
-
CLI call this lane makes, each with its exit-code contract, its cost, when to run
|
|
209
|
-
it, and what an EMPTY answer means. Never invent a spelling, never re-word an
|
|
210
|
-
exit code, and never re-derive a state word — the CLI's state words are the only
|
|
211
|
-
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
212
|
-
a failure**. A call the answer does not name is a call this lane does not make.
|
|
213
|
-
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
214
|
-
command you are about to run, out loud, before running it.
|
|
215
|
-
|
|
216
|
-
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
217
|
-
|
|
218
|
-
`orc rules slice --lane context-combiner --json` is the ONLY assembler; never build
|
|
219
|
-
the card here. It rides under the house rules and above the task —
|
|
220
|
-
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
221
|
-
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
222
|
-
never a silent choice) and `rules_overridden[]`.
|
|
187
|
+
- **Calls:** `orc lane calls context-combiner --json` names every call and its exit codes.
|
|
188
|
+
**An exit code is an ANSWER where it says so, not a failure.** Make no other call.
|
|
189
|
+
- **Config:** `orc lane config context-combiner --json`. Obey `effective`. Never merge
|
|
190
|
+
`.claude/orc.config.yaml` yourself (`../_shared/config-precedence.md`). Nothing
|
|
191
|
+
here is contested, gated or a stop: no preflight line, no gate to honour.
|
|
192
|
+
- **Rules:** `orc rules slice --lane context-combiner --json` is the ONLY assembler
|
|
193
|
+
(`../_shared/phases/rules.md`). Its `line` prints VERBATIM at preflight.
|
|
@@ -97,8 +97,8 @@ codifier: 9 language playbooks + a11y/perf rule packs), `context-combiner`
|
|
|
97
97
|
even for tiny tasks.** Orchestrator (Opus 4.8 high, or Opus 5.5 / Fable 5 at
|
|
98
98
|
medium+) only coordinates; each task's 0–100 score (computed arithmetically
|
|
99
99
|
from the planner's per-task `facets`) maps to a named executor agent via the
|
|
100
|
-
single
|
|
101
|
-
|
|
100
|
+
single 5-band table in `config.md` (`rubric_bands` = report granularity only),
|
|
101
|
+
Sonnet 5 low [0,21) → Opus 5.5 low [41,90) → Opus 5.5 medium [90,100].
|
|
102
102
|
- **Every executor slice carries** the intent-spec constraints, the task's
|
|
103
103
|
sliced acceptance criteria, the standing
|
|
104
104
|
house-rules card, and — when a code-pattern is resolved — your project's
|
|
@@ -3,12 +3,10 @@ name: orc
|
|
|
3
3
|
description: >
|
|
4
4
|
Use when orchestrating a multi-task build through a full pipeline: intake →
|
|
5
5
|
planning → scored parallel execution → review → verify → ship. Triggers:
|
|
6
|
-
"orchestrate this", "build this in parallel", "run this with subagents",
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
model; checkpoints eagerly; survives compaction and fresh-session resume.
|
|
11
|
-
Stack-agnostic.
|
|
6
|
+
"orchestrate this", "build this in parallel", "run this with subagents", "use
|
|
7
|
+
orc", or any request to take a feature/spec from intent to PR with subagents.
|
|
8
|
+
Scores each task to pick the cheapest capable model, and survives compaction
|
|
9
|
+
and fresh-session resume. Stack-agnostic.
|
|
12
10
|
---
|
|
13
11
|
|
|
14
12
|
# ORC (orchestrator spine)
|
|
@@ -81,7 +79,7 @@ trigger points; emit `GATE` trace lines.
|
|
|
81
79
|
|
|
82
80
|
## Dispatch via named agents (not prose)
|
|
83
81
|
|
|
84
|
-
**`orc run inflight` before ANY re-dispatch
|
|
82
|
+
**`orc run inflight` before ANY re-dispatch.**
|
|
85
83
|
A Task error does not kill the agent behind it, and exit 2 REFUSES by default —
|
|
86
84
|
`a lane that re-dispatches over a live attempt` has broken the contract. Canonical: `_shared/return-validation.md` §0.
|
|
87
85
|
|
|
@@ -89,7 +87,7 @@ Workers are model-pinned SUBAGENTS in `.claude/agents/` — the model is enforce
|
|
|
89
87
|
not requested in prose. Score every task from the planner-emitted `facets` via
|
|
90
88
|
the fixed arithmetic formula and SHOW the table with the facet vector + the
|
|
91
89
|
arithmetic (`B+N+L+T+fan+U = raw`; an un-shown number is not scored); map the
|
|
92
|
-
final score via the RESOLVED table in `config.md` — `opus5_only` (2-band Opus-5-only, FORCING) > `rubric_bands_override` > the default
|
|
90
|
+
final score via the RESOLVED table in `config.md` — `opus5_only` (2-band Opus-5-only, FORCING) > `rubric_bands_override` > the default 5-band (`rubric_bands` = granularity only, never a preset); NAME it when you show scores; sibling tasks differing in ≤1 facet share a
|
|
93
91
|
band or cite the differing facet (see `references/effort-and-mode.md`). EVERY
|
|
94
92
|
dispatch is scored — fix-cycle dispatches (review-fix, verify-fix, P2-batch,
|
|
95
93
|
requeue) run the same formula, inherit the original task's risk floor, and never
|
|
@@ -100,59 +98,35 @@ resolves to its Opus 5.5 agent, FORCING over everything below — `_shared/opus5
|
|
|
100
98
|
Caveat: a subagent's model can't exceed the MAIN session's tier — run the main
|
|
101
99
|
session on Opus or the Opus pins silently fall back (the original "wrong model" bug).
|
|
102
100
|
|
|
103
|
-
##
|
|
104
|
-
|
|
105
|
-
**
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
`../_shared/config-precedence.md`.
|
|
113
|
-
|
|
114
|
-
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
115
|
-
|
|
116
|
-
`orc rules slice --lane orc --json` is the ONLY assembler; never build
|
|
117
|
-
the card here. It rides under the house rules and above the task —
|
|
118
|
-
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
119
|
-
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
120
|
-
never a silent choice) and `rules_overridden[]`.
|
|
121
|
-
## Calls
|
|
122
|
-
|
|
123
|
-
**ONE catalogue, and it is not you:** `orc lane calls orc --json` names every
|
|
124
|
-
CLI call this lane makes, each with its exit-code contract, its cost, when to run
|
|
125
|
-
it, and what an EMPTY answer means. Never invent a spelling, never re-word an
|
|
126
|
-
exit code, and never re-derive a state word — the CLI's state words are the only
|
|
127
|
-
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
128
|
-
a failure**. A call the answer does not name is a call this lane does not make.
|
|
129
|
-
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
130
|
-
command you are about to run, out loud, before running it.
|
|
101
|
+
## Lane contract (`../_shared/lane-contract.md` — read it ONLY when a call exits ≠ 0)
|
|
102
|
+
|
|
103
|
+
- **Calls:** `orc lane calls orc --json` names every call and its exit codes.
|
|
104
|
+
**An exit code is an ANSWER where it says so, not a failure.** Make no other call.
|
|
105
|
+
- **Config:** `orc lane config orc --json`. Obey `effective`, print every line
|
|
106
|
+
in `announce[]` VERBATIM at preflight, and honour `stops[]` before wave 1.
|
|
107
|
+
Never merge `.claude/orc.config.yaml` yourself (`../_shared/config-precedence.md`).
|
|
108
|
+
- **Rules:** `orc rules slice --lane orc --json` is the ONLY assembler
|
|
109
|
+
(`../_shared/phases/rules.md`). Its `line` prints VERBATIM at preflight.
|
|
131
110
|
|
|
132
111
|
## Behavior trace (PERMANENT — always on, no config toggle)
|
|
133
112
|
|
|
134
|
-
Follow `../_shared/phases/trace.md` (ALWAYS load it at run start
|
|
135
|
-
`orc
|
|
136
|
-
|
|
137
|
-
`emit <VERB>` step below
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
113
|
+
Follow `../_shared/phases/trace.md` (ALWAYS load it at run start; pairing rule,
|
|
114
|
+
packet shape and run end are there). Lane token `orc`, tier **Build lanes**. The
|
|
115
|
+
`orc-trace.js` hook writes the `SPAWN`/`RETURN`/`PHASE-EDGE` skeleton; the
|
|
116
|
+
narrative is **dispatched, never remembered** — every `emit <VERB>` step below
|
|
117
|
+
means RECORD that event, with its REAL timestamp, into the current **phase packet**. Run start: create `log_dir`, write `log_dir/.current`
|
|
118
|
+
= `run-orc-<slug>-<DDMMYY>-<HHMMSS>.txt` AND `touch the trace file` of that name
|
|
119
|
+
in the SAME step; store `trace_path`.
|
|
141
120
|
**Under `ultra_mode` the lane segment is `ultra`, not `orc`** (`run-ultra-<slug>-…`)
|
|
142
121
|
— the filename IS the per-lane data, so an ultra run named `orc` is counted as a
|
|
143
122
|
plain `/orc` run forever, hiding the costliest lane in every usage report.
|
|
144
|
-
**Phase close =
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
NAME and checked against each return's `actual_model`/`actual_effort` — surface
|
|
152
|
-
any ⛔ DOWNGRADE to the user, not just into the packet. A phase ending with
|
|
153
|
-
`zero new trace lines is a protocol violation` — build and dispatch its packet
|
|
154
|
-
NOW, with the events' real stamps. Run end (Phase 8 or abort): the `FINISH`
|
|
155
|
-
packet goes out and RETURNS, then delete `log_dir/.current`.
|
|
123
|
+
**Phase close = `orc trace write --packet -`** (exit ≠ 0 → `orc-trace-writer-haiku-4-5`).
|
|
124
|
+
The first packet is solo — it repairs a hook-bootstrap filename.
|
|
125
|
+
`DISPATCH`/`VERIFY` models are derived from the agent NAME and checked against
|
|
126
|
+
each return's `actual_model`/`actual_effort` — surface any ⛔ DOWNGRADE to the
|
|
127
|
+
user, not just into the packet. A phase ending with
|
|
128
|
+
`zero new trace lines is a protocol violation` — build and write its packet
|
|
129
|
+
NOW, with the events' real stamps.
|
|
156
130
|
|
|
157
131
|
## Extra — a band that executes OFF Claude (config `extra_enabled`, default false)
|
|
158
132
|
|
|
@@ -175,7 +149,7 @@ review/verify re-check the invariants + `validation_gate[]` lines. Load
|
|
|
175
149
|
## Ultra lane (`/orc-ultra`)
|
|
176
150
|
|
|
177
151
|
`/orc-ultra` sets `ultra_mode: true` RUN-SCOPED (never persisted): full pipeline
|
|
178
|
-
+ Opus
|
|
152
|
+
+ Opus 5.5 xhigh Advisor (Phase U0) + three judge gates + forced overrides (deep
|
|
179
153
|
analyze, pattern/testgen/security on, executor tier floor); never on plain
|
|
180
154
|
`/orc` or orc-mini. Load `references/ultra-mode.md` at Phase 0 when ultra_mode;
|
|
181
155
|
orc-advisor / orc-judge load at their dispatch points.
|
|
@@ -214,10 +188,9 @@ them; they are never dispatched as subagents).
|
|
|
214
188
|
|
|
215
189
|
## Phases
|
|
216
190
|
|
|
217
|
-
`orc lane phases orc --json` **is** the pipeline
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
exists to prevent.
|
|
191
|
+
`orc lane phases orc --json` **is** the pipeline; this table is only its human
|
|
192
|
+
index. **The CLI owns the order**: never derive it from these filenames
|
|
193
|
+
(`../_shared/lane-contract.md` §Phases).
|
|
221
194
|
|
|
222
195
|
**Read a row when its phase fires, not on activation.** Every row is
|
|
223
196
|
`on-phase` — this spine deliberately carries no `always` phase pointer. **Read
|
|
@@ -228,8 +201,7 @@ each row.
|
|
|
228
201
|
|
|
229
202
|
W13 gave those ten a second reader (`orc-diy`), so they moved to
|
|
230
203
|
`_shared/phases/`. Intake and Integration have one consumer each and stay home
|
|
231
|
-
— a file with one consumer stays home.
|
|
232
|
-
a `trim` layer beside the `full` one.
|
|
204
|
+
— a file with one consumer stays home.
|
|
233
205
|
|
|
234
206
|
| # | Phase | File | Read | Trace |
|
|
235
207
|
|---|-------|------|------|-------|
|
|
@@ -252,4 +224,4 @@ their config key is resolved by `orc lane config orc --json`, never read raw.
|
|
|
252
224
|
## Waiting mid-run (`/orc-wait`)
|
|
253
225
|
|
|
254
226
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
255
|
-
Checkpoint **full** · safe point **wave or phase edge**.
|
|
227
|
+
Checkpoint **full** · safe point **wave or phase edge**.
|
|
@@ -26,32 +26,30 @@ the `announce[]` boundary and the CLI-absent floor:
|
|
|
26
26
|
## Score → model table (executor agent dispatched by name)
|
|
27
27
|
|
|
28
28
|
The orchestrator scores each task 0–100, then maps to a model via this SINGLE
|
|
29
|
-
canonical
|
|
29
|
+
canonical 5-band table, and dispatches the matching **executor agent**.
|
|
30
30
|
`rubric_bands` sets scoring granularity only — it never selects a table.
|
|
31
31
|
|
|
32
32
|
| Score | Model | Effort | Executor agent |
|
|
33
33
|
|-------|-------|--------|----------------|
|
|
34
|
-
| [0,
|
|
35
|
-
| [
|
|
36
|
-
| [
|
|
37
|
-
| [
|
|
38
|
-
| [
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
`
|
|
51
|
-
`
|
|
52
|
-
|
|
53
|
-
Not deleted, because this is a TABLE change and not a model change — and an
|
|
54
|
-
agent's model change is always a rename.
|
|
34
|
+
| [0,21) | claude-sonnet-5-5 | low | orc-executor-sonnet-5-low |
|
|
35
|
+
| [21,31) | claude-sonnet-5-5 | medium | orc-executor-sonnet-5-med |
|
|
36
|
+
| [31,41) | claude-sonnet-5-5 | high | orc-executor-sonnet-5-high |
|
|
37
|
+
| [41,90) | claude-opus-5-5 | low | orc-executor-opus-5-low |
|
|
38
|
+
| [90,100] | claude-opus-5-5 | medium | orc-executor-opus-5-med |
|
|
39
|
+
|
|
40
|
+
The risk floor (≥70) lands `orc-executor-opus-5-low` at minimum in THIS table.
|
|
41
|
+
Above ~65 the useful dial stopped being the model GENERATION and became the
|
|
42
|
+
EFFORT, which is why the old four Opus rows are two. **Every band from score 41
|
|
43
|
+
needs an Opus 5.5 MAIN session** or it silently falls back to the session model
|
|
44
|
+
(the tier-honesty rule reports the downgrade) — that is the cost of this table.
|
|
45
|
+
|
|
46
|
+
**Seven executors are named by NO band** — `orc-executor-haiku-4-5`,
|
|
47
|
+
`orc-executor-sonnet-4-6-med`, `orc-executor-sonnet-4-6-high`,
|
|
48
|
+
`orc-executor-opus-4-7-med`, `orc-executor-opus-4-7-high`,
|
|
49
|
+
`orc-executor-opus-4-8-high` and `orc-executor-opus-5-high`. They still ship,
|
|
50
|
+
reachable through `rubric_bands_override`, `orc diy`'s `fixed_executor` and
|
|
51
|
+
`extra_fallback_agent`. Not deleted, because this is a TABLE change and not a
|
|
52
|
+
model change — and an agent's model change is always a rename.
|
|
55
53
|
|
|
56
54
|
### The Opus-5-only ladder (`opus5_only`, default **false**)
|
|
57
55
|
|
|
@@ -64,10 +62,10 @@ One model, EFFORT as the cost dial. Off by default; nothing changes until set.
|
|
|
64
62
|
|
|
65
63
|
Two bands, sharing the 90 edge with the default table's top two rows. That
|
|
66
64
|
symmetry is the point: once the default table's high end is already Opus 5.5 with
|
|
67
|
-
effort as the dial, this mode differs from it only BELOW
|
|
65
|
+
effort as the dial, this mode differs from it only BELOW 41, so a third band
|
|
68
66
|
would be a distinction the default table stopped making.
|
|
69
67
|
|
|
70
|
-
**Tier cost:** today
|
|
68
|
+
**Tier cost:** today two bands in five, from score 41, need an Opus 5.5 main session; with this on,
|
|
71
69
|
EVERY dispatch does, so a lower session downgrades every task (warn-only — a
|
|
72
70
|
hook can gate effort, never model). **Scope:** it is NOT executor-only — it also
|
|
73
71
|
forces every fixed role below, across every lane. orc-diy's table
|
|
@@ -84,7 +82,7 @@ un-shown number.
|
|
|
84
82
|
|------|-------|
|
|
85
83
|
| System Analyst | orc-system-analyst-opus-5-high |
|
|
86
84
|
| Requirement Planner | orc-planner-opus-5-med |
|
|
87
|
-
| Reviewer | orc-reviewer-opus-5-
|
|
85
|
+
| Reviewer | orc-reviewer-opus-5-low |
|
|
88
86
|
| Verifier | orc-verifier-opus-5-med |
|
|
89
87
|
| Mini analyst | orc-analyze-mini-sonnet-5-high |
|
|
90
88
|
| Mini planner | orc-planner-mini-sonnet-5-high |
|
|
@@ -95,7 +93,7 @@ un-shown number.
|
|
|
95
93
|
|
|
96
94
|
Under `opus5_only`, every role above that is not already `claude-opus-5-5`
|
|
97
95
|
dispatches its Opus 5.5 variant instead — plus the roles owned by other lanes
|
|
98
|
-
(scout, wiki scanner,
|
|
96
|
+
(scout, wiki scanner, retro miner, fast executor).
|
|
99
97
|
|
|
100
98
|
## Where each subsystem's rule is written down
|
|
101
99
|
|
|
@@ -120,7 +118,7 @@ value participates in, and each has exactly one canonical copy.
|
|
|
120
118
|
| Foreign dispatch | `extra_enabled` and the `extra_*` block; every armed run prints its `extra:` line at Phase 1 | `../_shared/extra-dispatch.md` |
|
|
121
119
|
| Stacked PRs | the `stacked_pr*` keys gate the Phase 8 stack (full `/orc` + `/orc-ultra` only) | `../orc-pr-setup/SKILL.md` |
|
|
122
120
|
| Retro | `retro_repo` is where `/orc-retro` files its report; it hard-gates on a delivery channel and does not run at all without one | `../orc-retro/SKILL.md` |
|
|
123
|
-
| Paths | `log_dir` (traces
|
|
121
|
+
| Paths | `log_dir` (traces — kept until you run `orc clear logs --apply`, or until the automatic sweep removes them: `log_retention_auto: on`, older than `log_retention_days`), `run_dir` (`.claude/orc/run` — outside the installer's blast radius), and the analyst/planner/report dirs | `../_shared/config-precedence.md` |
|
|
124
122
|
| Ultra | **no config key at all** — `/orc-ultra` forces its overrides RUN-SCOPED and never writes them to `orc.config.yaml` | `references/ultra-mode.md` |
|
|
125
123
|
|
|
126
124
|
**TDD — Lane policy (fixed, not configurable).** Full orc + ultra always on ·
|
|
@@ -58,6 +58,7 @@ O: Code pattern? U: none. Findings (P0–P3 ladder, each P0–P2 anchored file:l
|
|
|
58
58
|
|
|
59
59
|
## Phase 7 — Summary
|
|
60
60
|
O: 6 tasks/3 waves/6 spawns/1 pause/1 fresh-session resume · 1 needs_context · 1 escalation · verify fixed_then_passed · branch green. P2 fix-batch: none · Apply the 2 P3 cosmetics? U: no.
|
|
61
|
+
O: review close → `orc gotcha observe` ×3 (P1 addressed · 2× P3 wontfix, each with `run`) → `FINDING-OUTCOME addressed=1 disputed=0 wontfix=2 open=0 pre=0 suppressed=0 :: functional.check:1/1,evolvability.documentation:0/2`
|
|
61
62
|
|
|
62
63
|
## Phase 8 — Ship (orc-pr, reads pr.md)
|
|
63
64
|
O: Branch: feat/notifications. Commit? Push? PR? U: yes all.
|
|
@@ -66,7 +67,7 @@ O: ✓ committed → pushed → run/merchant-notifications/DRP-482-add-merchant-
|
|
|
66
67
|
Log deleted · checkpoint + dispatch log KEPT · completion dispatch report shown → "Run /usage to see your remaining limits."
|
|
67
68
|
|
|
68
69
|
## What this exercises
|
|
69
|
-
always-spawn (even cheap tasks get a subagent) · facet-scored arithmetic ·
|
|
70
|
+
always-spawn (even cheap tasks get a subagent) · facet-scored arithmetic · 5-band ladder ·
|
|
70
71
|
per-run folder run/merchant-notifications/ · usage reminder (no programmatic /usage) ·
|
|
71
72
|
planner grounding spot-check catching a hallucinated path · executor evidence (verbatim
|
|
72
73
|
build/test proof) · reviewer quote spot-check before any P0/P1 action ·
|
|
@@ -108,7 +108,7 @@ clamp 0..100 → the RESOLVED table (below).
|
|
|
108
108
|
|
|
109
109
|
**Which table (highest wins):** `opus5_only: true` (the 2-band Opus-5-only
|
|
110
110
|
preset: `[0,90)` low · `[90,100]` medium) → `rubric_bands_override`
|
|
111
|
-
(hand-written rows) → the default
|
|
111
|
+
(hand-written rows) → the default 5-band table. All three are in `config.md`.
|
|
112
112
|
The formula, the facets and the risk floor are IDENTICAL in every case — only
|
|
113
113
|
the score→agent mapping changes. Three consequences worth stating so nobody
|
|
114
114
|
re-derives them per run:
|
|
@@ -123,14 +123,14 @@ re-derives them per run:
|
|
|
123
123
|
Show the user the full table (task, the facet vector, the arithmetic
|
|
124
124
|
`B+N+L+T+fan+U = raw`, any risk floor, final, override+reason if any, dispatched
|
|
125
125
|
model) BEFORE dispatching — an un-shown number is not a scored number. **Head it
|
|
126
|
-
with the RESOLVED table's name** (`
|
|
126
|
+
with the RESOLVED table's name** (`5-band default` / `Opus-5-only ladder
|
|
127
127
|
(opus5_only)` / `custom (rubric_bands_override)`): the same logic
|
|
128
128
|
applies to the mapping as to the number.
|
|
129
129
|
|
|
130
130
|
**Extra (v0.50.0, `extra_enabled`) adds a `via` column and can make the head a
|
|
131
131
|
PAIR.** An Extra route row is an OVERLAY that outranks the tables above **only
|
|
132
132
|
for the scores it covers**, so a run can genuinely be running two tables at once
|
|
133
|
-
and the head names both (`
|
|
133
|
+
and the head names both (`5-band default + extra rows [0,30) [30,70)`). The
|
|
134
134
|
column reads `claude` or `extra:<profile> (<engine>)` and comes from
|
|
135
135
|
`orc extra resolve --json` — the formula, the facets and the risk floor are
|
|
136
136
|
untouched, and **the score is computed before the routing, never after it**. Two
|
|
@@ -170,14 +170,14 @@ the band is what matters. Compare a new task to these facet-by-facet.
|
|
|
170
170
|
|
|
171
171
|
| Task | breadth·novelty·logic·test · fan_in/out · unc | Arithmetic | Band |
|
|
172
172
|
|---|---|---|---|
|
|
173
|
-
| Rename a config key across 4 files + its test | 5·mechanical·none·update-existing · 0/0 · low | 10+0+0+4 = **14** |
|
|
174
|
-
| New CRUD endpoint following a sibling route | 3·imitate·branching·new-tests · 1/0 · low | 6+8+8+8+5 = **35** | sonnet-
|
|
175
|
-
| Bug fix across 2 files with a repro test | 3·imitate·branching·new-tests · 0/0 · medium | 6+8+8+8+6 = **36** | sonnet-
|
|
176
|
-
| Isolated component from the design system | 3·new-surface·branching·new-tests · 0/0 · low | 6+18+8+8 = **40** | sonnet-
|
|
177
|
-
| Notification model + enum other tasks consume | 3·new-surface·stateful·new-tests · 0/3 · low | 6+18+16+8+9 = **57** |
|
|
178
|
-
| Service-layer refactor behind a stable interface | 5·imitate·stateful·update-existing · 0/3 · medium | 10+8+16+4+9+6 = **53** |
|
|
179
|
-
| Add role check to payment-refund endpoint | 3·imitate·branching·new-tests · 0/0 · low · **risk=[auth,money]** | 30 raw → **floor 70** | opus-5-low [
|
|
180
|
-
| Migrate orders table to split-name + backfill | 6·new-surface·stateful·new-tests · 1/3 · high · **risk=[migration,data-integrity]** | 15+18+16+8+5+9+12 = 83 (floor 70) → **83** | opus-5-low [
|
|
173
|
+
| Rename a config key across 4 files + its test | 5·mechanical·none·update-existing · 0/0 · low | 10+0+0+4 = **14** | sonnet-5-low [0,21) |
|
|
174
|
+
| New CRUD endpoint following a sibling route | 3·imitate·branching·new-tests · 1/0 · low | 6+8+8+8+5 = **35** | sonnet-5-high [31,41) |
|
|
175
|
+
| Bug fix across 2 files with a repro test | 3·imitate·branching·new-tests · 0/0 · medium | 6+8+8+8+6 = **36** | sonnet-5-high [31,41) |
|
|
176
|
+
| Isolated component from the design system | 3·new-surface·branching·new-tests · 0/0 · low | 6+18+8+8 = **40** | sonnet-5-high [31,41) |
|
|
177
|
+
| Notification model + enum other tasks consume | 3·new-surface·stateful·new-tests · 0/3 · low | 6+18+16+8+9 = **57** | opus-5-low [41,90) |
|
|
178
|
+
| Service-layer refactor behind a stable interface | 5·imitate·stateful·update-existing · 0/3 · medium | 10+8+16+4+9+6 = **53** | opus-5-low [41,90) |
|
|
179
|
+
| Add role check to payment-refund endpoint | 3·imitate·branching·new-tests · 0/0 · low · **risk=[auth,money]** | 30 raw → **floor 70** | opus-5-low [41,90) |
|
|
180
|
+
| Migrate orders table to split-name + backfill | 6·new-surface·stateful·new-tests · 1/3 · high · **risk=[migration,data-integrity]** | 15+18+16+8+5+9+12 = 83 (floor 70) → **83** | opus-5-low [41,90) |
|
|
181
181
|
|
|
182
182
|
Two disciplines the vectors encode: (1) a small diff is NOT a low score when a
|
|
183
183
|
cited `risk` facet forces the floor (the refund row — 30 raw, floored to 70); (2)
|
|
@@ -188,15 +188,15 @@ applies it silently.
|
|
|
188
188
|
## Model ladder → the single score→model table
|
|
189
189
|
|
|
190
190
|
The score→model mapping is NOT hardcoded here — it lives in `config.md` as ONE
|
|
191
|
-
canonical
|
|
191
|
+
canonical 5-band table (there is no longer a narrow/wide preset). Read config at
|
|
192
192
|
run start and map each task's final score through that table (or
|
|
193
193
|
`rubric_bands_override`). The orchestrator dispatches the executor agent BY NAME;
|
|
194
194
|
it does not request a raw model. `rubric_bands` sets only how many bands the
|
|
195
195
|
rubric REPORTS (score granularity), never which table is used.
|
|
196
196
|
|
|
197
|
-
The
|
|
198
|
-
`sonnet-
|
|
199
|
-
`opus-5-
|
|
197
|
+
The 5 bands (see config.md for the exact edges): `sonnet-5-low` [0,21) ·
|
|
198
|
+
`sonnet-5-med` [21,31) · `sonnet-5-high` [31,41) · `opus-5-low` [41,90) ·
|
|
199
|
+
`opus-5-med` [90,100]. Effort tiers rank
|
|
200
200
|
`low < medium < high < xhigh < max`.
|
|
201
201
|
|
|
202
202
|
## Fixed model assignments (not scored)
|
|
@@ -204,14 +204,14 @@ The 6 bands (see config.md for the exact edges): `haiku-4-5` [0,30) ·
|
|
|
204
204
|
- **Orchestrator (you):** Opus 4.8 high — or Opus 5.5 / Fable 5 at medium+, the
|
|
205
205
|
two models that clear the guard from medium up. Never downgrade yourself.
|
|
206
206
|
- **Review** — Superpowers path: Sonnet 4.6, medium. OpenSpec/self path:
|
|
207
|
-
Opus 5.5,
|
|
207
|
+
Opus 5.5, low (`orc-reviewer-opus-5-low`; medium until v2.1.0).
|
|
208
208
|
- **Verify:** Opus 5.5, medium (`orc-verifier-opus-5-med`).
|
|
209
209
|
- **Analyst:** Opus 5.5, high. **Planner:** Opus 5.5, medium. **Test author:**
|
|
210
210
|
Opus 5.5, medium. **Combiner:** Opus 5.5, high. **Ultra advisor/judge:** Opus 5.5,
|
|
211
211
|
xhigh — every core fixed role is pinned to Opus 5.5 as of v0.34.0.
|
|
212
212
|
- **Merge-conflict resolver:** Opus 4.8, medium.
|
|
213
213
|
|
|
214
|
-
Note: every band in the table above is a real dispatch target (
|
|
214
|
+
Note: every band in the table above is a real dispatch target (sonnet-5 through
|
|
215
215
|
opus-5). If a model tier is unavailable in the environment, fall back UP to the
|
|
216
216
|
next capable tier (never silently substitute a different family/effort).
|
|
217
217
|
|