@azure-id/orc 2.0.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 +401 -0
- package/README-id.md +52 -23
- package/README.md +50 -22
- package/bin/build-agents.js +24 -25
- package/bin/clear-logs.js +620 -0
- package/bin/cli.js +1155 -158
- package/bin/fix.js +459 -0
- package/bin/gotcha.js +288 -8
- package/bin/habit.js +1538 -1453
- package/bin/mockrun-catalog.js +3 -0
- package/bin/onboarding-content.js +2 -1
- package/bin/pricing.json +28 -21
- package/bin/trace-write.js +869 -657
- package/bin/verify-contracts.js +108 -27
- package/bin/verify-package.js +17 -6
- package/bin/webui/api.js +125 -6
- package/bin/webui/css/panels/hookui.css +79 -0
- package/bin/webui/fixtures/behaviour.js +30 -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 +32 -3
- package/bin/webui/fixtures/knowledge.js +2 -2
- 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 +9 -6
- package/bin/webui/fixtures/wait.js +98 -97
- package/bin/webui/i18n/en/behaviour.json +13 -0
- package/bin/webui/i18n/en/hookui.json +290 -194
- package/bin/webui/i18n/en/maintenance.json +71 -52
- package/bin/webui/i18n/en/settings.json +60 -60
- package/bin/webui/i18n/id/behaviour.json +13 -0
- package/bin/webui/i18n/id/hookui.json +290 -194
- package/bin/webui/i18n/id/maintenance.json +71 -52
- package/bin/webui/i18n/id/settings.json +60 -60
- package/bin/webui/js/05-banners.js +181 -172
- package/bin/webui/js/06-edit.js +193 -183
- package/bin/webui/js/panels/behaviour.js +77 -12
- 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 +1 -0
- package/mock-run/extra-slots.md +1 -1
- package/mock-run/habits.md +1 -1
- 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.md +157 -157
- package/package.json +1 -1
- package/templates/agents/MODEL-MAPPING.md +32 -29
- package/templates/agents/orc-analyze-mini-sonnet-5-high.md +2 -2
- package/templates/agents/{orc-claude-writer-opus-5-med.md → orc-claude-writer-opus-5-low.md} +4 -4
- package/templates/agents/orc-executor-haiku-4-5.md +1 -1
- package/templates/agents/orc-executor-opus-5-low.md +1 -1
- package/templates/agents/orc-executor-sonnet-4-6-high.md +1 -1
- package/templates/agents/orc-executor-sonnet-4-6-med.md +1 -1
- package/templates/agents/orc-executor-sonnet-5-high.md +2 -2
- 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-pattern-codifier-sonnet-5-high.md +2 -2
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +2 -2
- package/templates/agents/orc-retro-sonnet-5-high.md +2 -2
- package/templates/agents/{orc-reviewer-opus-5-med.md → orc-reviewer-opus-5-low.md} +4 -4
- package/templates/agents/{orc-wiki-scanner-opus-5-med.md → orc-wiki-scanner-opus-5-low.md} +3 -3
- package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +2 -2
- package/templates/commands/orc-fix.md +18 -0
- package/templates/commands/orc-wiki.md +64 -64
- package/templates/hooks/README.md +75 -7
- package/templates/hooks/orc-session-hook.js +78 -3
- package/templates/hooks/orc-statusline-render.js +317 -23
- package/templates/hooks/orc-statusline.js +162 -49
- package/templates/hooks/orc-subagent-line.js +23 -5
- package/templates/hooks/orc-weather-fetch.js +123 -0
- package/templates/skills/_shared/extra-dispatch.md +5 -5
- package/templates/skills/_shared/gotchas.md +27 -7
- package/templates/skills/_shared/habits.md +2 -2
- package/templates/skills/_shared/opus5-only.md +14 -14
- package/templates/skills/_shared/phases/review.md +2 -2
- package/templates/skills/_shared/phases/trace-verbs.md +17 -3
- package/templates/skills/_shared/phases/trace.md +136 -136
- package/templates/skills/_shared/review-slice.md +28 -1
- package/templates/skills/_shared/wait.md +1 -0
- package/templates/skills/orc/README.md +2 -2
- package/templates/skills/orc/SKILL.md +1 -1
- 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/preflight-report.md +3 -3
- package/templates/skills/orc/references/ultra-mode.md +1 -1
- package/templates/skills/orc/schemas/checkpoint.md +122 -122
- package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +3 -3
- package/templates/skills/orc/subskills/orc-review-verify/core.md +1 -1
- package/templates/skills/orc-analyze/SKILL.md +4 -2
- 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/SKILL.md +5 -5
- package/templates/skills/orc-fast/SKILL.md +8 -6
- package/templates/skills/orc-fix/SKILL.md +110 -0
- package/templates/skills/orc-mini/SKILL.md +4 -4
- package/templates/skills/orc-mini/examples/mini-run-mock.md +4 -2
- package/templates/skills/orc-quick/README.md +1 -1
- package/templates/skills/orc-quick/SKILL.md +2 -2
- package/templates/skills/orc-quick/references/dispatch-gate.md +3 -2
- package/templates/skills/orc-quick/references/gh-mode.md +4 -2
- package/templates/skills/orc-retro/SKILL.md +1 -1
- package/templates/skills/orc-retro/examples/retro-mock.md +16 -16
- 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 +1 -1
- package/templates/skills/orc-wiki/references/phases/phase-2.md +3 -3
- package/templates/skills/orc-wiki/references/phases/phase-3c.md +3 -2
- package/templates/agents/orc-claude-writer-opus-4-8-high.md +0 -48
- package/templates/agents/orc-wiki-scanner-opus-4-8-high.md +0 -74
|
@@ -49,13 +49,14 @@ unavailable, apply the same checks manually from
|
|
|
49
49
|
|
|
50
50
|
## Step 2 — dispatch the compiled flow
|
|
51
51
|
|
|
52
|
+
First `orc lane config orc-diy --json`. **`habits{}` in it → print `habits.line`,
|
|
53
|
+
read `../_shared/habits.md` NOW**; none → ignore every `(H …)`. Then:
|
|
52
54
|
Read `.claude/orc/diy/FLOW-COMPILED.md` and follow it as your orchestrator
|
|
53
55
|
spine for this run — it is self-contained: tier self-check, locked rules,
|
|
54
56
|
phase sequence, and the references it cherry-picks from the installed orc
|
|
55
57
|
skill. Honor its generated header: if its own self-gate fails, stop exactly
|
|
56
|
-
as it says.
|
|
57
|
-
|
|
58
|
-
exact orc subskills and schemas it needs).
|
|
58
|
+
as it says. Never consult this stub again this run, and never load orc's
|
|
59
|
+
SKILL.md as a spine — the flow names every subskill and schema it needs.
|
|
59
60
|
|
|
60
61
|
## Lane contract (`../_shared/lane-contract.md` — read it ONLY when a call exits ≠ 0)
|
|
61
62
|
|
|
@@ -64,8 +65,7 @@ exact orc subskills and schemas it needs).
|
|
|
64
65
|
- **Config:** `orc lane config orc-diy --json`. Obey `effective`, print every line
|
|
65
66
|
in `announce[]` VERBATIM at preflight, and honour `stops[]` before wave 1.
|
|
66
67
|
Never merge `.claude/orc.config.yaml` yourself (`../_shared/config-precedence.md`).
|
|
67
|
-
- **Habits:**
|
|
68
|
-
`habits{}` → ignore every `(H …)` mark.
|
|
68
|
+
- **Habits:** Step 2, first.
|
|
69
69
|
- **Rules:** `orc rules slice --lane orc-diy --json` is the ONLY assembler
|
|
70
70
|
(`../_shared/phases/rules.md`). Its `line` prints VERBATIM at preflight.
|
|
71
71
|
|
|
@@ -38,6 +38,11 @@ without the manifest (`../_shared/lane-contract.md` §Phases).
|
|
|
38
38
|
|
|
39
39
|
Emit a `GATE` trace line per check.
|
|
40
40
|
|
|
41
|
+
**0. Config, FIRST.** `orc lane config orc-fast --json`: obey `effective`, print
|
|
42
|
+
`announce[]` VERBATIM, honour `stops[]`; never merge `.claude/orc.config.yaml`
|
|
43
|
+
(`../_shared/config-precedence.md`). **`habits{}` in it → print `habits.line`,
|
|
44
|
+
read `../_shared/habits.md` NOW.**
|
|
45
|
+
|
|
41
46
|
**a. Wiki gate.** Decide existence with `orc wiki status` — the deterministic
|
|
42
47
|
probe in `../_shared/detecting-artifacts.md`, never an ad-hoc `find` (`.claude`
|
|
43
48
|
is hidden). `none` = gate FAILED → fallback; else read the tier from
|
|
@@ -76,9 +81,8 @@ then one `orc graph notes pending` batch — the next run starts from this cache
|
|
|
76
81
|
|
|
77
82
|
**d. Extra — a PROBE, not a gate (P0).** Run `orc extra resolve --slot fast-executor --json` (0 = extra, 1 = Claude) — **a gate that is never probed is a gate that is always off**, and without this step the lane silently runs on Claude however `extra_enabled` and `orc extra role` were set. `extra` → print the `extra:` line HERE and carry the answer into F2; `claude` → print nothing, never fall back, never stop.
|
|
78
83
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
themselves are this lane's own and stay here.
|
|
84
|
+
Their shape and four rules: `../_shared/phases/preflight.md` (`core`). The
|
|
85
|
+
probes are this lane's own.
|
|
82
86
|
|
|
83
87
|
## Phase F1 — Fit gate + micro-intake (one pass, ONE user round-trip)
|
|
84
88
|
|
|
@@ -182,9 +186,7 @@ in the SAME step. A phase that ends with `zero new trace lines is a protocol vio
|
|
|
182
186
|
|
|
183
187
|
- **Calls:** `orc lane calls orc-fast --json` names every call and its exit codes.
|
|
184
188
|
**An exit code is an ANSWER where it says so, not a failure.** Make no other call.
|
|
185
|
-
- **Config:**
|
|
186
|
-
in `announce[]` VERBATIM at preflight, and honour `stops[]` before wave 1.
|
|
187
|
-
Never merge `.claude/orc.config.yaml` yourself (`../_shared/config-precedence.md`).
|
|
189
|
+
- **Config:** F0 step 0.
|
|
188
190
|
- **Rules:** `orc rules slice --lane orc-fast --json` is the ONLY assembler
|
|
189
191
|
(`../_shared/phases/rules.md`). Its `line` prints VERBATIM at preflight.
|
|
190
192
|
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orc-fix
|
|
3
|
+
description: >
|
|
4
|
+
Say "this is a fix, and here is what it fixes". Use for "/orc-fix", "this
|
|
5
|
+
fixes Sonar typescript:S3776", "ORC caused this defect", "this bug came from
|
|
6
|
+
AI-generated code", "record this fix". It classifies the fix from evidence,
|
|
7
|
+
asks once, and records it so the next review sees it. A rider: it opens no
|
|
8
|
+
run and returns to exactly where the run was. With no run open it can also
|
|
9
|
+
make the fix, like /orc-quick.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# ORC — the fix record
|
|
13
|
+
|
|
14
|
+
A RIDER lane, like `/orc-wait` and `/orc-explain`. It opens no run of its own,
|
|
15
|
+
writes no `run-<lane>-<slug>` pointer and never writes `.current`. The user can
|
|
16
|
+
call it at any time — also while another lane waits at a question.
|
|
17
|
+
|
|
18
|
+
## What this lane never does
|
|
19
|
+
|
|
20
|
+
- It never begins between a dispatch and its validated return.
|
|
21
|
+
- It never changes the host run: no re-plan, no re-score, no new task. A
|
|
22
|
+
suspend does not widen anyone's authority.
|
|
23
|
+
- With a run open, it never writes code. The host lane makes the fix — two
|
|
24
|
+
writers on one tree is the conflict `/orc-wait` forbids (DE-12).
|
|
25
|
+
- It never sets `miss` itself, and never records `author: orc`. The CLI does
|
|
26
|
+
the first, and refuses the second.
|
|
27
|
+
|
|
28
|
+
## F0 — look (silent)
|
|
29
|
+
|
|
30
|
+
Run `orc fix classify --text "<the user's words>" --json`. The CLI reads the
|
|
31
|
+
git state, `git blame` on the named lines, the traces and the host run, and
|
|
32
|
+
proposes ONE class on two axes:
|
|
33
|
+
|
|
34
|
+
- `source` (what found it): `sonar` · `ci` · `defect` · `pr` · `review` · `other`
|
|
35
|
+
- `introduced_by` (who wrote the bad lines): `orc` · `ai` · `human` · `unknown`
|
|
36
|
+
|
|
37
|
+
| exit | meaning | what you do |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| 0 | classified | go to F1 |
|
|
40
|
+
| 1 | a dispatch is in flight | say so, wait for its return, then run F0 again |
|
|
41
|
+
| 2 | no text | ask what the fix fixes |
|
|
42
|
+
|
|
43
|
+
Never classify in your head. The user's three cases: "a SonarQube fix" →
|
|
44
|
+
`source: sonar`; "a defect caused by ORC" → `source: defect, introduced_by:
|
|
45
|
+
orc`; "a bug caused by AI-generated code" → `introduced_by: ai`.
|
|
46
|
+
|
|
47
|
+
## F1 — ask once (H `fix.f1.class`)
|
|
48
|
+
|
|
49
|
+
Show the proposed class, every `evidence` line and the file, then:
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
This fix: source sonar · introduced by ORC (run-mini-total-290926)
|
|
53
|
+
- a Sonar rule key (typescript:S3776)
|
|
54
|
+
- git blame → 4c1e2a9: the commit falls inside the run's trace window ...
|
|
55
|
+
1. confirm 2. change the class 3. cancel
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The user's word wins over the evidence. A changed class goes into the record
|
|
59
|
+
as `class_by: "user"`; a confirmed one as `class_by: "evidence"`. Cancel →
|
|
60
|
+
nothing is written; return to the run.
|
|
61
|
+
|
|
62
|
+
## F2 — record
|
|
63
|
+
|
|
64
|
+
Pipe the classify answer's `record` object (with the user's class and
|
|
65
|
+
`class_by`) to `orc fix record - --json`. The CLI:
|
|
66
|
+
|
|
67
|
+
1. writes ONE observation through the gotcha store — with a Sonar issue key it
|
|
68
|
+
uses the importer's own id, so a later `gotcha sync` completes the same row;
|
|
69
|
+
2. computes `miss` from the stored review scopes;
|
|
70
|
+
3. writes ONE `FIX` line into the HOST run's trace, when one is open;
|
|
71
|
+
4. prints ONE line. Show it VERBATIM, then stop.
|
|
72
|
+
|
|
73
|
+
Exit 1 → a dispatch started meanwhile; nothing was written. Wait, then F2 again.
|
|
74
|
+
|
|
75
|
+
## No run open — offer the fix (DE-12)
|
|
76
|
+
|
|
77
|
+
`mode: may-fix` from F0 → offer to make the fix before F2, like `/orc-quick`:
|
|
78
|
+
|
|
79
|
+
1. The user picks the executor at the `/orc-quick` dispatch gate (that lane's
|
|
80
|
+
`dispatch-gate.md` reference, "Writing code") — nothing spawns without a yes.
|
|
81
|
+
2. The slice carries `orc rules slice --lane orc-fix --json` (below).
|
|
82
|
+
3. The smoke gate (`../_shared/smoke-gate.md`): red blocks the record.
|
|
83
|
+
4. F2 with `outcome: "addressed"` and `via: "orc-fix"`.
|
|
84
|
+
|
|
85
|
+
The user can also say "record only" — then F2 at once.
|
|
86
|
+
|
|
87
|
+
## Config
|
|
88
|
+
|
|
89
|
+
`orc lane config orc-fix --json`, obey `effective`. Never merge
|
|
90
|
+
`.claude/orc.config.yaml` yourself (`../_shared/config-precedence.md`).
|
|
91
|
+
|
|
92
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
93
|
+
|
|
94
|
+
`orc rules slice --lane orc-fix --json` is the ONLY assembler. It rides only in
|
|
95
|
+
an executor slice of the no-run fix.
|
|
96
|
+
|
|
97
|
+
## Habits and trace
|
|
98
|
+
|
|
99
|
+
**Habits:** the host run had `habits{}` in its config answer → read
|
|
100
|
+
`../_shared/habits.md`; its next packet takes the `ASK` for `fix.f1.class`
|
|
101
|
+
(class `never`: a fact is never a habit). No `habits{}` → ignore `(H …)`.
|
|
102
|
+
|
|
103
|
+
**Trace:** the CLI writes the `FIX` line itself. You do not narrate it and you
|
|
104
|
+
do not repeat it. With no run open, nothing is traced — the record is the
|
|
105
|
+
observation.
|
|
106
|
+
|
|
107
|
+
## Waiting mid-run (`/orc-wait`)
|
|
108
|
+
|
|
109
|
+
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
110
|
+
Checkpoint **none** · safe point **after the record is written**. Nothing here to checkpoint, so all three modes behave identically — say so rather than asking.
|
|
@@ -93,7 +93,7 @@ Docs-only → gate N/A, say so. `orc run inflight` FIRST — exit 2 REFUSES, bec
|
|
|
93
93
|
(`return-validation.md` §0). **A `risk: high` row adds ONE option,
|
|
94
94
|
never a phase** (H `mini.phase-m.risk-high`): an exported symbol with fan-in 3+ that no test reaches adds one
|
|
95
95
|
option to the EXISTING end-of-run batch (mock example · test authoring · ship)
|
|
96
|
-
— *a. dispatch `orc-reviewer-opus-5-
|
|
96
|
+
— *a. dispatch `orc-reviewer-opus-5-low` with `../_shared/review-slice.md`* (H `any.ship.review-before-push`) *(P0/P1 block the commit
|
|
97
97
|
offer once) · b. write a test in Phase T · c. ship anyway*. No new user turn;
|
|
98
98
|
mini still skips full review.
|
|
99
99
|
|
|
@@ -154,9 +154,9 @@ Models pinned in `.claude/agents/`; look one up here, never reconstruct a name (
|
|
|
154
154
|
|
|
155
155
|
| Role | Agent (dispatch this) | Model / effort | When `opus5_only` |
|
|
156
156
|
|------|-----------------------|----------------|-------------------|
|
|
157
|
-
| mini analysis (docs only) | `orc-analyze-mini-sonnet-5-high` | claude-sonnet-5 / high | `orc-analyze-mini-opus-5-med` |
|
|
158
|
-
| mini planning | `orc-planner-mini-sonnet-5-high` | claude-sonnet-5 / high | `orc-planner-mini-opus-5-med` |
|
|
159
|
-
| mini execution | `orc-executor-sonnet-5-high` | claude-sonnet-5 / high | `orc-executor-opus-5-low` |
|
|
157
|
+
| mini analysis (docs only) | `orc-analyze-mini-sonnet-5-high` | claude-sonnet-5-5 / high | `orc-analyze-mini-opus-5-med` |
|
|
158
|
+
| mini planning | `orc-planner-mini-sonnet-5-high` | claude-sonnet-5-5 / high | `orc-planner-mini-opus-5-med` |
|
|
159
|
+
| mini execution | `orc-executor-sonnet-5-high` | claude-sonnet-5-5 / high | `orc-executor-opus-5-low` |
|
|
160
160
|
| test authoring (opt-in) | `orc-test-author-opus-5-med` | claude-opus-5-5 / medium | unchanged |
|
|
161
161
|
|
|
162
162
|
## Lane contract (`../_shared/lane-contract.md` — read it ONLY when a call exits ≠ 0)
|
|
@@ -31,10 +31,10 @@ O: GATE complexity :: complexity: mini-ok — 2 files · confident callers 1 in
|
|
|
31
31
|
|
|
32
32
|
## Phase 3 — Execute (ONE subagent)
|
|
33
33
|
O: graph: --for-slice card (2 files) · wiki: 1 path (pointer, body never read here)
|
|
34
|
-
O: → claude-sonnet-5 / high :: DISPATCH orc-executor-sonnet-5-high :: add --json flag
|
|
34
|
+
O: → claude-sonnet-5-5 / high :: DISPATCH orc-executor-sonnet-5-high :: add --json flag
|
|
35
35
|
[executor edits cli/report.py + updates tests, returns actual_files + actual_model
|
|
36
36
|
+ evidence {`pytest tests/test_report.py`, exit 0, tail quoted} + empty unmet[]]
|
|
37
|
-
O: VERIFY actual=claude-sonnet-5/high ✅ MATCH · evidence present ✓
|
|
37
|
+
O: VERIFY actual=claude-sonnet-5-5/high ✅ MATCH · evidence present ✓
|
|
38
38
|
|
|
39
39
|
## Phase M — Smoke gate (build + test; blocks ship on red)
|
|
40
40
|
O: GRAPH-CHANGES → tests reached 1 file (call 1)
|
|
@@ -60,5 +60,7 @@ O: Self-QA plan: test-generator/report-json-flag/TEST-PLAN.md (committed on ship
|
|
|
60
60
|
O: Current branch: feat/report-json. Commit? Push? PR?
|
|
61
61
|
U: commit
|
|
62
62
|
O: knowledge: wiki 1 page offered · used tests/test_report.py note · graph used 1 target
|
|
63
|
+
(risk none → no review option, so no `orc gotcha observe` call. A risk-high run
|
|
64
|
+
that took option a records each finding with it, `run` included.)
|
|
63
65
|
O: [commits] Done. Usage: dispatch log below + run /usage for your limits.
|
|
64
66
|
(Switch to full flow any time — the run folder + checkpoint are shared.)
|
|
@@ -223,7 +223,7 @@ with a range; never restate it as a saving.
|
|
|
223
223
|
Append entry N to `orc-quick/<slug>/quick-context.md`
|
|
224
224
|
(`references/context-doc.md`, only `## Entry shape` or `## A read-only entry`).
|
|
225
225
|
Every request gets an entry — a read-only dig too, where the answer IS the
|
|
226
|
-
result.
|
|
226
|
+
result. A code-writing entry
|
|
227
227
|
ends with the card (`../_shared/phases/summary.md` §End-of-run card).
|
|
228
228
|
|
|
229
229
|
### 3.4 If the user stops while it is red
|
|
@@ -245,7 +245,7 @@ committed, and print the card's `undo` row as the undo.
|
|
|
245
245
|
or merge — even when the user said "push". A `repro: none` entry shows the
|
|
246
246
|
**not reproduced** line here.
|
|
247
247
|
|
|
248
|
-
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 →
|
|
249
249
|
**Q1** as entry N+1, and Q0 never runs again; the user is done → emit `OUTCOME`
|
|
250
250
|
+ `FINISH`, send the last trace packet, and only THEN delete `log_dir/.current`.
|
|
251
251
|
|
|
@@ -12,7 +12,7 @@ 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
|
|
|
@@ -20,7 +20,8 @@ what is about to be spent, before it is spent.
|
|
|
20
20
|
`../../_shared/review-slice.md` (`--lane orc-quick`): the §1 free check first,
|
|
21
21
|
then the §2 fields, and its §3 after-filter on the return. No disprove pass here.
|
|
22
22
|
A finding the user calls "not a problem here" is a `disputed` outcome; record
|
|
23
|
-
each outcome
|
|
23
|
+
each outcome with `orc gotcha observe` (one per finding, with `run`) and the
|
|
24
|
+
`FINDING-OUTCOME` line (`../../_shared/gotchas.md` §10).
|
|
24
25
|
|
|
25
26
|
### Writing code
|
|
26
27
|
|
|
@@ -176,8 +176,10 @@ orc gotcha import sarif <file> --json
|
|
|
176
176
|
- Sonar exit 5 → the token is missing or refused. Tell the user to set
|
|
177
177
|
`SONAR_TOKEN` in the environment. Never ask for the token in the chat. A saved
|
|
178
178
|
answer also works: `--file <saved.json>`.
|
|
179
|
-
- The import records each issue as an observation. After a green fix,
|
|
180
|
-
|
|
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`.
|
|
181
183
|
- **Never change an issue's status on the Sonar server.** ORC reads external
|
|
182
184
|
systems. It does not write to them — the GitHub boundary, extended.
|
|
183
185
|
|
|
@@ -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`).
|
|
@@ -45,31 +45,31 @@ 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
|
|
72
|
+
C: Spawning orc-retro-sonnet-5-high → claude-sonnet-5-5 / high
|
|
73
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.)
|
|
@@ -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)
|