@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
|
@@ -10,13 +10,17 @@ those values, and a spine never restates this file.
|
|
|
10
10
|
## Calls
|
|
11
11
|
|
|
12
12
|
**ONE catalogue, and it is not you:** `orc lane calls <lane> --json` names every
|
|
13
|
-
CLI call
|
|
14
|
-
to run the call, and what an EMPTY answer
|
|
13
|
+
SHARED CLI call (a call that two or more lanes make). Each row gives the
|
|
14
|
+
exit-code contract, the cost, when to run the call, and what an EMPTY answer
|
|
15
|
+
means.
|
|
15
16
|
|
|
17
|
+
- A call that only this lane makes is not in the catalogue. Its spelling and its
|
|
18
|
+
exit codes are in the lane's own skill files.
|
|
16
19
|
- Never invent a spelling. Never re-word an exit code.
|
|
17
20
|
- Never re-derive a state word. The CLI's state words are the only state words.
|
|
18
21
|
- **An exit code is an ANSWER wherever that contract says so, not a failure.**
|
|
19
|
-
- A call that the answer
|
|
22
|
+
- A call that neither the answer nor the lane's own skill files name is a call
|
|
23
|
+
the lane does not make.
|
|
20
24
|
- The catalogue itself exits ≠ 0 → say that the CLI is unavailable. Before you
|
|
21
25
|
run a command, name it out loud.
|
|
22
26
|
|
|
@@ -1,137 +1,137 @@
|
|
|
1
|
-
# Shared contract — Opus-5-only dispatch mode (hard-gated, forcing)
|
|
2
|
-
|
|
3
|
-
Canonical rule for routing EVERY dispatched role to Opus 5. Consumed by the full
|
|
4
|
-
orc spine, the ultra lane, and every lane with a fixed-role dispatch; the lint
|
|
5
|
-
pins the `opus5-only.md` pointer into each of them.
|
|
6
|
-
|
|
7
|
-
## The gate
|
|
8
|
-
|
|
9
|
-
Read the resolved config at run start (`config.md` defaults ← `orc.config.yaml`).
|
|
10
|
-
The mode is **hard-gated**: absolutely nothing changes unless `opus5_only: true`.
|
|
11
|
-
When it is false (the default), dispatch every role exactly as today — this file
|
|
12
|
-
is inert.
|
|
13
|
-
|
|
14
|
-
## The mapping (only when `opus5_only: true`)
|
|
15
|
-
|
|
16
|
-
**Scored executors** — one model, EFFORT as the cost dial, replacing the 5-band
|
|
17
|
-
mixed-model table:
|
|
18
|
-
|
|
19
|
-
| Score | Executor agent |
|
|
20
|
-
|-----------|---------------------------|
|
|
21
|
-
| `[0,90)` | `orc-executor-opus-5-low` |
|
|
22
|
-
| `[90,100]` | `orc-executor-opus-5-med` |
|
|
23
|
-
|
|
24
|
-
Two bands, sharing the 90 edge with the default table's top two rows. Since
|
|
25
|
-
v1.0.0 the default table's high end is ALREADY Opus 5.5 with effort as the dial,
|
|
26
|
-
so this mode differs from it only below 41 — a third band here would be a
|
|
27
|
-
distinction the default table stopped making.
|
|
28
|
-
|
|
29
|
-
**Fixed roles** — dispatch the Opus 5.5 variant **instead of** the default role
|
|
30
|
-
agent: same task slice, same return contract, same phase.
|
|
31
|
-
|
|
32
|
-
| Role | Default agent | Opus-5-only variant |
|
|
33
|
-
|------|---------------|---------------------|
|
|
34
|
-
| mini executor | `orc-executor-sonnet-5-high` | `orc-executor-opus-5-low` |
|
|
35
|
-
| fast executor | `orc-executor-sonnet-5-med` | `orc-executor-opus-5-low` |
|
|
36
|
-
| mini analyze | `orc-analyze-mini-sonnet-5-high` | `orc-analyze-mini-opus-5-med` |
|
|
37
|
-
| mini plan | `orc-planner-mini-sonnet-5-high` | `orc-planner-mini-opus-5-med` |
|
|
38
|
-
| scout | `orc-scout-sonnet-4-6-high` | `orc-scout-opus-5-low` |
|
|
39
|
-
| pattern codify | `orc-pattern-codifier-sonnet-5-high` | `orc-pattern-codifier-opus-5-med` |
|
|
40
|
-
| wiki scan | `orc-wiki-scanner-sonnet-5-high` (light) | `orc-wiki-scanner-opus-5-low` |
|
|
41
|
-
| retro mine | `orc-retro-sonnet-5-high` | `orc-retro-opus-5-med` |
|
|
42
|
-
|
|
43
|
-
The eleven roles already pinned to `claude-opus-5-5` — analyst, planner, reviewer,
|
|
44
|
-
verifier, test-author, combiner, learn-writer, advisor, judge, CLAUDE.md writer
|
|
45
|
-
(`orc-claude-writer-opus-5-low`), deep wiki scanner (`orc-wiki-scanner-opus-5-low`)
|
|
46
|
-
— are already
|
|
47
|
-
compliant and dispatch unchanged (their efforts are NOT rewritten by this mode).
|
|
48
|
-
|
|
49
|
-
**The wiki scan tier ladder (v0.46.0) needs no new pair.**
|
|
50
|
-
Off, the ladder picks deep or light per delta. ON, this mode flips the light tier
|
|
51
|
-
to `orc-wiki-scanner-opus-5-low`. The deep tier is already that agent. So **both
|
|
52
|
-
tiers collapse onto that one shipped agent** and the ladder simply stops applying.
|
|
53
|
-
Do not add a second Opus 5.5 scanner variant. A pair for a tier that cannot occur
|
|
54
|
-
while the flag is on is exactly the phantom this table exists to prevent. Ladder: `../orc-wiki/references/partial-refresh.md`.
|
|
55
|
-
|
|
56
|
-
## Out of scope — never forced
|
|
57
|
-
|
|
58
|
-
- **`orc-trace-writer-haiku-
|
|
59
|
-
orchestrator hands it — no reasoning, no source reads. It is never in the
|
|
60
|
-
roster.
|
|
61
|
-
- **`orc-graph-noter-
|
|
62
|
-
variant: under the mode a code lane skips graph notes and prints
|
|
63
|
-
`graph notes: skipped (opus5_only)` (`code-graph.md` §6). The graph's structure
|
|
64
|
-
layer costs no model, so nothing else about the graph changes.
|
|
65
|
-
- **`orc-diy`.** Its score table is compile-owned (`orc diy compile` →
|
|
66
|
-
`flow.lock.json`); a DIY flow dispatches whatever its lock says. Re-compile to
|
|
67
|
-
change it.
|
|
68
|
-
- **`orc-quick` — the ONE exception to the flat precedence below.** Its dispatch
|
|
69
|
-
gate asks the USER which agent to spawn before every single dispatch, and that
|
|
70
|
-
hard gate is the lane's entire premise. A forcing mode that collapsed the menu
|
|
71
|
-
to one option would silently delete it, so the mode is fully INERT there:
|
|
72
|
-
`opus5_only` is neither read nor honored by `orc-quick`. When the mode is on,
|
|
73
|
-
the lane SAYS so at the gate (`orc-quick ignores opus5_only — both options are
|
|
74
|
-
live`), because a shadowed setting must never be silent in either direction.
|
|
75
|
-
- **`/orc-challenge` — UNAFFECTED, not exempt.** All three of its agents are
|
|
76
|
-
already `claude-opus-5-5` (judge high, advisor medium, reader low), so the mode
|
|
77
|
-
has nothing to force: zero new pairs, no rename churn, no roster row. The
|
|
78
|
-
reader's `low` effort is a MEASUREMENT choice, not a cost one — a
|
|
79
|
-
harder-thinking cold reader reasons around exactly the gaps D4 exists to find
|
|
80
|
-
— so nothing may ever "upgrade" it.
|
|
81
|
-
See `orc-quick/references/dispatch-gate.md`.
|
|
82
|
-
|
|
83
|
-
## It FORCES — precedence is flat while ON
|
|
84
|
-
|
|
85
|
-
`opus5_only: true` outranks every other dispatch selector:
|
|
86
|
-
|
|
87
|
-
- each role's default frontmatter pin;
|
|
88
|
-
- **`rubric_bands_override`** — a hand-written executor table is ignored while
|
|
89
|
-
the mode is on.
|
|
90
|
-
|
|
91
|
-
Turning the mode off restores both. `rubric_bands` remains granularity
|
|
92
|
-
only, never a preset selector, in both modes.
|
|
93
|
-
|
|
94
|
-
The forcing is flat across every lane that HONORS the mode — `orc-quick` does
|
|
95
|
-
not, per "Out of scope" above.
|
|
96
|
-
|
|
97
|
-
### `orc extra` sits ABOVE the mode, and it is not a fourth thing it overrides
|
|
98
|
-
|
|
99
|
-
Extra decides **whether a Claude agent runs at all**. `opus5_only` and the score
|
|
100
|
-
tables only decide WHICH Claude agent runs where extra did not take it. So the
|
|
101
|
-
mode is neither shadowed nor shadowing — it is simply **NOT CONSULTED** for the
|
|
102
|
-
work extra took:
|
|
103
|
-
|
|
104
|
-
- **a scored task** — an extra route row covering that score outranks the mode;
|
|
105
|
-
every score no row covers still resolves on the Opus 5.5 ladder.
|
|
106
|
-
- **a POSITION** (v0.55.0 — `quick-executor`, `fast-executor`, `doc-writer`,
|
|
107
|
-
`doc-checker`, `wiki-scanner-deep`, `wiki-scanner-light`) — an extra slot row
|
|
108
|
-
holding that position outranks the mode's variant of that slot's agent; **a
|
|
109
|
-
position with no row is fully governed by the mode.** With `doc-writer` routed
|
|
110
|
-
and `doc-checker` not, `opus5_only` is entirely live for the checker.
|
|
111
|
-
|
|
112
|
-
"Not consulted for that slot" and "inert" are different claims, and only the
|
|
113
|
-
first one is true. `orc config list` and `orc config set` NAME the taken bands
|
|
114
|
-
AND the taken positions for exactly that reason: a shadowed setting must never
|
|
115
|
-
be silent, and neither must a partly shadowed one.
|
|
116
|
-
|
|
117
|
-
Both wiki slots collapse onto `orc-wiki-scanner-opus-5-low` while the mode is on,
|
|
118
|
-
which is why the slot table adds **no agent and no pair**. A slot names the
|
|
119
|
-
POSITION, not the model.
|
|
120
|
-
|
|
121
|
-
## Tier honesty
|
|
122
|
-
|
|
123
|
-
A subagent can never outrank the main session. With the mode ON, EVERY dispatch
|
|
124
|
-
needs an Opus 5.5 main session — not just the top executor band. On a lower
|
|
125
|
-
session every role silently falls back to the session model and the tier-honesty
|
|
126
|
-
rule (`return-validation.md`) reports a downgrade on **every** return. That is
|
|
127
|
-
correct behavior, not a bug: hooks cannot block on model, only on effort, so the
|
|
128
|
-
`orc config set opus5_only true` notice is the only up-front warning.
|
|
129
|
-
|
|
130
|
-
This also means `orc-fast`'s "the orchestrator runs fine at Sonnet medium" holds
|
|
131
|
-
only while the mode is OFF. The effort guard is unchanged — it still matches the
|
|
132
|
-
exact skill name `orc`, and orc-fast is never added to it.
|
|
133
|
-
|
|
134
|
-
## Trace
|
|
135
|
-
|
|
136
|
-
Phase 1's `CONFIG` line always records the resolved `opus5_only`, so
|
|
137
|
-
`/orc-retro` can segment per-band outcomes BY dispatch mode.
|
|
1
|
+
# Shared contract — Opus-5-only dispatch mode (hard-gated, forcing)
|
|
2
|
+
|
|
3
|
+
Canonical rule for routing EVERY dispatched role to Opus 5. Consumed by the full
|
|
4
|
+
orc spine, the ultra lane, and every lane with a fixed-role dispatch; the lint
|
|
5
|
+
pins the `opus5-only.md` pointer into each of them.
|
|
6
|
+
|
|
7
|
+
## The gate
|
|
8
|
+
|
|
9
|
+
Read the resolved config at run start (`config.md` defaults ← `orc.config.yaml`).
|
|
10
|
+
The mode is **hard-gated**: absolutely nothing changes unless `opus5_only: true`.
|
|
11
|
+
When it is false (the default), dispatch every role exactly as today — this file
|
|
12
|
+
is inert.
|
|
13
|
+
|
|
14
|
+
## The mapping (only when `opus5_only: true`)
|
|
15
|
+
|
|
16
|
+
**Scored executors** — one model, EFFORT as the cost dial, replacing the 5-band
|
|
17
|
+
mixed-model table:
|
|
18
|
+
|
|
19
|
+
| Score | Executor agent |
|
|
20
|
+
|-----------|---------------------------|
|
|
21
|
+
| `[0,90)` | `orc-executor-opus-5-low` |
|
|
22
|
+
| `[90,100]` | `orc-executor-opus-5-med` |
|
|
23
|
+
|
|
24
|
+
Two bands, sharing the 90 edge with the default table's top two rows. Since
|
|
25
|
+
v1.0.0 the default table's high end is ALREADY Opus 5.5 with effort as the dial,
|
|
26
|
+
so this mode differs from it only below 41 — a third band here would be a
|
|
27
|
+
distinction the default table stopped making.
|
|
28
|
+
|
|
29
|
+
**Fixed roles** — dispatch the Opus 5.5 variant **instead of** the default role
|
|
30
|
+
agent: same task slice, same return contract, same phase.
|
|
31
|
+
|
|
32
|
+
| Role | Default agent | Opus-5-only variant |
|
|
33
|
+
|------|---------------|---------------------|
|
|
34
|
+
| mini executor | `orc-executor-sonnet-5-high` | `orc-executor-opus-5-low` |
|
|
35
|
+
| fast executor | `orc-executor-sonnet-5-med` | `orc-executor-opus-5-low` |
|
|
36
|
+
| mini analyze | `orc-analyze-mini-sonnet-5-high` | `orc-analyze-mini-opus-5-med` |
|
|
37
|
+
| mini plan | `orc-planner-mini-sonnet-5-high` | `orc-planner-mini-opus-5-med` |
|
|
38
|
+
| scout | `orc-scout-sonnet-4-6-high` | `orc-scout-opus-5-low` |
|
|
39
|
+
| pattern codify | `orc-pattern-codifier-sonnet-5-high` | `orc-pattern-codifier-opus-5-med` |
|
|
40
|
+
| wiki scan | `orc-wiki-scanner-sonnet-5-high` (light) | `orc-wiki-scanner-opus-5-low` |
|
|
41
|
+
| retro mine | `orc-retro-sonnet-5-high` | `orc-retro-opus-5-med` |
|
|
42
|
+
|
|
43
|
+
The eleven roles already pinned to `claude-opus-5-5` — analyst, planner, reviewer,
|
|
44
|
+
verifier, test-author, combiner, learn-writer, advisor, judge, CLAUDE.md writer
|
|
45
|
+
(`orc-claude-writer-opus-5-low`), deep wiki scanner (`orc-wiki-scanner-opus-5-low`)
|
|
46
|
+
— are already
|
|
47
|
+
compliant and dispatch unchanged (their efforts are NOT rewritten by this mode).
|
|
48
|
+
|
|
49
|
+
**The wiki scan tier ladder (v0.46.0) needs no new pair.**
|
|
50
|
+
Off, the ladder picks deep or light per delta. ON, this mode flips the light tier
|
|
51
|
+
to `orc-wiki-scanner-opus-5-low`. The deep tier is already that agent. So **both
|
|
52
|
+
tiers collapse onto that one shipped agent** and the ladder simply stops applying.
|
|
53
|
+
Do not add a second Opus 5.5 scanner variant. A pair for a tier that cannot occur
|
|
54
|
+
while the flag is on is exactly the phantom this table exists to prevent. Ladder: `../orc-wiki/references/partial-refresh.md`.
|
|
55
|
+
|
|
56
|
+
## Out of scope — never forced
|
|
57
|
+
|
|
58
|
+
- **`orc-trace-writer-haiku-5-high` stays Haiku 4.5.** It transcribes a packet the
|
|
59
|
+
orchestrator hands it — no reasoning, no source reads. It is never in the
|
|
60
|
+
roster.
|
|
61
|
+
- **`orc-graph-noter-haiku-5-high` is not dispatched at all.** It has no Opus 5.5
|
|
62
|
+
variant: under the mode a code lane skips graph notes and prints
|
|
63
|
+
`graph notes: skipped (opus5_only)` (`code-graph.md` §6). The graph's structure
|
|
64
|
+
layer costs no model, so nothing else about the graph changes.
|
|
65
|
+
- **`orc-diy`.** Its score table is compile-owned (`orc diy compile` →
|
|
66
|
+
`flow.lock.json`); a DIY flow dispatches whatever its lock says. Re-compile to
|
|
67
|
+
change it.
|
|
68
|
+
- **`orc-quick` — the ONE exception to the flat precedence below.** Its dispatch
|
|
69
|
+
gate asks the USER which agent to spawn before every single dispatch, and that
|
|
70
|
+
hard gate is the lane's entire premise. A forcing mode that collapsed the menu
|
|
71
|
+
to one option would silently delete it, so the mode is fully INERT there:
|
|
72
|
+
`opus5_only` is neither read nor honored by `orc-quick`. When the mode is on,
|
|
73
|
+
the lane SAYS so at the gate (`orc-quick ignores opus5_only — both options are
|
|
74
|
+
live`), because a shadowed setting must never be silent in either direction.
|
|
75
|
+
- **`/orc-challenge` — UNAFFECTED, not exempt.** All three of its agents are
|
|
76
|
+
already `claude-opus-5-5` (judge high, advisor medium, reader low), so the mode
|
|
77
|
+
has nothing to force: zero new pairs, no rename churn, no roster row. The
|
|
78
|
+
reader's `low` effort is a MEASUREMENT choice, not a cost one — a
|
|
79
|
+
harder-thinking cold reader reasons around exactly the gaps D4 exists to find
|
|
80
|
+
— so nothing may ever "upgrade" it.
|
|
81
|
+
See `orc-quick/references/dispatch-gate.md`.
|
|
82
|
+
|
|
83
|
+
## It FORCES — precedence is flat while ON
|
|
84
|
+
|
|
85
|
+
`opus5_only: true` outranks every other dispatch selector:
|
|
86
|
+
|
|
87
|
+
- each role's default frontmatter pin;
|
|
88
|
+
- **`rubric_bands_override`** — a hand-written executor table is ignored while
|
|
89
|
+
the mode is on.
|
|
90
|
+
|
|
91
|
+
Turning the mode off restores both. `rubric_bands` remains granularity
|
|
92
|
+
only, never a preset selector, in both modes.
|
|
93
|
+
|
|
94
|
+
The forcing is flat across every lane that HONORS the mode — `orc-quick` does
|
|
95
|
+
not, per "Out of scope" above.
|
|
96
|
+
|
|
97
|
+
### `orc extra` sits ABOVE the mode, and it is not a fourth thing it overrides
|
|
98
|
+
|
|
99
|
+
Extra decides **whether a Claude agent runs at all**. `opus5_only` and the score
|
|
100
|
+
tables only decide WHICH Claude agent runs where extra did not take it. So the
|
|
101
|
+
mode is neither shadowed nor shadowing — it is simply **NOT CONSULTED** for the
|
|
102
|
+
work extra took:
|
|
103
|
+
|
|
104
|
+
- **a scored task** — an extra route row covering that score outranks the mode;
|
|
105
|
+
every score no row covers still resolves on the Opus 5.5 ladder.
|
|
106
|
+
- **a POSITION** (v0.55.0 — `quick-executor`, `fast-executor`, `doc-writer`,
|
|
107
|
+
`doc-checker`, `wiki-scanner-deep`, `wiki-scanner-light`) — an extra slot row
|
|
108
|
+
holding that position outranks the mode's variant of that slot's agent; **a
|
|
109
|
+
position with no row is fully governed by the mode.** With `doc-writer` routed
|
|
110
|
+
and `doc-checker` not, `opus5_only` is entirely live for the checker.
|
|
111
|
+
|
|
112
|
+
"Not consulted for that slot" and "inert" are different claims, and only the
|
|
113
|
+
first one is true. `orc config list` and `orc config set` NAME the taken bands
|
|
114
|
+
AND the taken positions for exactly that reason: a shadowed setting must never
|
|
115
|
+
be silent, and neither must a partly shadowed one.
|
|
116
|
+
|
|
117
|
+
Both wiki slots collapse onto `orc-wiki-scanner-opus-5-low` while the mode is on,
|
|
118
|
+
which is why the slot table adds **no agent and no pair**. A slot names the
|
|
119
|
+
POSITION, not the model.
|
|
120
|
+
|
|
121
|
+
## Tier honesty
|
|
122
|
+
|
|
123
|
+
A subagent can never outrank the main session. With the mode ON, EVERY dispatch
|
|
124
|
+
needs an Opus 5.5 main session — not just the top executor band. On a lower
|
|
125
|
+
session every role silently falls back to the session model and the tier-honesty
|
|
126
|
+
rule (`return-validation.md`) reports a downgrade on **every** return. That is
|
|
127
|
+
correct behavior, not a bug: hooks cannot block on model, only on effort, so the
|
|
128
|
+
`orc config set opus5_only true` notice is the only up-front warning.
|
|
129
|
+
|
|
130
|
+
This also means `orc-fast`'s "the orchestrator runs fine at Sonnet medium" holds
|
|
131
|
+
only while the mode is OFF. The effort guard is unchanged — it still matches the
|
|
132
|
+
exact skill name `orc`, and orc-fast is never added to it.
|
|
133
|
+
|
|
134
|
+
## Trace
|
|
135
|
+
|
|
136
|
+
Phase 1's `CONFIG` line always records the resolved `opus5_only`, so
|
|
137
|
+
`/orc-retro` can segment per-band outcomes BY dispatch mode.
|
|
@@ -27,10 +27,10 @@ the codifier); hold resolved patterns in run state.
|
|
|
27
27
|
1. Dispatch EVERY task as a spawned subagent (emit `DISPATCH <agent> :: <task>
|
|
28
28
|
expect=<model>/<effort>` BEFORE the Task call; subagent wrapper framing + the
|
|
29
29
|
task's INPUT SLICE per orc-execution/core.md + its scored model). Every
|
|
30
|
-
slice
|
|
31
|
-
`
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
slice that writes code carries `graph_anchors` from ONE anchors call —
|
|
31
|
+
`orc graph ctx --for-slice <the task's declared_files> --focus=<the planning words> [--refs=<task.precedent>] --anchors --if-enabled --json --brief` (a request that names one symbol: `ctx <symbol> --anchors` gives the card and the anchors in one call)
|
|
32
|
+
(`../code-graph.md` §0 step 3, §7): print its `line`; paste its `card` into
|
|
33
|
+
the slice VERBATIM as `graph_anchors`, with its `read all: …` line and its code block — never shorten it; exit 3 or 4 → none. With `graph_anchors` in the slice, list at most ONE wiki page path (the one about the feature's intent), not 1–3. No anchors when the change stays inside ONE file the user named and nothing outside it changes (no signature change, no new export) — the executor reads that file anyway. The slice also carries
|
|
34
34
|
the task's `acceptance[]`, its `tdd_spec` tests (the executor
|
|
35
35
|
implements to green: implement→test→repair, cap `tdd_loop_max`, emitting
|
|
36
36
|
`TDD-RED`/`TDD-GREEN` per iteration; cap hit → STOP SEQUENCE + honest red
|
|
@@ -71,13 +71,14 @@ the codifier); hold resolved patterns in run state.
|
|
|
71
71
|
`unmet[]` is `partial`.
|
|
72
72
|
4. **Post-wave worktree audit (GATE, `_shared/return-validation.md` §6):** diff `git status --short` before/after the wave — a changed path in NO task's `declared_files`, INCLUDING one that became less modified (the revert signature), blocks the close until named and decided.
|
|
73
73
|
Overlap → `failure_reason: "file-collision:<file> with <agent>"`, requeue later wave.
|
|
74
|
-
4a. **Code graph (`../code-graph.md` §5–§6):**
|
|
74
|
+
4a. **Code graph (`../code-graph.md` §5–§6):** ONLY when `probes["graph-status"].update_step`
|
|
75
|
+
is `lane` (else the hook already did it — no call): after the audit, ONE call —
|
|
75
76
|
`orc graph update --notes-pending --files <the wave's changed paths> --at wave --if-enabled --json --brief`
|
|
76
77
|
(emit `GRAPH-UPDATE`; the answer's `notes_pending` is the notes half):
|
|
77
|
-
`notes_pending.exit` 0 → dispatch `orc-graph-noter-
|
|
78
|
+
`notes_pending.exit` 0 → dispatch `orc-graph-noter-haiku-5-high` (slice = paths only) in the
|
|
78
79
|
SAME tool block as the next wave's first dispatch; 3 or 5 → nothing, the
|
|
79
80
|
symbols wait for a later batch. The noter returns ONE line (emit `GRAPH-NOTES`) —
|
|
80
|
-
never pull its notes into this context. A slice that carried
|
|
81
|
+
never pull its notes into this context. A slice that carried `graph_anchors` gets a
|
|
81
82
|
`graph:` continuation on its `DISPATCH` line and a `graph_used` return.
|
|
82
83
|
5. Append worker `log_entries` to the decision log; regenerate the digest.
|
|
83
84
|
**Gotcha capture (`gotchas: on`):** a return that CLOSED a repair loop carries
|
|
@@ -139,11 +140,12 @@ outside `declared_files` (a revert included) gates the wave close.
|
|
|
139
140
|
<!-- /diy:when -->
|
|
140
141
|
|
|
141
142
|
<!-- diy:when code_graph=on -->
|
|
142
|
-
Code graph
|
|
143
|
-
declared_files> --if-enabled --json --brief`
|
|
144
|
-
|
|
143
|
+
Code graph anchors (never skipped): each slice that writes code carries `graph_anchors` (the `card`, inline) from
|
|
144
|
+
ONE call — `orc graph ctx --for-slice <the task's declared_files> --focus=<the planning words> [--refs=<task.precedent>] --anchors --if-enabled --json --brief`
|
|
145
|
+
(print its `line`; exit 3 or 4 → none), and the return carries `graph_used`. ONLY when
|
|
146
|
+
`update_step` is `lane`, after each wave's worktree audit run ONE call —
|
|
145
147
|
`orc graph update --notes-pending --files <the wave's changed paths> --at wave --if-enabled --json --brief`
|
|
146
|
-
(copy its `trace` verbatim); `notes_pending.exit` 0 → dispatch `orc-graph-noter-
|
|
148
|
+
(copy its `trace` verbatim); `notes_pending.exit` 0 → dispatch `orc-graph-noter-haiku-5-high` paired
|
|
147
149
|
with the next wave's first dispatch, exit 3 or 5 → nothing. Canonical:
|
|
148
150
|
`.claude/skills/_shared/code-graph.md`.
|
|
149
151
|
<!-- /diy:when -->
|
|
@@ -20,20 +20,22 @@ task (advisory) and print + emit `CROSSLINK <state> :: boundaries=<n> peers=<nam
|
|
|
20
20
|
only pre-built needs/cache, never peer source live). **Gotchas (repair memory,
|
|
21
21
|
config `gotchas`):** probe ONCE with `orc gotcha status` (exit 0 = entries exist,
|
|
22
22
|
1 = none — never a `find`); canonical `_shared/gotchas.md`.
|
|
23
|
-
**Code graph (`../code-graph.md` §
|
|
24
|
-
`orc graph map --focus
|
|
23
|
+
**Code graph (`../code-graph.md` §0 step 2, §3b):** with the graph on, run
|
|
24
|
+
`orc graph map --focus=<3–6 words from the request> --budget 800 --if-enabled --json --brief`
|
|
25
25
|
**FIRST, once** — before any Glob and before `impact`. It ranks the repository
|
|
26
|
-
around the request and names the files worth reading
|
|
27
|
-
|
|
26
|
+
around the request and names the files worth reading; `impact` cannot answer that,
|
|
27
|
+
because it needs the files already chosen. Print its
|
|
28
28
|
`line` and emit `GRAPH-MAP`. Rank is a HINT about where to look first, never
|
|
29
29
|
proof a file matters — and never a reason to skip reading a range you will edit.
|
|
30
|
-
Exit 1 or 3 → orient exactly as before. Then run
|
|
30
|
+
Never call `map` twice. Exit 1 or 3 → orient exactly as before. Then run
|
|
31
31
|
`orc graph impact <candidate declared_files> --if-enabled --json --brief` and hand its
|
|
32
32
|
callers to the planner — they sharpen `declared_files` and the `fan` and risk
|
|
33
|
-
facets.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
facets. `/orc`, `/orc-ultra` and `/orc-diy` also run
|
|
34
|
+
`orc graph cochange <each candidate file> --if-enabled --json --brief`: it answers
|
|
35
|
+
"what else will I have to touch" from HISTORY. Co-change is a HINT about people,
|
|
36
|
+
never a dependency. A short history answers exit 4 at once — this file changes
|
|
37
|
+
alone, which is an answer. Exit 3 or 4 → plan exactly as before. A task's optional
|
|
38
|
+
`precedent[]` (the planner's copy-from files) becomes that task's pack `--refs=`.
|
|
37
39
|
**Pact / boundary / aftermath / wiki debt (all CONSUMED here, never
|
|
38
40
|
written here):** probe `orc pact status --json` (`pact_gate`, default `warn`),
|
|
39
41
|
`orc boundary status --json` (`boundary_gate`, default `warn`), `orc wiki debt
|
|
@@ -136,4 +138,20 @@ TDD is ON for this flow: the plan must carry a `tdd_spec` per requirement
|
|
|
136
138
|
project → whole-run exemption, stated once at preflight.
|
|
137
139
|
<!-- /diy:when -->
|
|
138
140
|
|
|
141
|
+
<!-- diy:when code_graph=on -->
|
|
142
|
+
Code graph — consult (before the first dispatch): print `probes["graph-status"].line` from
|
|
143
|
+
`orc lane config orc-diy --json`. Run `orc graph status --if-enabled --heal --json --brief` only
|
|
144
|
+
when `heal_needed` is true. Put the `trace` (`GRAPH-CONSULT …`) in the next packet as it is.
|
|
145
|
+
Exit 3 (`off` or `semi`) → make NO other graph call in this run.
|
|
146
|
+
|
|
147
|
+
Code graph — orient (once, before the planner chooses files): run
|
|
148
|
+
`orc graph map --focus=<3–6 words from the request> --budget 800 --if-enabled --json --brief`
|
|
149
|
+
FIRST, once; print its `line` and emit `GRAPH-MAP`. Rank is a HINT about where to look first,
|
|
150
|
+
never proof a file matters. Never call `map` twice. Then run
|
|
151
|
+
`orc graph impact <candidate declared_files> --if-enabled --json --brief` and hand its callers to
|
|
152
|
+
the planner. Also run `orc graph cochange <each candidate file> --if-enabled --json --brief`:
|
|
153
|
+
a HINT about people, never a dependency; a short history answers exit 4 at once. Exit 3 or 4 →
|
|
154
|
+
plan exactly as before. A task's optional `precedent[]` becomes that task's pack `--refs=`.
|
|
155
|
+
Canonical: `.claude/skills/_shared/code-graph.md`.
|
|
156
|
+
<!-- /diy:when -->
|
|
139
157
|
<!-- /orc:layer -->
|
|
@@ -81,9 +81,9 @@ that the line is printed and when.
|
|
|
81
81
|
dispatch — never skipped. Run `orc graph status --if-enabled --heal --json --brief`
|
|
82
82
|
only when `heal_needed` is true (it builds or updates the graph, free). Put the
|
|
83
83
|
`trace` (`GRAPH-CONSULT …`) in the next packet as it is — never as a `GATE` line
|
|
84
|
-
in your own words.
|
|
85
|
-
on, `orc lane config` prints the
|
|
86
|
-
§0). **The lane reads no `code_graph` key:** `--if-enabled`
|
|
84
|
+
in your own words. Exit 3 (`off`, or `semi` — kept current, never read) → make no other
|
|
85
|
+
graph call in this run. While the graph is on, `orc lane config` prints the four graph
|
|
86
|
+
touchpoints in `announce[]` (`../code-graph.md` §0). **The lane reads no `code_graph` key:** `--if-enabled`
|
|
87
87
|
makes the CLI decide, which is how `/orc-quick` takes part while its step 1 still
|
|
88
88
|
reads `log_dir` and nothing else. A graph that cannot be built never stops a run,
|
|
89
89
|
and `/orc-fast` gains no third gate. Every other lane prints nothing.
|
|
@@ -53,9 +53,10 @@ P0/P1 findings gate anything; P2/P3 findings are listed once in the summary
|
|
|
53
53
|
and never re-offered as fix-up tasks.
|
|
54
54
|
<!-- /diy:when -->
|
|
55
55
|
<!-- diy:when code_graph=on -->
|
|
56
|
-
With the code graph on,
|
|
57
|
-
`orc graph changes --if-enabled --json
|
|
58
|
-
|
|
56
|
+
With the code graph on, run ONCE
|
|
57
|
+
`orc graph changes --files=<the changed paths> --if-enabled --json --brief`: print its `tests_line`,
|
|
58
|
+
run its `tests[]` first, print its `blast_line`, and hand the reviewer its callers — an unchanged
|
|
59
|
+
caller of a changed signature is a finding candidate (`.claude/skills/_shared/code-graph.md` §0 step 4).
|
|
59
60
|
<!-- /diy:when -->
|
|
60
61
|
|
|
61
62
|
<!-- /orc:layer -->
|
|
@@ -41,14 +41,10 @@ wiki now?"** (H `orc.phase-8.wiki-refresh`); on "later" print the prominent stal
|
|
|
41
41
|
usage report — /usage limits + the full dispatch log (model/effort/score per
|
|
42
42
|
subagent). The user must always know what the run cost. A `proposal` in
|
|
43
43
|
`habits{}` → its ONE line joins that report (`../habits.md` §3). **Code graph
|
|
44
|
-
(`../code-graph.md` §5–§6):**
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
dispatch,
|
|
48
|
-
`orc graph gain --run <this run's trace name> --if-enabled --json --brief` (emit
|
|
49
|
-
`GRAPH-GAIN`): what the graph put in, and an ESTIMATE of the retrieval it kept
|
|
50
|
-
out. Exit 1 or 3 → no line. **Never restate it as one number** — the range and
|
|
51
|
-
the word "estimate" are the claim. Finally emit
|
|
44
|
+
(`../code-graph.md` §5–§6):** ONLY when `probes["graph-status"].update_step` is
|
|
45
|
+
`lane`, run `orc graph update --notes-pending --files <every path the run changed> --at end --if-enabled --json --brief`
|
|
46
|
+
once more — fix rounds move code — and emit `GRAPH-UPDATE`; `notes_pending.exit` 0 →
|
|
47
|
+
one noter dispatch, 3 or 5 → nothing. No lane calls `orc graph gain`. Finally emit
|
|
52
48
|
`PHASE ship end`, then the one-line `STATS lane=… dispatches=… downgrades=…`
|
|
53
49
|
summary (trace.md — what `orc stats` reads), then `FINISH :: <detail>`,
|
|
54
50
|
and in ONE step delete BOTH `log_dir/.current` and the run's `RESUME.md` (that
|
|
@@ -64,8 +60,9 @@ State the current branch and the change summary BEFORE any git action, and
|
|
|
64
60
|
never ship on a red build (locked rule).
|
|
65
61
|
|
|
66
62
|
<!-- diy:when code_graph=on -->
|
|
67
|
-
Before the ship action,
|
|
68
|
-
|
|
63
|
+
Before the ship action, ONLY when `update_step` is `lane`, run
|
|
64
|
+
`orc graph update --notes-pending --files <every path the run changed> --at end --if-enabled --json --brief`
|
|
65
|
+
once more — fix rounds move code (`.claude/skills/_shared/code-graph.md` §5).
|
|
69
66
|
<!-- /diy:when -->
|
|
70
67
|
<!-- diy:when ship_mode=ask -->
|
|
71
68
|
Ask the user how to ship: commit, PR (via
|
|
@@ -54,7 +54,7 @@ entry that wrote code. Every detail goes BELOW the card, never above it.
|
|
|
54
54
|
✅ Fixed the null charge on guest checkout — 3 files, tests 14 passed (2 affected first)
|
|
55
55
|
review 2 findings · 1 fixed · 1 disputed (recorded) gotchas 1 recorded (G-044)
|
|
56
56
|
risk low — callers 3 in 2 files, tests reach 2 habits 1 proposal below
|
|
57
|
-
flaky 1 test passed on the re-run (no repair round) graph <
|
|
57
|
+
flaky 1 test passed on the re-run (no repair round) graph <pack line>
|
|
58
58
|
undo orc undo --run <run-slug> next commit? (your usual: review → commit)
|
|
59
59
|
```
|
|
60
60
|
|
|
@@ -69,5 +69,4 @@ entry that wrote code. Every detail goes BELOW the card, never above it.
|
|
|
69
69
|
`undo none — no snapshot`. The command only PRINTS the undo; `--apply` runs
|
|
70
70
|
it. The lane never runs it itself.
|
|
71
71
|
- **Copy the CLI's words.** `risk` is the `blast_line` with its `why`;
|
|
72
|
-
`graph` is the `orc graph gain` `
|
|
73
|
-
never restated as a saving. `flaky` is the `GATE flaky` tests.
|
|
72
|
+
`graph` is the last pack call's `line`, VERBATIM (no lane calls `orc graph gain`). `flaky` is the `GATE flaky` tests.
|
|
@@ -19,14 +19,15 @@ owner is this file has its detail in "Verb detail" below.
|
|
|
19
19
|
| `CONFIG <key=value …>` | orc → writer | Phase 1 — the resolved config values this run will consume, ALWAYS with opus5_only | `_shared/phases/trace-verbs.md` |
|
|
20
20
|
| `WIKI-CONSULT <fresh\|aging\|stale\|absent\|empty> :: docs=<list\|none>` | orc → writer | project wiki consulted for grounding, with its staleness tier | `_shared/phases/wiki-consult.md` |
|
|
21
21
|
| `CROSSLINK <cached\|configured-no-cache\|none> :: boundaries=<n> peers=<names> · CROSSLINK inject task=<id> :: <boundary>` | orc → writer | cross-repo peer-knowledge state at the consult point; `inject` when a slice receives a linked contract | `_shared/phases/wiki-consult.md` |
|
|
22
|
-
| `GRAPH-CONSULT <fresh\|updated\|built\|drifted\|none\|off> :: files=<n> symbols=<n>[ density=<n>[ thin=1]] · GRAPH-CONSULT card task=<id> :: targets
|
|
22
|
+
| `GRAPH-CONSULT <fresh\|updated\|built\|drifted\|none\|semi\|off\|pack\|anchors> :: files=<n> symbols=<n>[ density=<n>[ thin=1]] · GRAPH-CONSULT card task=<id> :: targets=<…> · GRAPH-CONSULT pack :: files=<n> refs=<n> excerpts=<n> tokens=<n> gen=<n> · GRAPH-CONSULT anchors :: ranges=<n> files=<n> gen=<n>` | orc → writer | the code graph's preflight state, copied VERBATIM from the CLI `trace` field | `_shared/code-graph.md` |
|
|
23
23
|
| `GRAPH-UPDATE <state> :: parsed=<n> reused=<n> deleted=<n> gen=<n> route=<n> ms=<n>` | orc → writer | one graph update, the `trace` field of `orc graph update --json`, verbatim | `_shared/phases/trace-verbs.md` |
|
|
24
24
|
| `GRAPH-MAP <repo\|focused> :: files=<shown>/<total> [focus=<a,b>] gen=<n>` | orc → writer | ONE line at the start of planning, the `trace` field of `orc graph map --json`, verbatim | `_shared/phases/trace-verbs.md` |
|
|
25
25
|
| `GRAPH-CHANGES <found\|none> :: symbols=<n> high=<n> medium=<n> low=<n> gen=<n>` | orc → writer | one line at review, the `trace` field of `orc graph changes --json`, verbatim | `_shared/phases/trace-verbs.md` |
|
|
26
26
|
| `GRAPH-COMPLEXITY <mini-ok\|recommend-orc> :: files=<n> callers=<n> caller_files=<n> maybe=<n> tests=<n> risk=<n> cochange=<n> gen=<n>` | orc → writer | one line per /orc-mini run, the `trace` field of the `--complexity` impact call, verbatim | `_shared/phases/trace-verbs.md` |
|
|
27
|
-
| `GRAPH-COCHANGE <found\|none> :: rows=<n> commits=<n>` | orc → writer | one line per planning batch, for the file that produced the widest answer | `_shared/phases/trace-verbs.md` |
|
|
27
|
+
| `GRAPH-COCHANGE <found\|none> :: rows=<n> commits=<n> · GRAPH-COCHANGE none :: history=<n>` | orc → writer | one line per planning batch, for the file that produced the widest answer | `_shared/phases/trace-verbs.md` |
|
|
28
|
+
| `GRAPH-COVERAGE <clean\|gaps> :: paths=<n> gaps=<n> gen=<n>` | orc → writer | the `trace` field of `orc graph coverage --json` — which files a card's silence can be trusted on | `_shared/phases/trace-verbs.md` |
|
|
28
29
|
| `GRAPH-HINT injected=<n> subagent_start=<n> read_notes=<n> updates=<n>` | orc → writer | ONE line per phase close, the graph hook's counters; omitted when the counter file does not exist | `_shared/phases/trace-verbs.md` |
|
|
29
|
-
| `GRAPH-GAIN paid=<n> low=<n> high=<n> calls=<n>` | orc → writer |
|
|
30
|
+
| `GRAPH-GAIN paid=<n> low=<n> high=<n> calls=<n>` | orc → writer | OLD traces only — no lane emits it now (`orc graph gain` is a user command); `paid` is exact, `low`/`high` are an estimate never collapsed into one number | `_shared/phases/trace-verbs.md` |
|
|
30
31
|
| `GRAPH-NOTES <applied\|below-min\|none\|deferred\|off\|skipped> :: <detail>` | orc → writer | one notes batch; `applied` copies the noter's one-line return verbatim | `_shared/phases/trace-verbs.md` |
|
|
31
32
|
| `SPAWN <agent>` | hook | an agent dispatch was observed (skeleton) | `hooks/orc-trace.js` |
|
|
32
33
|
| `RETURN <agent> :: <desc> dur=<m>m<s>s [model=<id>]` | hook | a subagent finished (skeleton) — not an orchestrator obligation; the model check is VERIFY | `hooks/orc-trace.js` |
|
|
@@ -44,17 +45,19 @@ owner is this file has its detail in "Verb detail" below.
|
|
|
44
45
|
| `FINDING p0=<n> p1=<n> p2=<n> p3=<n>[ pre=<n> suppressed=<n> folded=<n>]` | reviewer→orc → writer | review outcome (P0–P3 severity ladder); the tail counts the after-filter's buckets | `_shared/phases/review.md` |
|
|
45
46
|
| `FINDING-OUTCOME addressed=<n> disputed=<n> wontfix=<n> open=<n> pre=<n> suppressed=<n> :: <cat>:<addressed>/<total>,…` | orc → writer | ONE line at review close (a clean review too) — what became of each finding; `orc gotcha quality` counts it as a review | `_shared/phases/trace-verbs.md` |
|
|
46
47
|
| `REVIEW-WHICH chose=<orc\|project\|skip> name=<the review the rule names> by=<user\|ledger\|learned> :: <file:line of the rule>` | orc → writer | the answer to §0 "which review" when the project names its own review — written ALWAYS, also under habits off; the FINISH nudge reads it | `_shared/phases/trace-verbs.md` |
|
|
47
|
-
| `FIX source=<sonar\|ci\|defect\|pr\|review
|
|
48
|
+
| `FIX source=<sonar\|ci\|defect\|pr\|review> introduced_by=<orc\|ai\|human\|unknown> by=<user\|evidence> obs=<id8>[ missed_by=<run>] :: <path:lines> <rule or finding>` | cli | one fix recorded by `orc fix record` (/orc-fix) into the HOST run's trace — the CLI writes it, never a packet — `source` is the FILED kind: a class `other` is filed as `defect` | `orc-fix/SKILL.md` |
|
|
49
|
+
| `WAIT mode=<safe\|soft\|hard> requested=<n>m start=<HH:MM> end=<HH:MM> hops=<planned>/<max> trigger=<user\|gate> · WAIT end :: done=<k>/<planned> reason=<elapsed\|recovered\|cancelled\|max-hops> · WAIT block :: reason="<why>" by=user · WAIT unblock` | cli | a wait started, ended, blocked or unblocked — `orc wait` writes it into the open trace, never a packet | `_shared/wait.md` |
|
|
48
50
|
| `VERDICT pass\|fail :: <detail>` | verifier→orc → writer | verification outcome | `_shared/phases/verify.md` |
|
|
49
51
|
| `DRIFT loop=<n> :: <user description, compressed>` | orc → writer | mock-example drift-recovery loop opened (hard cap 2 loops) | `_shared/drift-recovery.md` |
|
|
50
52
|
| `TDD-RED task=<id> iter=<n> :: <failing tests>` | executor→orc → writer | TDD repair-loop iteration — the plan's acceptance tests still red | `_shared/phases/trace-verbs.md` |
|
|
51
53
|
| `TDD-GREEN task=<id> iter=<n>` | executor→orc → writer | the task's TDD acceptance tests pass | `_shared/phases/trace-verbs.md` |
|
|
52
54
|
| `REPRO red\|green :: <cmd> exit=<n> · REPRO none :: <reason>` | executor→orc → writer | a DEFECT task's reproduction: RED before the fix, GREEN after | `_shared/return-validation.md` |
|
|
53
|
-
| `NOTE :: <decisions>` | writer | the packet's `decisions` field — the WHY layer; one line, only when non-empty | `agents/orc-trace-writer-haiku-
|
|
55
|
+
| `NOTE :: <decisions>` | writer | the packet's `decisions` field — the WHY layer; one line, only when non-empty | `agents/orc-trace-writer-haiku-5-high.md` |
|
|
54
56
|
| `STATS lane=<l> slug=<s> dispatches=<n> waves=<n> tasks=<n> bands=<h:n,m:n,l:n> downgrades=<n> duration_ms=<n>` | orc → writer | ONE summary line per run, in the FINISH packet, immediately BEFORE the FINISH line | `_shared/phases/trace-verbs.md` |
|
|
55
57
|
| `PACT <state> :: <ids> · PACT inject task=<id> :: <PACT-id> · PACT recheck pass\|fail :: <ids>` | orc → writer | invariant-ledger state at the Phase-1 probe, a promise injected into a task, the Phase-6 recheck | `orc-pact/references/gate.md` |
|
|
56
58
|
| `BOUNDARY <EXECUTE\|ESCALATE\|REFUSE\|unknown> task=<id> :: <area> · BOUNDARY lift task=<id> :: <area>` | orc → writer | per-task boundary verdict; an uncarded area is `unknown`, never REFUSE | `orc-boundary/references/gate.md` |
|
|
57
59
|
| `CHALLENGE iter=<n> findings=P0:<n>/P1:<n>/P2:<n> coverage=<n>% verdict=PASS\|FAIL · CHALLENGE accept\|rebut :: <id> · CHALLENGE regoal\|retemplate :: v<n>` | orc → writer | one line per completed /orc-challenge iteration — `orc challenge record`'s `trace_line`, verbatim | `orc-challenge/SKILL.md` |
|
|
60
|
+
| `DOC cycle=<n> sections=<k>/<m>[ wave=<k>/<n>]` | orc → writer | one line per completed /orc-doc cycle — a completed WAVE is a completed cycle | `orc-doc/SKILL.md` |
|
|
58
61
|
| `EXTRA <profile>/<model> engine=<api\|claude-shim\|cli> task=<id> band=[lo,hi) tok=in/cw/cr/out outcome=<done\|partial\|failed\|fallback> dur=<m>m<s>s · EXTRA fallback task=<id> :: <reason> → <agent> · EXTRA substitution task=<id> :: requested=<m> reported=<m> · EXTRA reroute task=<id> :: <providers> · EXTRA resume task=<id> attempt=<n> :: from=<reason> attribution=<verdict> target=<extra:profile\|agent> files_preexisting=<n> · EXTRA orphan task=<id> :: attempt=<n> lease-expired files_changed=<n> state=<state> · EXTRA demote run=<slug> :: profile=<p> reason=<consecutive-stall\|stale-live-attempt\|manual> n=<k> → <ladder>` | orc → writer | one line per FOREIGN dispatch — `orc extra dispatch`'s `trace_line`, verbatim | `_shared/extra-dispatch.md` |
|
|
59
62
|
| `FINISH :: <detail>` | orc → writer | run ended — mandatory, even on an abort | `_shared/phases/trace.md` |
|
|
60
63
|
|
|
@@ -98,17 +101,19 @@ reaches the file through a packet — you never append lines by hand.
|
|
|
98
101
|
`orc graph status --heal --json --brief` (`code-graph.md` §4). `density=` is
|
|
99
102
|
the named symbols per file, and `thin=1` means most files hold none, so most
|
|
100
103
|
questions asked of the graph will not find one (v1.9.1). A `GATE` line that
|
|
101
|
-
describes the graph in other words does not replace it. The `
|
|
102
|
-
`trace` of `orc graph ctx --json
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
describes the graph in other words does not replace it. The `anchors` form is the
|
|
105
|
+
`trace` of the anchors call (`orc graph ctx --for-slice … --anchors --json --brief`),
|
|
106
|
+
with `task=` added, when a slice receives `graph_anchors`. The `card` form is the
|
|
107
|
+
`trace` of a plain `orc graph ctx --json` (an orient call).
|
|
108
|
+
- **`GRAPH-UPDATE`.** One lane graph update — ONLY when `update_step` is `lane` — at a
|
|
109
|
+
wave close, a green smoke gate, a code-writing `/orc-quick` request, or ship. The graph HOOK writes its own
|
|
106
110
|
`GRAPH-UPDATE … :: by=hook …` lines directly; never copy one of those, it is
|
|
107
111
|
already in the file.
|
|
108
112
|
- **`GRAPH-MAP`.** Also at a `/orc-quick` Q1 look that had no file to name.
|
|
109
113
|
`files=` is how many the budget SHOWED over how many the repository has, so a
|
|
110
114
|
short map can be told from a small repository. `focused` means `--focus`
|
|
111
|
-
re-ranked the repository around
|
|
115
|
+
re-ranked the repository around the files the focus RESOLVED to (`repo` when
|
|
116
|
+
nothing resolved). RANK is a hint about
|
|
112
117
|
where to look first and the trace never says more than that.
|
|
113
118
|
- **`GRAPH-CHANGES`.** `high` counts symbols that are exported, have three or
|
|
114
119
|
more callers and NO test reaching them.
|
|
@@ -119,13 +124,13 @@ reaches the file through a packet — you never append lines by hand.
|
|
|
119
124
|
the USER chose after the offer.
|
|
120
125
|
- **`GRAPH-COCHANGE`.** Not per file — the `trace` field of
|
|
121
126
|
`orc graph cochange --json` for the file that produced the widest answer.
|
|
127
|
+
- **`GRAPH-COVERAGE`.** One line per `coverage` call. `gaps` counts files the
|
|
128
|
+
extractor did not finish; a gap is an answer, never an error.
|
|
122
129
|
- **`GRAPH-HINT`.** Not one per hint — the counters `orc-graph-hook.js` keeps in
|
|
123
130
|
`<log_dir>/<run>.graph-hook.json`. Omitted when the file does not exist (the
|
|
124
131
|
hook is off, or it never had anything to say).
|
|
125
|
-
- **`GRAPH-GAIN`.**
|
|
126
|
-
|
|
127
|
-
are an ESTIMATE of the retrieval it kept out. Omitted when the ledger is empty
|
|
128
|
-
or the graph is off.
|
|
132
|
+
- **`GRAPH-GAIN`.** Kept so OLD traces still parse. No lane emits it now: `orc graph gain`
|
|
133
|
+
is a user command. `paid` is exact; `low`/`high` are an ESTIMATE.
|
|
129
134
|
- **`GRAPH-NOTES`.** The `trace` field of `orc graph notes pending --json` when
|
|
130
135
|
it exited 3 or 5; `skipped` under the Opus-5-only mode.
|
|
131
136
|
- **`RETURN`.** The hook attributes the RETURN to the finishing agent from the
|
|
@@ -282,7 +287,7 @@ for every run even if the orchestrator never writes a rich marker. Only
|
|
|
282
287
|
formats — the two halves agree by construction. An unknown verb, a missing or
|
|
283
288
|
"now" `ts`, or a parse error exits 2 and writes NOTHING; a missing `.current`
|
|
284
289
|
on a later packet exits 3. Only on exit ≠ 0 does the lane dispatch
|
|
285
|
-
`orc-trace-writer-haiku-
|
|
290
|
+
`orc-trace-writer-haiku-5-high` with the SAME packet (the fallback).
|
|
286
291
|
- **Pairing rule (the anti-forget mechanism).** The write for phase N is issued
|
|
287
292
|
**in the same tool block as phase N+1's first dispatch** — logging
|
|
288
293
|
piggybacks on the very action the model reliably performs. A phase with no next
|