@azure-id/orc 0.56.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +219 -0
- package/README-id.md +49 -107
- package/README.md +694 -719
- package/bin/build-agents.js +18 -11
- package/bin/cli.js +33699 -29855
- package/bin/onboarding-content.js +0 -3
- package/bin/test-run.js +491 -0
- package/bin/verify-contracts.js +4330 -3277
- package/bin/verify-package.js +76 -6
- package/bin/webui/api.js +1201 -1163
- package/bin/webui/app.html +210 -198
- package/bin/webui/css/06-responsive.css +120 -108
- package/bin/webui/css/panels/extra.css +29 -0
- package/bin/webui/css/panels/lanes.css +134 -0
- package/bin/webui/css/panels/settings.css +79 -3
- package/bin/webui/css/panels/wait.css +123 -0
- package/bin/webui/fixtures/extra.js +2036 -1934
- package/bin/webui/fixtures/flow.js +2 -2
- package/bin/webui/fixtures/index.js +510 -486
- package/bin/webui/fixtures/lanes.js +218 -0
- package/bin/webui/fixtures/settings.js +261 -34
- package/bin/webui/fixtures/stats.js +3 -3
- package/bin/webui/fixtures/wait.js +97 -0
- package/bin/webui/i18n/TERMS.md +135 -134
- package/bin/webui/i18n/en/extra.json +345 -313
- package/bin/webui/i18n/en/lanes.json +29 -0
- package/bin/webui/i18n/en/nav.json +21 -19
- package/bin/webui/i18n/en/overview.json +2 -0
- package/bin/webui/i18n/en/settings.json +16 -5
- package/bin/webui/i18n/en/wait.json +41 -0
- package/bin/webui/i18n/id/extra.json +345 -313
- package/bin/webui/i18n/id/lanes.json +29 -0
- package/bin/webui/i18n/id/nav.json +21 -19
- package/bin/webui/i18n/id/overview.json +2 -0
- package/bin/webui/i18n/id/settings.json +15 -4
- package/bin/webui/i18n/id/wait.json +41 -0
- package/bin/webui/js/01-i18n.js +151 -149
- package/bin/webui/js/panels/extra.js +3199 -3011
- package/bin/webui/js/panels/lanes.js +259 -0
- package/bin/webui/js/panels/overview.js +10 -0
- package/bin/webui/js/panels/settings.js +149 -3
- package/bin/webui/js/panels/wait.js +253 -0
- package/package.json +39 -39
- package/templates/agents/MODEL-MAPPING.md +23 -35
- package/templates/agents/orc-executor-opus-4-7-high.md +1 -1
- package/templates/agents/orc-executor-opus-4-7-med.md +1 -1
- package/templates/agents/orc-executor-opus-4-8-high.md +1 -1
- package/templates/agents/orc-executor-opus-5-high.md +1 -1
- package/templates/agents/orc-executor-opus-5-low.md +1 -1
- package/templates/agents/orc-executor-opus-5-med.md +1 -1
- package/templates/agents/orc-retro-opus-5-med.md +73 -73
- package/templates/agents/orc-retro-sonnet-5-high.md +72 -72
- package/templates/agents/orc-trace-writer-haiku-4-5.md +107 -107
- package/templates/commands/orc-route.md +1 -1
- package/templates/commands/orc-wait.md +19 -0
- package/templates/commands/orc.md +1 -1
- package/templates/hooks/orc-statusline.js +39 -0
- package/templates/skills/_shared/README.md +7 -3
- package/templates/skills/_shared/config-precedence.md +198 -0
- package/templates/skills/_shared/drift-recovery.md +1 -1
- package/templates/skills/_shared/extra-dispatch.md +159 -7
- package/templates/skills/_shared/interview.md +1 -1
- package/templates/skills/_shared/opus5-only.md +9 -7
- package/templates/skills/_shared/phases/README.md +82 -0
- package/templates/skills/{orc/references → _shared/phases}/analyst-gates.md +15 -3
- package/templates/skills/_shared/phases/execution.md +143 -0
- package/templates/skills/{orc/references → _shared/phases}/house-rules.md +13 -1
- package/templates/skills/{orc/references → _shared/phases}/intake.md +15 -2
- package/templates/skills/_shared/phases/mock-example.md +56 -0
- package/templates/skills/{orc/references → _shared/phases}/plan-handoff.md +16 -3
- package/templates/skills/_shared/phases/planning.md +135 -0
- package/templates/skills/_shared/phases/preflight.md +98 -0
- package/templates/skills/_shared/phases/review.md +53 -0
- package/templates/skills/_shared/phases/scoring.md +65 -0
- package/templates/skills/{orc/references → _shared/phases}/security-checklist.md +12 -1
- package/templates/skills/_shared/phases/security.md +55 -0
- package/templates/skills/_shared/phases/ship.md +88 -0
- package/templates/skills/{orc/references/stop-and-resume.md → _shared/phases/stop-resume.md} +169 -160
- package/templates/skills/_shared/phases/summary.md +48 -0
- package/templates/skills/_shared/phases/testgen.md +51 -0
- package/templates/skills/{orc/references/trace-protocol.md → _shared/phases/trace.md} +49 -6
- package/templates/skills/_shared/phases/verify.md +70 -0
- package/templates/skills/{orc/references → _shared/phases}/wave-grouping.md +14 -2
- package/templates/skills/{orc/references → _shared/phases}/wiki-consult.md +13 -1
- package/templates/skills/_shared/read-ladder.md +48 -0
- package/templates/skills/_shared/wait.md +240 -0
- package/templates/skills/context-combiner/SKILL.md +214 -187
- package/templates/skills/orc/README.md +148 -150
- package/templates/skills/orc/SKILL.md +75 -358
- package/templates/skills/orc/config.md +137 -389
- package/templates/skills/orc/examples/full-run-mock.md +1 -1
- package/templates/skills/orc/references/effort-and-mode.md +16 -18
- package/templates/skills/orc/references/phases/intake.md +47 -0
- package/templates/skills/orc/references/phases/integration.md +19 -0
- package/templates/skills/orc/references/preflight-report.md +4 -4
- package/templates/skills/orc/references/ultra-mode.md +117 -123
- package/templates/skills/orc/schemas/planning-output.md +279 -279
- package/templates/skills/orc/subskills/orc-planner/SKILL.md +260 -264
- package/templates/skills/orc/subskills/orc-pr/stack-gate.md +4 -1
- package/templates/skills/orc-aftermath/SKILL.md +158 -136
- package/templates/skills/orc-analyze/SKILL.md +252 -220
- package/templates/skills/orc-analyze/references/branching.md +51 -51
- package/templates/skills/orc-analyze/references/thin-input.md +1 -1
- package/templates/skills/orc-analyze-mini/SKILL.md +128 -112
- package/templates/skills/orc-boundary/SKILL.md +249 -208
- package/templates/skills/orc-brainstorm/SKILL.md +377 -339
- package/templates/skills/orc-budget/SKILL.md +248 -225
- package/templates/skills/orc-challenge/README.md +1 -1
- package/templates/skills/orc-challenge/SKILL.md +298 -255
- package/templates/skills/orc-challenge/examples/council-full-roster.md +1 -1
- package/templates/skills/orc-claude/SKILL.md +221 -199
- package/templates/skills/orc-diy/README.md +2 -1
- package/templates/skills/orc-diy/SKILL.md +132 -68
- package/templates/skills/orc-diy/references/blocks/analyze.md +1 -1
- package/templates/skills/orc-diy/references/compile.md +21 -7
- package/templates/skills/orc-diy/references/flow-schema.md +2 -2
- package/templates/skills/orc-doc/SKILL.md +49 -7
- package/templates/skills/orc-explain/SKILL.md +24 -0
- package/templates/skills/orc-export/SKILL.md +31 -5
- package/templates/skills/orc-fast/SKILL.md +218 -185
- package/templates/skills/orc-grill/SKILL.md +238 -207
- package/templates/skills/orc-handoff/SKILL.md +223 -204
- package/templates/skills/orc-learn/SKILL.md +181 -156
- package/templates/skills/orc-mini/SKILL.md +47 -24
- package/templates/skills/orc-pact/SKILL.md +255 -218
- package/templates/skills/orc-pattern/SKILL.md +154 -124
- package/templates/skills/orc-poly/SKILL.md +242 -216
- package/templates/skills/orc-poly/references/gather.md +1 -1
- package/templates/skills/orc-pr-driver/SKILL.md +196 -167
- package/templates/skills/orc-pr-driver/references/orc-run-split.md +1 -1
- package/templates/skills/orc-pr-setup/SKILL.md +212 -184
- package/templates/skills/orc-quick/README.md +2 -2
- package/templates/skills/orc-quick/SKILL.md +51 -13
- package/templates/skills/orc-quick/references/dispatch-gate.md +2 -3
- package/templates/skills/orc-retro/SKILL.md +249 -222
- package/templates/skills/orc-retro/examples/retro-mock.md +171 -171
- package/templates/skills/orc-route/SKILL.md +188 -165
- package/templates/skills/orc-verify/SKILL.md +103 -84
- package/templates/skills/orc-wait/SKILL.md +163 -0
- package/templates/skills/orc-wiki/SKILL.md +60 -206
- package/templates/skills/orc-wiki/references/phases/phase-0.md +71 -0
- package/templates/skills/orc-wiki/references/phases/phase-1.md +35 -0
- package/templates/skills/orc-wiki/references/phases/phase-2.md +52 -0
- package/templates/skills/orc-wiki/references/phases/phase-3.md +57 -0
- package/templates/skills/orc-wiki/references/phases/phase-3c.md +36 -0
- package/templates/agents/orc-advisor-fable-5.md +0 -50
- package/templates/agents/orc-analyst-fable-5.md +0 -115
- package/templates/agents/orc-judge-fable-5.md +0 -79
- package/templates/agents/orc-planner-fable-5.md +0 -152
- package/templates/agents/orc-reviewer-fable-5.md +0 -57
- package/templates/skills/_shared/fable5-override.md +0 -56
- package/templates/skills/orc-diy/references/blocks/execution.md +0 -42
- package/templates/skills/orc-diy/references/blocks/mock-example.md +0 -22
- package/templates/skills/orc-diy/references/blocks/planning.md +0 -34
- package/templates/skills/orc-diy/references/blocks/review.md +0 -18
- package/templates/skills/orc-diy/references/blocks/scoring.md +0 -16
- package/templates/skills/orc-diy/references/blocks/security.md +0 -25
- package/templates/skills/orc-diy/references/blocks/ship.md +0 -25
- package/templates/skills/orc-diy/references/blocks/summary.md +0 -18
- package/templates/skills/orc-diy/references/blocks/testgen.md +0 -17
- package/templates/skills/orc-diy/references/blocks/trace.md +0 -28
- package/templates/skills/orc-diy/references/blocks/verify.md +0 -25
|
@@ -106,33 +106,31 @@ risk ≠ [] → floor 70 (DERIVED from a cited risk facet, never remembered).
|
|
|
106
106
|
clamp 0..100 → the RESOLVED table (below).
|
|
107
107
|
```
|
|
108
108
|
|
|
109
|
-
**Which table (highest wins):** `opus5_only: true` (the
|
|
110
|
-
preset: `[0,
|
|
111
|
-
(hand-written rows) → the default
|
|
109
|
+
**Which table (highest wins):** `opus5_only: true` (the 2-band Opus-5-only
|
|
110
|
+
preset: `[0,90)` low · `[90,100]` medium) → `rubric_bands_override`
|
|
111
|
+
(hand-written rows) → the default 6-band table. All three are in `config.md`.
|
|
112
112
|
The formula, the facets and the risk floor are IDENTICAL in every case — only
|
|
113
113
|
the score→agent mapping changes. Three consequences worth stating so nobody
|
|
114
114
|
re-derives them per run:
|
|
115
115
|
|
|
116
116
|
- **The risk floor still applies** — it raises the SCORE, then the resolved table
|
|
117
|
-
maps it.
|
|
118
|
-
`opus-
|
|
117
|
+
maps it. A floored task (≥70) lands `opus-5-low` in the default table and
|
|
118
|
+
`opus-5-low` under the Opus-5-only preset too: since v1.0.0 both tables answer
|
|
119
|
+
the floor with the same agent, and only a score of 90+ moves it to `opus-5-med`.
|
|
119
120
|
- **`opus5_only` FORCES** — while on, a hand-written `rubric_bands_override` is
|
|
120
|
-
ignored
|
|
121
|
-
shadow another; that is deliberate.
|
|
122
|
-
- **`fable5_roles` never covers executors** (analyze/plan/advisor/judge/review
|
|
123
|
-
only), so those two features are orthogonal and cannot disagree on a band.
|
|
121
|
+
ignored. It is the one selector that can shadow another; that is deliberate.
|
|
124
122
|
|
|
125
123
|
Show the user the full table (task, the facet vector, the arithmetic
|
|
126
124
|
`B+N+L+T+fan+U = raw`, any risk floor, final, override+reason if any, dispatched
|
|
127
125
|
model) BEFORE dispatching — an un-shown number is not a scored number. **Head it
|
|
128
|
-
with the RESOLVED table's name** (`
|
|
126
|
+
with the RESOLVED table's name** (`6-band default` / `Opus-5-only ladder
|
|
129
127
|
(opus5_only)` / `custom (rubric_bands_override)`): the same logic
|
|
130
128
|
applies to the mapping as to the number.
|
|
131
129
|
|
|
132
130
|
**Extra (v0.50.0, `extra_enabled`) adds a `via` column and can make the head a
|
|
133
131
|
PAIR.** An Extra route row is an OVERLAY that outranks the tables above **only
|
|
134
132
|
for the scores it covers**, so a run can genuinely be running two tables at once
|
|
135
|
-
and the head names both (`
|
|
133
|
+
and the head names both (`6-band default + extra rows [0,30) [30,70)`). The
|
|
136
134
|
column reads `claude` or `extra:<profile> (<engine>)` and comes from
|
|
137
135
|
`orc extra resolve --json` — the formula, the facets and the risk floor are
|
|
138
136
|
untouched, and **the score is computed before the routing, never after it**. Two
|
|
@@ -158,7 +156,7 @@ fix in a risk area from silently dropping to a cheap model:
|
|
|
158
156
|
|
|
159
157
|
- **Inherit the ORIGINAL task's `risk` facets** when the fix touches its files —
|
|
160
158
|
a fix in a risk-floor area keeps the ≥70 floor (a userID/context-key fix can
|
|
161
|
-
never dispatch below `opus-
|
|
159
|
+
never dispatch below `opus-5-low` again);
|
|
162
160
|
- a **P0/P1 fix never dispatches below the band of the task that produced the
|
|
163
161
|
finding.**
|
|
164
162
|
|
|
@@ -178,8 +176,8 @@ the band is what matters. Compare a new task to these facet-by-facet.
|
|
|
178
176
|
| Isolated component from the design system | 3·new-surface·branching·new-tests · 0/0 · low | 6+18+8+8 = **40** | sonnet-4-6-high [40,55) |
|
|
179
177
|
| Notification model + enum other tasks consume | 3·new-surface·stateful·new-tests · 0/3 · low | 6+18+16+8+9 = **57** | sonnet-5-high [55,65) |
|
|
180
178
|
| Service-layer refactor behind a stable interface | 5·imitate·stateful·update-existing · 0/3 · medium | 10+8+16+4+9+6 = **53** | sonnet-4-6-high [40,55) |
|
|
181
|
-
| Add role check to payment-refund endpoint | 3·imitate·branching·new-tests · 0/0 · low · **risk=[auth,money]** | 30 raw → **floor 70** | opus-
|
|
182
|
-
| Migrate orders table to split-name + backfill | 6·new-surface·stateful·new-tests · 1/3 · high · **risk=[migration,data-integrity]** | 15+18+16+8+5+9+12 = 83 (floor 70) → **83** | opus-
|
|
179
|
+
| Add role check to payment-refund endpoint | 3·imitate·branching·new-tests · 0/0 · low · **risk=[auth,money]** | 30 raw → **floor 70** | opus-5-low [65,90) |
|
|
180
|
+
| Migrate orders table to split-name + backfill | 6·new-surface·stateful·new-tests · 1/3 · high · **risk=[migration,data-integrity]** | 15+18+16+8+5+9+12 = 83 (floor 70) → **83** | opus-5-low [65,90) |
|
|
183
181
|
|
|
184
182
|
Two disciplines the vectors encode: (1) a small diff is NOT a low score when a
|
|
185
183
|
cited `risk` facet forces the floor (the refund row — 30 raw, floored to 70); (2)
|
|
@@ -190,16 +188,16 @@ applies it silently.
|
|
|
190
188
|
## Model ladder → the single score→model table
|
|
191
189
|
|
|
192
190
|
The score→model mapping is NOT hardcoded here — it lives in `config.md` as ONE
|
|
193
|
-
canonical
|
|
191
|
+
canonical 6-band table (there is no longer a narrow/wide preset). Read config at
|
|
194
192
|
run start and map each task's final score through that table (or
|
|
195
193
|
`rubric_bands_override`). The orchestrator dispatches the executor agent BY NAME;
|
|
196
194
|
it does not request a raw model. `rubric_bands` sets only how many bands the
|
|
197
195
|
rubric REPORTS (score granularity), never which table is used.
|
|
198
196
|
|
|
199
|
-
The
|
|
197
|
+
The 6 bands (see config.md for the exact edges): `haiku-4-5` [0,30) ·
|
|
200
198
|
`sonnet-4-6-med` [30,40) · `sonnet-4-6-high` [40,55) · `sonnet-5-high` [55,65) ·
|
|
201
|
-
`opus-
|
|
202
|
-
`
|
|
199
|
+
`opus-5-low` [65,90) · `opus-5-med` [90,100]. Effort tiers rank
|
|
200
|
+
`low < medium < high < xhigh < max`.
|
|
203
201
|
|
|
204
202
|
## Fixed model assignments (not scored)
|
|
205
203
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Phase — Intake (id: `intake`)
|
|
2
|
+
|
|
3
|
+
> **`/orc` phase file.** Moved out of `orc/SKILL.md` at v1.0.0 W12. The spine is
|
|
4
|
+
> loaded IN FULL when the skill activates; this is loaded when the phase fires,
|
|
5
|
+
> and most runs skip most phases. ONE consumer today, so it stays in this lane —
|
|
6
|
+
> `../../../_shared/phases/README.md`'s rule: a file with one consumer stays home.
|
|
7
|
+
> When a second lane reads it (W13 `orc-diy`, W14 `orc-mini`/`orc-fast`) it moves
|
|
8
|
+
> to `_shared/phases/` and gains a `composed` or `trim` layer beside this one.
|
|
9
|
+
> `orc lane phases orc --json` names the file and the layers.
|
|
10
|
+
|
|
11
|
+
<!-- orc:layer full -->
|
|
12
|
+
|
|
13
|
+
## Intake (load ../../../_shared/phases/intake.md)
|
|
14
|
+
|
|
15
|
+
**Plan-input trigger (check FIRST — load `../../../_shared/phases/plan-handoff.md`):** if the
|
|
16
|
+
run input IS a plan (pasted planning-output, a `plan-{name}.md` path, or an
|
|
17
|
+
`orc/planner/{name}/` checkpoint), follow that reference: bootstrap the trace,
|
|
18
|
+
schema-validate, apply the `plan_head` staleness valve, RE-RUN the full Phase 1
|
|
19
|
+
exit gate here (the deterministic catch for phantom-file drift), relay
|
|
20
|
+
`open_questions[]`, then continue at Phase 2. A plan input never skips Phase 2/3
|
|
21
|
+
nor executes task-by-task ad hoc.
|
|
22
|
+
|
|
23
|
+
**Analyst auto-trigger:** on a document (PDF path, pasted doc, audit sheet)
|
|
24
|
+
OR an ambiguous/underspecified requirement, FIRST dispatch the System Analyst
|
|
25
|
+
(doc-optional — with no doc the request itself is the source). Offer
|
|
26
|
+
standard/deep (`config.default_analysis_depth` presets it; mention `orc
|
|
27
|
+
config set default_analysis_depth deep`); deep → you dispatch the scouts. On
|
|
28
|
+
return run the analyst-return gates (analyst-gates.md); on build, continue at
|
|
29
|
+
Phase 1 with the Requirement Planner.
|
|
30
|
+
|
|
31
|
+
Emit `PHASE intake start` FIRST, then create `run/{run-slug}/` (slug from the
|
|
32
|
+
intent). Then: rough-size →
|
|
33
|
+
question tier (2/4/6) → ONE batched question round → draft the intent-spec
|
|
34
|
+
(`../../schemas/intent-spec.md`) → **repo cross-check** (intake Step 3.5:
|
|
35
|
+
Glob/Grep-confirm everything the spec names, or tag `UNVERIFIED`; tags become
|
|
36
|
+
ONE batched sign-off question; >3 tags → recommend `orc-analyze`) → sign-off
|
|
37
|
+
preference (gate/soft; DEFAULT GATE) → show spec → approval or edits. **No
|
|
38
|
+
planning until approved (gate mode) and no unresolved `UNVERIFIED` tags
|
|
39
|
+
either way.** On approval, emit `PHASE intake end`.
|
|
40
|
+
|
|
41
|
+
The intent-spec's definition-of-done becomes Phase 6's acceptance criteria;
|
|
42
|
+
its constraints become hard rules in every slice — at slice-assembly each
|
|
43
|
+
task's `spec_invariants[]` is appended VERBATIM to that slice's
|
|
44
|
+
`constraints[]`. Offer the opt-in **Test Authoring** (Phase 6.5; default
|
|
45
|
+
`config.generate_tests`) in the sign-off round.
|
|
46
|
+
|
|
47
|
+
<!-- /orc:layer -->
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Phase — Integration (worktrees) (id: `integration`)
|
|
2
|
+
|
|
3
|
+
> **`/orc` phase file.** Moved out of `orc/SKILL.md` at v1.0.0 W12. The spine is
|
|
4
|
+
> loaded IN FULL when the skill activates; this is loaded when the phase fires,
|
|
5
|
+
> and most runs skip most phases. ONE consumer today, so it stays in this lane —
|
|
6
|
+
> `../../../_shared/phases/README.md`'s rule: a file with one consumer stays home.
|
|
7
|
+
> When a second lane reads it (W13 `orc-diy`, W14 `orc-mini`/`orc-fast`) it moves
|
|
8
|
+
> to `_shared/phases/` and gains a `composed` or `trim` layer beside this one.
|
|
9
|
+
> `orc lane phases orc --json` names the file and the layers.
|
|
10
|
+
|
|
11
|
+
<!-- orc:layer full -->
|
|
12
|
+
|
|
13
|
+
## Integration (worktrees only)
|
|
14
|
+
|
|
15
|
+
Emit `PHASE integration start`. Merge worker branches; conflicts → resolver
|
|
16
|
+
subagent (Opus 4.8 medium) given BOTH tasks' specs/intents, not just the diff.
|
|
17
|
+
Record merge state in checkpoint; emit `PHASE integration end`.
|
|
18
|
+
|
|
19
|
+
<!-- /orc:layer -->
|
|
@@ -25,7 +25,7 @@ after: src/payments — 2 shipped files rewritten within 30 days of run stor
|
|
|
25
25
|
crosslink: 2 boundaries (payments-api) — advisory
|
|
26
26
|
extra: ON — 4 of 9 tasks foreign · deepseek/deepseek-v4-flash via api [0,30)
|
|
27
27
|
· glm/glm-4.7 via cli [30,70) · 2 held back (risk: auth, money)
|
|
28
|
-
scoring:
|
|
28
|
+
scoring: 6-band default table
|
|
29
29
|
tdd: 3 tasks with tests (T3, T6, T9) · 2 covered-by-existing · 2 no-behavior
|
|
30
30
|
skipped: R4 translation strings (no-behavior) · R7 file split
|
|
31
31
|
(covered-by-existing → test/api/health.test.js:41)
|
|
@@ -95,16 +95,16 @@ waves: 3 planned — will pause after wave 2 (batch_pause_every=2)
|
|
|
95
95
|
`EXTRA orphan` line from `trace_extras[]` once you have reported it.
|
|
96
96
|
|
|
97
97
|
Canonical: `../../_shared/extra-dispatch.md`.
|
|
98
|
-
- **scoring:** which executor table RESOLVED for this run — `
|
|
98
|
+
- **scoring:** which executor table RESOLVED for this run — `6-band default
|
|
99
99
|
table` · `Opus-5-only ladder (opus5_only)` · `custom
|
|
100
100
|
(rubric_bands_override, <n> rows)`. An un-shown table is as unaccountable as
|
|
101
101
|
an un-shown number, and the Opus-5-only ladder in particular means EVERY
|
|
102
102
|
dispatch needs an Opus 5 main session — the user should see that before the
|
|
103
103
|
first dispatch, not in a trace full of downgrades. When `opus5_only` is on,
|
|
104
104
|
append ` · all fixed roles forced to Opus 5` and name any selector it
|
|
105
|
-
shadowed (`rubric_bands_override`
|
|
105
|
+
shadowed (a `rubric_bands_override` present but INERT) — a setting
|
|
106
106
|
the user tuned and the run then ignored has to be said out loud. With Extra in
|
|
107
|
-
play the table is a COMPOSITE and reads as one (`
|
|
107
|
+
play the table is a COMPOSITE and reads as one (`6-band default table + extra
|
|
108
108
|
rows [0,30) [30,70)`) — Extra is an overlay, so naming only one of the two would
|
|
109
109
|
be naming the wrong half for every covered score.
|
|
110
110
|
- **tdd:** ALWAYS printed on a lane whose TDD policy is on — BOTH branches, not
|
|
@@ -1,123 +1,117 @@
|
|
|
1
|
-
# Reference — Ultra Lane (load only when `ultra_mode: true`)
|
|
2
|
-
|
|
3
|
-
`/orc-ultra` runs the FULL pipeline with maximum rigor for complex and
|
|
4
|
-
ultra-complex requests. Everything in SKILL.md still applies; this file adds
|
|
5
|
-
the ultra deltas. Ultra exists ONLY here — never in orc-mini, never on a plain
|
|
6
|
-
`/orc` run.
|
|
7
|
-
|
|
8
|
-
Cost stance: ultra is costly by definition. State it once at intake
|
|
9
|
-
("ultra adds an Opus 5 xhigh advisor + up to 3 judge dispatches + revision
|
|
10
|
-
loops"), then never prompt about cost again.
|
|
11
|
-
|
|
12
|
-
## Forced overrides (run-scoped — NEVER written to the user's config file)
|
|
13
|
-
|
|
14
|
-
Apply at Phase 0, on top of the normal config resolution:
|
|
15
|
-
- analysis depth = **deep**, no ask (the analyst's standard/deep gate is
|
|
16
|
-
bypassed; `default_analysis_depth` is ignored; scouts dispatch as usual).
|
|
17
|
-
- `pattern_findings` = on · `generate_tests` = on · `security_review` = on.
|
|
18
|
-
- Executor **tier floor**: remap the resolved score→model table so no task
|
|
19
|
-
dispatches below `orc-executor-sonnet-5-high`; bands at/above the
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
**Under `opus5_only` the floor raises EFFORT, not model** (every band
|
|
23
|
-
|
|
24
|
-
low → medium,
|
|
25
|
-
|
|
26
|
-
Show the remapped table with the Phase 2 scoring table.
|
|
27
|
-
|
|
28
|
-
> Opus-5-only mode: if `opus5_only`, every role this lane dispatches is already
|
|
29
|
-
> Opus 5 (advisor and judge are pinned there by default) and the scouts rise to
|
|
30
|
-
> `orc-scout-opus-5-low`. It FORCES
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
**
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
The
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
patch wave re-enters Gate 3 (a changed implementation is re-judged).
|
|
119
|
-
|
|
120
|
-
The summary additionally reports: per-gate verdicts + rounds, findings by
|
|
121
|
-
severity and class, auto-downgrades, the assumption ledger's final state
|
|
122
|
-
(UNCONFIRMED entries highlighted), and the traceability matrix path. Ship is
|
|
123
|
-
unchanged — but never offer commit while a gate is unresolved.
|
|
1
|
+
# Reference — Ultra Lane (load only when `ultra_mode: true`)
|
|
2
|
+
|
|
3
|
+
`/orc-ultra` runs the FULL pipeline with maximum rigor for complex and
|
|
4
|
+
ultra-complex requests. Everything in SKILL.md still applies; this file adds
|
|
5
|
+
the ultra deltas. Ultra exists ONLY here — never in orc-mini, never on a plain
|
|
6
|
+
`/orc` run.
|
|
7
|
+
|
|
8
|
+
Cost stance: ultra is costly by definition. State it once at intake
|
|
9
|
+
("ultra adds an Opus 5 xhigh advisor + up to 3 judge dispatches + revision
|
|
10
|
+
loops"), then never prompt about cost again.
|
|
11
|
+
|
|
12
|
+
## Forced overrides (run-scoped — NEVER written to the user's config file)
|
|
13
|
+
|
|
14
|
+
Apply at Phase 0, on top of the normal config resolution:
|
|
15
|
+
- analysis depth = **deep**, no ask (the analyst's standard/deep gate is
|
|
16
|
+
bypassed; `default_analysis_depth` is ignored; scouts dispatch as usual).
|
|
17
|
+
- `pattern_findings` = on · `generate_tests` = on · `security_review` = on.
|
|
18
|
+
- Executor **tier floor**: remap the resolved score→model table so no task
|
|
19
|
+
dispatches below `orc-executor-sonnet-5-high`; bands at/above the opus
|
|
20
|
+
boundary (65) rise to at least `orc-executor-opus-5-low`. The floor only ever
|
|
21
|
+
raises a band, so the top `[90,100]` band keeps `orc-executor-opus-5-med`.
|
|
22
|
+
**Under `opus5_only` the floor raises EFFORT, not model** (every band is
|
|
23
|
+
already Opus 5, so there is no model left to raise): the `[0,90)` band rises
|
|
24
|
+
low → medium, which makes both bands medium. It is still a floor — it never
|
|
25
|
+
lowers a band, and it never raises `[90,100]` past medium.
|
|
26
|
+
Show the remapped table with the Phase 2 scoring table.
|
|
27
|
+
|
|
28
|
+
> Opus-5-only mode: if `opus5_only`, every role this lane dispatches is already
|
|
29
|
+
> Opus 5 (advisor and judge are pinned there by default) and the scouts rise to
|
|
30
|
+
> `orc-scout-opus-5-low`. It FORCES. See `../../_shared/opus5-only.md`.
|
|
31
|
+
|
|
32
|
+
## Phase U0 — Advisor (after intake sign-off, before the analyst)
|
|
33
|
+
|
|
34
|
+
Dispatch `orc-advisor-opus-5-xhigh` (see `../../orc-advisor/SKILL.md`) with
|
|
35
|
+
the request, the run-folder path, and the detected stack. Validate the return
|
|
36
|
+
(`brief_path`, `open_questions[]`, `assumptions[]`, actual model/effort
|
|
37
|
+
fields). Then:
|
|
38
|
+
|
|
39
|
+
1. Relay `open_questions[]` to the user in ONE batched round. Fold answers
|
|
40
|
+
into the intent-spec; unanswered questions fall back to the advisor's
|
|
41
|
+
proposed default and enter the ledger as UNCONFIRMED.
|
|
42
|
+
2. Create `run/{run-slug}/ultra/assumption-ledger.md` from `assumptions[]`.
|
|
43
|
+
Every later phase appends: `assumption → confirmed-by-user |
|
|
44
|
+
confirmed-by-code-evidence (anchor) | UNCONFIRMED`. You alone write it
|
|
45
|
+
(workers return candidate entries; you record them).
|
|
46
|
+
3. Inject the brief VERBATIM (never a pointer) into the analyst slice, the
|
|
47
|
+
planner slice, every judge slice, and — as advisory notes — every executor
|
|
48
|
+
slice. The rubric section is what the judges score against.
|
|
49
|
+
|
|
50
|
+
The advisor runs once; it is never re-dispatched. Record `ADVISE` into the U0
|
|
51
|
+
packet — ultra adds ONE writer packet for U0 and one per judge gate on top of
|
|
52
|
+
orc's phase packets (`../../_shared/phases/trace.md`), so the advisory brief,
|
|
53
|
+
the questions relayed, and each verdict round are narrated like any other phase.
|
|
54
|
+
|
|
55
|
+
## The three judgment gates (dispatch `orc-judge-opus-5-xhigh`)
|
|
56
|
+
|
|
57
|
+
Shared mechanics — verdict validation, blocking-finding downgrade enforcement,
|
|
58
|
+
REVISE loops (author echo `finding_id → resolution`, re-judge convergence
|
|
59
|
+
rule, hard cap 2 per gate), the ESCALATE menu, advisory carry-forward, verdict
|
|
60
|
+
persistence (`run/{run-slug}/ultra/verdict-<gate>-<round>.md`), and the
|
|
61
|
+
`JUDGE` / `GATE judgment` trace events (packet-carried) — live in
|
|
62
|
+
`../../orc-judge/SKILL.md`.
|
|
63
|
+
Load it at the first gate. Loop counters + the ultra artifact paths go in the
|
|
64
|
+
checkpoint (`ultra` block) so a resumed run continues mid-loop.
|
|
65
|
+
|
|
66
|
+
Judge slices ALWAYS carry: the advisor brief (with rubric), the original
|
|
67
|
+
request, the assumption ledger, and gate-specific evidence below. Never the
|
|
68
|
+
author's reasoning or self-assessment.
|
|
69
|
+
|
|
70
|
+
- **Gate 1 (analysis)** — after the analyst-return deterministic gates pass
|
|
71
|
+
(evidence spot-check + derivation lint) and the user's challenge round is
|
|
72
|
+
resolved. Slice adds: report + spec paths. REVISE → bounce to the analyst.
|
|
73
|
+
Gate approval does NOT replace the user's take-into-build choice.
|
|
74
|
+
- **Gate 2 (plan)** — after the Phase 1 exit gate passes. FIRST build the
|
|
75
|
+
**blast-radius map** (deterministic, yours): for each task's declared
|
|
76
|
+
files, Grep the importers/callers of the symbols it touches; list any
|
|
77
|
+
caller file no task covers. Slice adds: planning-output + the map. REVISE →
|
|
78
|
+
bounce to the planner. Gate approval does not replace plan sign-off.
|
|
79
|
+
- **Gate 3 (implementation)** — after Phase 6 (and 6.5). FIRST build two
|
|
80
|
+
deterministic inputs:
|
|
81
|
+
1. **Traceability matrix** (`run/{run-slug}/ultra/traceability-matrix.md`):
|
|
82
|
+
`R# → task → declared files → actual diff hunks (git diff) → verify
|
|
83
|
+
evidence`. An R# with an EMPTY diff column is a deterministically caught
|
|
84
|
+
missing implementation — dispatch the fix wave directly, no judge needed
|
|
85
|
+
for that miss.
|
|
86
|
+
2. **Static analysis**: run the project's own tooling on the changed files
|
|
87
|
+
when the stack detection found any (linter, sonar-scanner,
|
|
88
|
+
type-checker) — never install tooling. Inject results into the slice;
|
|
89
|
+
tool findings on changed lines are blocking input the judge triages.
|
|
90
|
+
Slice adds: matrix, changed-file LIST (never an inlined diff — the judge
|
|
91
|
+
reads matrix-guided via its own Read/Grep), verify report, static-analysis
|
|
92
|
+
results, the resolved pattern's blocking invariants. REVISE → scored
|
|
93
|
+
executor **fix wave** for only the affected tasks (findings verbatim in
|
|
94
|
+
slices) → re-verify → re-judge. All clear → Phase 7.
|
|
95
|
+
|
|
96
|
+
## Verdict contract cross-check (validate like any worker return)
|
|
97
|
+
|
|
98
|
+
`verdict` ∈ APPROVE|REVISE|ESCALATE · every blocking finding has a verbatim
|
|
99
|
+
anchor + class-appropriate justification (`failure_consequence` for
|
|
100
|
+
correctness/security; named category + concrete alternative for
|
|
101
|
+
smell/simplification/placement) · `rubric_items_checked[]` covers the gate's
|
|
102
|
+
rubric lines · `unconfirmed_assumptions_touched[]` present. Malformed →
|
|
103
|
+
requeue the judge once, then escalate. Security findings with a concrete
|
|
104
|
+
consequence are always blocking. APPROVE with zero findings is legitimate.
|
|
105
|
+
|
|
106
|
+
## Phase 6.7 / 7 / 8 deltas
|
|
107
|
+
|
|
108
|
+
The mock-example phase (spine Phase 6.7, `../../_shared/drift-recovery.md`)
|
|
109
|
+
runs in ultra too — AFTER Gate 3 approves (an example of an unapproved
|
|
110
|
+
implementation would demo drift the judge already caught); same `mock_example`
|
|
111
|
+
config, same never-committed rule, same 2-loop drift cap. A drift-recovery
|
|
112
|
+
patch wave re-enters Gate 3 (a changed implementation is re-judged).
|
|
113
|
+
|
|
114
|
+
The summary additionally reports: per-gate verdicts + rounds, findings by
|
|
115
|
+
severity and class, auto-downgrades, the assumption ledger's final state
|
|
116
|
+
(UNCONFIRMED entries highlighted), and the traceability matrix path. Ship is
|
|
117
|
+
unchanged — but never offer commit while a gate is unresolved.
|