@azure-id/orc 1.9.2 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +722 -0
- package/README-id.md +56 -42
- package/README.md +58 -41
- package/bin/build-agents.js +125 -29
- package/bin/clear-logs.js +620 -0
- package/bin/cli.js +1873 -180
- package/bin/fix.js +459 -0
- package/bin/gotcha-import.js +1081 -0
- package/bin/gotcha.js +1566 -0
- package/bin/graph-query.js +1 -1
- package/bin/graph.js +717 -717
- package/bin/habit.js +1538 -0
- package/bin/mockrun-catalog.js +284 -276
- package/bin/onboarding-content.js +2 -1
- package/bin/pricing.json +28 -21
- package/bin/run-undo.js +398 -0
- package/bin/trace-write.js +869 -0
- package/bin/verify-contracts.js +627 -100
- package/bin/verify-package.js +68 -10
- package/bin/webui/api.js +151 -6
- package/bin/webui/app.html +239 -232
- package/bin/webui/css/00-tokens.css +110 -92
- package/bin/webui/css/04-motion.css +87 -0
- package/bin/webui/css/06-responsive.css +203 -178
- package/bin/webui/css/panels/behaviour.css +205 -0
- package/bin/webui/css/panels/hookui.css +79 -0
- package/bin/webui/fixtures/behaviour.js +562 -0
- package/bin/webui/fixtures/extra.js +9 -9
- package/bin/webui/fixtures/flow.js +81 -81
- package/bin/webui/fixtures/hookui.js +506 -431
- package/bin/webui/fixtures/index.js +66 -3
- package/bin/webui/fixtures/knowledge.js +9 -3
- package/bin/webui/fixtures/maintenance.js +123 -42
- package/bin/webui/fixtures/rules.js +1007 -1002
- package/bin/webui/fixtures/settings.js +6 -7
- package/bin/webui/fixtures/stats.js +25 -6
- package/bin/webui/fixtures/wait.js +98 -97
- package/bin/webui/i18n/en/behaviour.json +156 -0
- package/bin/webui/i18n/en/hookui.json +290 -194
- package/bin/webui/i18n/en/maintenance.json +71 -52
- package/bin/webui/i18n/en/nav.json +25 -24
- package/bin/webui/i18n/en/settings.json +60 -60
- package/bin/webui/i18n/en/tour.json +37 -35
- package/bin/webui/i18n/id/behaviour.json +156 -0
- package/bin/webui/i18n/id/hookui.json +290 -194
- package/bin/webui/i18n/id/maintenance.json +71 -52
- package/bin/webui/i18n/id/nav.json +25 -24
- package/bin/webui/i18n/id/settings.json +60 -60
- package/bin/webui/i18n/id/tour.json +37 -35
- package/bin/webui/js/01-i18n.js +155 -154
- package/bin/webui/js/05-banners.js +181 -172
- package/bin/webui/js/06-edit.js +193 -183
- package/bin/webui/js/90-tour.js +498 -494
- package/bin/webui/js/91-shortcuts.js +126 -126
- package/bin/webui/js/99-boot.js +121 -118
- package/bin/webui/js/panels/behaviour.js +1087 -0
- package/bin/webui/js/panels/hookui.js +2196 -1691
- package/bin/webui/js/panels/maintenance.js +336 -235
- package/bin/webui/js/panels/settings.js +726 -719
- package/mock-run/INDEX.md +110 -107
- package/mock-run/extra-slots.md +1 -1
- package/mock-run/gotcha-import.md +118 -0
- package/mock-run/habits.md +129 -0
- package/mock-run/orc-aftermath.md +392 -392
- package/mock-run/orc-budget.md +29 -33
- package/mock-run/orc-cli.md +200 -200
- package/mock-run/orc-explain.md +86 -86
- package/mock-run/orc-extra.md +389 -392
- package/mock-run/orc-fix.md +87 -0
- package/mock-run/orc-pattern.md +112 -112
- package/mock-run/orc-quick.md +6 -1
- package/mock-run/orc.md +157 -157
- package/package.json +1 -1
- package/templates/agents/MODEL-MAPPING.md +37 -34
- package/templates/agents/orc-advisor-opus-5-xhigh.md +1 -7
- package/templates/agents/orc-analyze-mini-opus-5-med.md +1 -6
- package/templates/agents/orc-analyze-mini-sonnet-5-high.md +2 -5
- package/templates/agents/{orc-claude-writer-opus-4-8-high.md → orc-claude-writer-opus-5-low.md} +48 -53
- package/templates/agents/orc-context-combiner-opus-5-high.md +1 -11
- package/templates/agents/orc-executor-haiku-4-5.md +14 -6
- package/templates/agents/orc-executor-opus-4-7-high.md +14 -6
- package/templates/agents/orc-executor-opus-4-7-med.md +14 -6
- package/templates/agents/orc-executor-opus-4-8-high.md +14 -6
- package/templates/agents/orc-executor-opus-5-high.md +14 -6
- package/templates/agents/orc-executor-opus-5-low.md +14 -6
- package/templates/agents/orc-executor-opus-5-med.md +14 -6
- package/templates/agents/orc-executor-sonnet-4-6-high.md +14 -6
- package/templates/agents/orc-executor-sonnet-4-6-med.md +14 -6
- package/templates/agents/orc-executor-sonnet-5-high.md +15 -7
- package/templates/agents/orc-executor-sonnet-5-low.md +155 -0
- package/templates/agents/orc-executor-sonnet-5-med.md +155 -0
- package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +1 -10
- package/templates/agents/orc-judge-opus-5-xhigh.md +5 -9
- package/templates/agents/orc-learn-writer-opus-5-low.md +1 -7
- package/templates/agents/orc-pattern-codifier-opus-5-med.md +1 -8
- package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +58 -63
- package/templates/agents/orc-planner-mini-opus-5-med.md +1 -4
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +2 -3
- package/templates/agents/orc-planner-opus-5-med.md +1 -4
- package/templates/agents/orc-recon-opus-5-low.md +1 -8
- package/templates/agents/orc-recon-sonnet-4-6-med.md +1 -8
- package/templates/agents/orc-retro-opus-5-med.md +6 -8
- package/templates/agents/orc-retro-sonnet-5-high.md +7 -8
- package/templates/agents/orc-reviewer-opus-5-low.md +96 -0
- package/templates/agents/orc-scout-opus-5-low.md +1 -6
- package/templates/agents/orc-scout-sonnet-4-6-high.md +35 -39
- package/templates/agents/orc-system-analyst-opus-5-high.md +1 -6
- package/templates/agents/orc-test-author-opus-5-med.md +4 -5
- package/templates/agents/orc-trace-writer-haiku-4-5.md +3 -7
- package/templates/agents/orc-verifier-opus-5-med.md +16 -8
- package/templates/agents/{orc-wiki-scanner-opus-4-8-high.md → orc-wiki-scanner-opus-5-low.md} +74 -79
- package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +97 -106
- package/templates/commands/orc-analyze.md +13 -21
- package/templates/commands/orc-fast.md +10 -15
- package/templates/commands/orc-fix.md +18 -0
- package/templates/commands/orc-poly.md +12 -21
- package/templates/commands/orc-pr-driver.md +11 -30
- package/templates/commands/orc-pr-setup.md +10 -31
- package/templates/commands/orc-route.md +11 -41
- package/templates/commands/orc-test.md +5 -60
- package/templates/commands/orc-wiki.md +64 -64
- package/templates/hooks/README.md +109 -7
- package/templates/hooks/orc-session-hook.js +339 -0
- package/templates/hooks/orc-statusline-render.js +317 -23
- package/templates/hooks/orc-statusline.js +165 -50
- package/templates/hooks/orc-subagent-line.js +23 -5
- package/templates/hooks/orc-weather-fetch.js +123 -0
- package/templates/skills/_shared/README.md +9 -0
- package/templates/skills/_shared/code-graph.md +47 -55
- package/templates/skills/_shared/config-precedence.md +3 -1
- package/templates/skills/_shared/extra-dispatch.md +78 -93
- package/templates/skills/_shared/gotchas.md +248 -177
- package/templates/skills/_shared/habits.md +101 -0
- package/templates/skills/_shared/lane-contract.md +84 -0
- package/templates/skills/_shared/opus5-only.md +14 -14
- package/templates/skills/_shared/phases/README.md +142 -83
- package/templates/skills/_shared/phases/analyst-gates.md +10 -21
- package/templates/skills/_shared/phases/execution.md +8 -14
- package/templates/skills/_shared/phases/house-rules.md +27 -32
- package/templates/skills/_shared/phases/intake.md +127 -133
- package/templates/skills/_shared/phases/mock-example.md +46 -56
- package/templates/skills/_shared/phases/plan-handoff.md +91 -97
- package/templates/skills/_shared/phases/planning.md +7 -17
- package/templates/skills/_shared/phases/preflight.md +19 -42
- package/templates/skills/_shared/phases/review.md +24 -28
- package/templates/skills/_shared/phases/rules.md +18 -42
- package/templates/skills/_shared/phases/scoring.md +55 -65
- package/templates/skills/_shared/phases/security-checklist.md +46 -50
- package/templates/skills/_shared/phases/security.md +45 -55
- package/templates/skills/_shared/phases/ship.md +6 -15
- package/templates/skills/_shared/phases/stop-resume.md +2 -5
- package/templates/skills/_shared/phases/summary.md +73 -48
- package/templates/skills/_shared/phases/testgen.md +41 -51
- package/templates/skills/_shared/phases/trace-verbs.md +447 -0
- package/templates/skills/_shared/phases/trace.md +66 -297
- package/templates/skills/_shared/phases/verify.md +62 -70
- package/templates/skills/_shared/phases/wave-grouping.md +128 -133
- package/templates/skills/_shared/phases/wiki-consult.md +10 -6
- package/templates/skills/_shared/read-ladder.md +2 -55
- package/templates/skills/_shared/return-validation.md +17 -70
- package/templates/skills/_shared/review-slice.md +106 -0
- package/templates/skills/_shared/smoke-gate.md +46 -28
- package/templates/skills/_shared/wait.md +1 -0
- package/templates/skills/context-combiner/SKILL.md +15 -44
- package/templates/skills/orc/README.md +2 -2
- package/templates/skills/orc/SKILL.md +35 -63
- package/templates/skills/orc/config.md +25 -27
- package/templates/skills/orc/examples/full-run-mock.md +2 -1
- package/templates/skills/orc/references/effort-and-mode.md +17 -17
- package/templates/skills/orc/references/pattern-gate.md +89 -89
- package/templates/skills/orc/references/phases/intake.md +41 -47
- package/templates/skills/orc/references/phases/integration.md +13 -19
- package/templates/skills/orc/references/preflight-report.md +11 -12
- package/templates/skills/orc/references/ultra-mode.md +9 -7
- package/templates/skills/orc/schemas/checkpoint.md +122 -122
- package/templates/skills/orc/subskills/orc-execution/SKILL.md +27 -73
- package/templates/skills/orc/subskills/orc-execution/core.md +12 -99
- package/templates/skills/orc/subskills/orc-execution/subagent.md +14 -13
- package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +12 -53
- package/templates/skills/orc/subskills/orc-review-verify/core.md +52 -135
- package/templates/skills/orc/subskills/orc-review-verify/subagent.md +7 -7
- package/templates/skills/orc/subskills/orc-testgen/SKILL.md +11 -22
- package/templates/skills/orc/subskills/orc-testgen/core.md +20 -59
- package/templates/skills/orc/subskills/orc-testgen/subagent.md +7 -7
- package/templates/skills/orc-advisor/SKILL.md +56 -60
- package/templates/skills/orc-analyze/SKILL.md +33 -67
- package/templates/skills/orc-analyze/schemas/report-audit.md +2 -1
- package/templates/skills/orc-analyze/schemas/report-prose.md +2 -1
- package/templates/skills/orc-analyze-mini/SKILL.md +35 -70
- package/templates/skills/orc-claude/SKILL.md +14 -14
- package/templates/skills/orc-claude/examples/claude-run-mock.md +65 -65
- package/templates/skills/orc-diy/README.md +31 -0
- package/templates/skills/orc-diy/SKILL.md +27 -78
- package/templates/skills/orc-diy/references/blocks/pattern.md +18 -18
- package/templates/skills/orc-fast/SKILL.md +49 -75
- package/templates/skills/orc-fix/SKILL.md +110 -0
- package/templates/skills/orc-judge/SKILL.md +77 -82
- package/templates/skills/orc-mini/SKILL.md +64 -112
- package/templates/skills/orc-mini/examples/mini-run-mock.md +4 -2
- package/templates/skills/orc-pattern/SKILL.md +27 -48
- package/templates/skills/orc-poly/SKILL.md +32 -61
- package/templates/skills/orc-pr-driver/SKILL.md +25 -51
- package/templates/skills/orc-pr-driver/references/green-gate.md +113 -105
- package/templates/skills/orc-pr-setup/SKILL.md +20 -45
- package/templates/skills/orc-quick/README.md +44 -3
- package/templates/skills/orc-quick/SKILL.md +77 -108
- package/templates/skills/orc-quick/references/dispatch-gate.md +18 -6
- package/templates/skills/orc-quick/references/gh-mode.md +50 -1
- package/templates/skills/orc-quick/references/look.md +3 -1
- package/templates/skills/orc-retro/SKILL.md +20 -19
- package/templates/skills/orc-retro/examples/retro-mock.md +17 -17
- package/templates/skills/orc-route/SKILL.md +25 -45
- package/templates/skills/orc-test/SKILL.md +16 -37
- package/templates/skills/orc-verify/SKILL.md +14 -32
- package/templates/skills/orc-wait/SKILL.md +156 -163
- package/templates/skills/orc-wiki/README.md +325 -325
- package/templates/skills/orc-wiki/SKILL.md +195 -195
- package/templates/skills/orc-wiki/examples/wiki-run-mock.md +37 -37
- package/templates/skills/orc-wiki/references/extra.md +2 -2
- package/templates/skills/orc-wiki/references/partial-refresh.md +276 -271
- package/templates/skills/orc-wiki/references/phases/phase-0.md +2 -7
- package/templates/skills/orc-wiki/references/phases/phase-1.md +1 -6
- package/templates/skills/orc-wiki/references/phases/phase-2.md +4 -9
- package/templates/skills/orc-wiki/references/phases/phase-3.md +1 -6
- package/templates/skills/orc-wiki/references/phases/phase-3c.md +4 -8
- package/templates/agents/orc-claude-writer-opus-5-med.md +0 -55
- package/templates/agents/orc-reviewer-opus-5-med.md +0 -60
- package/templates/agents/orc-wiki-scanner-opus-5-med.md +0 -81
|
@@ -15,7 +15,7 @@ questions, dispatches one agent, and writes down what happened. **Three steps
|
|
|
15
15
|
per request, one user turn. Fewer than any other lane. Do not add steps.**
|
|
16
16
|
|
|
17
17
|
**You never implement — you spawn.** You read only to FIND the right files. To
|
|
18
|
-
UNDERSTAND something, you dispatch an agent.
|
|
18
|
+
UNDERSTAND something, you dispatch an agent.
|
|
19
19
|
|
|
20
20
|
**It is open.** Almost any request works (`README.md` §1). For anything else:
|
|
21
21
|
decide if it only READS or also WRITES → pick what to dispatch → **ask the
|
|
@@ -28,37 +28,40 @@ waves, no scoring, no acceptance pass (`README.md` §2).
|
|
|
28
28
|
|
|
29
29
|
## Phases
|
|
30
30
|
|
|
31
|
-
`orc lane phases orc-quick --json` is this lane's pipeline
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
manifest, because a `read: section` pointer names a HEADING and a renamed heading
|
|
35
|
-
is a pointer into nothing.
|
|
31
|
+
`orc lane phases orc-quick --json` is this lane's pipeline. **The CLI owns the order**:
|
|
32
|
+
never derive it from the headings below, and never rename or renumber one
|
|
33
|
+
without the manifest (`../_shared/lane-contract.md` §Phases).
|
|
36
34
|
|
|
37
35
|
## Q0 — Preflight (ONE time per session, silent, nothing can stop the run)
|
|
38
36
|
|
|
39
37
|
1. **Config.** Read `log_dir` only. Read no other key. **One exception, and it
|
|
40
|
-
is a PROBE, not a key read:** `
|
|
41
|
-
(
|
|
42
|
-
in one, so the code-writing menu can offer line 3.
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
is a PROBE, not a key read:** `probes["extra-slot"]` in the `orc lane config`
|
|
39
|
+
answer (`resolved`: extra or claude) answers the master gate, the position and the
|
|
40
|
+
routing in one, so the code-writing menu can offer line 3. Do not call
|
|
41
|
+
`orc extra resolve --slot quick-executor`. **A gate that is never probed is a
|
|
42
|
+
gate that is always off.** Keep the answer for this session; it is an OPTION
|
|
43
|
+
on a menu, never a default (`references/dispatch-gate.md`). **`habits{}` in
|
|
44
|
+
that answer → print `habits.line`, read `../_shared/habits.md` NOW**; none →
|
|
45
|
+
ignore every `(H …)` mark.
|
|
45
46
|
2. **Trace + the running record.** Write `log_dir/.current` =
|
|
46
47
|
`run-quick-<slug>-<DDMMYY>-<HHMMSS>.txt` and `touch the trace file` of that
|
|
47
|
-
name in the SAME step. Both, or neither. Create
|
|
48
|
+
name in the SAME step. Both, or neither. Then `orc run snapshot --run <run-slug>`. Create
|
|
48
49
|
`.claude/orc/run/<run-slug>/quick-checkpoint.md` in the same step too: from
|
|
49
50
|
now on append every event to it WITH THE TIME IT HAPPENED (`HH:MM:SS`). Each
|
|
50
51
|
trace packet is built from that file, never stamped "now".
|
|
51
|
-
3. **Knowledge probes** (
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
framework key from
|
|
55
|
-
…), never a file
|
|
52
|
+
3. **Knowledge probes** — from `probes{}` (preflight.md step 3;
|
|
53
|
+
`../_shared/detecting-artifacts.md`). `orc wiki status` → only `none` means
|
|
54
|
+
no wiki. `<lang>` is cached when
|
|
55
|
+
`probes["pattern-status"].langs` names it; `<lang>` is a framework key from
|
|
56
|
+
`../orc-pattern/references/INDEX.md` (`express`, `react`, …), never a file
|
|
57
|
+
extension. Call `orc pattern status <lang>` only when you are not sure the
|
|
58
|
+
key is a framework key. **Both are helpful extras only:** missing
|
|
56
59
|
knowledge never stops the run, never causes a fallback, never triggers a
|
|
57
60
|
scan. Print ONE line each.
|
|
58
|
-
4. **Code graph cache — never skipped** (`../_shared/code-graph.md` §0).
|
|
59
|
-
`
|
|
60
|
-
|
|
61
|
-
packet VERBATIM. Exit 3 = off → no other graph call this session. Every graph
|
|
61
|
+
4. **Code graph cache — never skipped** (`../_shared/code-graph.md` §0). Print
|
|
62
|
+
`probes["graph-status"].line`; run
|
|
63
|
+
`orc graph status --if-enabled --heal --json --brief` only when `heal_needed` is true. Put the `trace` (`GRAPH-CONSULT …`) in
|
|
64
|
+
the packet VERBATIM. Exit 3 = off → no other graph call this session. Every graph
|
|
62
65
|
call carries `--if-enabled`, so the CLI reads the `code_graph` keys —
|
|
63
66
|
this lane still reads `log_dir` and nothing else.
|
|
64
67
|
5. **`gh` probe — only when the request names a PR** (`pr <n>`, `PR <n>`, a
|
|
@@ -67,8 +70,7 @@ is a pointer into nothing.
|
|
|
67
70
|
works; ask the user to paste the comments instead.
|
|
68
71
|
6. Emit one `GATE` line per check — `GATE graph` included.
|
|
69
72
|
|
|
70
|
-
|
|
71
|
-
probes themselves are this lane's own and stay here.
|
|
73
|
+
Shape: `../_shared/phases/preflight.md` (`core`); the probes stay here.
|
|
72
74
|
|
|
73
75
|
## Q1 — LOOK (silent — no questions here)
|
|
74
76
|
|
|
@@ -89,7 +91,7 @@ rule and the never-write-to-GitHub boundary are in `references/gh-mode.md`.
|
|
|
89
91
|
|
|
90
92
|
**Intent ledger.** Read the user's message for things they already decided —
|
|
91
93
|
which agent, update tests, review, commit, push. Do not ask those again in Q3.
|
|
92
|
-
Print it on ONE line
|
|
94
|
+
Print it on ONE line:
|
|
93
95
|
`ledger: review=yes commit=yes push=yes · test-update=ask · dispatch=ask`
|
|
94
96
|
|
|
95
97
|
**The dig — graph first** (`references/look.md`). Ask the graph BEFORE any
|
|
@@ -111,7 +113,7 @@ Grep; Grep only for what the graph does not know.
|
|
|
111
113
|
|
|
112
114
|
**Cap: 12 files.** If you go over, or you cannot find the right files, or the
|
|
113
115
|
job needs more than about 3 files of real edits: print a `GATE` line, say it
|
|
114
|
-
plainly, and **offer** `/orc-mini` (`../_shared/fallback-handoff.md`, REASON
|
|
116
|
+
plainly, and **offer** `/orc-mini` (H `quick.q1.too-big`; `../_shared/fallback-handoff.md`, REASON
|
|
115
117
|
`dig-inconclusive` or `scope-too-large`). Never keep digging in silence. It is
|
|
116
118
|
an OFFER — the user may still say "keep going".
|
|
117
119
|
|
|
@@ -132,18 +134,20 @@ the job is not quick: offer the Q1 fallback.
|
|
|
132
134
|
|
|
133
135
|
### b. The dispatch gate — HARD, never skip it
|
|
134
136
|
|
|
135
|
-
**Ask before every single dispatch** — the three kinds are code, read-only
|
|
136
|
-
(recon) and review. **The menu
|
|
137
|
+
**Ask before every single dispatch** (H `quick.q2.gate.code` · `quick.q2.gate.recon`) — the three kinds are code, read-only
|
|
138
|
+
(recon) and review. **The menu: `references/dispatch-gate.md`, only
|
|
139
|
+
`### Writing code` or `### Read-only work (recon)`, `## The suggestion` and `## Rules`.**
|
|
137
140
|
Every menu ends with `Your choice — nothing runs until you answer.`
|
|
138
141
|
|
|
139
142
|
Rules:
|
|
140
|
-
- Never pick for the user. Never reuse the last answer
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
pre-selection
|
|
143
|
+
- Never pick for the user. Never reuse the last answer by yourself. One line
|
|
144
|
+
MAY carry `→ suggested` with its reason — from the dig (`## The suggestion`),
|
|
145
|
+
or from `habits.suggestions` (the CLI's count of your own past picks, printed
|
|
146
|
+
with its numbers). A suggestion is never a pre-selection; the gate is asked
|
|
147
|
+
every time.
|
|
144
148
|
- If the user already said it ("use opus 5 low"), the gate is **answered**, not
|
|
145
149
|
skipped. Say which one you are using.
|
|
146
|
-
- No config changes this menu. See `##
|
|
150
|
+
- No config changes this menu. See `## Lane contract`.
|
|
147
151
|
- If the model asked for is higher than the session model, say so once: the
|
|
148
152
|
subagent will quietly drop to the session model and you will report it.
|
|
149
153
|
|
|
@@ -164,17 +168,17 @@ carries `repro` — the EXECUTOR writes it red, then fixes it green, never you
|
|
|
164
168
|
(`references/defect.md`). An **ad-hoc** dispatch is also told to report its own
|
|
165
169
|
`actual_model` and `actual_effort`.
|
|
166
170
|
|
|
167
|
-
Check the return with `../_shared/return-validation.md
|
|
168
|
-
`pattern_version` + `invariants_checked`,
|
|
169
|
-
carried a card = malformed), `repro` when
|
|
170
|
-
`actual_model` / `actual_effort` → emit `VERIFY`, which names
|
|
171
|
+
Check the return with `../_shared/return-validation.md` §1–§3 + each injected
|
|
172
|
+
field's §: honest `unmet[]`, `pattern_version` + `invariants_checked`,
|
|
173
|
+
`graph_used` (absent on a slice that carried a card = malformed), `repro` when
|
|
174
|
+
the slice asked for it, and `actual_model` / `actual_effort` → emit `VERIFY`, which names
|
|
171
175
|
`graph_used=<n> targets gen <n>` and `repro red→green` beside the model match,
|
|
172
|
-
and show
|
|
176
|
+
and show ⛔ DOWNGRADE if they differ. Also compare `git status --short`
|
|
173
177
|
before and after: a file changed outside `declared_files` is a violation. A
|
|
174
178
|
**recon** return adds one check: `answer` ≤ 12 lines. A broken return = a
|
|
175
179
|
failure: re-dispatch once, then offer the fallback.
|
|
176
180
|
|
|
177
|
-
**Before any re-dispatch, run `orc run inflight
|
|
181
|
+
**Before any re-dispatch, run `orc run inflight`**. A Task error does not kill the agent behind it, and exit 2 REFUSES by default — `a lane that re-dispatches over a live attempt` has broken the contract. Canonical: `return-validation.md` §0.
|
|
178
182
|
|
|
179
183
|
### 3.2 Build and tests — there is NO smoke gate
|
|
180
184
|
|
|
@@ -193,15 +197,13 @@ the suite — a runner that takes no file list → one line saying so — and ap
|
|
|
193
197
|
` → <n> passed`. Then the suite. Then print its `blast_line` VERBATIM: the CLI
|
|
194
198
|
attaches every `risk` word's `why`, so never restate it. Exit 3 → nothing.
|
|
195
199
|
|
|
196
|
-
`tests reached 3 files (ROUTE 2 · call 1) → 12 passed` · then the suite · then
|
|
197
|
-
`blast radius 3 symbols · callers 7 in 4 files · tests reach 2 · risk high: <symbol> (exported, fan-in 4, no test reaches it)`
|
|
198
|
-
|
|
199
200
|
**Build is RED → repair loop.** Rounds 1 and 2 reuse the same executor; round 3
|
|
200
201
|
**asks again**; after 3, ask and show how the errors MOVED, not just "still
|
|
201
202
|
red". Each new batch of 3 works the same way. Shape and wording:
|
|
202
|
-
|
|
203
|
+
its `## The build repair loop`. Put every round in the entry's dispatch table.
|
|
203
204
|
|
|
204
|
-
**Tests are RED →
|
|
205
|
+
**Tests are RED → the flaky check first** (`../_shared/smoke-gate.md` §Flaky).
|
|
206
|
+
Still red → stop, do NOT loop. Show the failures. Let the user choose:
|
|
205
207
|
fix it with a new gated dispatch · the test itself is wrong · accept it · stop.
|
|
206
208
|
Never offer commit while tests are red.
|
|
207
209
|
|
|
@@ -219,20 +221,22 @@ after the entry is appended, `orc graph gain --run <this run> --if-enabled
|
|
|
219
221
|
with a range; never restate it as a saving.
|
|
220
222
|
|
|
221
223
|
Append entry N to `orc-quick/<slug>/quick-context.md`
|
|
222
|
-
(`references/context-doc.md
|
|
223
|
-
|
|
224
|
+
(`references/context-doc.md`, only `## Entry shape` or `## A read-only entry`).
|
|
225
|
+
Every request gets an entry — a read-only dig too, where the answer IS the
|
|
226
|
+
result. A code-writing entry
|
|
227
|
+
ends with the card (`../_shared/phases/summary.md` §End-of-run card).
|
|
224
228
|
|
|
225
229
|
### 3.4 If the user stops while it is red
|
|
226
230
|
|
|
227
231
|
**Never undo anything yourself.** Say how many files changed, that nothing is
|
|
228
|
-
committed, and print
|
|
232
|
+
committed, and print the card's `undo` row as the undo.
|
|
229
233
|
|
|
230
234
|
### 3.5 Offers (skip any the ledger already answered)
|
|
231
235
|
|
|
232
|
-
1. **Update tests and run them** — only if a test suite exists AND the change
|
|
236
|
+
1. **Update tests and run them** (H `quick.q3.offer.tests`) — only if a test suite exists AND the change
|
|
233
237
|
made a test wrong or left new code untested. If the executor already fixed
|
|
234
238
|
the tests and they pass, **do not ask at all**.
|
|
235
|
-
2. **Code review** — this is a dispatch, so **ask the gate first**. Pattern
|
|
239
|
+
2. **Code review** (H `quick.q3.offer.review`) — this is a dispatch, so **ask the gate first**. Pattern
|
|
236
240
|
cached → review against it. Findings use the `P0|P1|P2|P3` ladder: P0/P1
|
|
237
241
|
block the commit offer and get one repair round; P2/P3 are advice only.
|
|
238
242
|
3. **Commit / push / stop** — stage **only the files the task changed**. Never
|
|
@@ -241,7 +245,7 @@ committed, and print `git checkout -- .` as the undo.
|
|
|
241
245
|
or merge — even when the user said "push". A `repro: none` entry shows the
|
|
242
246
|
**not reproduced** line here.
|
|
243
247
|
|
|
244
|
-
Write the results of these offers back into entry N. **Then:** another request →
|
|
248
|
+
Write the results of these offers back into entry N. Then record what it proved (`../_shared/gotchas.md` §10). **Then:** another request →
|
|
245
249
|
**Q1** as entry N+1, and Q0 never runs again; the user is done → emit `OUTCOME`
|
|
246
250
|
+ `FINISH`, send the last trace packet, and only THEN delete `log_dir/.current`.
|
|
247
251
|
|
|
@@ -252,72 +256,37 @@ Write the results of these offers back into entry N. **Then:** another request
|
|
|
252
256
|
One folder per thread, **one file inside, never a second file**:
|
|
253
257
|
`<projectRoot>/orc-quick/<slug>/quick-context.md`, with a list between
|
|
254
258
|
`<!-- orc-quick:toc -->` markers at the top. **Never read the body** — two
|
|
255
|
-
exceptions: the TOC block on re-open, and when the user asks.
|
|
256
|
-
`references/context-doc.md`.
|
|
259
|
+
exceptions: the TOC block on re-open, and when the user asks.
|
|
257
260
|
|
|
258
261
|
## Behavior trace (always on)
|
|
259
262
|
|
|
260
|
-
`../_shared/phases/trace.md` (`core`, at run start; `orc lane phases`
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
`
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
`
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
documented defaults, out loud. Priorities and families:
|
|
280
|
-
`../_shared/config-precedence.md`.
|
|
281
|
-
|
|
282
|
-
**Nothing can override this lane.** orc-quick has no config key of its own.
|
|
283
|
-
These config keys **do nothing here**: `opus5_only` · `rubric_bands_override` ·
|
|
284
|
-
`extra_resume` · `extra_on_failure` · `extra_fallback_agent`. All five come back
|
|
285
|
-
INERT with a reason — say that at the gate so the user is not confused
|
|
286
|
-
(`../_shared/opus5-only.md` names orc-quick as the one exception). The user
|
|
287
|
-
always picks the agent. **`extra_enabled` is the one key that does something
|
|
288
|
-
here, and it is small:** with a `quick-executor` position held
|
|
289
|
-
(`orc extra role`), the code-writing menu gets a THIRD option that sends the
|
|
290
|
-
slice to a third party — never a default, never sticky, asked again after a
|
|
291
|
-
failure. Recon and review stay on Claude. See `references/dispatch-gate.md`
|
|
292
|
-
rule 4 and `../_shared/extra-dispatch.md`.
|
|
293
|
-
|
|
294
|
-
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
295
|
-
|
|
296
|
-
`orc rules slice --lane orc-quick --json` is the ONLY assembler; never build
|
|
297
|
-
the card here. It rides under the house rules and above the task —
|
|
298
|
-
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
299
|
-
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
300
|
-
never a silent choice) and `rules_overridden[]`.
|
|
301
|
-
## Calls
|
|
302
|
-
|
|
303
|
-
**ONE catalogue, and it is not you:** `orc lane calls orc-quick --json` names every
|
|
304
|
-
CLI call this lane makes, each with its exit-code contract, its cost, when to run
|
|
305
|
-
it, and what an EMPTY answer means. Never invent a spelling, never re-word an
|
|
306
|
-
exit code, and never re-derive a state word — the CLI's state words are the only
|
|
307
|
-
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
308
|
-
a failure**. A call the answer does not name is a call this lane does not make.
|
|
309
|
-
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
310
|
-
command you are about to run, out loud, before running it.
|
|
263
|
+
`../_shared/phases/trace.md` (`core`, at run start; `orc lane phases orc-quick --json` →
|
|
264
|
+
`trace_grammar` gives the verbs). Lane token `quick`, tier
|
|
265
|
+
**Iterative** — the unit is ONE finished numbered entry. Build each packet from
|
|
266
|
+
`quick-checkpoint.md`, so every event carries the time it happened; one time for
|
|
267
|
+
every event is a protocol violation. Pipe each packet to
|
|
268
|
+
`orc trace write --packet -`. A phase that ends with
|
|
269
|
+
`zero new trace lines is a protocol violation`. Ad-hoc dispatches (no hook `SPAWN`): `references/dispatch-gate.md`, recon line 3.
|
|
270
|
+
|
|
271
|
+
## Lane contract (`../_shared/lane-contract.md` — read it ONLY when a call exits ≠ 0)
|
|
272
|
+
|
|
273
|
+
- **Calls:** `orc lane calls orc-quick --json` names every call and its exit codes.
|
|
274
|
+
**An exit code is an ANSWER where it says so, not a failure.** Make no other call.
|
|
275
|
+
- **Config:** `orc lane config orc-quick --json`. Obey `effective`, print every line
|
|
276
|
+
in `announce[]` VERBATIM at preflight, and honour `stops[]` before wave 1.
|
|
277
|
+
Never merge `.claude/orc.config.yaml` yourself (`../_shared/config-precedence.md`).
|
|
278
|
+
- **Rules:** `orc rules slice --lane orc-quick --json` is the ONLY assembler
|
|
279
|
+
(`../_shared/phases/rules.md`). Its `line` prints VERBATIM at preflight.
|
|
280
|
+
|
|
281
|
+
**Nothing can override this lane** — `references/dispatch-gate.md` rule 4.
|
|
311
282
|
|
|
312
283
|
## Rules this lane always keeps
|
|
313
284
|
|
|
314
|
-
Never implement yourself ·
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
· never write anything to GitHub · tell the user to run `/usage` (never run it
|
|
318
|
-
yourself).
|
|
285
|
+
Never implement yourself · check every return (broken = failure) · never undo
|
|
286
|
+
the user's files · stage only the task's files · never write anything to GitHub
|
|
287
|
+
· tell the user to run `/usage` (never run it yourself).
|
|
319
288
|
|
|
320
289
|
## Waiting mid-run (`/orc-wait`)
|
|
321
290
|
|
|
322
291
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
323
|
-
Checkpoint **entry** · safe point **after an entry closes**.
|
|
292
|
+
Checkpoint **entry** · safe point **after an entry closes**.
|
|
@@ -12,10 +12,17 @@ what is about to be spent, before it is spent.
|
|
|
12
12
|
|------|-------|--------------------|-----------------|
|
|
13
13
|
| Writes code | `orc-executor-sonnet-4-6-med` · `orc-executor-opus-5-low` · **a third option when a `quick-executor` position is held** | yes | yes (a foreign return has no `actual_model` — §2b) |
|
|
14
14
|
| Read only (recon) | `orc-recon-sonnet-4-6-med` · `orc-recon-opus-5-low` · **other — name a model** | yes · yes · no | yes |
|
|
15
|
-
| Review | `orc-reviewer-opus-5-
|
|
15
|
+
| Review | `orc-reviewer-opus-5-low` · or ad-hoc | yes / no | yes |
|
|
16
16
|
| Build repair, round 1–2 | *reused — not asked* | yes | yes |
|
|
17
17
|
| Build repair, round 3 | asked again | yes | yes |
|
|
18
18
|
|
|
19
|
+
**Review slice.** The review offer builds its slice from
|
|
20
|
+
`../../_shared/review-slice.md` (`--lane orc-quick`): the §1 free check first,
|
|
21
|
+
then the §2 fields, and its §3 after-filter on the return. No disprove pass here.
|
|
22
|
+
A finding the user calls "not a problem here" is a `disputed` outcome; record
|
|
23
|
+
each outcome with `orc gotcha observe` (one per finding, with `run`) and the
|
|
24
|
+
`FINDING-OUTCOME` line (`../../_shared/gotchas.md` §10).
|
|
25
|
+
|
|
19
26
|
### Writing code
|
|
20
27
|
|
|
21
28
|
```
|
|
@@ -37,7 +44,7 @@ Show a third line ONLY when all three are true:
|
|
|
37
44
|
- `extra_enabled` is true, AND
|
|
38
45
|
- a `quick-executor` position is held (`orc extra role set quick-executor
|
|
39
46
|
<profile>/<model>`), AND
|
|
40
|
-
- `
|
|
47
|
+
- `probes["extra-slot"]` (Q0 step 1) answers `resolved: extra`.
|
|
41
48
|
|
|
42
49
|
```
|
|
43
50
|
Which executor for entry 2 — "add retry header"?
|
|
@@ -117,7 +124,8 @@ reason attached, the same shape every ORC question uses
|
|
|
117
124
|
default**, and the menu still ends with
|
|
118
125
|
`Your choice — nothing runs until you answer.`
|
|
119
126
|
|
|
120
|
-
The reason comes from the dig,
|
|
127
|
+
The reason comes from the dig, or from `habits.suggestions` with the CLI's
|
|
128
|
+
count (`../../_shared/habits.md`), never from a feeling. Suggest
|
|
121
129
|
`orc-executor-opus-5-low` when ANY of these holds:
|
|
122
130
|
|
|
123
131
|
| Suggest the stronger executor when | Because |
|
|
@@ -139,8 +147,11 @@ For recon, the suggestion is simpler: `orc-recon-sonnet-4-6-med` finds things;
|
|
|
139
147
|
2. **Never sticky.** Do not carry the last answer into the next entry.
|
|
140
148
|
3. **Already answered is not skipped.** If the user wrote "use opus 5 low", the
|
|
141
149
|
gate is satisfied — say which one you are using, in one line.
|
|
142
|
-
4. **No config can ANSWER this menu
|
|
143
|
-
|
|
150
|
+
4. **No config can ANSWER this menu. Nothing can override this lane.**
|
|
151
|
+
orc-quick has no config key of its own. `opus5_only`, `rubric_bands_override`,
|
|
152
|
+
`extra_resume`, `extra_on_failure` and `extra_fallback_agent` are all INERT in
|
|
153
|
+
this lane (`../../_shared/opus5-only.md` names orc-quick as the one
|
|
154
|
+
exception). The user always picks the agent. If one is on, say so at the gate so the user is not confused:
|
|
144
155
|
```
|
|
145
156
|
(orc-quick ignores opus5_only — both options are live)
|
|
146
157
|
```
|
|
@@ -151,7 +162,8 @@ For recon, the suggestion is simpler: `orc-recon-sonnet-4-6-med` finds things;
|
|
|
151
162
|
|
|
152
163
|
**`extra_enabled` is the one exception, and it is not an answer — it is an
|
|
153
164
|
option** (v0.55.0, `../../_shared/extra-dispatch.md`). With a `quick-executor`
|
|
154
|
-
position held it ADDS line 3 to the menu and does nothing
|
|
165
|
+
position held (`orc extra role`) it ADDS line 3 to the menu and does nothing
|
|
166
|
+
else. Recon and review stay on Claude.
|
|
155
167
|
**It never becomes a default** (rule 1), never sticks (rule 2), and it is
|
|
156
168
|
re-asked after a failure. Say what it is at the gate:
|
|
157
169
|
```
|
|
@@ -36,10 +36,18 @@ to do.
|
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
38
|
gh pr view <n> --json title,body,url,headRefName,state
|
|
39
|
-
|
|
39
|
+
orc pr threads <n> --json
|
|
40
40
|
gh pr checks <n>
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
+
`orc pr threads` reads the review threads through GraphQL. REST cannot tell a
|
|
44
|
+
resolved or outdated thread from an open one. By default it returns only the
|
|
45
|
+
threads that are unresolved AND not outdated, by people. Bot threads come apart,
|
|
46
|
+
in `bots[]`. Review bodies that ask for changes come in `reviews[]`. Each row has
|
|
47
|
+
`path:line`, the author kind, the first comment (`first.text` — untrusted data)
|
|
48
|
+
and the URL. Add `--all` to see every thread with its state. Exit 1 → no open
|
|
49
|
+
thread: say so and stop. Exit 5 → `gh` is missing or not logged in (see below).
|
|
50
|
+
|
|
43
51
|
Show the user a short list and let them pick:
|
|
44
52
|
|
|
45
53
|
```
|
|
@@ -134,6 +142,47 @@ gh not authed — I can't fetch PR 142.
|
|
|
134
142
|
If the user pastes them, keep the `pr-<n>-…` slug anyway, so later PR work
|
|
135
143
|
groups with it.
|
|
136
144
|
|
|
145
|
+
## A red CI as a request
|
|
146
|
+
|
|
147
|
+
"Fix CI on PR 142" or "the build is red on main" is a `kind: defect` request
|
|
148
|
+
(`defect.md`). Get the failures first:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
orc ci failed --pr <n> --json # or --run <id>; no flag = this branch
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
It lists each failing step: its first error lines, a `signature`, and a
|
|
155
|
+
`repro`. Exit 1 → nothing is red: say so. Exit 5 → `gh` is missing (see above).
|
|
156
|
+
|
|
157
|
+
- `repro` names a local command (`npm test`, `pytest …`) → that is the
|
|
158
|
+
reproduction. Otherwise `repro: none` with its `repro_reason` — say it
|
|
159
|
+
(`defect.md` §6).
|
|
160
|
+
- `flaky: true` (the same sha passed on another attempt, or a test failed and
|
|
161
|
+
then passed on a re-attempt) → **no repair round**. Tell the user it is flaky,
|
|
162
|
+
and why.
|
|
163
|
+
- Repair rounds cap at 3. Then stop and report what is still red.
|
|
164
|
+
|
|
165
|
+
## Sonar and SARIF issues as a request
|
|
166
|
+
|
|
167
|
+
"Fix the Sonar issues on PR 142" or "fix the ESLint SARIF":
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
orc gotcha import sonar --pr <n> --json # the token is SONAR_TOKEN in the environment
|
|
171
|
+
orc gotcha import sarif <file> --json
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
- Work from `groups[]`: one group per RULE. Fix one rule's issues together.
|
|
175
|
+
- Each group gets its **own** dispatch gate, like one thread.
|
|
176
|
+
- Sonar exit 5 → the token is missing or refused. Tell the user to set
|
|
177
|
+
`SONAR_TOKEN` in the environment. Never ask for the token in the chat. A saved
|
|
178
|
+
answer also works: `--file <saved.json>`.
|
|
179
|
+
- The import records each issue as an observation. After a green fix, record
|
|
180
|
+
each fixed issue ONCE through the `/orc-fix` record step (`via: "orc-quick"`,
|
|
181
|
+
with its Sonar issue key — `../../_shared/gotchas.md` §10). It uses the
|
|
182
|
+
importer's own id, so the next import completes the SAME row with `addressed`.
|
|
183
|
+
- **Never change an issue's status on the Sonar server.** ORC reads external
|
|
184
|
+
systems. It does not write to them — the GitHub boundary, extended.
|
|
185
|
+
|
|
137
186
|
## What goes in the doc
|
|
138
187
|
|
|
139
188
|
Record the PR number, title, url, and branch. For each thread: the reviewer, the
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
This is Q1's read-only half. It has one job: **find the right files, fast, and
|
|
4
4
|
then stop.** You are not studying the code here. An agent does that later, if
|
|
5
|
-
the user says yes at the gate.
|
|
5
|
+
the user says yes at the gate. This keeps your context small.
|
|
6
|
+
|
|
7
|
+
The intent ledger prints on ONE line so nothing is skipped in secret.
|
|
6
8
|
|
|
7
9
|
## 1. Why the graph goes first
|
|
8
10
|
|
|
@@ -22,7 +22,7 @@ return spoke of that flywheel. It turns the raw `.txt` traces into an answer to
|
|
|
22
22
|
three questions: **is the scoring rubric calibrated? are the workers honest?
|
|
23
23
|
where does the pipeline leak?**
|
|
24
24
|
|
|
25
|
-
Run as Opus
|
|
25
|
+
Run as Opus 5.5 low or better (orchestrator). The mining itself is dispatched to
|
|
26
26
|
`orc-retro-sonnet-5-high` — cheap, because it reads trace text, not code — or
|
|
27
27
|
to `orc-retro-opus-5-med` when `opus5_only: true` forces it
|
|
28
28
|
(`../_shared/opus5-only.md`).
|
|
@@ -70,7 +70,7 @@ to `orc-retro-opus-5-med` when `opus5_only: true` forces it
|
|
|
70
70
|
date range from `$ARGUMENTS`). Show the count and ask nothing else.
|
|
71
71
|
2. Dispatch `orc-retro-sonnet-5-high` (or `orc-retro-opus-5-med` under
|
|
72
72
|
`opus5_only`) with the slice: trace file paths + the
|
|
73
|
-
verb reference (`../_shared/phases/trace.md`). The agent mines the
|
|
73
|
+
verb reference (`../_shared/phases/trace-verbs.md`). The agent mines the
|
|
74
74
|
`<trace>.jsonl` sidecar first when present (structured — no regex over free
|
|
75
75
|
text) and falls back to `.txt` parsing for pre-v0.32.0 traces, merging the
|
|
76
76
|
hook's `.txt`-only skeleton lines by timestamp. It parses the CLOSED verb set
|
|
@@ -94,10 +94,11 @@ to `orc-retro-opus-5-med` when `opus5_only: true` forces it
|
|
|
94
94
|
- **Trace hygiene → narration coverage:** the hook's `PHASE-EDGE` lines
|
|
95
95
|
segment every run with zero model cooperation, so a missing narration is
|
|
96
96
|
now DETERMINISTICALLY visible: count the phases whose edge-interval
|
|
97
|
-
contains no trace-writer `SPAWN
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
contains no trace-writer `SPAWN` and no narrated (non-`hook`) line STAMPED
|
|
98
|
+
inside it — the CLI writes most packets, with no SPAWN. Report
|
|
99
|
+
`covered/total` + the unnarrated phases. The question is "which phases were
|
|
100
|
+
never narrated?" — a run with edges and no narration at all is a total
|
|
101
|
+
narration failure and is named as such.
|
|
101
102
|
2a. **Repair memory as calibration input (READ-ONLY).** Probe `orc gotcha status`
|
|
102
103
|
(exit 0 = entries, 1 = none — never a `find`). On a hit, add
|
|
103
104
|
`.claude/orc/gotchas.md` to the agent's slice as one more read-only source:
|
|
@@ -241,16 +242,16 @@ exit code, and never re-derive a state word — the CLI's state words are the on
|
|
|
241
242
|
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
242
243
|
a failure**. A call the answer does not name is a call this lane does not make.
|
|
243
244
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
244
|
-
command you are about to run, out loud, before running it.
|
|
245
|
-
|
|
246
|
-
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
247
|
-
|
|
248
|
-
`orc rules slice --lane orc-retro --json` is the ONLY assembler; never build
|
|
249
|
-
the card here. It rides under the house rules and above the task —
|
|
250
|
-
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
251
|
-
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
252
|
-
never a silent choice) and `rules_overridden[]`.
|
|
253
|
-
## Waiting mid-run (`/orc-wait`)
|
|
254
|
-
|
|
255
|
-
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
256
|
-
Checkpoint **none** · safe point **read-only, seconds long**. Nothing here to checkpoint, so all three modes behave identically — say so rather than asking. Never begin a wait between a dispatch and its validated return, or before the smoke gate has reported.
|
|
245
|
+
command you are about to run, out loud, before running it.
|
|
246
|
+
|
|
247
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
248
|
+
|
|
249
|
+
`orc rules slice --lane orc-retro --json` is the ONLY assembler; never build
|
|
250
|
+
the card here. It rides under the house rules and above the task —
|
|
251
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
252
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
253
|
+
never a silent choice) and `rules_overridden[]`.
|
|
254
|
+
## Waiting mid-run (`/orc-wait`)
|
|
255
|
+
|
|
256
|
+
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
257
|
+
Checkpoint **none** · safe point **read-only, seconds long**. Nothing here to checkpoint, so all three modes behave identically — say so rather than asking. Never begin a wait between a dispatch and its validated return, or before the smoke gate has reported.
|
|
@@ -45,32 +45,32 @@ lane wrote:
|
|
|
45
45
|
`run-orc-feat-auth-090726-144001.txt` (full pipeline — the rich one; every
|
|
46
46
|
non-hook line was written by the trace writer from a phase packet):
|
|
47
47
|
```
|
|
48
|
-
[090726 14:40:02.300] writer SCORE task=T3 score=72 band=[
|
|
48
|
+
[090726 14:40:02.300] writer SCORE task=T3 score=72 band=[41,90) model=opus-5 :: multi-file, judgment
|
|
49
49
|
[090726 14:40:03.010] writer DISPATCH orc-executor-opus-5-low :: T3 expect=opus-5/low
|
|
50
50
|
[090726 14:44:12.900] writer VERIFY T3 actual=opus-5/low ✅ MATCH
|
|
51
51
|
[090726 14:44:13.000] writer VERIFY T5 actual=sonnet-4-6/high ⛔ DOWNGRADE expected=opus-5/med
|
|
52
52
|
[090726 15:02:00.000] reviewer FINDING p0=1 p1=0 p2=3 p3=2
|
|
53
53
|
[090726 15:04:10.000] writer GATE coverage bounce :: T4 unowned (no owning req)
|
|
54
54
|
[090726 15:10:00.000] verifier VERDICT pass :: 8/8 acceptance criteria
|
|
55
|
-
[090726 15:11:30.000] writer OUTCOME task=T3 score=72 band=[
|
|
55
|
+
[090726 15:11:30.000] writer OUTCOME task=T3 score=72 band=[41,90) model=opus-5 retries=1 requeues=0 needs_context=0 unmet=0
|
|
56
56
|
[090726 15:12:00.000] writer FINISH :: shipped PR #123
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
`run-claude-readme-100726-091401.txt` (single-dispatch lane — ONE end-of-run
|
|
60
60
|
packet; its meaningful signal is the writer's tier honesty):
|
|
61
61
|
```
|
|
62
|
-
[100726 09:14:02.110] writer DISPATCH orc-claude-writer :: refresh expect=opus-
|
|
63
|
-
[100726 09:14:02.230] hook SPAWN orc-claude-writer-opus-
|
|
62
|
+
[100726 09:14:02.110] writer DISPATCH orc-claude-writer :: refresh expect=opus-5/low
|
|
63
|
+
[100726 09:14:02.230] hook SPAWN orc-claude-writer-opus-5-low
|
|
64
64
|
[100726 09:15:47.900] hook RETURN
|
|
65
|
-
[100726 09:15:48.010] writer VERIFY writer actual=sonnet-4-6/high ⛔ DOWNGRADE expected=opus-
|
|
65
|
+
[100726 09:15:48.010] writer VERIFY writer actual=sonnet-4-6/high ⛔ DOWNGRADE expected=opus-5/low
|
|
66
66
|
[100726 09:15:48.120] writer FINISH :: refresh CLAUDE.md v0.0.3
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
### Step 2 — dispatch the miner (never mines itself)
|
|
70
70
|
|
|
71
71
|
```
|
|
72
|
-
C: Spawning orc-retro-sonnet-5-high → claude-sonnet-5 / high
|
|
73
|
-
slice: trace_files=[3 paths] + verb_reference=_shared/phases/trace.md
|
|
72
|
+
C: Spawning orc-retro-sonnet-5-high → claude-sonnet-5-5 / high
|
|
73
|
+
slice: trace_files=[3 paths] + verb_reference=_shared/phases/trace-verbs.md
|
|
74
74
|
(This lane writes NO run pointer and emits NO markers — tracing the retro
|
|
75
75
|
would pollute the very data it mines.)
|
|
76
76
|
```
|
|
@@ -82,23 +82,23 @@ verb set, and returns EXACTLY the contract:
|
|
|
82
82
|
runs_analyzed: 3
|
|
83
83
|
tasks_analyzed: 6
|
|
84
84
|
band_stats:
|
|
85
|
-
- {band: "[
|
|
86
|
-
- {band: "[
|
|
85
|
+
- {band: "[41,90)", model: opus-5, tasks: 2, avg_retries: 0.5, avg_requeues: 0, avg_needs_context: 0, avg_unmet: 0}
|
|
86
|
+
- {band: "[31,41)", model: sonnet-5, tasks: 3, avg_retries: 1.3, avg_requeues: 0.7, avg_needs_context: 1.0, avg_unmet: 0.3}
|
|
87
87
|
downgrades:
|
|
88
88
|
- {agent: orc-executor-opus-5-low, expected: opus-5/low, actual: sonnet-4-6/high, run: feat-auth-090726}
|
|
89
|
-
- {agent: orc-claude-writer-opus-
|
|
89
|
+
- {agent: orc-claude-writer-opus-5-low, expected: opus-5/low, actual: sonnet-4-6/high, run: orc-claude-100726}
|
|
90
90
|
leaks:
|
|
91
91
|
- {kind: verdict-fail, evidence: "run-orc-feat-auth-090726-144001.txt:L31 (FINDING p0=1)", count: 1}
|
|
92
92
|
- {kind: gate-bounce, evidence: "run-orc-feat-auth-090726-144001.txt:L33 (coverage bounce)", count: 1}
|
|
93
93
|
- {kind: context-gap, evidence: "run-mini-fix-cache-110726-101200.txt:L4,L7", count: 2}
|
|
94
94
|
recommendations:
|
|
95
|
-
- finding: "Both downgrades share a fingerprint: an opus-
|
|
96
|
-
suggested_change: "Not a rubric issue — surface to the user: run the pinned lanes from an Opus
|
|
95
|
+
- finding: "Both downgrades share a fingerprint: an opus-5/low pin ran as sonnet-4-6 — the main session was below Opus when the child spawned."
|
|
96
|
+
suggested_change: "Not a rubric issue — surface to the user: run the pinned lanes from an Opus 5.5 session. No config edit."
|
|
97
97
|
confidence: strong
|
|
98
|
-
- finding: "sonnet-5 band [
|
|
99
|
-
suggested_change: "config.md — tighten the planner's declared-files discipline, or nudge the [
|
|
98
|
+
- finding: "sonnet-5 band [31,41) shows avg_needs_context=1.0 across 3 tasks — slices may be under-specified."
|
|
99
|
+
suggested_change: "config.md — tighten the planner's declared-files discipline, or nudge the [31,41) band slice detail."
|
|
100
100
|
confidence: weak # n<3 in this band
|
|
101
|
-
actual_model: claude-sonnet-5
|
|
101
|
+
actual_model: claude-sonnet-5-5
|
|
102
102
|
actual_effort: high
|
|
103
103
|
```
|
|
104
104
|
|
|
@@ -113,8 +113,8 @@ C: Return validates. Writing report →
|
|
|
113
113
|
level to run traces + their sidecars)
|
|
114
114
|
|
|
115
115
|
── orc-retro summary (n=3 runs, 6 tasks) ──────────────────────────────
|
|
116
|
-
Scoring calibrated? ~ mostly — [
|
|
117
|
-
Workers honest? ⛔ NO — 2 silent downgrades (opus-
|
|
116
|
+
Scoring calibrated? ~ mostly — [41,90) clean; [31,41) shows a context-gap (weak, n=3)
|
|
117
|
+
Workers honest? ⛔ NO — 2 silent downgrades (opus-5 → sonnet-4-6)
|
|
118
118
|
Where it leaks? 1 coverage-gate bounce, 1 P0 review finding, 2 context-gaps
|
|
119
119
|
Narrated? 11/12 phases had a writer dispatch (1 execution phase blind)
|
|
120
120
|
Recommendations: 2 (1 strong, 1 weak)
|