@azure-id/orc 1.7.1 → 1.8.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.
Files changed (58) hide show
  1. package/CHANGELOG.md +3649 -3381
  2. package/README-id.md +923 -844
  3. package/README.md +836 -788
  4. package/bin/build-agents.js +43 -27
  5. package/bin/cli.js +701 -3
  6. package/bin/graph-extract.js +927 -0
  7. package/bin/graph-notes.js +188 -0
  8. package/bin/graph-query.js +808 -0
  9. package/bin/graph-resolve.js +178 -0
  10. package/bin/graph-signals.js +277 -0
  11. package/bin/graph.js +605 -0
  12. package/bin/verify-contracts.js +4669 -4553
  13. package/bin/verify-package.js +626 -616
  14. package/bin/webui/api.js +1419 -1414
  15. package/bin/webui/fixtures/index.js +579 -576
  16. package/bin/webui/fixtures/knowledge.js +316 -291
  17. package/bin/webui/i18n/en/knowledge.json +167 -151
  18. package/bin/webui/i18n/en/overview.json +101 -100
  19. package/bin/webui/i18n/id/knowledge.json +167 -151
  20. package/bin/webui/i18n/id/overview.json +101 -100
  21. package/bin/webui/js/panels/knowledge.js +1065 -1006
  22. package/bin/webui/js/panels/overview.js +492 -488
  23. package/package.json +39 -39
  24. package/templates/agents/MODEL-MAPPING.md +163 -158
  25. package/templates/agents/orc-executor-haiku-4-5.md +133 -121
  26. package/templates/agents/orc-executor-opus-4-7-high.md +134 -122
  27. package/templates/agents/orc-executor-opus-4-7-med.md +134 -122
  28. package/templates/agents/orc-executor-opus-4-8-high.md +134 -122
  29. package/templates/agents/orc-executor-opus-5-high.md +134 -122
  30. package/templates/agents/orc-executor-opus-5-low.md +134 -122
  31. package/templates/agents/orc-executor-opus-5-med.md +134 -122
  32. package/templates/agents/orc-executor-sonnet-4-6-high.md +134 -122
  33. package/templates/agents/orc-executor-sonnet-4-6-med.md +134 -122
  34. package/templates/agents/orc-executor-sonnet-5-high.md +134 -122
  35. package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +86 -0
  36. package/templates/hooks/README.md +444 -396
  37. package/templates/hooks/orc-graph-hook.js +336 -0
  38. package/templates/hooks/orc-statusline-render.js +922 -921
  39. package/templates/hooks/orc-statusline.js +1596 -1545
  40. package/templates/skills/_shared/README.md +4 -0
  41. package/templates/skills/_shared/code-graph.md +220 -0
  42. package/templates/skills/_shared/opus5-only.md +4 -0
  43. package/templates/skills/_shared/phases/execution.md +166 -147
  44. package/templates/skills/_shared/phases/planning.md +142 -135
  45. package/templates/skills/_shared/phases/preflight.md +132 -118
  46. package/templates/skills/_shared/phases/review.md +63 -53
  47. package/templates/skills/_shared/phases/ship.md +96 -88
  48. package/templates/skills/_shared/phases/trace.md +6 -0
  49. package/templates/skills/_shared/phases/wiki-consult.md +194 -189
  50. package/templates/skills/_shared/read-ladder.md +124 -102
  51. package/templates/skills/_shared/return-validation.md +259 -250
  52. package/templates/skills/orc/SKILL.md +255 -254
  53. package/templates/skills/orc-diy/references/flow-schema.md +101 -100
  54. package/templates/skills/orc-fast/SKILL.md +236 -229
  55. package/templates/skills/orc-mini/SKILL.md +267 -259
  56. package/templates/skills/orc-quick/SKILL.md +378 -361
  57. package/templates/skills/orc-quick/references/dispatch-gate.md +6 -0
  58. package/templates/skills/orc-wiki/references/staleness.md +294 -288
package/package.json CHANGED
@@ -1,39 +1,39 @@
1
- {
2
- "name": "@azure-id/orc",
3
- "version": "1.7.1",
4
- "description": "ORC — an orchestrator skill constellation for Claude Code: intake, planning, scored parallel subagents, code-pattern matching, review, verify, ship, plus a project knowledge-base wiki.",
5
- "bin": {
6
- "orc": "bin/cli.js"
7
- },
8
- "files": [
9
- "README.md",
10
- "README-id.md",
11
- "CHANGELOG.md",
12
- "bin/",
13
- "mock-run/",
14
- "templates/"
15
- ],
16
- "scripts": {
17
- "postinstall": "node -e \"try{require('fs').accessSync(require('path').join(__dirname,'bin','cli.js'));console.log('\\nORC installed. Run: orc init (or orc init --global)\\n')}catch(e){console.error('\\n[orc] WARNING: bin/cli.js missing from this install — the repo/publish was incomplete. Reinstall from a complete source.\\n')}\"",
18
- "build:agents": "node bin/build-agents.js",
19
- "test": "node bin/test-run.js",
20
- "verify": "node bin/build-agents.js --check && node bin/verify-package.js && node bin/verify-contracts.js",
21
- "prepack": "node bin/build-agents.js --check && node bin/verify-package.js && node bin/verify-contracts.js && node bin/test-run.js"
22
- },
23
- "keywords": [
24
- "claude",
25
- "claude-code",
26
- "orchestrator",
27
- "skills",
28
- "agents",
29
- "ai"
30
- ],
31
- "license": "MIT",
32
- "engines": {
33
- "node": ">=18"
34
- },
35
- "repository": {
36
- "type": "git",
37
- "url": "github:azure-id/orc"
38
- }
39
- }
1
+ {
2
+ "name": "@azure-id/orc",
3
+ "version": "1.8.1",
4
+ "description": "ORC — an orchestrator skill constellation for Claude Code: intake, planning, scored parallel subagents, code-pattern matching, review, verify, ship, plus a project knowledge-base wiki.",
5
+ "bin": {
6
+ "orc": "bin/cli.js"
7
+ },
8
+ "files": [
9
+ "README.md",
10
+ "README-id.md",
11
+ "CHANGELOG.md",
12
+ "bin/",
13
+ "mock-run/",
14
+ "templates/"
15
+ ],
16
+ "scripts": {
17
+ "postinstall": "node -e \"try{require('fs').accessSync(require('path').join(__dirname,'bin','cli.js'));console.log('\\nORC installed. Run: orc init (or orc init --global)\\n')}catch(e){console.error('\\n[orc] WARNING: bin/cli.js missing from this install — the repo/publish was incomplete. Reinstall from a complete source.\\n')}\"",
18
+ "build:agents": "node bin/build-agents.js",
19
+ "test": "node bin/test-run.js",
20
+ "verify": "node bin/build-agents.js --check && node bin/verify-package.js && node bin/verify-contracts.js",
21
+ "prepack": "node bin/build-agents.js --check && node bin/verify-package.js && node bin/verify-contracts.js && node bin/test-run.js"
22
+ },
23
+ "keywords": [
24
+ "claude",
25
+ "claude-code",
26
+ "orchestrator",
27
+ "skills",
28
+ "agents",
29
+ "ai"
30
+ ],
31
+ "license": "MIT",
32
+ "engines": {
33
+ "node": ">=18"
34
+ },
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "github:azure-id/orc"
38
+ }
39
+ }
@@ -1,158 +1,163 @@
1
- # ORC Agents — Roster, Model Mapping & Verification
2
-
3
- Single-role, model-specific agents. The orchestrator dispatches BY AGENT NAME —
4
- model is pinned in frontmatter, not requested in prose. No agent is multi-role.
5
-
6
- ## Executors (score-mapped by the single 6-band table in config.md)
7
-
8
- | Score band | Agent | Model | Effort |
9
- |-----------|-------|-------|--------|
10
- | [0,30) | orc-executor-haiku-4-5 | claude-haiku-4-5 | — (no ladder) |
11
- | [30,40) | orc-executor-sonnet-4-6-med | claude-sonnet-4-6 | medium |
12
- | [40,55) | orc-executor-sonnet-4-6-high | claude-sonnet-4-6 | high |
13
- | [55,65) | orc-executor-sonnet-5-high | claude-sonnet-5 | high |
14
- | [65,90) | orc-executor-opus-5-low | claude-opus-5 | low |
15
- | [90,100] | orc-executor-opus-5-med | claude-opus-5 | medium |
16
-
17
- Score→executor mapping lives in config.md (one canonical 6-band table;
18
- `rubric_bands` is granularity only, not a preset selector).
19
-
20
- **Executors no band names — they still ship.**
21
- `orc-executor-opus-4-7-med`, `orc-executor-opus-4-7-high`,
22
- `orc-executor-opus-4-8-high` and `orc-executor-opus-5-high` are still generated
23
- and still installed. Since v1.0.0 they are reachable only when a user names one
24
- explicitly: `rubric_bands_override`, `orc diy`'s `fixed_executor`, or
25
- `extra_fallback_agent`. They are not deleted because a table change is not a
26
- model change, and an agent's model change is always a RENAME.
27
-
28
- ## Fixed-role agents
29
-
30
- | Agent | Model | Effort | Role |
31
- |-------|-------|--------|------|
32
- | orc-system-analyst-opus-5-high | claude-opus-5 | high | doc analysis |
33
- | orc-planner-opus-5-med | claude-opus-5 | medium | planning |
34
- | orc-reviewer-opus-5-med | claude-opus-5 | medium | review |
35
- | orc-verifier-opus-5-med | claude-opus-5 | medium | verify (+ /orc-verify) |
36
- | orc-test-author-opus-5-med | claude-opus-5 | medium | test authoring (opt-in Phase 6.5; writes tests, never runs) |
37
- | orc-analyze-mini-sonnet-5-high | claude-sonnet-5 | high | mini analysis |
38
- | orc-planner-mini-sonnet-5-high | claude-sonnet-5 | high | mini planning |
39
- | orc-scout-sonnet-4-6-high | claude-sonnet-4-6 | high | deep-analysis code scout (read-only) |
40
- | orc-context-combiner-opus-5-high | claude-opus-5 | high | combine 2+ related analyses (full lane) |
41
- | orc-pattern-codifier-sonnet-5-high | claude-sonnet-5 | high | reconcile per-language playbook vs. project files → cached code-pattern (opt-in) |
42
- | orc-retro-sonnet-5-high | claude-sonnet-5 | high | mine behavior traces → calibration report (/orc-retro; read-only) |
43
- | orc-wiki-scanner-opus-4-8-high | claude-opus-4-8 | high | scan ONE wiki coverage area → evidence-anchored doc body + crosslink tags (/orc-wiki only; read-only against the project). The DEEP half of the v0.46.0 tier ladder: first scan · STRUCTURAL · wide delta · a new exported symbol |
44
- | orc-wiki-scanner-sonnet-5-high | claude-sonnet-5 | high | the LIGHT half of the same ladder — an existing doc whose covered files moved by a small, no-new-surface delta. IDENTICAL return contract; it escalates with `needs_context` rather than under-delivering. Never used for a first scan |
45
- | orc-executor-opus-5-med | claude-opus-5 | medium | the `[90,100]` band in BOTH tables |
46
- | orc-executor-opus-5-low | claude-opus-5 | low | the default table's `[65,90)`, `opus5_only`'s `[0,90)`, and the forced mini/fast executor |
47
- | orc-advisor-opus-5-xhigh | claude-opus-5 | xhigh | ultra Phase U0 advisory brief + rubric + clarification questions (read-only; /orc-ultra only) |
48
- | orc-judge-opus-5-xhigh | claude-opus-5 | xhigh | ultra judgment gates — analysis / plan / implementation (read-only; /orc-ultra only) |
49
- | orc-learn-writer-opus-5-low | claude-opus-5 | low | deepen ONE feature → learning-docs/<slug>/ (/orc-learn only; git-ignored output) |
50
- | orc-claude-writer-opus-4-8-high | claude-opus-4-8 | high | scan repo → write/refresh the local CLAUDE.md (/orc-claude only; zero questions) |
51
- | orc-challenge-judge-opus-5-high | claude-opus-5 | high | grade ONE finished artifact against a FROZEN goal + template (/orc-challenge only; read-only). It reports findings and can never declare a pass — `orc challenge record` computes that |
52
- | orc-challenge-advisor-opus-5-med | claude-opus-5 | medium | turn a FAILED verdict into a remediation strategy — root-cause groups, an order with reasons, the decisions that are not defects (/orc-challenge only; read-only, no prose, no diffs) |
53
- | orc-challenge-reader-opus-5-low | claude-opus-5 | low | the COLD READ: answer questions from ONE artifact with `Read` and nothing else (/orc-challenge only). LOW ON PURPOSE — a harder-thinking reader reasons around the gaps D4 exists to find, so a stronger configuration is a worse instrument |
54
- | orc-challenge-contrarian-opus-5-high | claude-opus-5 | high | THE COUNCIL (v0.49.1): start from "this has a fatal flaw" and go find it — load-bearing claim, then unhappy path, then second-order (/orc-challenge only; read-only). HIGH IS THE INSTRUMENT: a shallow contrarian returns the three surface complaints the free lint already caught |
55
- | orc-challenge-outsider-opus-5-low | claude-opus-5 | low | THE COUNCIL: what does this page assume you already know? The TIGHTEST slice in the lane — the artifact and this protocol, `Read` only, no goal, no audience, no template (/orc-challenge only). LOW IS A MEASUREMENT, NOT A COST CHOICE: a harder-thinking outsider reasons its way around an unexplained acronym and reports the document is fine. NOTHING MAY UPGRADE IT |
56
- | orc-challenge-executor-opus-5-med | claude-opus-5 | medium | THE COUNCIL: can this be started on Monday, and where is the first step? Returns D6/D2 findings plus the literal `monday_morning` list — or the point at which writing it becomes impossible (/orc-challenge only; read-only, `Bash` to CHECK a prerequisite, never to change anything). Not an ORC build executor — it writes nothing |
57
- | orc-challenge-principles-opus-5-high | claude-opus-5 | high | THE COUNCIL: the ONLY role allowed to say the frozen goal is wrong. Returns `premise` objects — no severity, never in findings[], never near the pass gate — and its report NEVER reaches the judge (/orc-challenge only; read-only). HIGH because rebuilding a problem statement from the ground up is the deepest reasoning in the lane |
58
- | orc-challenge-expansionist-opus-5-med | claude-opus-5 | medium | THE COUNCIL: the only lens not looking for a defect — what is being undervalued? Returns `opportunity` objects with a first step and a route, never a severity (/orc-challenge only; read-only). MEDIUM because it is pattern work against a concrete artifact, the same class as the advisor |
59
- | orc-doc-writer-opus-5-med | claude-opus-5 | medium | write ONE part file of a long document from a slice of sections (/orc-doc only). It writes to `.work/<id>.md` and NEVER opens document.md — that is what makes parallel writing safe here |
60
- | orc-doc-checker-opus-5-low | claude-opus-5 | low | read ONE LINE RANGE of a document and report anchored findings (/orc-doc only; read-only). LOW ON PURPOSE — the same reasoning that pins the challenge cold reader: a harder-thinking checker reasons its way past a gap a real reader would trip on |
61
- | orc-test-designer-opus-5-high | claude-opus-5 | high | fill the GAPS the free case matrix could not derive, and author the front-end journey SCRIPT (/orc-test only). HIGH IS THE INSTRUMENT: a shallow designer returns the three obvious cases the deterministic expansion already covered, which is the one output that costs money and adds nothing |
62
- | orc-test-interpreter-opus-5-low | claude-opus-5 | low | read ONLY a run’s evidence files and say whether what is in them is a finding (/orc-test only; SEALED slice, `Read` and nothing else). LOW IS A MEASUREMENT CHOICE, NOT A COST ONE, and nothing may ever upgrade it: a harder-thinking interpreter reasons its way to why a leaked stack trace is probably fine in staging |
63
- | orc-trace-writer-haiku-4-5 | claude-haiku-4-5 | — (no ladder) | append one phase block of behavior-trace narration from an orchestrator packet (every trace-owning lane; append-only, never reads source) |
64
-
65
- ## Opus-5-only mode agents (hard-gated; dispatched only when `opus5_only: true`)
66
-
67
- `opus5_only` FORCES every dispatched role onto `claude-opus-5`, with effort as
68
- the only cost dial. Each agent below replaces its default with the same slice
69
- and the same return contract. Effort is PINNED per role — no CLI rewrites
70
- these. Full mapping + precedence:
71
- `../skills/_shared/opus5-only.md`.
72
-
73
- | Agent | Model | Effort | Replaces |
74
- |-------|-------|--------|----------|
75
- | orc-executor-opus-5-low | claude-opus-5 | low | the `[0,90)` band · orc-mini's and orc-fast's fixed executor |
76
- | orc-executor-opus-5-med | claude-opus-5 | medium | the `[90,100]` band |
77
- | orc-analyze-mini-opus-5-med | claude-opus-5 | medium | orc-analyze-mini-sonnet-5-high |
78
- | orc-planner-mini-opus-5-med | claude-opus-5 | medium | orc-planner-mini-sonnet-5-high |
79
- | orc-scout-opus-5-low | claude-opus-5 | low | orc-scout-sonnet-4-6-high |
80
- | orc-pattern-codifier-opus-5-med | claude-opus-5 | medium | orc-pattern-codifier-sonnet-5-high |
81
- | orc-wiki-scanner-opus-5-med | claude-opus-5 | medium | orc-wiki-scanner-opus-4-8-high |
82
- | orc-claude-writer-opus-5-med | claude-opus-5 | medium | orc-claude-writer-opus-4-8-high |
83
- | orc-retro-opus-5-med | claude-opus-5 | medium | orc-retro-sonnet-5-high |
84
-
85
- The nine roles already on `claude-opus-5` — analyst, planner, reviewer,
86
- verifier, test-author, combiner, learn-writer, advisor, judge — dispatch
87
- unchanged under this mode. **Never forced:** `orc-trace-writer-haiku-4-5` (it
88
- transcribes a packet, no reasoning) and orc-diy (its table is compile-owned).
89
-
90
- Mini execution reuses orc-executor-sonnet-5-high. Fast-lane (orc-fast)
91
- execution reuses orc-executor-sonnet-4-6-high — no dedicated agent. Under
92
- `opus5_only` both reuse orc-executor-opus-5-low.
93
-
94
- ## orc-quick — the user picks, and no config can override it
95
-
96
- `/orc-quick` has NO dedicated agent and NO score table. It asks the USER which
97
- agent to spawn before EVERY dispatch, and reuses shipped agents:
98
-
99
- | Dispatch kind | Offered | Hook-traced |
100
- |---|---|---|
101
- | writes code | orc-executor-sonnet-4-6-med · orc-executor-opus-5-low | yes |
102
- | read-only recon | an **ad-hoc model + effort** (e.g. claude-sonnet-4-6 / medium) — no agent file | no |
103
- | review | orc-reviewer-opus-5-med · or ad-hoc | yes / no |
104
-
105
- The only dispatch it does not re-ask is build-repair rounds 1–2, which reuse the
106
- executor the user already chose for that entry; round 3 asks again.
107
-
108
- **`opus5_only` and `rubric_bands_override` are both INERT in this lane** — they would silently collapse the user's choice. It is
109
- the one exception to `opus5_only`'s otherwise flat precedence. See
110
- `skills/_shared/opus5-only.md` and `skills/orc-quick/references/dispatch-gate.md`.
111
-
112
- Ad-hoc recon is dispatched by model name, not by an `orc-*` agent file, so the
113
- trace hook emits no SPAWN/RETURN for it. The lane still writes its own
114
- `DISPATCH … adhoc=true` / `VERIFY` lines and still runs the downgrade check from
115
- the agent's self-reported `actual_model`; only `/orc-retro` aggregation misses it.
116
-
117
- The scout is dispatched only in the System Analyst's DEEP mode: the orchestrator
118
- fans out ≤`config.max_scouts` (default 3) parallel scouts, one per coverage area
119
- from the analyst's scout plan, and feeds their evidence bundles back to the
120
- analyst for pass 2. Scouts are read-only and never analyze/plan/edit.
121
-
122
- The orchestrator (main session) is NOT an agent file.
123
-
124
- ## ⚠ VERIFY IN YOUR ENVIRONMENT
125
-
126
- Model IDs use the Platform/API dateless format (confirmed at
127
- platform.claude.com/docs/en/about-claude/models/model-ids-and-versions):
128
- claude-haiku-4-5, claude-sonnet-4-6, claude-sonnet-5, claude-opus-4-7,
129
- claude-opus-4-8 and claude-opus-5 (the top executor band + the core fixed
130
- roles).
131
-
132
- 1. **Run `/agents`** to confirm Claude Code accepts these full IDs in agent
133
- frontmatter — in particular `claude-haiku-4-5` and `claude-opus-5`. If it
134
- wants short aliases (opus/sonnet/haiku) or dated IDs, adjust
135
- each `model:` field. The full IDs are valid at the API level but Claude Code
136
- may normalize differently.
137
- 2. **Confirm `effort:` is a valid CLI frontmatter field.** If the CLI ignores
138
- it, effort must be conveyed in the dispatched prompt instead.
139
- 3. **Run `/doctor`** for duplicate-name or load errors after any edit.
140
-
141
- ## ⚠ COST-TIER FALLBACK (the original "wrong model" bug)
142
-
143
- A subagent's model cannot exceed the MAIN session's cost tier — request pricier
144
- and it silently falls back to the main model. **Run your main Claude Code
145
- session on Opus** or every opus-* agent downgrades to Sonnet. As of v0.34.0 the
146
- [90,100] executor band AND every core fixed role (analyst, planner, reviewer,
147
- verifier, test author, combiner, learn writer, ultra advisor/judge) are pinned
148
- to **claude-opus-5** — on an Opus 4.8 session they all land on Opus 4.8. Verify by
149
- expanding a subagent's tool-call in the transcript to see the model it ran.
150
-
151
- ## How dispatch works
152
-
153
- - Score a task → config preset maps score to an executor agent → dispatch that
154
- agent BY NAME with the task slice.
155
- - Fixed roles dispatch their named agent directly (analyst/planner/reviewer/
156
- verifier, mini variants).
157
- - Every agent is single-role and self-contained (embedded procedure), so a
158
- dispatched agent needs no external skill-loading to function.
1
+ # ORC Agents — Roster, Model Mapping & Verification
2
+
3
+ Single-role, model-specific agents. The orchestrator dispatches BY AGENT NAME —
4
+ model is pinned in frontmatter, not requested in prose. No agent is multi-role.
5
+
6
+ ## Executors (score-mapped by the single 6-band table in config.md)
7
+
8
+ | Score band | Agent | Model | Effort |
9
+ |-----------|-------|-------|--------|
10
+ | [0,30) | orc-executor-haiku-4-5 | claude-haiku-4-5 | — (no ladder) |
11
+ | [30,40) | orc-executor-sonnet-4-6-med | claude-sonnet-4-6 | medium |
12
+ | [40,55) | orc-executor-sonnet-4-6-high | claude-sonnet-4-6 | high |
13
+ | [55,65) | orc-executor-sonnet-5-high | claude-sonnet-5 | high |
14
+ | [65,90) | orc-executor-opus-5-low | claude-opus-5 | low |
15
+ | [90,100] | orc-executor-opus-5-med | claude-opus-5 | medium |
16
+
17
+ Score→executor mapping lives in config.md (one canonical 6-band table;
18
+ `rubric_bands` is granularity only, not a preset selector).
19
+
20
+ **Executors no band names — they still ship.**
21
+ `orc-executor-opus-4-7-med`, `orc-executor-opus-4-7-high`,
22
+ `orc-executor-opus-4-8-high` and `orc-executor-opus-5-high` are still generated
23
+ and still installed. Since v1.0.0 they are reachable only when a user names one
24
+ explicitly: `rubric_bands_override`, `orc diy`'s `fixed_executor`, or
25
+ `extra_fallback_agent`. They are not deleted because a table change is not a
26
+ model change, and an agent's model change is always a RENAME.
27
+
28
+ ## Fixed-role agents
29
+
30
+ | Agent | Model | Effort | Role |
31
+ |-------|-------|--------|------|
32
+ | orc-system-analyst-opus-5-high | claude-opus-5 | high | doc analysis |
33
+ | orc-planner-opus-5-med | claude-opus-5 | medium | planning |
34
+ | orc-reviewer-opus-5-med | claude-opus-5 | medium | review |
35
+ | orc-verifier-opus-5-med | claude-opus-5 | medium | verify (+ /orc-verify) |
36
+ | orc-test-author-opus-5-med | claude-opus-5 | medium | test authoring (opt-in Phase 6.5; writes tests, never runs) |
37
+ | orc-analyze-mini-sonnet-5-high | claude-sonnet-5 | high | mini analysis |
38
+ | orc-planner-mini-sonnet-5-high | claude-sonnet-5 | high | mini planning |
39
+ | orc-scout-sonnet-4-6-high | claude-sonnet-4-6 | high | deep-analysis code scout (read-only) |
40
+ | orc-context-combiner-opus-5-high | claude-opus-5 | high | combine 2+ related analyses (full lane) |
41
+ | orc-pattern-codifier-sonnet-5-high | claude-sonnet-5 | high | reconcile per-language playbook vs. project files → cached code-pattern (opt-in) |
42
+ | orc-retro-sonnet-5-high | claude-sonnet-5 | high | mine behavior traces → calibration report (/orc-retro; read-only) |
43
+ | orc-wiki-scanner-opus-4-8-high | claude-opus-4-8 | high | scan ONE wiki coverage area → evidence-anchored doc body + crosslink tags (/orc-wiki only; read-only against the project). The DEEP half of the v0.46.0 tier ladder: first scan · STRUCTURAL · wide delta · a new exported symbol |
44
+ | orc-wiki-scanner-sonnet-5-high | claude-sonnet-5 | high | the LIGHT half of the same ladder — an existing doc whose covered files moved by a small, no-new-surface delta. IDENTICAL return contract; it escalates with `needs_context` rather than under-delivering. Never used for a first scan |
45
+ | orc-executor-opus-5-med | claude-opus-5 | medium | the `[90,100]` band in BOTH tables |
46
+ | orc-executor-opus-5-low | claude-opus-5 | low | the default table's `[65,90)`, `opus5_only`'s `[0,90)`, and the forced mini/fast executor |
47
+ | orc-advisor-opus-5-xhigh | claude-opus-5 | xhigh | ultra Phase U0 advisory brief + rubric + clarification questions (read-only; /orc-ultra only) |
48
+ | orc-judge-opus-5-xhigh | claude-opus-5 | xhigh | ultra judgment gates — analysis / plan / implementation (read-only; /orc-ultra only) |
49
+ | orc-learn-writer-opus-5-low | claude-opus-5 | low | deepen ONE feature → learning-docs/<slug>/ (/orc-learn only; git-ignored output) |
50
+ | orc-claude-writer-opus-4-8-high | claude-opus-4-8 | high | scan repo → write/refresh the local CLAUDE.md (/orc-claude only; zero questions) |
51
+ | orc-challenge-judge-opus-5-high | claude-opus-5 | high | grade ONE finished artifact against a FROZEN goal + template (/orc-challenge only; read-only). It reports findings and can never declare a pass — `orc challenge record` computes that |
52
+ | orc-challenge-advisor-opus-5-med | claude-opus-5 | medium | turn a FAILED verdict into a remediation strategy — root-cause groups, an order with reasons, the decisions that are not defects (/orc-challenge only; read-only, no prose, no diffs) |
53
+ | orc-challenge-reader-opus-5-low | claude-opus-5 | low | the COLD READ: answer questions from ONE artifact with `Read` and nothing else (/orc-challenge only). LOW ON PURPOSE — a harder-thinking reader reasons around the gaps D4 exists to find, so a stronger configuration is a worse instrument |
54
+ | orc-challenge-contrarian-opus-5-high | claude-opus-5 | high | THE COUNCIL (v0.49.1): start from "this has a fatal flaw" and go find it — load-bearing claim, then unhappy path, then second-order (/orc-challenge only; read-only). HIGH IS THE INSTRUMENT: a shallow contrarian returns the three surface complaints the free lint already caught |
55
+ | orc-challenge-outsider-opus-5-low | claude-opus-5 | low | THE COUNCIL: what does this page assume you already know? The TIGHTEST slice in the lane — the artifact and this protocol, `Read` only, no goal, no audience, no template (/orc-challenge only). LOW IS A MEASUREMENT, NOT A COST CHOICE: a harder-thinking outsider reasons its way around an unexplained acronym and reports the document is fine. NOTHING MAY UPGRADE IT |
56
+ | orc-challenge-executor-opus-5-med | claude-opus-5 | medium | THE COUNCIL: can this be started on Monday, and where is the first step? Returns D6/D2 findings plus the literal `monday_morning` list — or the point at which writing it becomes impossible (/orc-challenge only; read-only, `Bash` to CHECK a prerequisite, never to change anything). Not an ORC build executor — it writes nothing |
57
+ | orc-challenge-principles-opus-5-high | claude-opus-5 | high | THE COUNCIL: the ONLY role allowed to say the frozen goal is wrong. Returns `premise` objects — no severity, never in findings[], never near the pass gate — and its report NEVER reaches the judge (/orc-challenge only; read-only). HIGH because rebuilding a problem statement from the ground up is the deepest reasoning in the lane |
58
+ | orc-challenge-expansionist-opus-5-med | claude-opus-5 | medium | THE COUNCIL: the only lens not looking for a defect — what is being undervalued? Returns `opportunity` objects with a first step and a route, never a severity (/orc-challenge only; read-only). MEDIUM because it is pattern work against a concrete artifact, the same class as the advisor |
59
+ | orc-doc-writer-opus-5-med | claude-opus-5 | medium | write ONE part file of a long document from a slice of sections (/orc-doc only). It writes to `.work/<id>.md` and NEVER opens document.md — that is what makes parallel writing safe here |
60
+ | orc-doc-checker-opus-5-low | claude-opus-5 | low | read ONE LINE RANGE of a document and report anchored findings (/orc-doc only; read-only). LOW ON PURPOSE — the same reasoning that pins the challenge cold reader: a harder-thinking checker reasons its way past a gap a real reader would trip on |
61
+ | orc-test-designer-opus-5-high | claude-opus-5 | high | fill the GAPS the free case matrix could not derive, and author the front-end journey SCRIPT (/orc-test only). HIGH IS THE INSTRUMENT: a shallow designer returns the three obvious cases the deterministic expansion already covered, which is the one output that costs money and adds nothing |
62
+ | orc-test-interpreter-opus-5-low | claude-opus-5 | low | read ONLY a run’s evidence files and say whether what is in them is a finding (/orc-test only; SEALED slice, `Read` and nothing else). LOW IS A MEASUREMENT CHOICE, NOT A COST ONE, and nothing may ever upgrade it: a harder-thinking interpreter reasons its way to why a leaked stack trace is probably fine in staging |
63
+ | orc-trace-writer-haiku-4-5 | claude-haiku-4-5 | — (no ladder) | append one phase block of behavior-trace narration from an orchestrator packet (every trace-owning lane; append-only, never reads source) |
64
+ | orc-graph-noter-sonnet-4-6-med | claude-sonnet-4-6 | medium | write ONE sentence per changed function for the local code graph (`orc graph` Layer 2). Reads line RANGES only, pipes its notes to `orc graph notes apply -` (the CLI validates and stores), returns ONE line. Dispatched by code-changing lanes only when `code_graph_notes` is on and a batch reaches its minimum |
65
+
66
+ ## Opus-5-only mode agents (hard-gated; dispatched only when `opus5_only: true`)
67
+
68
+ `opus5_only` FORCES every dispatched role onto `claude-opus-5`, with effort as
69
+ the only cost dial. Each agent below replaces its default with the same slice
70
+ and the same return contract. Effort is PINNED per role — no CLI rewrites
71
+ these. Full mapping + precedence:
72
+ `../skills/_shared/opus5-only.md`.
73
+
74
+ | Agent | Model | Effort | Replaces |
75
+ |-------|-------|--------|----------|
76
+ | orc-executor-opus-5-low | claude-opus-5 | low | the `[0,90)` band · orc-mini's and orc-fast's fixed executor |
77
+ | orc-executor-opus-5-med | claude-opus-5 | medium | the `[90,100]` band |
78
+ | orc-analyze-mini-opus-5-med | claude-opus-5 | medium | orc-analyze-mini-sonnet-5-high |
79
+ | orc-planner-mini-opus-5-med | claude-opus-5 | medium | orc-planner-mini-sonnet-5-high |
80
+ | orc-scout-opus-5-low | claude-opus-5 | low | orc-scout-sonnet-4-6-high |
81
+ | orc-pattern-codifier-opus-5-med | claude-opus-5 | medium | orc-pattern-codifier-sonnet-5-high |
82
+ | orc-wiki-scanner-opus-5-med | claude-opus-5 | medium | orc-wiki-scanner-opus-4-8-high |
83
+ | orc-claude-writer-opus-5-med | claude-opus-5 | medium | orc-claude-writer-opus-4-8-high |
84
+ | orc-retro-opus-5-med | claude-opus-5 | medium | orc-retro-sonnet-5-high |
85
+
86
+ The nine roles already on `claude-opus-5` — analyst, planner, reviewer,
87
+ verifier, test-author, combiner, learn-writer, advisor, judge — dispatch
88
+ unchanged under this mode. **Never forced:** `orc-trace-writer-haiku-4-5` (it
89
+ transcribes a packet, no reasoning) and orc-diy (its table is compile-owned).
90
+ **Not dispatched at all:** `orc-graph-noter-sonnet-4-6-med` has NO Opus 5
91
+ variant. Under this mode a lane skips graph notes and prints
92
+ `graph notes: skipped (opus5_only)` — a one-sentence summary does not justify an
93
+ Opus 5 dispatch, and the graph's structure layer costs no model at all.
94
+
95
+ Mini execution reuses orc-executor-sonnet-5-high. Fast-lane (orc-fast)
96
+ execution reuses orc-executor-sonnet-4-6-high — no dedicated agent. Under
97
+ `opus5_only` both reuse orc-executor-opus-5-low.
98
+
99
+ ## orc-quick — the user picks, and no config can override it
100
+
101
+ `/orc-quick` has NO dedicated agent and NO score table. It asks the USER which
102
+ agent to spawn before EVERY dispatch, and reuses shipped agents:
103
+
104
+ | Dispatch kind | Offered | Hook-traced |
105
+ |---|---|---|
106
+ | writes code | orc-executor-sonnet-4-6-med · orc-executor-opus-5-low | yes |
107
+ | read-only recon | an **ad-hoc model + effort** (e.g. claude-sonnet-4-6 / medium) — no agent file | no |
108
+ | review | orc-reviewer-opus-5-med · or ad-hoc | yes / no |
109
+
110
+ The only dispatch it does not re-ask is build-repair rounds 1–2, which reuse the
111
+ executor the user already chose for that entry; round 3 asks again.
112
+
113
+ **`opus5_only` and `rubric_bands_override` are both INERT in this lane** — they would silently collapse the user's choice. It is
114
+ the one exception to `opus5_only`'s otherwise flat precedence. See
115
+ `skills/_shared/opus5-only.md` and `skills/orc-quick/references/dispatch-gate.md`.
116
+
117
+ Ad-hoc recon is dispatched by model name, not by an `orc-*` agent file, so the
118
+ trace hook emits no SPAWN/RETURN for it. The lane still writes its own
119
+ `DISPATCH … adhoc=true` / `VERIFY` lines and still runs the downgrade check from
120
+ the agent's self-reported `actual_model`; only `/orc-retro` aggregation misses it.
121
+
122
+ The scout is dispatched only in the System Analyst's DEEP mode: the orchestrator
123
+ fans out ≤`config.max_scouts` (default 3) parallel scouts, one per coverage area
124
+ from the analyst's scout plan, and feeds their evidence bundles back to the
125
+ analyst for pass 2. Scouts are read-only and never analyze/plan/edit.
126
+
127
+ The orchestrator (main session) is NOT an agent file.
128
+
129
+ ## ⚠ VERIFY IN YOUR ENVIRONMENT
130
+
131
+ Model IDs use the Platform/API dateless format (confirmed at
132
+ platform.claude.com/docs/en/about-claude/models/model-ids-and-versions):
133
+ claude-haiku-4-5, claude-sonnet-4-6, claude-sonnet-5, claude-opus-4-7,
134
+ claude-opus-4-8 and claude-opus-5 (the top executor band + the core fixed
135
+ roles).
136
+
137
+ 1. **Run `/agents`** to confirm Claude Code accepts these full IDs in agent
138
+ frontmatter — in particular `claude-haiku-4-5` and `claude-opus-5`. If it
139
+ wants short aliases (opus/sonnet/haiku) or dated IDs, adjust
140
+ each `model:` field. The full IDs are valid at the API level but Claude Code
141
+ may normalize differently.
142
+ 2. **Confirm `effort:` is a valid CLI frontmatter field.** If the CLI ignores
143
+ it, effort must be conveyed in the dispatched prompt instead.
144
+ 3. **Run `/doctor`** for duplicate-name or load errors after any edit.
145
+
146
+ ## ⚠ COST-TIER FALLBACK (the original "wrong model" bug)
147
+
148
+ A subagent's model cannot exceed the MAIN session's cost tier — request pricier
149
+ and it silently falls back to the main model. **Run your main Claude Code
150
+ session on Opus** or every opus-* agent downgrades to Sonnet. As of v0.34.0 the
151
+ [90,100] executor band AND every core fixed role (analyst, planner, reviewer,
152
+ verifier, test author, combiner, learn writer, ultra advisor/judge) are pinned
153
+ to **claude-opus-5** — on an Opus 4.8 session they all land on Opus 4.8. Verify by
154
+ expanding a subagent's tool-call in the transcript to see the model it ran.
155
+
156
+ ## How dispatch works
157
+
158
+ - Score a task → config preset maps score to an executor agent → dispatch that
159
+ agent BY NAME with the task slice.
160
+ - Fixed roles dispatch their named agent directly (analyst/planner/reviewer/
161
+ verifier, mini variants).
162
+ - Every agent is single-role and self-contained (embedded procedure), so a
163
+ dispatched agent needs no external skill-loading to function.