@azure-id/orc 2.1.1 → 2.2.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 +320 -0
- package/README.md +48 -23
- package/bin/build-agents.js +207 -205
- package/bin/cli.js +48188 -47417
- package/bin/fix.js +21 -18
- package/bin/graph-extract.js +314 -6
- package/bin/graph-gain.js +83 -2
- package/bin/graph-map.js +23 -1
- package/bin/graph-notes.js +1 -1
- package/bin/graph-query.js +1362 -37
- package/bin/graph-resolve.js +1 -1
- package/bin/graph-shard.js +29 -6
- package/bin/graph-signals.js +5 -3
- package/bin/graph.js +7 -3
- package/bin/habit.js +1 -1
- package/bin/pricing.json +8 -1
- package/bin/trace-write.js +40 -11
- package/bin/verify-contracts.js +5661 -5552
- package/bin/verify-package.js +716 -716
- package/bin/webui/api.js +8 -0
- package/bin/webui/fixtures/extra.js +2036 -2036
- package/bin/webui/fixtures/flow.js +1 -1
- package/bin/webui/fixtures/index.js +2 -2
- package/bin/webui/fixtures/knowledge.js +8 -1
- package/bin/webui/fixtures/pact.js +112 -111
- package/bin/webui/fixtures/stats.js +2 -2
- package/bin/webui/i18n/en/knowledge.json +2 -0
- package/bin/webui/i18n/id/knowledge.json +2 -0
- package/bin/webui/js/panels/knowledge.js +17 -0
- package/guides/code-graph-benefit.md +116 -0
- package/guides/configuration.md +150 -0
- package/guides/documents.md +262 -0
- package/guides/extra-models.md +448 -0
- package/guides/habits-and-gotchas.md +152 -0
- package/guides/knowledge-reads.md +190 -0
- package/guides/model-selection.md +186 -0
- package/guides/rules.md +305 -0
- package/guides/status-line.md +344 -0
- package/mock-run/orc-cli.md +3 -2
- package/mock-run/orc-doc.md +452 -448
- package/mock-run/orc.md +157 -157
- package/package.json +2 -1
- package/templates/agents/MODEL-MAPPING.md +176 -176
- package/templates/agents/{orc-executor-haiku-4-5.md → orc-executor-haiku-5-high.md} +21 -8
- package/templates/agents/orc-executor-opus-4-7-high.md +17 -5
- package/templates/agents/orc-executor-opus-4-7-med.md +17 -5
- package/templates/agents/orc-executor-opus-4-8-high.md +17 -5
- package/templates/agents/orc-executor-opus-5-high.md +17 -5
- package/templates/agents/orc-executor-opus-5-low.md +17 -5
- package/templates/agents/orc-executor-opus-5-med.md +17 -5
- package/templates/agents/orc-executor-sonnet-4-6-high.md +17 -5
- package/templates/agents/orc-executor-sonnet-5-high.md +17 -5
- package/templates/agents/orc-executor-sonnet-5-low.md +17 -5
- package/templates/agents/orc-executor-sonnet-5-med.md +17 -5
- package/templates/agents/{orc-graph-noter-sonnet-4-6-med.md → orc-graph-noter-haiku-5-high.md} +4 -4
- package/templates/agents/orc-planner-mini-opus-5-med.md +3 -1
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +3 -1
- package/templates/agents/orc-planner-opus-5-med.md +3 -1
- package/templates/agents/{orc-trace-writer-haiku-4-5.md → orc-trace-writer-haiku-5-high.md} +4 -3
- package/templates/commands/orc-doc.md +128 -128
- package/templates/commands/orc-export.md +51 -46
- package/templates/hooks/README.md +8 -3
- package/templates/hooks/orc-effort-guard.js +105 -27
- package/templates/hooks/orc-graph-hook.js +252 -4
- package/templates/hooks/orc-statusline.js +13 -6
- package/templates/hooks/orc-trace.js +1 -1
- package/templates/skills/_shared/README.md +2 -2
- package/templates/skills/_shared/code-graph.md +185 -251
- package/templates/skills/_shared/extra-dispatch.md +1331 -1331
- package/templates/skills/_shared/lane-contract.md +7 -3
- package/templates/skills/_shared/opus5-only.md +137 -137
- package/templates/skills/_shared/phases/execution.md +13 -11
- package/templates/skills/_shared/phases/planning.md +27 -9
- package/templates/skills/_shared/phases/preflight.md +3 -3
- package/templates/skills/_shared/phases/review.md +4 -3
- package/templates/skills/_shared/phases/ship.md +7 -10
- package/templates/skills/_shared/phases/summary.md +2 -3
- package/templates/skills/_shared/phases/trace-verbs.md +21 -16
- package/templates/skills/_shared/phases/trace.md +3 -3
- package/templates/skills/_shared/phases/wiki-consult.md +2 -2
- package/templates/skills/_shared/pr-templates.md +108 -106
- package/templates/skills/_shared/read-ladder.md +8 -2
- package/templates/skills/_shared/return-validation.md +10 -6
- package/templates/skills/_shared/review-slice.md +1 -1
- package/templates/skills/_shared/stack-plan.md +135 -135
- package/templates/skills/_shared/wait.md +14 -2
- package/templates/skills/context-combiner/SKILL.md +2 -2
- package/templates/skills/orc/SKILL.md +227 -227
- package/templates/skills/orc/config.md +2 -2
- package/templates/skills/orc/examples/full-run-mock.md +74 -74
- package/templates/skills/orc/schemas/planning-output.md +3 -0
- package/templates/skills/orc-aftermath/SKILL.md +15 -15
- package/templates/skills/orc-analyze/SKILL.md +2 -2
- package/templates/skills/orc-analyze-mini/SKILL.md +2 -2
- package/templates/skills/orc-boundary/SKILL.md +15 -15
- package/templates/skills/orc-boundary/references/card.md +81 -78
- package/templates/skills/orc-boundary/references/gate.md +113 -113
- package/templates/skills/orc-brainstorm/SKILL.md +15 -15
- package/templates/skills/orc-budget/SKILL.md +15 -15
- package/templates/skills/orc-challenge/README.md +1 -1
- package/templates/skills/orc-challenge/SKILL.md +16 -16
- package/templates/skills/orc-challenge/examples/council-full-roster.md +1 -1
- package/templates/skills/orc-claude/SKILL.md +4 -4
- package/templates/skills/orc-claude/examples/claude-run-mock.md +1 -1
- package/templates/skills/orc-diy/SKILL.md +2 -2
- package/templates/skills/orc-diy/references/blocks/wiki.md +26 -26
- package/templates/skills/orc-diy/references/flow-schema.md +2 -2
- package/templates/skills/orc-doc/README.md +2 -2
- package/templates/skills/orc-doc/SKILL.md +501 -490
- package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +12 -1
- package/templates/skills/orc-doc/references/chunking.md +6 -4
- package/templates/skills/orc-doc/references/gates.md +311 -311
- package/templates/skills/orc-doc/references/resume-protocol.md +229 -228
- package/templates/skills/orc-explain/SKILL.md +88 -88
- package/templates/skills/orc-export/SKILL.md +190 -187
- package/templates/skills/orc-fast/SKILL.md +213 -210
- package/templates/skills/orc-grill/SKILL.md +245 -245
- package/templates/skills/orc-handoff/SKILL.md +11 -11
- package/templates/skills/orc-learn/SKILL.md +13 -13
- package/templates/skills/orc-learn/examples/learn-run-mock.md +2 -2
- package/templates/skills/orc-mini/SKILL.md +12 -12
- package/templates/skills/orc-mini/examples/mini-run-mock.md +4 -5
- package/templates/skills/orc-pact/SKILL.md +15 -15
- package/templates/skills/orc-pact/references/gate.md +70 -70
- package/templates/skills/orc-pattern/SKILL.md +3 -3
- package/templates/skills/orc-poly/SKILL.md +4 -4
- package/templates/skills/orc-poly/examples/poly-run-mock.md +51 -51
- package/templates/skills/orc-pr-driver/SKILL.md +4 -3
- package/templates/skills/orc-pr-driver/references/orc-run-split.md +108 -99
- package/templates/skills/orc-pr-setup/SKILL.md +2 -2
- package/templates/skills/orc-quick/README.md +535 -536
- package/templates/skills/orc-quick/SKILL.md +29 -32
- package/templates/skills/orc-quick/references/context-doc.md +145 -145
- package/templates/skills/orc-quick/references/dispatch-gate.md +220 -220
- package/templates/skills/orc-quick/references/gh-mode.md +2 -1
- package/templates/skills/orc-quick/references/look.md +34 -12
- package/templates/skills/orc-retro/SKILL.md +2 -2
- package/templates/skills/orc-retro/examples/retro-mock.md +2 -2
- package/templates/skills/orc-route/SKILL.md +2 -2
- package/templates/skills/orc-test/SKILL.md +6 -3
- package/templates/skills/orc-verify/SKILL.md +2 -2
- package/templates/skills/orc-wait/SKILL.md +10 -2
- package/templates/skills/orc-wiki/SKILL.md +4 -4
- package/templates/skills/orc-wiki/references/pattern-prewarm.md +19 -19
- package/templates/agents/orc-executor-sonnet-4-6-med.md +0 -155
|
@@ -1,176 +1,176 @@
|
|
|
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 5-band table in config.md)
|
|
7
|
-
|
|
8
|
-
| Score band | Agent | Model | Effort |
|
|
9
|
-
|-----------|-------|-------|--------|
|
|
10
|
-
| [0,21) | orc-executor-sonnet-5-low | claude-sonnet-5-5 | low |
|
|
11
|
-
| [21,31) | orc-executor-sonnet-5-med | claude-sonnet-5-5 | medium |
|
|
12
|
-
| [31,41) | orc-executor-sonnet-5-high | claude-sonnet-5-5 | high |
|
|
13
|
-
| [41,90) | orc-executor-opus-5-low | claude-opus-5-5 | low |
|
|
14
|
-
| [90,100] | orc-executor-opus-5-med | claude-opus-5-5 | medium |
|
|
15
|
-
|
|
16
|
-
Score→executor mapping lives in config.md (one canonical 5-band table;
|
|
17
|
-
`rubric_bands` is granularity only, not a preset selector).
|
|
18
|
-
|
|
19
|
-
**Executors no band names — they still ship.**
|
|
20
|
-
`orc-executor-haiku-
|
|
21
|
-
`orc-executor-sonnet-4-6-high`, `orc-executor-opus-4-7-med`,
|
|
22
|
-
`orc-executor-opus-4-7-high`, `orc-executor-opus-4-8-high` and
|
|
23
|
-
`orc-executor-opus-5-high` —
|
|
24
|
-
and still installed. They are reachable only when a user names one
|
|
25
|
-
explicitly: `rubric_bands_override`, `orc diy`'s `fixed_executor`, or
|
|
26
|
-
`extra_fallback_agent`. They are not deleted because a table change is not a
|
|
27
|
-
model change, and an agent's model change is always a RENAME.
|
|
28
|
-
|
|
29
|
-
## Fixed-role agents
|
|
30
|
-
|
|
31
|
-
| Agent | Model | Effort | Role |
|
|
32
|
-
|-------|-------|--------|------|
|
|
33
|
-
| orc-system-analyst-opus-5-high | claude-opus-5-5 | high | doc analysis |
|
|
34
|
-
| orc-planner-opus-5-med | claude-opus-5-5 | medium | planning |
|
|
35
|
-
| orc-reviewer-opus-5-low | claude-opus-5-5 | low | review (medium until v2.1.0; renamed from orc-reviewer-opus-5-med) |
|
|
36
|
-
| orc-verifier-opus-5-med | claude-opus-5-5 | medium | verify (+ /orc-verify) |
|
|
37
|
-
| orc-test-author-opus-5-med | claude-opus-5-5 | medium | test authoring (opt-in Phase 6.5; writes tests, never runs) |
|
|
38
|
-
| orc-analyze-mini-sonnet-5-high | claude-sonnet-5-5 | high | mini analysis |
|
|
39
|
-
| orc-planner-mini-sonnet-5-high | claude-sonnet-5-5 | high | mini planning |
|
|
40
|
-
| orc-scout-sonnet-4-6-high | claude-sonnet-4-6 | high | deep-analysis code scout (read-only) |
|
|
41
|
-
| orc-recon-sonnet-5-med | claude-sonnet-5-5 | medium | answer ONE repository question with file:line evidence (/orc-quick read-only entries; never edits, never plans) |
|
|
42
|
-
| orc-recon-opus-5-low | claude-opus-5-5 | low | the same contract for a WIDE or SUBTLE question — a blast radius across areas, a defect with no obvious anchor |
|
|
43
|
-
| orc-context-combiner-opus-5-high | claude-opus-5-5 | high | combine 2+ related analyses (full lane) |
|
|
44
|
-
| orc-pattern-codifier-sonnet-5-high | claude-sonnet-5-5 | high | reconcile per-language playbook vs. project files → cached code-pattern (opt-in) |
|
|
45
|
-
| orc-retro-sonnet-5-high | claude-sonnet-5-5 | high | mine behavior traces → calibration report (/orc-retro; read-only) |
|
|
46
|
-
| orc-wiki-scanner-opus-5-low | claude-opus-5-5 | low | scan ONE wiki coverage area → evidence-anchored doc body + crosslink tags (/orc-wiki only; read-only against the project). The DEEP half of the tier ladder: first scan · STRUCTURAL · wide delta · a new exported symbol |
|
|
47
|
-
| orc-wiki-scanner-sonnet-5-high | claude-sonnet-5-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 |
|
|
48
|
-
| orc-executor-opus-5-med | claude-opus-5-5 | medium | the `[90,100]` band in BOTH tables |
|
|
49
|
-
| orc-executor-opus-5-low | claude-opus-5-5 | low | the default table's `[41,90)`, `opus5_only`'s `[0,90)`, and the forced mini/fast executor |
|
|
50
|
-
| orc-advisor-opus-5-xhigh | claude-opus-5-5 | xhigh | ultra Phase U0 advisory brief + rubric + clarification questions (read-only; /orc-ultra only) |
|
|
51
|
-
| orc-judge-opus-5-xhigh | claude-opus-5-5 | xhigh | ultra judgment gates — analysis / plan / implementation (read-only; /orc-ultra only) |
|
|
52
|
-
| orc-learn-writer-opus-5-low | claude-opus-5-5 | low | deepen ONE feature → learning-docs/<slug>/ (/orc-learn only; git-ignored output) |
|
|
53
|
-
| orc-claude-writer-opus-5-low | claude-opus-5-5 | low | scan repo → write/refresh the local CLAUDE.md (/orc-claude only; zero questions) |
|
|
54
|
-
| orc-challenge-judge-opus-5-high | claude-opus-5-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 |
|
|
55
|
-
| orc-challenge-advisor-opus-5-med | claude-opus-5-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) |
|
|
56
|
-
| orc-challenge-reader-opus-5-low | claude-opus-5-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 |
|
|
57
|
-
| orc-challenge-contrarian-opus-5-high | claude-opus-5-5 | high | THE COUNCIL: 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 |
|
|
58
|
-
| orc-challenge-outsider-opus-5-low | claude-opus-5-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 |
|
|
59
|
-
| orc-challenge-executor-opus-5-med | claude-opus-5-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 |
|
|
60
|
-
| orc-challenge-principles-opus-5-high | claude-opus-5-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 |
|
|
61
|
-
| orc-challenge-expansionist-opus-5-med | claude-opus-5-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 |
|
|
62
|
-
| orc-doc-writer-opus-5-med | claude-opus-5-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 |
|
|
63
|
-
| orc-doc-checker-opus-5-low | claude-opus-5-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 |
|
|
64
|
-
| orc-test-designer-opus-5-high | claude-opus-5-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 |
|
|
65
|
-
| orc-test-interpreter-opus-5-low | claude-opus-5-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 |
|
|
66
|
-
| orc-trace-writer-haiku-
|
|
67
|
-
| orc-graph-noter-
|
|
68
|
-
|
|
69
|
-
## Opus-5-only mode agents (hard-gated; dispatched only when `opus5_only: true`)
|
|
70
|
-
|
|
71
|
-
`opus5_only` FORCES every dispatched role onto `claude-opus-5-5`, with effort as
|
|
72
|
-
the only cost dial. Each agent below replaces its default with the same slice
|
|
73
|
-
and the same return contract. Effort is PINNED per role — no CLI rewrites
|
|
74
|
-
these. Full mapping + precedence:
|
|
75
|
-
`../skills/_shared/opus5-only.md`.
|
|
76
|
-
|
|
77
|
-
| Agent | Model | Effort | Replaces |
|
|
78
|
-
|-------|-------|--------|----------|
|
|
79
|
-
| orc-executor-opus-5-low | claude-opus-5-5 | low | the `[0,90)` band · orc-mini's and orc-fast's fixed executor |
|
|
80
|
-
| orc-executor-opus-5-med | claude-opus-5-5 | medium | the `[90,100]` band |
|
|
81
|
-
| orc-analyze-mini-opus-5-med | claude-opus-5-5 | medium | orc-analyze-mini-sonnet-5-high |
|
|
82
|
-
| orc-planner-mini-opus-5-med | claude-opus-5-5 | medium | orc-planner-mini-sonnet-5-high |
|
|
83
|
-
| orc-scout-opus-5-low | claude-opus-5-5 | low | orc-scout-sonnet-4-6-high |
|
|
84
|
-
| orc-pattern-codifier-opus-5-med | claude-opus-5-5 | medium | orc-pattern-codifier-sonnet-5-high |
|
|
85
|
-
| orc-wiki-scanner-opus-5-low | claude-opus-5-5 | low | orc-wiki-scanner-sonnet-5-high |
|
|
86
|
-
| orc-retro-opus-5-med | claude-opus-5-5 | medium | orc-retro-sonnet-5-high |
|
|
87
|
-
|
|
88
|
-
The eleven roles already on `claude-opus-5-5` — analyst, planner, reviewer,
|
|
89
|
-
verifier, test-author, combiner, learn-writer, advisor, judge, CLAUDE.md
|
|
90
|
-
writer, deep wiki scanner — dispatch
|
|
91
|
-
unchanged under this mode. **Never forced:** `orc-trace-writer-haiku-
|
|
92
|
-
transcribes a packet, no reasoning) and orc-diy (its table is compile-owned).
|
|
93
|
-
**Not dispatched at all:** `orc-graph-noter-
|
|
94
|
-
variant. Under this mode a lane skips graph notes and prints
|
|
95
|
-
`graph notes: skipped (opus5_only)` — a one-sentence summary does not justify an
|
|
96
|
-
Opus 5.5 dispatch, and the graph's structure layer costs no model at all.
|
|
97
|
-
|
|
98
|
-
Mini execution reuses orc-executor-sonnet-5-high. Fast-lane (orc-fast)
|
|
99
|
-
execution reuses orc-executor-sonnet-5-med — no dedicated agent. Under
|
|
100
|
-
`opus5_only` both reuse orc-executor-opus-5-low.
|
|
101
|
-
|
|
102
|
-
## orc-quick — the user picks, and no config can override it
|
|
103
|
-
|
|
104
|
-
`/orc-quick` has NO dedicated agent and NO score table. It asks the USER which
|
|
105
|
-
agent to spawn before EVERY dispatch, and reuses shipped agents:
|
|
106
|
-
|
|
107
|
-
| Dispatch kind | Offered | Hook-traced |
|
|
108
|
-
|---|---|---|
|
|
109
|
-
| writes code | orc-executor-sonnet-5-med · orc-executor-opus-5-low | yes |
|
|
110
|
-
| read-only recon | orc-recon-sonnet-5-med · orc-recon-opus-5-low · or `other — name a model` | yes · yes · no |
|
|
111
|
-
| review | orc-reviewer-opus-5-low · or ad-hoc | yes / no |
|
|
112
|
-
|
|
113
|
-
The only dispatch it does not re-ask is build-repair rounds 1–2, which reuse the
|
|
114
|
-
executor the user already chose for that entry; round 3 asks again.
|
|
115
|
-
|
|
116
|
-
**`opus5_only` and `rubric_bands_override` are both INERT in this lane** — they would silently collapse the user's choice. It is
|
|
117
|
-
the one exception to `opus5_only`'s otherwise flat precedence. See
|
|
118
|
-
`skills/_shared/opus5-only.md` and `skills/orc-quick/references/dispatch-gate.md`.
|
|
119
|
-
|
|
120
|
-
**Recon is a pinned PAIR; `other` is the ad-hoc escape hatch.** The
|
|
121
|
-
pair exists because the trace hook only sees an agent whose name starts with
|
|
122
|
-
`orc-`: an ad-hoc recon writes no SPAWN/RETURN, is invisible to
|
|
123
|
-
`orc run inflight`, and cannot be counted by `/orc-retro`. The two files share
|
|
124
|
-
ONE return contract, so the choice is a model choice and nothing else.
|
|
125
|
-
|
|
126
|
-
The escape hatch names **a model only**. The Agent tool takes a per-call model
|
|
127
|
-
and has no per-call effort knob, so the old "ad-hoc model + effort" menu offered
|
|
128
|
-
a setting that did not exist; effort follows the session. An `other` dispatch is
|
|
129
|
-
still not hook-traced — the lane writes its own `DISPATCH … adhoc=true` /
|
|
130
|
-
`VERIFY` lines and still runs the downgrade check from the agent's self-reported
|
|
131
|
-
`actual_model`, and only `/orc-retro` aggregation misses it.
|
|
132
|
-
|
|
133
|
-
The scout is dispatched only in the System Analyst's DEEP mode: the orchestrator
|
|
134
|
-
fans out ≤`config.max_scouts` (default 3) parallel scouts, one per coverage area
|
|
135
|
-
from the analyst's scout plan, and feeds their evidence bundles back to the
|
|
136
|
-
analyst for pass 2. Scouts are read-only and never analyze/plan/edit.
|
|
137
|
-
|
|
138
|
-
The orchestrator (main session) is NOT an agent file.
|
|
139
|
-
|
|
140
|
-
## ⚠ VERIFY IN YOUR ENVIRONMENT
|
|
141
|
-
|
|
142
|
-
Model IDs use the Platform/API dateless format (confirmed at
|
|
143
|
-
platform.claude.com/docs/en/about-claude/models/model-ids-and-versions):
|
|
144
|
-
claude-haiku-
|
|
145
|
-
claude-opus-4-8 and claude-opus-5-5 (the top executor band + the core fixed
|
|
146
|
-
roles). **Sonnet 5 runs on `claude-sonnet-5-5` since v2.1.0** — the agent names
|
|
147
|
-
keep `-sonnet-5-` (a point release in one family keeps the name, as Opus did in
|
|
148
|
-
v1.9.2), and `claude-sonnet-5` stays a valid config value.
|
|
149
|
-
|
|
150
|
-
1. **Run `/agents`** to confirm Claude Code accepts these full IDs in agent
|
|
151
|
-
frontmatter — in particular `claude-haiku-
|
|
152
|
-
wants short aliases (opus/sonnet/haiku) or dated IDs, adjust
|
|
153
|
-
each `model:` field. The full IDs are valid at the API level but Claude Code
|
|
154
|
-
may normalize differently.
|
|
155
|
-
2. **Confirm `effort:` is a valid CLI frontmatter field.** If the CLI ignores
|
|
156
|
-
it, effort must be conveyed in the dispatched prompt instead.
|
|
157
|
-
3. **Run `/doctor`** for duplicate-name or load errors after any edit.
|
|
158
|
-
|
|
159
|
-
## ⚠ COST-TIER FALLBACK (the original "wrong model" bug)
|
|
160
|
-
|
|
161
|
-
A subagent's model cannot exceed the MAIN session's cost tier — request pricier
|
|
162
|
-
and it silently falls back to the main model. **Run your main Claude Code
|
|
163
|
-
session on Opus** or every opus-* agent downgrades to Sonnet. Every executor
|
|
164
|
-
band from score 41 (`[41,90)` and `[90,100]`) AND every core fixed role (analyst, planner, reviewer,
|
|
165
|
-
verifier, test author, combiner, learn writer, ultra advisor/judge) are pinned
|
|
166
|
-
to **claude-opus-5-5** — on an Opus 4.8 session they all land on Opus 4.8. Verify by
|
|
167
|
-
expanding a subagent's tool-call in the transcript to see the model it ran.
|
|
168
|
-
|
|
169
|
-
## How dispatch works
|
|
170
|
-
|
|
171
|
-
- Score a task → config preset maps score to an executor agent → dispatch that
|
|
172
|
-
agent BY NAME with the task slice.
|
|
173
|
-
- Fixed roles dispatch their named agent directly (analyst/planner/reviewer/
|
|
174
|
-
verifier, mini variants).
|
|
175
|
-
- Every agent is single-role and self-contained (embedded procedure), so a
|
|
176
|
-
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 5-band table in config.md)
|
|
7
|
+
|
|
8
|
+
| Score band | Agent | Model | Effort |
|
|
9
|
+
|-----------|-------|-------|--------|
|
|
10
|
+
| [0,21) | orc-executor-sonnet-5-low | claude-sonnet-5-5 | low |
|
|
11
|
+
| [21,31) | orc-executor-sonnet-5-med | claude-sonnet-5-5 | medium |
|
|
12
|
+
| [31,41) | orc-executor-sonnet-5-high | claude-sonnet-5-5 | high |
|
|
13
|
+
| [41,90) | orc-executor-opus-5-low | claude-opus-5-5 | low |
|
|
14
|
+
| [90,100] | orc-executor-opus-5-med | claude-opus-5-5 | medium |
|
|
15
|
+
|
|
16
|
+
Score→executor mapping lives in config.md (one canonical 5-band table;
|
|
17
|
+
`rubric_bands` is granularity only, not a preset selector).
|
|
18
|
+
|
|
19
|
+
**Executors no band names — they still ship.**
|
|
20
|
+
`orc-executor-haiku-5-high`,
|
|
21
|
+
`orc-executor-sonnet-4-6-high`, `orc-executor-opus-4-7-med`,
|
|
22
|
+
`orc-executor-opus-4-7-high`, `orc-executor-opus-4-8-high` and
|
|
23
|
+
`orc-executor-opus-5-high` — six agents — are still generated
|
|
24
|
+
and still installed. They are reachable only when a user names one
|
|
25
|
+
explicitly: `rubric_bands_override`, `orc diy`'s `fixed_executor`, or
|
|
26
|
+
`extra_fallback_agent`. They are not deleted because a table change is not a
|
|
27
|
+
model change, and an agent's model change is always a RENAME.
|
|
28
|
+
|
|
29
|
+
## Fixed-role agents
|
|
30
|
+
|
|
31
|
+
| Agent | Model | Effort | Role |
|
|
32
|
+
|-------|-------|--------|------|
|
|
33
|
+
| orc-system-analyst-opus-5-high | claude-opus-5-5 | high | doc analysis |
|
|
34
|
+
| orc-planner-opus-5-med | claude-opus-5-5 | medium | planning |
|
|
35
|
+
| orc-reviewer-opus-5-low | claude-opus-5-5 | low | review (medium until v2.1.0; renamed from orc-reviewer-opus-5-med) |
|
|
36
|
+
| orc-verifier-opus-5-med | claude-opus-5-5 | medium | verify (+ /orc-verify) |
|
|
37
|
+
| orc-test-author-opus-5-med | claude-opus-5-5 | medium | test authoring (opt-in Phase 6.5; writes tests, never runs) |
|
|
38
|
+
| orc-analyze-mini-sonnet-5-high | claude-sonnet-5-5 | high | mini analysis |
|
|
39
|
+
| orc-planner-mini-sonnet-5-high | claude-sonnet-5-5 | high | mini planning |
|
|
40
|
+
| orc-scout-sonnet-4-6-high | claude-sonnet-4-6 | high | deep-analysis code scout (read-only) |
|
|
41
|
+
| orc-recon-sonnet-5-med | claude-sonnet-5-5 | medium | answer ONE repository question with file:line evidence (/orc-quick read-only entries; never edits, never plans) |
|
|
42
|
+
| orc-recon-opus-5-low | claude-opus-5-5 | low | the same contract for a WIDE or SUBTLE question — a blast radius across areas, a defect with no obvious anchor |
|
|
43
|
+
| orc-context-combiner-opus-5-high | claude-opus-5-5 | high | combine 2+ related analyses (full lane) |
|
|
44
|
+
| orc-pattern-codifier-sonnet-5-high | claude-sonnet-5-5 | high | reconcile per-language playbook vs. project files → cached code-pattern (opt-in) |
|
|
45
|
+
| orc-retro-sonnet-5-high | claude-sonnet-5-5 | high | mine behavior traces → calibration report (/orc-retro; read-only) |
|
|
46
|
+
| orc-wiki-scanner-opus-5-low | claude-opus-5-5 | low | scan ONE wiki coverage area → evidence-anchored doc body + crosslink tags (/orc-wiki only; read-only against the project). The DEEP half of the tier ladder: first scan · STRUCTURAL · wide delta · a new exported symbol |
|
|
47
|
+
| orc-wiki-scanner-sonnet-5-high | claude-sonnet-5-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 |
|
|
48
|
+
| orc-executor-opus-5-med | claude-opus-5-5 | medium | the `[90,100]` band in BOTH tables |
|
|
49
|
+
| orc-executor-opus-5-low | claude-opus-5-5 | low | the default table's `[41,90)`, `opus5_only`'s `[0,90)`, and the forced mini/fast executor |
|
|
50
|
+
| orc-advisor-opus-5-xhigh | claude-opus-5-5 | xhigh | ultra Phase U0 advisory brief + rubric + clarification questions (read-only; /orc-ultra only) |
|
|
51
|
+
| orc-judge-opus-5-xhigh | claude-opus-5-5 | xhigh | ultra judgment gates — analysis / plan / implementation (read-only; /orc-ultra only) |
|
|
52
|
+
| orc-learn-writer-opus-5-low | claude-opus-5-5 | low | deepen ONE feature → learning-docs/<slug>/ (/orc-learn only; git-ignored output) |
|
|
53
|
+
| orc-claude-writer-opus-5-low | claude-opus-5-5 | low | scan repo → write/refresh the local CLAUDE.md (/orc-claude only; zero questions) |
|
|
54
|
+
| orc-challenge-judge-opus-5-high | claude-opus-5-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 |
|
|
55
|
+
| orc-challenge-advisor-opus-5-med | claude-opus-5-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) |
|
|
56
|
+
| orc-challenge-reader-opus-5-low | claude-opus-5-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 |
|
|
57
|
+
| orc-challenge-contrarian-opus-5-high | claude-opus-5-5 | high | THE COUNCIL: 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 |
|
|
58
|
+
| orc-challenge-outsider-opus-5-low | claude-opus-5-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 |
|
|
59
|
+
| orc-challenge-executor-opus-5-med | claude-opus-5-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 |
|
|
60
|
+
| orc-challenge-principles-opus-5-high | claude-opus-5-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 |
|
|
61
|
+
| orc-challenge-expansionist-opus-5-med | claude-opus-5-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 |
|
|
62
|
+
| orc-doc-writer-opus-5-med | claude-opus-5-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 |
|
|
63
|
+
| orc-doc-checker-opus-5-low | claude-opus-5-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 |
|
|
64
|
+
| orc-test-designer-opus-5-high | claude-opus-5-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 |
|
|
65
|
+
| orc-test-interpreter-opus-5-low | claude-opus-5-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 |
|
|
66
|
+
| orc-trace-writer-haiku-5-high | claude-haiku-5-5 | high | append one phase block of behavior-trace narration from an orchestrator packet (every trace-owning lane; append-only, never reads source) |
|
|
67
|
+
| orc-graph-noter-haiku-5-high | claude-haiku-5-5 | high | 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 |
|
|
68
|
+
|
|
69
|
+
## Opus-5-only mode agents (hard-gated; dispatched only when `opus5_only: true`)
|
|
70
|
+
|
|
71
|
+
`opus5_only` FORCES every dispatched role onto `claude-opus-5-5`, with effort as
|
|
72
|
+
the only cost dial. Each agent below replaces its default with the same slice
|
|
73
|
+
and the same return contract. Effort is PINNED per role — no CLI rewrites
|
|
74
|
+
these. Full mapping + precedence:
|
|
75
|
+
`../skills/_shared/opus5-only.md`.
|
|
76
|
+
|
|
77
|
+
| Agent | Model | Effort | Replaces |
|
|
78
|
+
|-------|-------|--------|----------|
|
|
79
|
+
| orc-executor-opus-5-low | claude-opus-5-5 | low | the `[0,90)` band · orc-mini's and orc-fast's fixed executor |
|
|
80
|
+
| orc-executor-opus-5-med | claude-opus-5-5 | medium | the `[90,100]` band |
|
|
81
|
+
| orc-analyze-mini-opus-5-med | claude-opus-5-5 | medium | orc-analyze-mini-sonnet-5-high |
|
|
82
|
+
| orc-planner-mini-opus-5-med | claude-opus-5-5 | medium | orc-planner-mini-sonnet-5-high |
|
|
83
|
+
| orc-scout-opus-5-low | claude-opus-5-5 | low | orc-scout-sonnet-4-6-high |
|
|
84
|
+
| orc-pattern-codifier-opus-5-med | claude-opus-5-5 | medium | orc-pattern-codifier-sonnet-5-high |
|
|
85
|
+
| orc-wiki-scanner-opus-5-low | claude-opus-5-5 | low | orc-wiki-scanner-sonnet-5-high |
|
|
86
|
+
| orc-retro-opus-5-med | claude-opus-5-5 | medium | orc-retro-sonnet-5-high |
|
|
87
|
+
|
|
88
|
+
The eleven roles already on `claude-opus-5-5` — analyst, planner, reviewer,
|
|
89
|
+
verifier, test-author, combiner, learn-writer, advisor, judge, CLAUDE.md
|
|
90
|
+
writer, deep wiki scanner — dispatch
|
|
91
|
+
unchanged under this mode. **Never forced:** `orc-trace-writer-haiku-5-high` (it
|
|
92
|
+
transcribes a packet, no reasoning) and orc-diy (its table is compile-owned).
|
|
93
|
+
**Not dispatched at all:** `orc-graph-noter-haiku-5-high` has NO Opus 5.5
|
|
94
|
+
variant. Under this mode a lane skips graph notes and prints
|
|
95
|
+
`graph notes: skipped (opus5_only)` — a one-sentence summary does not justify an
|
|
96
|
+
Opus 5.5 dispatch, and the graph's structure layer costs no model at all.
|
|
97
|
+
|
|
98
|
+
Mini execution reuses orc-executor-sonnet-5-high. Fast-lane (orc-fast)
|
|
99
|
+
execution reuses orc-executor-sonnet-5-med — no dedicated agent. Under
|
|
100
|
+
`opus5_only` both reuse orc-executor-opus-5-low.
|
|
101
|
+
|
|
102
|
+
## orc-quick — the user picks, and no config can override it
|
|
103
|
+
|
|
104
|
+
`/orc-quick` has NO dedicated agent and NO score table. It asks the USER which
|
|
105
|
+
agent to spawn before EVERY dispatch, and reuses shipped agents:
|
|
106
|
+
|
|
107
|
+
| Dispatch kind | Offered | Hook-traced |
|
|
108
|
+
|---|---|---|
|
|
109
|
+
| writes code | orc-executor-sonnet-5-med · orc-executor-opus-5-low | yes |
|
|
110
|
+
| read-only recon | orc-recon-sonnet-5-med · orc-recon-opus-5-low · or `other — name a model` | yes · yes · no |
|
|
111
|
+
| review | orc-reviewer-opus-5-low · or ad-hoc | yes / no |
|
|
112
|
+
|
|
113
|
+
The only dispatch it does not re-ask is build-repair rounds 1–2, which reuse the
|
|
114
|
+
executor the user already chose for that entry; round 3 asks again.
|
|
115
|
+
|
|
116
|
+
**`opus5_only` and `rubric_bands_override` are both INERT in this lane** — they would silently collapse the user's choice. It is
|
|
117
|
+
the one exception to `opus5_only`'s otherwise flat precedence. See
|
|
118
|
+
`skills/_shared/opus5-only.md` and `skills/orc-quick/references/dispatch-gate.md`.
|
|
119
|
+
|
|
120
|
+
**Recon is a pinned PAIR; `other` is the ad-hoc escape hatch.** The
|
|
121
|
+
pair exists because the trace hook only sees an agent whose name starts with
|
|
122
|
+
`orc-`: an ad-hoc recon writes no SPAWN/RETURN, is invisible to
|
|
123
|
+
`orc run inflight`, and cannot be counted by `/orc-retro`. The two files share
|
|
124
|
+
ONE return contract, so the choice is a model choice and nothing else.
|
|
125
|
+
|
|
126
|
+
The escape hatch names **a model only**. The Agent tool takes a per-call model
|
|
127
|
+
and has no per-call effort knob, so the old "ad-hoc model + effort" menu offered
|
|
128
|
+
a setting that did not exist; effort follows the session. An `other` dispatch is
|
|
129
|
+
still not hook-traced — the lane writes its own `DISPATCH … adhoc=true` /
|
|
130
|
+
`VERIFY` lines and still runs the downgrade check from the agent's self-reported
|
|
131
|
+
`actual_model`, and only `/orc-retro` aggregation misses it.
|
|
132
|
+
|
|
133
|
+
The scout is dispatched only in the System Analyst's DEEP mode: the orchestrator
|
|
134
|
+
fans out ≤`config.max_scouts` (default 3) parallel scouts, one per coverage area
|
|
135
|
+
from the analyst's scout plan, and feeds their evidence bundles back to the
|
|
136
|
+
analyst for pass 2. Scouts are read-only and never analyze/plan/edit.
|
|
137
|
+
|
|
138
|
+
The orchestrator (main session) is NOT an agent file.
|
|
139
|
+
|
|
140
|
+
## ⚠ VERIFY IN YOUR ENVIRONMENT
|
|
141
|
+
|
|
142
|
+
Model IDs use the Platform/API dateless format (confirmed at
|
|
143
|
+
platform.claude.com/docs/en/about-claude/models/model-ids-and-versions):
|
|
144
|
+
claude-haiku-5-5, claude-sonnet-4-6, claude-sonnet-5-5, claude-opus-4-7,
|
|
145
|
+
claude-opus-4-8 and claude-opus-5-5 (the top executor band + the core fixed
|
|
146
|
+
roles). **Sonnet 5 runs on `claude-sonnet-5-5` since v2.1.0** — the agent names
|
|
147
|
+
keep `-sonnet-5-` (a point release in one family keeps the name, as Opus did in
|
|
148
|
+
v1.9.2), and `claude-sonnet-5` stays a valid config value.
|
|
149
|
+
|
|
150
|
+
1. **Run `/agents`** to confirm Claude Code accepts these full IDs in agent
|
|
151
|
+
frontmatter — in particular `claude-haiku-5-5` and `claude-opus-5-5`. If it
|
|
152
|
+
wants short aliases (opus/sonnet/haiku) or dated IDs, adjust
|
|
153
|
+
each `model:` field. The full IDs are valid at the API level but Claude Code
|
|
154
|
+
may normalize differently.
|
|
155
|
+
2. **Confirm `effort:` is a valid CLI frontmatter field.** If the CLI ignores
|
|
156
|
+
it, effort must be conveyed in the dispatched prompt instead.
|
|
157
|
+
3. **Run `/doctor`** for duplicate-name or load errors after any edit.
|
|
158
|
+
|
|
159
|
+
## ⚠ COST-TIER FALLBACK (the original "wrong model" bug)
|
|
160
|
+
|
|
161
|
+
A subagent's model cannot exceed the MAIN session's cost tier — request pricier
|
|
162
|
+
and it silently falls back to the main model. **Run your main Claude Code
|
|
163
|
+
session on Opus** or every opus-* agent downgrades to Sonnet. Every executor
|
|
164
|
+
band from score 41 (`[41,90)` and `[90,100]`) AND every core fixed role (analyst, planner, reviewer,
|
|
165
|
+
verifier, test author, combiner, learn writer, ultra advisor/judge) are pinned
|
|
166
|
+
to **claude-opus-5-5** — on an Opus 4.8 session they all land on Opus 4.8. Verify by
|
|
167
|
+
expanding a subagent's tool-call in the transcript to see the model it ran.
|
|
168
|
+
|
|
169
|
+
## How dispatch works
|
|
170
|
+
|
|
171
|
+
- Score a task → config preset maps score to an executor agent → dispatch that
|
|
172
|
+
agent BY NAME with the task slice.
|
|
173
|
+
- Fixed roles dispatch their named agent directly (analyst/planner/reviewer/
|
|
174
|
+
verifier, mini variants).
|
|
175
|
+
- Every agent is single-role and self-contained (embedded procedure), so a
|
|
176
|
+
dispatched agent needs no external skill-loading to function.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: orc-executor-haiku-
|
|
2
|
+
name: orc-executor-haiku-5-high
|
|
3
3
|
description: >
|
|
4
|
-
ORC executor — claude-haiku-
|
|
5
|
-
model: claude-haiku-
|
|
4
|
+
ORC executor — claude-haiku-5-5, high effort. Dispatched by the build lanes at execution for ONE task, score band none (opt-in only, see MODEL-MAPPING.md).
|
|
5
|
+
model: claude-haiku-5-5
|
|
6
|
+
effort: high
|
|
6
7
|
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
7
8
|
---
|
|
8
9
|
|
|
@@ -53,6 +54,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
53
54
|
absent. Present = you must show the bug is real BEFORE you fix it: kind `test`
|
|
54
55
|
when the project has a runner, `command` when it has none. Absent = this task
|
|
55
56
|
is not a defect report; never invent a reproduction nobody asked for
|
|
57
|
+
- graph_anchors — up to 12 `path:a-b` ranges the dig found, and one `read all:`
|
|
58
|
+
command, or absent; it may end with a fenced block that carries the code of
|
|
59
|
+
every range. Present → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. A file you will EDIT is still read in
|
|
60
|
+
full first (read-ladder exception 1). The inline code and the ranges are real bytes of the current blob.
|
|
56
61
|
- worktree_path — work here if set, else the current tree
|
|
57
62
|
|
|
58
63
|
## Procedure (embedded — self-contained)
|
|
@@ -60,7 +65,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
60
65
|
2. Read spec_ref if provided.
|
|
61
66
|
2a. Read discipline — `.claude/skills/_shared/read-ladder.md` IS the rule, its
|
|
62
67
|
two exceptions are the only ones, and it holds the rest of this step.
|
|
63
|
-
- Step 0
|
|
68
|
+
- Step 0: the slice carries `graph_anchors` → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. Then, for a symbol the anchors do not cover, before any Grep:
|
|
69
|
+
`orc graph ctx <symbol|file> --if-enabled --json --brief`;
|
|
64
70
|
add `--source` for the card AND the range's lines in one call. A file you
|
|
65
71
|
will EDIT is still read IN FULL with Read first. Exit 3 = graph off, skip
|
|
66
72
|
step 0 for the rest of the task.
|
|
@@ -89,6 +95,12 @@ never spawn other agents, never work outside your task slice.
|
|
|
89
95
|
4. Run the proof: if the project has a runnable build/test, run it for your
|
|
90
96
|
changes and capture {command, exit_code, last ~5 output lines} VERBATIM —
|
|
91
97
|
never paraphrased, never predicted. No runner → no_runner_detected: true.
|
|
98
|
+
Coverage: when the project asks for a coverage level, run the coverage ONCE
|
|
99
|
+
for your own files only (`--collectCoverageFrom=<each file you changed>` and
|
|
100
|
+
the text reporter), read the uncovered lines from that text table, add the
|
|
101
|
+
tests that cover them, and run it once more. Never grep lcov or the jest
|
|
102
|
+
cache, and never probe the test transformer or its internals. A gap that is
|
|
103
|
+
still open after the second run goes in unmet[] with the file and lines.
|
|
92
104
|
5. Self-check: re-read your diff against every acceptance[] line and every
|
|
93
105
|
constraint. Anything you could not satisfy goes in unmet[] — a non-empty
|
|
94
106
|
unmet[] means status partial (or failed), never done.
|
|
@@ -128,12 +140,13 @@ never spawn other agents, never work outside your task slice.
|
|
|
128
140
|
did, never what you were handed. `none` is a valid, useful answer — it says
|
|
129
141
|
those pages did not help; never claim a read to look thorough. Omit only when
|
|
130
142
|
the slice carried no wiki material.
|
|
131
|
-
- graph_used — REQUIRED when the slice carried `
|
|
132
|
-
`orc graph ctx` yourself: `{targets, generation}` — the
|
|
133
|
-
`none`) and the `generation` number the
|
|
143
|
+
- graph_used — REQUIRED when the slice carried `graph_anchors` or you ran
|
|
144
|
+
`orc graph ctx` yourself: `{targets, generation}` — the anchors (`path:a-b`) or the
|
|
145
|
+
card targets you ACTUALLY used (or `none`) and the `generation` number the slice or card
|
|
146
|
+
carries, copied from its own header or JSON. A card
|
|
134
147
|
is a LOCATOR — read the range it names before you rely on behaviour, and trust a card whose
|
|
135
148
|
header says CHANGED, or one whose header names a `coverage` gap, as a hint only. `none` is a
|
|
136
|
-
valid answer; never claim a card helped to look thorough. Omit only when the slice carried no
|
|
149
|
+
valid answer; never claim anchors or a card helped to look thorough. Omit only when the slice carried no anchors and you ran no `ctx`.
|
|
137
150
|
- repro — REQUIRED when the slice carried `repro.required: true`; absent
|
|
138
151
|
otherwise. Either {command, before: {exit_code, tail}, after: {exit_code,
|
|
139
152
|
tail}} quoted VERBATIM from the two runs, or `none` + a one-line reason.
|
|
@@ -54,6 +54,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
54
54
|
absent. Present = you must show the bug is real BEFORE you fix it: kind `test`
|
|
55
55
|
when the project has a runner, `command` when it has none. Absent = this task
|
|
56
56
|
is not a defect report; never invent a reproduction nobody asked for
|
|
57
|
+
- graph_anchors — up to 12 `path:a-b` ranges the dig found, and one `read all:`
|
|
58
|
+
command, or absent; it may end with a fenced block that carries the code of
|
|
59
|
+
every range. Present → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. A file you will EDIT is still read in
|
|
60
|
+
full first (read-ladder exception 1). The inline code and the ranges are real bytes of the current blob.
|
|
57
61
|
- worktree_path — work here if set, else the current tree
|
|
58
62
|
|
|
59
63
|
## Procedure (embedded — self-contained)
|
|
@@ -61,7 +65,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
61
65
|
2. Read spec_ref if provided.
|
|
62
66
|
2a. Read discipline — `.claude/skills/_shared/read-ladder.md` IS the rule, its
|
|
63
67
|
two exceptions are the only ones, and it holds the rest of this step.
|
|
64
|
-
- Step 0
|
|
68
|
+
- Step 0: the slice carries `graph_anchors` → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. Then, for a symbol the anchors do not cover, before any Grep:
|
|
69
|
+
`orc graph ctx <symbol|file> --if-enabled --json --brief`;
|
|
65
70
|
add `--source` for the card AND the range's lines in one call. A file you
|
|
66
71
|
will EDIT is still read IN FULL with Read first. Exit 3 = graph off, skip
|
|
67
72
|
step 0 for the rest of the task.
|
|
@@ -90,6 +95,12 @@ never spawn other agents, never work outside your task slice.
|
|
|
90
95
|
4. Run the proof: if the project has a runnable build/test, run it for your
|
|
91
96
|
changes and capture {command, exit_code, last ~5 output lines} VERBATIM —
|
|
92
97
|
never paraphrased, never predicted. No runner → no_runner_detected: true.
|
|
98
|
+
Coverage: when the project asks for a coverage level, run the coverage ONCE
|
|
99
|
+
for your own files only (`--collectCoverageFrom=<each file you changed>` and
|
|
100
|
+
the text reporter), read the uncovered lines from that text table, add the
|
|
101
|
+
tests that cover them, and run it once more. Never grep lcov or the jest
|
|
102
|
+
cache, and never probe the test transformer or its internals. A gap that is
|
|
103
|
+
still open after the second run goes in unmet[] with the file and lines.
|
|
93
104
|
5. Self-check: re-read your diff against every acceptance[] line and every
|
|
94
105
|
constraint. Anything you could not satisfy goes in unmet[] — a non-empty
|
|
95
106
|
unmet[] means status partial (or failed), never done.
|
|
@@ -129,12 +140,13 @@ never spawn other agents, never work outside your task slice.
|
|
|
129
140
|
did, never what you were handed. `none` is a valid, useful answer — it says
|
|
130
141
|
those pages did not help; never claim a read to look thorough. Omit only when
|
|
131
142
|
the slice carried no wiki material.
|
|
132
|
-
- graph_used — REQUIRED when the slice carried `
|
|
133
|
-
`orc graph ctx` yourself: `{targets, generation}` — the
|
|
134
|
-
`none`) and the `generation` number the
|
|
143
|
+
- graph_used — REQUIRED when the slice carried `graph_anchors` or you ran
|
|
144
|
+
`orc graph ctx` yourself: `{targets, generation}` — the anchors (`path:a-b`) or the
|
|
145
|
+
card targets you ACTUALLY used (or `none`) and the `generation` number the slice or card
|
|
146
|
+
carries, copied from its own header or JSON. A card
|
|
135
147
|
is a LOCATOR — read the range it names before you rely on behaviour, and trust a card whose
|
|
136
148
|
header says CHANGED, or one whose header names a `coverage` gap, as a hint only. `none` is a
|
|
137
|
-
valid answer; never claim a card helped to look thorough. Omit only when the slice carried no
|
|
149
|
+
valid answer; never claim anchors or a card helped to look thorough. Omit only when the slice carried no anchors and you ran no `ctx`.
|
|
138
150
|
- repro — REQUIRED when the slice carried `repro.required: true`; absent
|
|
139
151
|
otherwise. Either {command, before: {exit_code, tail}, after: {exit_code,
|
|
140
152
|
tail}} quoted VERBATIM from the two runs, or `none` + a one-line reason.
|
|
@@ -54,6 +54,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
54
54
|
absent. Present = you must show the bug is real BEFORE you fix it: kind `test`
|
|
55
55
|
when the project has a runner, `command` when it has none. Absent = this task
|
|
56
56
|
is not a defect report; never invent a reproduction nobody asked for
|
|
57
|
+
- graph_anchors — up to 12 `path:a-b` ranges the dig found, and one `read all:`
|
|
58
|
+
command, or absent; it may end with a fenced block that carries the code of
|
|
59
|
+
every range. Present → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. A file you will EDIT is still read in
|
|
60
|
+
full first (read-ladder exception 1). The inline code and the ranges are real bytes of the current blob.
|
|
57
61
|
- worktree_path — work here if set, else the current tree
|
|
58
62
|
|
|
59
63
|
## Procedure (embedded — self-contained)
|
|
@@ -61,7 +65,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
61
65
|
2. Read spec_ref if provided.
|
|
62
66
|
2a. Read discipline — `.claude/skills/_shared/read-ladder.md` IS the rule, its
|
|
63
67
|
two exceptions are the only ones, and it holds the rest of this step.
|
|
64
|
-
- Step 0
|
|
68
|
+
- Step 0: the slice carries `graph_anchors` → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. Then, for a symbol the anchors do not cover, before any Grep:
|
|
69
|
+
`orc graph ctx <symbol|file> --if-enabled --json --brief`;
|
|
65
70
|
add `--source` for the card AND the range's lines in one call. A file you
|
|
66
71
|
will EDIT is still read IN FULL with Read first. Exit 3 = graph off, skip
|
|
67
72
|
step 0 for the rest of the task.
|
|
@@ -90,6 +95,12 @@ never spawn other agents, never work outside your task slice.
|
|
|
90
95
|
4. Run the proof: if the project has a runnable build/test, run it for your
|
|
91
96
|
changes and capture {command, exit_code, last ~5 output lines} VERBATIM —
|
|
92
97
|
never paraphrased, never predicted. No runner → no_runner_detected: true.
|
|
98
|
+
Coverage: when the project asks for a coverage level, run the coverage ONCE
|
|
99
|
+
for your own files only (`--collectCoverageFrom=<each file you changed>` and
|
|
100
|
+
the text reporter), read the uncovered lines from that text table, add the
|
|
101
|
+
tests that cover them, and run it once more. Never grep lcov or the jest
|
|
102
|
+
cache, and never probe the test transformer or its internals. A gap that is
|
|
103
|
+
still open after the second run goes in unmet[] with the file and lines.
|
|
93
104
|
5. Self-check: re-read your diff against every acceptance[] line and every
|
|
94
105
|
constraint. Anything you could not satisfy goes in unmet[] — a non-empty
|
|
95
106
|
unmet[] means status partial (or failed), never done.
|
|
@@ -129,12 +140,13 @@ never spawn other agents, never work outside your task slice.
|
|
|
129
140
|
did, never what you were handed. `none` is a valid, useful answer — it says
|
|
130
141
|
those pages did not help; never claim a read to look thorough. Omit only when
|
|
131
142
|
the slice carried no wiki material.
|
|
132
|
-
- graph_used — REQUIRED when the slice carried `
|
|
133
|
-
`orc graph ctx` yourself: `{targets, generation}` — the
|
|
134
|
-
`none`) and the `generation` number the
|
|
143
|
+
- graph_used — REQUIRED when the slice carried `graph_anchors` or you ran
|
|
144
|
+
`orc graph ctx` yourself: `{targets, generation}` — the anchors (`path:a-b`) or the
|
|
145
|
+
card targets you ACTUALLY used (or `none`) and the `generation` number the slice or card
|
|
146
|
+
carries, copied from its own header or JSON. A card
|
|
135
147
|
is a LOCATOR — read the range it names before you rely on behaviour, and trust a card whose
|
|
136
148
|
header says CHANGED, or one whose header names a `coverage` gap, as a hint only. `none` is a
|
|
137
|
-
valid answer; never claim a card helped to look thorough. Omit only when the slice carried no
|
|
149
|
+
valid answer; never claim anchors or a card helped to look thorough. Omit only when the slice carried no anchors and you ran no `ctx`.
|
|
138
150
|
- repro — REQUIRED when the slice carried `repro.required: true`; absent
|
|
139
151
|
otherwise. Either {command, before: {exit_code, tail}, after: {exit_code,
|
|
140
152
|
tail}} quoted VERBATIM from the two runs, or `none` + a one-line reason.
|
|
@@ -54,6 +54,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
54
54
|
absent. Present = you must show the bug is real BEFORE you fix it: kind `test`
|
|
55
55
|
when the project has a runner, `command` when it has none. Absent = this task
|
|
56
56
|
is not a defect report; never invent a reproduction nobody asked for
|
|
57
|
+
- graph_anchors — up to 12 `path:a-b` ranges the dig found, and one `read all:`
|
|
58
|
+
command, or absent; it may end with a fenced block that carries the code of
|
|
59
|
+
every range. Present → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. A file you will EDIT is still read in
|
|
60
|
+
full first (read-ladder exception 1). The inline code and the ranges are real bytes of the current blob.
|
|
57
61
|
- worktree_path — work here if set, else the current tree
|
|
58
62
|
|
|
59
63
|
## Procedure (embedded — self-contained)
|
|
@@ -61,7 +65,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
61
65
|
2. Read spec_ref if provided.
|
|
62
66
|
2a. Read discipline — `.claude/skills/_shared/read-ladder.md` IS the rule, its
|
|
63
67
|
two exceptions are the only ones, and it holds the rest of this step.
|
|
64
|
-
- Step 0
|
|
68
|
+
- Step 0: the slice carries `graph_anchors` → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. Then, for a symbol the anchors do not cover, before any Grep:
|
|
69
|
+
`orc graph ctx <symbol|file> --if-enabled --json --brief`;
|
|
65
70
|
add `--source` for the card AND the range's lines in one call. A file you
|
|
66
71
|
will EDIT is still read IN FULL with Read first. Exit 3 = graph off, skip
|
|
67
72
|
step 0 for the rest of the task.
|
|
@@ -90,6 +95,12 @@ never spawn other agents, never work outside your task slice.
|
|
|
90
95
|
4. Run the proof: if the project has a runnable build/test, run it for your
|
|
91
96
|
changes and capture {command, exit_code, last ~5 output lines} VERBATIM —
|
|
92
97
|
never paraphrased, never predicted. No runner → no_runner_detected: true.
|
|
98
|
+
Coverage: when the project asks for a coverage level, run the coverage ONCE
|
|
99
|
+
for your own files only (`--collectCoverageFrom=<each file you changed>` and
|
|
100
|
+
the text reporter), read the uncovered lines from that text table, add the
|
|
101
|
+
tests that cover them, and run it once more. Never grep lcov or the jest
|
|
102
|
+
cache, and never probe the test transformer or its internals. A gap that is
|
|
103
|
+
still open after the second run goes in unmet[] with the file and lines.
|
|
93
104
|
5. Self-check: re-read your diff against every acceptance[] line and every
|
|
94
105
|
constraint. Anything you could not satisfy goes in unmet[] — a non-empty
|
|
95
106
|
unmet[] means status partial (or failed), never done.
|
|
@@ -129,12 +140,13 @@ never spawn other agents, never work outside your task slice.
|
|
|
129
140
|
did, never what you were handed. `none` is a valid, useful answer — it says
|
|
130
141
|
those pages did not help; never claim a read to look thorough. Omit only when
|
|
131
142
|
the slice carried no wiki material.
|
|
132
|
-
- graph_used — REQUIRED when the slice carried `
|
|
133
|
-
`orc graph ctx` yourself: `{targets, generation}` — the
|
|
134
|
-
`none`) and the `generation` number the
|
|
143
|
+
- graph_used — REQUIRED when the slice carried `graph_anchors` or you ran
|
|
144
|
+
`orc graph ctx` yourself: `{targets, generation}` — the anchors (`path:a-b`) or the
|
|
145
|
+
card targets you ACTUALLY used (or `none`) and the `generation` number the slice or card
|
|
146
|
+
carries, copied from its own header or JSON. A card
|
|
135
147
|
is a LOCATOR — read the range it names before you rely on behaviour, and trust a card whose
|
|
136
148
|
header says CHANGED, or one whose header names a `coverage` gap, as a hint only. `none` is a
|
|
137
|
-
valid answer; never claim a card helped to look thorough. Omit only when the slice carried no
|
|
149
|
+
valid answer; never claim anchors or a card helped to look thorough. Omit only when the slice carried no anchors and you ran no `ctx`.
|
|
138
150
|
- repro — REQUIRED when the slice carried `repro.required: true`; absent
|
|
139
151
|
otherwise. Either {command, before: {exit_code, tail}, after: {exit_code,
|
|
140
152
|
tail}} quoted VERBATIM from the two runs, or `none` + a one-line reason.
|