@azure-id/orc 1.9.0 → 1.9.2
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 +202 -0
- package/README-id.md +57 -59
- package/README.md +53 -54
- package/bin/build-agents.js +109 -109
- package/bin/cli.js +262 -58
- package/bin/graph-audit.js +235 -0
- package/bin/graph-extract.js +308 -3
- package/bin/graph-gain.js +23 -3
- package/bin/graph-map.js +9 -1
- package/bin/graph-query.js +152 -10
- package/bin/graph-shard.js +6 -1
- package/bin/graph-signals.js +287 -4
- package/bin/graph.js +717 -658
- package/bin/onboarding-content.js +4 -4
- package/bin/pricing.json +207 -200
- package/bin/verify-contracts.js +117 -2
- package/bin/verify-package.js +11 -7
- package/bin/webui/css/04-motion.css +162 -152
- package/bin/webui/css/panels/knowledge.css +563 -116
- package/bin/webui/fixtures/extra.js +2036 -2036
- package/bin/webui/fixtures/hookui.js +5 -5
- package/bin/webui/fixtures/knowledge.js +21 -4
- package/bin/webui/fixtures/settings.js +305 -305
- package/bin/webui/i18n/en/knowledge.json +122 -4
- package/bin/webui/i18n/id/knowledge.json +122 -4
- package/bin/webui/js/panels/knowledge.js +573 -9
- package/bin/webui/js/panels/overview.js +13 -4
- package/mock-run/context-combiner.md +100 -100
- package/mock-run/orc-budget.md +534 -534
- package/mock-run/orc-challenge-council.md +262 -262
- package/mock-run/orc-ultra.md +103 -103
- package/package.json +1 -1
- package/templates/agents/MODEL-MAPPING.md +43 -43
- package/templates/agents/orc-advisor-opus-5-xhigh.md +56 -56
- package/templates/agents/orc-analyze-mini-opus-5-med.md +60 -60
- package/templates/agents/orc-analyze-mini-sonnet-5-high.md +58 -58
- package/templates/agents/orc-challenge-advisor-opus-5-med.md +75 -75
- package/templates/agents/orc-challenge-contrarian-opus-5-high.md +110 -110
- package/templates/agents/orc-challenge-executor-opus-5-med.md +114 -114
- package/templates/agents/orc-challenge-expansionist-opus-5-med.md +112 -112
- package/templates/agents/orc-challenge-judge-opus-5-high.md +132 -132
- package/templates/agents/orc-challenge-outsider-opus-5-low.md +109 -109
- package/templates/agents/orc-challenge-principles-opus-5-high.md +109 -109
- package/templates/agents/orc-challenge-reader-opus-5-low.md +90 -90
- package/templates/agents/orc-claude-writer-opus-5-med.md +55 -55
- package/templates/agents/orc-context-combiner-opus-5-high.md +88 -88
- package/templates/agents/orc-doc-checker-opus-5-low.md +108 -108
- package/templates/agents/orc-doc-writer-opus-5-med.md +134 -134
- package/templates/agents/orc-executor-haiku-4-5.md +2 -1
- package/templates/agents/orc-executor-opus-4-7-high.md +2 -1
- package/templates/agents/orc-executor-opus-4-7-med.md +2 -1
- package/templates/agents/orc-executor-opus-4-8-high.md +2 -1
- package/templates/agents/orc-executor-opus-5-high.md +4 -3
- package/templates/agents/orc-executor-opus-5-low.md +4 -3
- package/templates/agents/orc-executor-opus-5-med.md +4 -3
- package/templates/agents/orc-executor-sonnet-4-6-high.md +2 -1
- package/templates/agents/orc-executor-sonnet-4-6-med.md +2 -1
- package/templates/agents/orc-executor-sonnet-5-high.md +2 -1
- package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +1 -1
- package/templates/agents/orc-judge-opus-5-xhigh.md +85 -85
- package/templates/agents/orc-learn-writer-opus-5-low.md +73 -73
- package/templates/agents/orc-pattern-codifier-opus-5-med.md +65 -65
- package/templates/agents/orc-planner-mini-opus-5-med.md +4 -4
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +1 -1
- package/templates/agents/orc-planner-opus-5-med.md +160 -160
- package/templates/agents/orc-recon-opus-5-low.md +18 -8
- package/templates/agents/orc-recon-sonnet-4-6-med.md +15 -5
- package/templates/agents/orc-retro-opus-5-med.md +3 -3
- package/templates/agents/orc-reviewer-opus-5-med.md +60 -60
- package/templates/agents/orc-scout-opus-5-low.md +40 -40
- package/templates/agents/orc-system-analyst-opus-5-high.md +120 -120
- package/templates/agents/orc-test-author-opus-5-med.md +71 -71
- package/templates/agents/orc-test-designer-opus-5-high.md +158 -158
- package/templates/agents/orc-test-interpreter-opus-5-low.md +130 -130
- package/templates/agents/orc-verifier-opus-5-med.md +69 -69
- package/templates/agents/orc-wiki-scanner-opus-5-med.md +81 -81
- package/templates/commands/orc-ultra.md +17 -17
- package/templates/commands/orc-verify.md +11 -11
- package/templates/hooks/README.md +13 -3
- package/templates/hooks/orc-effort-guard.js +178 -178
- package/templates/hooks/orc-graph-hook.js +53 -7
- package/templates/hooks/orc-statusline.js +6 -6
- package/templates/skills/_shared/code-graph.md +57 -18
- package/templates/skills/_shared/config-precedence.md +198 -198
- package/templates/skills/_shared/extra-dispatch.md +1346 -1346
- package/templates/skills/_shared/opus5-only.md +8 -8
- package/templates/skills/_shared/phases/analyst-gates.md +136 -136
- package/templates/skills/_shared/phases/execution.md +4 -4
- package/templates/skills/_shared/phases/planning.md +3 -3
- package/templates/skills/_shared/phases/preflight.md +1 -1
- package/templates/skills/_shared/phases/review.md +4 -2
- package/templates/skills/_shared/phases/ship.md +1 -1
- package/templates/skills/_shared/phases/trace.md +3 -2
- package/templates/skills/_shared/read-ladder.md +14 -1
- package/templates/skills/_shared/return-validation.md +1 -1
- package/templates/skills/context-combiner/SKILL.md +1 -1
- package/templates/skills/context-combiner/schemas/combined-report.md +78 -78
- package/templates/skills/orc/README.md +2 -2
- package/templates/skills/orc/SKILL.md +8 -8
- package/templates/skills/orc/config.md +9 -9
- package/templates/skills/orc/examples/full-run-mock.md +73 -73
- package/templates/skills/orc/references/effort-and-mode.md +222 -222
- package/templates/skills/orc/references/preflight-report.md +2 -2
- package/templates/skills/orc/references/ultra-mode.md +3 -3
- package/templates/skills/orc/subskills/orc-planner/SKILL.md +2 -2
- package/templates/skills/orc/subskills/orc-planner-mini/SKILL.md +121 -121
- package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +76 -76
- package/templates/skills/orc/subskills/orc-testgen/SKILL.md +45 -45
- package/templates/skills/orc-analyze/SKILL.md +2 -2
- package/templates/skills/orc-analyze/examples/analyze-mock.md +42 -42
- package/templates/skills/orc-analyze/schemas/report-audit.md +83 -83
- package/templates/skills/orc-analyze/schemas/report-prose.md +63 -63
- package/templates/skills/orc-analyze/schemas/report-requirement.md +78 -78
- package/templates/skills/orc-challenge/README.md +142 -142
- package/templates/skills/orc-challenge/examples/council-full-roster.md +273 -273
- package/templates/skills/orc-challenge/references/council.md +315 -315
- package/templates/skills/orc-challenge/references/intake.md +171 -171
- package/templates/skills/orc-claude/SKILL.md +14 -14
- package/templates/skills/orc-diy/README.md +143 -143
- package/templates/skills/orc-diy/references/flow-schema.md +1 -1
- package/templates/skills/orc-doc/README.md +229 -229
- package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +325 -325
- package/templates/skills/orc-doc/references/chunking.md +527 -527
- package/templates/skills/orc-fast/SKILL.md +4 -4
- package/templates/skills/orc-learn/SKILL.md +14 -14
- package/templates/skills/orc-learn/examples/learn-run-mock.md +61 -61
- package/templates/skills/orc-mini/SKILL.md +16 -20
- package/templates/skills/orc-mini/references/complexity.md +25 -11
- package/templates/skills/orc-quick/SKILL.md +12 -13
- package/templates/skills/orc-quick/references/gh-mode.md +1 -1
- package/templates/skills/orc-quick/references/look.md +5 -5
- package/templates/skills/orc-verify/SKILL.md +15 -15
- package/templates/skills/orc-verify/examples/verify-mock.md +33 -33
- package/templates/skills/orc-wiki/references/extra.md +1 -1
|
@@ -74,9 +74,9 @@ hand off to orc-mini via the fallback contract below. Never stop the chat.
|
|
|
74
74
|
|
|
75
75
|
**e. Code graph cache — NOT a gate, and never skipped** (`../_shared/code-graph.md` §0). Every call carries
|
|
76
76
|
`--if-enabled`: exit 3 = off → print `graph: off` once, make no other graph call. Print each JSON `line`; put
|
|
77
|
-
each `trace` in the next packet VERBATIM. (1) **Here:** `orc graph status --if-enabled --heal --json` builds or
|
|
78
|
-
updates the cache itself. (2) **F2 slice:** ONE `orc graph ctx <declared files> --if-enabled --json` → its `card`
|
|
79
|
-
is the `graph` block; the return carries `graph_used`. (3) **F3 GREEN:** `orc graph update --if-enabled --json`,
|
|
77
|
+
each `trace` in the next packet VERBATIM. (1) **Here:** `orc graph status --if-enabled --heal --json --brief` builds or
|
|
78
|
+
updates the cache itself. (2) **F2 slice:** ONE `orc graph ctx <declared files> --if-enabled --json --brief` → its `card`
|
|
79
|
+
is the `graph` block; the return carries `graph_used`. (3) **F3 GREEN:** `orc graph update --if-enabled --json --brief`,
|
|
80
80
|
then one `orc graph notes pending` batch — the next run starts from this cache. A missing graph never falls back.
|
|
81
81
|
|
|
82
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.
|
|
@@ -99,7 +99,7 @@ migration) and write the intent-spec + a minimal checkpoint.
|
|
|
99
99
|
## Phase F2 — Slice build + dispatch (ONE executor)
|
|
100
100
|
|
|
101
101
|
Build one slice for `orc-executor-sonnet-4-6-high` (dispatch BY NAME; model
|
|
102
|
-
pinned in the agent file). **Under `opus5_only` it is `orc-executor-opus-5-low`** — forced, and while that mode is on this lane needs an Opus 5 main session, so the "runs fine at Sonnet medium" premise applies only with it off (`../_shared/opus5-only.md`).
|
|
102
|
+
pinned in the agent file). **Under `opus5_only` it is `orc-executor-opus-5-low`** — forced, and while that mode is on this lane needs an Opus 5.5 main session, so the "runs fine at Sonnet medium" premise applies only with it off (`../_shared/opus5-only.md`).
|
|
103
103
|
|
|
104
104
|
**Extra (`extra_enabled`, `../_shared/extra-dispatch.md`):** the same slice may run off Claude. **This lane has no score at all, so it holds a POSITION, not a band:** resolve `orc extra resolve --slot fast-executor --json` (set with `orc extra role set fast-executor <profile>/<model>`). No row on that slot = Claude, and that is an answer, not a gap. The `extra:` line joins the F0 preflight (P0, printed whenever the gate is on) and NAMES the agent it displaces — `orc-executor-sonnet-4-6-high`; dispatch through `orc extra dispatch --task <file> --json` with `slot: "fast-executor"` and **no `score`** (both is refused by name); validate with `return-validation.md` **§2b, not §2**; a failure runs `orc extra reconcile <task_id>` FIRST — a worktree that moved is RESUMED, never re-done — then falls back to that same pinned agent BY NAME, announced. Extra is orthogonal to the knowledge gate — a fresh wiki and a cached pattern are still required, and a foreign worker gets the same pointers-not-content slice.
|
|
105
105
|
|
|
@@ -23,7 +23,7 @@ it — the human-onboarding lane. It is NOT the wiki: the wiki grounds the
|
|
|
23
23
|
|
|
24
24
|
**Dispatch, don't do.** Whatever model this chat runs on, the skill only picks
|
|
25
25
|
the topic/mode and spawns `orc-learn-writer-opus-5-low` (the pinned
|
|
26
|
-
engine) — the deepening scan + all writes run at Opus 5 low regardless of
|
|
26
|
+
engine) — the deepening scan + all writes run at Opus 5.5 low regardless of
|
|
27
27
|
the caller's tier. The skill's only self-writes are the behavior-trace
|
|
28
28
|
markers around the spawn. Interactivity is DELIBERATELY minimal but non-zero
|
|
29
29
|
(unlike orc-claude): exactly one question per mode — "which feature?" (INIT)
|
|
@@ -173,16 +173,16 @@ exit code, and never re-derive a state word — the CLI's state words are the on
|
|
|
173
173
|
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
174
174
|
a failure**. A call the answer does not name is a call this lane does not make.
|
|
175
175
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
176
|
-
command you are about to run, out loud, before running it.
|
|
177
|
-
|
|
178
|
-
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
179
|
-
|
|
180
|
-
`orc rules slice --lane orc-learn --json` is the ONLY assembler; never build
|
|
181
|
-
the card here. It rides under the house rules and above the task —
|
|
182
|
-
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
183
|
-
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
184
|
-
never a silent choice) and `rules_overridden[]`.
|
|
185
|
-
## Waiting mid-run (`/orc-wait`)
|
|
186
|
-
|
|
187
|
-
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
188
|
-
Checkpoint **none** · safe point **single dispatch**. 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.
|
|
176
|
+
command you are about to run, out loud, before running it.
|
|
177
|
+
|
|
178
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
179
|
+
|
|
180
|
+
`orc rules slice --lane orc-learn --json` is the ONLY assembler; never build
|
|
181
|
+
the card here. It rides under the house rules and above the task —
|
|
182
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
183
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
184
|
+
never a silent choice) and `rules_overridden[]`.
|
|
185
|
+
## Waiting mid-run (`/orc-wait`)
|
|
186
|
+
|
|
187
|
+
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
188
|
+
Checkpoint **none** · safe point **single dispatch**. 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.
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
# Worked example — orc-learn runs (mock; orient only, never execute from this)
|
|
2
|
-
|
|
3
|
-
## Run 1 — INIT with a fresh wiki
|
|
4
|
-
|
|
5
|
-
U: /orc-learn
|
|
6
|
-
C: Repo root found. Reads wiki/INDEX.md + the wiki manifest → tier FRESH.
|
|
7
|
-
Presents the wiki's feature areas; user picks "orders". Slug: `orders`.
|
|
8
|
-
Spawns orc-learn-writer-opus-5-low with mode=init, covers from the
|
|
9
|
-
orders doc's globs (the skill never writes the docs itself).
|
|
10
|
-
W: Reads the orders wiki doc for boundary + contracts, re-verifies against
|
|
11
|
-
code. Deepens: maps 14 functions (file:line), traces one real flow —
|
|
12
|
-
POST /orders → validate (routes/orders.ts:31) → price (pricing.ts:88) →
|
|
13
|
-
persist (repo/orders.ts:15) → emit event → 201. Harvests 3 invariants,
|
|
14
|
-
4 why-this-way findings, 2 couplings.
|
|
15
|
-
W: Writes learning-docs/orders/knowledge.md (fingerprint header:
|
|
16
|
-
source_commit=HEAD, 9 hashed files; functions & flow; contracts; verify
|
|
17
|
-
commands from the wiki manifest's `commands`) and learning.md (mental
|
|
18
|
-
model, walkthrough of the SAME flow, 3 change recipes, gotchas, FAQ ×6).
|
|
19
|
-
Derives learning-docs/INDEX.md. Returns functions_mapped=14,
|
|
20
|
-
flow_traced=true, faq_count=6, actual_model=claude-opus-5,
|
|
21
|
-
actual_effort=low.
|
|
22
|
-
C: Relays the report. `learning-docs/` not in .gitignore → offers the line;
|
|
23
|
-
user accepts → appended.
|
|
24
|
-
|
|
25
|
-
## Run 2 — INIT, no wiki
|
|
26
|
-
|
|
27
|
-
U: /orc-learn focus=src/billing
|
|
28
|
-
C: No wiki/ → tier none (traced all the same). Asks only to confirm the
|
|
29
|
-
feature ("billing", from the focus pointer). Writer does a TARGETED scan
|
|
30
|
-
of src/billing/** only — never repo-wide — then deepens and writes the
|
|
31
|
-
pair as above.
|
|
32
|
-
|
|
33
|
-
## Run 3 — REFRESH, multi-select
|
|
34
|
-
|
|
35
|
-
U: /orc-learn refresh
|
|
36
|
-
C: Reads each learning-docs/*/knowledge.md header; computes tiers on read:
|
|
37
|
-
orders STALE (drift hit pricing.ts), billing FRESH. Shows BOTH with
|
|
38
|
-
flags; user picks orders only. One writer dispatch regenerates the orders
|
|
39
|
-
pair (new source_commit, recomputed hashes, changelog line), re-derives
|
|
40
|
-
INDEX.md. billing: byte-untouched.
|
|
41
|
-
|
|
42
|
-
## Run 4 — behavior trace (permanent, always on)
|
|
43
|
-
|
|
44
|
-
The skill writes the run pointer (`run-learn-<slug>-<DDMMYY>-<HHMMSS>.txt` into
|
|
45
|
-
`log_dir`) before the spawn, records these events as they happen, and — as a
|
|
46
|
-
single-dispatch lane — dispatches the trace writer ONCE at run end to append
|
|
47
|
-
them (`SPAWN`/`RETURN` come from the `orc-trace.js` hook as they occur):
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
[170726 10:02:01.050] writer WIKI-CONSULT tier=FRESH :: topic-pick
|
|
51
|
-
[170726 10:02:44.310] writer DISPATCH orc-learn-writer :: init orders expect=opus-5/low
|
|
52
|
-
[170726 10:02:44.420] hook SPAWN orc-learn-writer-opus-5-low
|
|
53
|
-
[170726 10:06:12.900] hook RETURN
|
|
54
|
-
[170726 10:06:13.010] writer VERIFY writer actual=claude-opus-5/low ✅ MATCH
|
|
55
|
-
[170726 10:06:13.120] writer FINISH :: init orders
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
Then the writer packet returns and the run pointer is deleted (in that order).
|
|
59
|
-
REFRESH traces one DISPATCH/VERIFY pair per
|
|
60
|
-
selected feature, ending `FINISH :: refresh <n> features`. No phase/score/
|
|
61
|
-
finding/verdict markers — this lane runs none of those phases.
|
|
1
|
+
# Worked example — orc-learn runs (mock; orient only, never execute from this)
|
|
2
|
+
|
|
3
|
+
## Run 1 — INIT with a fresh wiki
|
|
4
|
+
|
|
5
|
+
U: /orc-learn
|
|
6
|
+
C: Repo root found. Reads wiki/INDEX.md + the wiki manifest → tier FRESH.
|
|
7
|
+
Presents the wiki's feature areas; user picks "orders". Slug: `orders`.
|
|
8
|
+
Spawns orc-learn-writer-opus-5-low with mode=init, covers from the
|
|
9
|
+
orders doc's globs (the skill never writes the docs itself).
|
|
10
|
+
W: Reads the orders wiki doc for boundary + contracts, re-verifies against
|
|
11
|
+
code. Deepens: maps 14 functions (file:line), traces one real flow —
|
|
12
|
+
POST /orders → validate (routes/orders.ts:31) → price (pricing.ts:88) →
|
|
13
|
+
persist (repo/orders.ts:15) → emit event → 201. Harvests 3 invariants,
|
|
14
|
+
4 why-this-way findings, 2 couplings.
|
|
15
|
+
W: Writes learning-docs/orders/knowledge.md (fingerprint header:
|
|
16
|
+
source_commit=HEAD, 9 hashed files; functions & flow; contracts; verify
|
|
17
|
+
commands from the wiki manifest's `commands`) and learning.md (mental
|
|
18
|
+
model, walkthrough of the SAME flow, 3 change recipes, gotchas, FAQ ×6).
|
|
19
|
+
Derives learning-docs/INDEX.md. Returns functions_mapped=14,
|
|
20
|
+
flow_traced=true, faq_count=6, actual_model=claude-opus-5-5,
|
|
21
|
+
actual_effort=low.
|
|
22
|
+
C: Relays the report. `learning-docs/` not in .gitignore → offers the line;
|
|
23
|
+
user accepts → appended.
|
|
24
|
+
|
|
25
|
+
## Run 2 — INIT, no wiki
|
|
26
|
+
|
|
27
|
+
U: /orc-learn focus=src/billing
|
|
28
|
+
C: No wiki/ → tier none (traced all the same). Asks only to confirm the
|
|
29
|
+
feature ("billing", from the focus pointer). Writer does a TARGETED scan
|
|
30
|
+
of src/billing/** only — never repo-wide — then deepens and writes the
|
|
31
|
+
pair as above.
|
|
32
|
+
|
|
33
|
+
## Run 3 — REFRESH, multi-select
|
|
34
|
+
|
|
35
|
+
U: /orc-learn refresh
|
|
36
|
+
C: Reads each learning-docs/*/knowledge.md header; computes tiers on read:
|
|
37
|
+
orders STALE (drift hit pricing.ts), billing FRESH. Shows BOTH with
|
|
38
|
+
flags; user picks orders only. One writer dispatch regenerates the orders
|
|
39
|
+
pair (new source_commit, recomputed hashes, changelog line), re-derives
|
|
40
|
+
INDEX.md. billing: byte-untouched.
|
|
41
|
+
|
|
42
|
+
## Run 4 — behavior trace (permanent, always on)
|
|
43
|
+
|
|
44
|
+
The skill writes the run pointer (`run-learn-<slug>-<DDMMYY>-<HHMMSS>.txt` into
|
|
45
|
+
`log_dir`) before the spawn, records these events as they happen, and — as a
|
|
46
|
+
single-dispatch lane — dispatches the trace writer ONCE at run end to append
|
|
47
|
+
them (`SPAWN`/`RETURN` come from the `orc-trace.js` hook as they occur):
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
[170726 10:02:01.050] writer WIKI-CONSULT tier=FRESH :: topic-pick
|
|
51
|
+
[170726 10:02:44.310] writer DISPATCH orc-learn-writer :: init orders expect=opus-5/low
|
|
52
|
+
[170726 10:02:44.420] hook SPAWN orc-learn-writer-opus-5-low
|
|
53
|
+
[170726 10:06:12.900] hook RETURN
|
|
54
|
+
[170726 10:06:13.010] writer VERIFY writer actual=claude-opus-5-5/low ✅ MATCH
|
|
55
|
+
[170726 10:06:13.120] writer FINISH :: init orders
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Then the writer packet returns and the run pointer is deleted (in that order).
|
|
59
|
+
REFRESH traces one DISPATCH/VERIFY pair per
|
|
60
|
+
selected feature, ending `FINISH :: refresh <n> features`. No phase/score/
|
|
61
|
+
finding/verdict markers — this lane runs none of those phases.
|
|
@@ -16,7 +16,7 @@ below. Load its references and schemas by path — the HOT-PATH essentials
|
|
|
16
16
|
(dispatch names, return-contract fields, artifact path) are inlined here so
|
|
17
17
|
nothing is reconstructed from "full minus deltas."
|
|
18
18
|
|
|
19
|
-
Run as **Opus 4.8 high**, or Opus 5 / Fable 5 at medium+ (as full; never downgrade).
|
|
19
|
+
Run as **Opus 4.8 high**, or Opus 5.5 / Fable 5 at medium+ (as full; never downgrade).
|
|
20
20
|
**You never implement — you spawn.** The one exception is the **smoke gate**: a
|
|
21
21
|
read-only build+test run, not implementation — you still never write code.
|
|
22
22
|
**Worked example** (orient only — never execute from it): `examples/mini-run-mock.md`.
|
|
@@ -73,12 +73,12 @@ returned `gotcha_recorded` YOURSELF. `.claude/orc/gotchas.md` and the mechanics:
|
|
|
73
73
|
## Code graph cache — consult, build, use, update (`../_shared/code-graph.md` §0)
|
|
74
74
|
|
|
75
75
|
Never skipped. Every call carries `--if-enabled`: exit 3 = off → print `graph: off` once, make no other graph call. Print each JSON `line` in chat; put each `trace` in the next packet VERBATIM.
|
|
76
|
-
1. **Preflight, with the probes, before the planner:** `orc graph status --if-enabled --heal --json` — it builds or updates the cache itself.
|
|
77
|
-
2. **Phase 0, before the tiered round:** `orc graph map --focus "<3–6 words from the request>" --budget 800 --if-enabled --json`. Its ranked files pre-fill Q4's `➡️` recommendation. Never ask what the map already answered.
|
|
78
|
-
3. **Phase 1,
|
|
79
|
-
4. **Phase 3 slice:** ONE `orc graph ctx <declared_files> --for-slice --if-enabled --json` → its `card` is the `graph` block, the OUTSIDE view. No card when the change stays inside one named file with no signature change (`../_shared/code-graph.md` §7). The return carries `graph_used`.
|
|
80
|
-
5. **Phase M, before the suite:** `orc graph changes --if-enabled --json`
|
|
81
|
-
6. **Phase M GREEN:** `orc graph update --notes-pending --files <actual_files> --if-enabled --json` — ONE call for the update AND the notes batch (§6) — then `orc graph gain --run <this run> --if-enabled --json`, `line` copied VERBATIM into the ship summary. It is an estimate with a range; never restate it as a saving.
|
|
76
|
+
1. **Preflight, with the probes, before the planner:** `orc graph status --if-enabled --heal --json --brief` — it builds or updates the cache itself.
|
|
77
|
+
2. **Phase 0, before the tiered round:** `orc graph map --focus "<3–6 words from the request>" --budget 800 --if-enabled --json --brief`. Its ranked files pre-fill Q4's `➡️` recommendation. Never ask what the map already answered.
|
|
78
|
+
3. **Phase 1, ONE call:** `orc graph impact <declared_files> --complexity --risk=<facets.risk[] as class[@file:line],…> --if-enabled --json --brief`. Its `complexity.line` IS the complexity line — print it VERBATIM (`risk not given` → append the classes yourself); its `facts{}` IS `graph_facts` — paste it, then set `facts.map` to the `map --focus` card you already hold. No `complexity` in the answer (an older CLI) → count as `references/complexity.md` §2 says.
|
|
79
|
+
4. **Phase 3 slice:** ONE `orc graph ctx <declared_files> --for-slice --if-enabled --json --brief` → its `card` is the `graph` block, the OUTSIDE view. No card when the change stays inside one named file with no signature change (`../_shared/code-graph.md` §7). The return carries `graph_used`.
|
|
80
|
+
5. **Phase M, before the suite:** `orc graph changes --files=<actual_files> --if-enabled --json --brief` — print its `tests_line`, run the files its `tests[]` names first, then the suite, then its `blast_line` VERBATIM. The CLI attaches every `risk` word's `why`.
|
|
81
|
+
6. **Phase M GREEN:** `orc graph update --notes-pending --files <actual_files> --if-enabled --json --brief` — ONE call for the update AND the notes batch (§6) — then `orc graph gain --run <this run> --if-enabled --json --brief`, `line` copied VERBATIM into the ship summary. It is an estimate with a range; never restate it as a saving.
|
|
82
82
|
|
|
83
83
|
## Phase M — Smoke gate (build + test; blocks ship on red)
|
|
84
84
|
|
|
@@ -134,17 +134,13 @@ trace. `OUTCOME … band=mini` per task.
|
|
|
134
134
|
|
|
135
135
|
## Complexity read (replaces the scoring table) — `references/complexity.md`
|
|
136
136
|
|
|
137
|
-
ONE line before dispatch, carrying its own NUMBERS
|
|
138
|
-
|
|
139
|
-
|
|
137
|
+
ONE line before dispatch, carrying its own NUMBERS. **The CLI computes it** —
|
|
138
|
+
`complexity.line` from the Phase 1 call, printed VERBATIM. The four thresholds,
|
|
139
|
+
the `(graph off)` form and why each number is that number: `references/complexity.md`.
|
|
140
140
|
`complexity: mini-ok — 3 files · confident callers 4 in 2 files · tests reach 2 · risk none · cochange none`
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
as `maybe <n>` and never trip one alone. Graph off → the `(graph off)` form,
|
|
145
|
-
from `facets.risk[]` alone; never invent a number. It is an OFFER: *1. switch to
|
|
146
|
-
/orc (recommended — <the reason>) · 2. continue in mini*. Continuing writes the
|
|
147
|
-
NUMBERS into the decision log. Trace: `GATE complexity :: <the line>`.
|
|
141
|
+
It is an OFFER: *1. switch to /orc (recommended — <the reason>) · 2. continue in
|
|
142
|
+
mini*. Continuing writes the NUMBERS into the decision log, so `/orc-retro` can
|
|
143
|
+
move a threshold instead of anyone arguing about it. Trace: `GATE complexity :: <the line>`.
|
|
148
144
|
|
|
149
145
|
## Fallback intake (arriving from orc-fast)
|
|
150
146
|
|
|
@@ -162,7 +158,7 @@ mini skipped. Record the switch in the decision log.
|
|
|
162
158
|
|
|
163
159
|
## Dispatch via named agents (canonical name-map — dispatch BY these names)
|
|
164
160
|
|
|
165
|
-
Models pinned in `.claude/agents/`; look one up here, never reconstruct a name (agent = skill-name + model-effort suffix). See `.claude/agents/MODEL-MAPPING.md`. `opus5_only: true` FORCES the right column and needs an Opus 5 main session — mini's cheap-lane premise is off while it is on (`../_shared/opus5-only.md`).
|
|
161
|
+
Models pinned in `.claude/agents/`; look one up here, never reconstruct a name (agent = skill-name + model-effort suffix). See `.claude/agents/MODEL-MAPPING.md`. `opus5_only: true` FORCES the right column and needs an Opus 5.5 main session — mini's cheap-lane premise is off while it is on (`../_shared/opus5-only.md`).
|
|
166
162
|
|
|
167
163
|
**Extra (`extra_enabled`, `../_shared/extra-dispatch.md`):** mini's ONE executor may run off Claude. It has no score, so resolve the pinned executor's **BAND, both edges, and require them to agree** — a partially covering row keeps the run on Claude and the preflight says so. Print the `extra:` line at intake whenever the gate is on (P0: `a lane that sends work off Claude without saying so`); dispatch via `orc extra dispatch --task <file> --json` with the IDENTICAL slice; validate with `return-validation.md` **§2b, not §2** (⛔ SUBSTITUTION replaces the downgrade check); a failure runs `orc extra reconcile <task_id>` FIRST — a worktree that moved is RESUMED, never re-done — then falls back to the pinned Claude agent, announced. A cited-risk change never leaves Claude (`extra_risk_tasks`, default `off`) — and mini's complexity read is not a substitute for that gate.
|
|
168
164
|
|
|
@@ -171,7 +167,7 @@ Models pinned in `.claude/agents/`; look one up here, never reconstruct a name (
|
|
|
171
167
|
| mini analysis (docs only) | `orc-analyze-mini-sonnet-5-high` | claude-sonnet-5 / high | `orc-analyze-mini-opus-5-med` |
|
|
172
168
|
| mini planning | `orc-planner-mini-sonnet-5-high` | claude-sonnet-5 / high | `orc-planner-mini-opus-5-med` |
|
|
173
169
|
| mini execution | `orc-executor-sonnet-5-high` | claude-sonnet-5 / high | `orc-executor-opus-5-low` |
|
|
174
|
-
| test authoring (opt-in) | `orc-test-author-opus-5-med` | claude-opus-5 / medium | unchanged |
|
|
170
|
+
| test authoring (opt-in) | `orc-test-author-opus-5-med` | claude-opus-5-5 / medium | unchanged |
|
|
175
171
|
|
|
176
172
|
## Config
|
|
177
173
|
|
|
@@ -235,7 +231,7 @@ mini-analyst return: evidence spot-check + derivation lint; refuse
|
|
|
235
231
|
take-into-build on open `UNVERIFIED`/missing `scope_closed`; `git_head` ≠
|
|
236
232
|
HEAD at plan time → re-run the spot-check first. On mini-planner return: confirm
|
|
237
233
|
every `disposition: exists` path with `orc graph ctx <paths> --if-enabled
|
|
238
|
-
--json`, FIVE at a time — exit 0 confirms, exit 4 or an unindexed path falls
|
|
234
|
+
--json --brief`, FIVE at a time — exit 0 confirms, exit 4 or an unindexed path falls
|
|
239
235
|
back to a Glob. Then recompute coverage (no orphan requirements), cycle +
|
|
240
236
|
collision checks. Any miss → bounce (one retry, then escalate). At dispatch,
|
|
241
237
|
append the task's `spec_invariants` to the slice's `constraints[]` verbatim.
|
|
@@ -6,23 +6,30 @@ the answer is an OFFER — the user always chooses.
|
|
|
6
6
|
|
|
7
7
|
It runs after the planner returns and passes the exit gate, before dispatch.
|
|
8
8
|
|
|
9
|
-
## 1. The
|
|
9
|
+
## 1. The one call
|
|
10
10
|
|
|
11
11
|
| Call | What you take from it | Exit codes |
|
|
12
12
|
|---|---|---|
|
|
13
|
-
| `orc graph impact <declared_files> --if-enabled --json` |
|
|
14
|
-
|
|
|
15
|
-
| the planner's own `facets.risk[]` | the cited risk classes | — |
|
|
13
|
+
| `orc graph impact <declared_files> --complexity [--risk=<class>[@<file:line>],…] --if-enabled --json --brief` | `complexity.line` (print it verbatim), `complexity.numbers`, `complexity.why[]`, and `facts{}` for the planner slice | 0 found · 1 no graph · 3 off · 4 not found |
|
|
14
|
+
| the planner's own `facets.risk[]` | the cited risk classes — pass them in `--risk=`, so the ONE line is complete | — |
|
|
16
15
|
|
|
17
|
-
|
|
16
|
+
ONE call for ALL the declared files, and it answers what `impact` plus one
|
|
17
|
+
`cochange` per file used to answer. The co-change half runs inside the same
|
|
18
|
+
process, against the same per-HEAD cache.
|
|
18
19
|
|
|
19
|
-
**Exit 3
|
|
20
|
-
|
|
20
|
+
**Exit 3 means the graph is off.** Print the `graph off` form of the line (§3)
|
|
21
|
+
and decide from `facets.risk[]` alone. Never invent a number.
|
|
22
|
+
|
|
23
|
+
**An older CLI** answers without `complexity` and without `facts`. Then count as
|
|
24
|
+
§2 says, from `impact` and one `cochange` per file, and print the line yourself.
|
|
21
25
|
|
|
22
26
|
## 1b. `graph_facts` — the same numbers, in the planner slice
|
|
23
27
|
|
|
24
|
-
The
|
|
25
|
-
|
|
28
|
+
The CLI returns them in `facts{}`, in exactly this shape. `map` comes back
|
|
29
|
+
`null`: the lane already holds the `map --focus` card from Phase 0 and fills it
|
|
30
|
+
in, so the same card is never computed twice. The planner is dispatched BEFORE
|
|
31
|
+
the complexity read and gets the same facts, so it can ground its own plan on
|
|
32
|
+
them instead of guessing:
|
|
26
33
|
|
|
27
34
|
```yaml
|
|
28
35
|
graph_facts:
|
|
@@ -36,7 +43,7 @@ The graph off, or every call exit 3 → `graph_facts: null`, and the planner pla
|
|
|
36
43
|
as it did before. A `cochange` partner that is not in the plan becomes an
|
|
37
44
|
`open_questions[]` entry — never a file the planner adds in silence.
|
|
38
45
|
|
|
39
|
-
## 2. How
|
|
46
|
+
## 2. How the CLI counts
|
|
40
47
|
|
|
41
48
|
**Confident callers** are the edges the graph is sure about: `LOCAL`, `IMPORT`,
|
|
42
49
|
`UNIQUE` and `ROUTE`. A `ROUTE` edge is a test or a client that reaches the code
|
|
@@ -50,9 +57,16 @@ caller is counted, never followed.
|
|
|
50
57
|
is not blast radius — it is part of the change. Only callers outside
|
|
51
58
|
`declared_files` count.
|
|
52
59
|
|
|
60
|
+
The four numbers live in `bin/graph-signals.js` as `COMPLEXITY_CALLER_FILES`,
|
|
61
|
+
`COMPLEXITY_CALLERS` and `COMPLEXITY_COCHANGE_MIN` (the fourth is "any risk
|
|
62
|
+
class"). **Change them there and here in the same commit.** The answer carries
|
|
63
|
+
them in `complexity.thresholds`, so a reader can always check the verdict
|
|
64
|
+
against the numbers that produced it.
|
|
65
|
+
|
|
53
66
|
## 3. The line
|
|
54
67
|
|
|
55
|
-
Print exactly one line.
|
|
68
|
+
Print exactly one line — the CLI's `complexity.line`, verbatim. The lane prints
|
|
69
|
+
the third shape itself, because the CLI never answered. Three shapes:
|
|
56
70
|
|
|
57
71
|
```
|
|
58
72
|
complexity: mini-ok — 3 files · confident callers 4 in 2 files · tests reach 2 · risk none · cochange none
|
|
@@ -56,7 +56,7 @@ is a pointer into nothing.
|
|
|
56
56
|
knowledge never stops the run, never causes a fallback, never triggers a
|
|
57
57
|
scan. Print ONE line each.
|
|
58
58
|
4. **Code graph cache — never skipped** (`../_shared/code-graph.md` §0). Run
|
|
59
|
-
`orc graph status --if-enabled --heal --json`: it builds or updates the cache
|
|
59
|
+
`orc graph status --if-enabled --heal --json --brief`: it builds or updates the cache
|
|
60
60
|
in the same call. Print its `line`; put its `trace` (`GRAPH-CONSULT …`) in the
|
|
61
61
|
packet VERBATIM. Exit 3 = off → no other graph call this session. Every graph
|
|
62
62
|
call carries `--if-enabled`, so the CLI reads the `code_graph` keys —
|
|
@@ -94,11 +94,11 @@ Print it on ONE line so nothing is skipped in secret:
|
|
|
94
94
|
|
|
95
95
|
**The dig — graph first** (`references/look.md`). Ask the graph BEFORE any
|
|
96
96
|
Grep; Grep only for what the graph does not know.
|
|
97
|
-
- Names a file or symbol → `orc graph ctx <targets> --if-enabled --json`, 5 at
|
|
97
|
+
- Names a file or symbol → `orc graph ctx <targets> --if-enabled --json --brief`, 5 at
|
|
98
98
|
most. Names none → `orc graph map --focus "<3–6 words>" --budget 800
|
|
99
|
-
--if-enabled --json`, then `ctx` on the files it ranks first. Asks what breaks
|
|
99
|
+
--if-enabled --json --brief`, then `ctx` on the files it ranks first. Asks what breaks
|
|
100
100
|
or who uses something → `ctx <symbol> --depth 2` and `orc graph coverage
|
|
101
|
-
<files> --if-enabled --json` before you call anything absent. Exit 3 →
|
|
101
|
+
<files> --if-enabled --json --brief` before you call anything absent. Exit 3 →
|
|
102
102
|
Grep/Glob. Exit 4 → Grep the name, carry EVERY candidate into your question.
|
|
103
103
|
Copy each `line` into chat, each `trace` into the running record. A `map`
|
|
104
104
|
answer is ONE call; a card never replaces reading the range it names.
|
|
@@ -155,7 +155,7 @@ Rules:
|
|
|
155
155
|
|
|
156
156
|
Put in the slice: the change sketch, the Q2 answers, 2–3 acceptance bullets, the
|
|
157
157
|
`graph` block from `orc graph ctx <declared files> --for-slice --if-enabled
|
|
158
|
-
--json` (the OUTSIDE view — `references/look.md` §5), the wiki **paths**, the
|
|
158
|
+
--json --brief` (the OUTSIDE view — `references/look.md` §5), the wiki **paths**, the
|
|
159
159
|
cached pattern (whole text), the `house_rules` card
|
|
160
160
|
(`../_shared/phases/house-rules.md`, whole text), the `rules_card` under it
|
|
161
161
|
(`orc rules slice --lane orc-quick --json` → `text`, whole text), PR comments
|
|
@@ -187,12 +187,11 @@ say it once; never invent a build command — take it from `wiki-meta.json`'s
|
|
|
187
187
|
exit=<n>` then `REPRO green :: <cmd> exit=0`. `repro: none` → say **not
|
|
188
188
|
reproduced** with the reason (`references/defect.md`).
|
|
189
189
|
|
|
190
|
-
**Affected tests first.** Run `orc graph changes --if-enabled
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
symbols in the graph → `blast radius none indexed (<n> files not in the graph)`.
|
|
190
|
+
**Affected tests first.** Run `orc graph changes --files=<actual_files> --if-enabled
|
|
191
|
+
--json --brief`. Print its `tests_line`, run the files its `tests[]` names BEFORE
|
|
192
|
+
the suite — a runner that takes no file list → one line saying so — and append
|
|
193
|
+
` → <n> passed`. Then the suite. Then print its `blast_line` VERBATIM: the CLI
|
|
194
|
+
attaches every `risk` word's `why`, so never restate it. Exit 3 → nothing.
|
|
196
195
|
|
|
197
196
|
`tests reached 3 files (ROUTE 2 · call 1) → 12 passed` · then the suite · then
|
|
198
197
|
`blast radius 3 symbols · callers 7 in 4 files · tests reach 2 · risk high: <symbol> (exported, fan-in 4, no test reaches it)`
|
|
@@ -210,13 +209,13 @@ Never offer commit while tests are red.
|
|
|
210
209
|
|
|
211
210
|
**After a request that WROTE code** (never after a read-only one), so the next
|
|
212
211
|
request and the next session start from a current cache, in this order:
|
|
213
|
-
`orc graph update --notes-pending --files <actual_files> --if-enabled --json`
|
|
212
|
+
`orc graph update --notes-pending --files <actual_files> --if-enabled --json --brief`
|
|
214
213
|
— ONE call that answers both (print its `line`, copy its `trace`). Exit 0 on
|
|
215
214
|
`notes` → dispatch `orc-graph-noter-sonnet-4-6-med` in the SAME tool block as
|
|
216
215
|
this doc write. It is ORC bookkeeping, like the trace writer — not a Q2 gate
|
|
217
216
|
dispatch (`references/dispatch-gate.md` rule 8). Exit 3 or 5 → nothing. Then,
|
|
218
217
|
after the entry is appended, `orc graph gain --run <this run> --if-enabled
|
|
219
|
-
--json` → print its `line` VERBATIM into chat and the entry. It is an estimate
|
|
218
|
+
--json --brief` → print its `line` VERBATIM into chat and the entry. It is an estimate
|
|
220
219
|
with a range; never restate it as a saving.
|
|
221
220
|
|
|
222
221
|
Append entry N to `orc-quick/<slug>/quick-context.md`
|
|
@@ -70,7 +70,7 @@ It does not tell you what sits there or what depends on it.
|
|
|
70
70
|
For each thread the user takes, run one call:
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
|
-
orc graph ctx <the anchor file:line> --if-enabled --json
|
|
73
|
+
orc graph ctx <the anchor file:line> --if-enabled --json --brief
|
|
74
74
|
```
|
|
75
75
|
|
|
76
76
|
It names the symbol the comment sits in, its callers, and the tests that reach
|
|
@@ -20,9 +20,9 @@ way round.
|
|
|
20
20
|
|
|
21
21
|
| The request | The call |
|
|
22
22
|
|---|---|
|
|
23
|
-
| names a file or a symbol | `orc graph ctx <targets> --if-enabled --json` — 5 targets at most |
|
|
24
|
-
| names none ("where is the retry logic?") | `orc graph map --focus "<3–6 words from the request>" --budget 800 --if-enabled --json`, then `ctx` on the files it ranks first |
|
|
25
|
-
| asks what breaks, or who uses something | `orc graph ctx <symbol> --depth 2 --if-enabled --json`, then `orc graph coverage <files> --if-enabled --json` |
|
|
23
|
+
| names a file or a symbol | `orc graph ctx <targets> --if-enabled --json --brief` — 5 targets at most |
|
|
24
|
+
| names none ("where is the retry logic?") | `orc graph map --focus "<3–6 words from the request>" --budget 800 --if-enabled --json --brief`, then `ctx` on the files it ranks first |
|
|
25
|
+
| asks what breaks, or who uses something | `orc graph ctx <symbol> --depth 2 --if-enabled --json --brief`, then `orc graph coverage <files> --if-enabled --json --brief` |
|
|
26
26
|
|
|
27
27
|
Exit 3 = the graph is off → Grep and Glob, as before, and make no other graph
|
|
28
28
|
call this session. Exit 1 = no index → the same. **A `map` answer is ONE call**,
|
|
@@ -52,7 +52,7 @@ candidate into your Q2 question. Never pick one in silence.
|
|
|
52
52
|
|
|
53
53
|
"What breaks if I change this?" · "Who uses this?" · "Is it safe to change?"
|
|
54
54
|
|
|
55
|
-
Run `orc graph coverage <the files in play> --if-enabled --json` FIRST. A file
|
|
55
|
+
Run `orc graph coverage <the files in play> --if-enabled --json --brief` FIRST. A file
|
|
56
56
|
whose coverage is `partial` is read in the source before you call anything
|
|
57
57
|
absent in it.
|
|
58
58
|
|
|
@@ -75,7 +75,7 @@ sentence, word for word:
|
|
|
75
75
|
## 5. What you hand to an executor
|
|
76
76
|
|
|
77
77
|
```
|
|
78
|
-
orc graph ctx <declared files> --for-slice --if-enabled --json
|
|
78
|
+
orc graph ctx <declared files> --for-slice --if-enabled --json --brief
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
ONE call, 10 files at most. Its `card` becomes the slice's `graph` block. This
|
|
@@ -5,7 +5,7 @@ description: >
|
|
|
5
5
|
"/orc-verify", or "check the modified files". Runs INDEPENDENTLY —
|
|
6
6
|
no orchestrator, no planning, no run folder required. Verifies only the
|
|
7
7
|
git-modified changes in the working tree and shows a summary of results. Uses
|
|
8
|
-
Opus 5 medium effort. Read-only: it reports, it does not fix or commit.
|
|
8
|
+
Opus 5.5 medium effort. Read-only: it reports, it does not fix or commit.
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# ORC-VERIFY (standalone)
|
|
@@ -13,7 +13,7 @@ description: >
|
|
|
13
13
|
A focused, dependency-free verify pass. No intake, no planning, no checkpoint —
|
|
14
14
|
you point it at your uncommitted work and it tells you what's wrong.
|
|
15
15
|
|
|
16
|
-
Run as Opus 5, medium effort.
|
|
16
|
+
Run as Opus 5.5, medium effort.
|
|
17
17
|
|
|
18
18
|
**Worked example** (orient only — never execute from it): `examples/verify-mock.md`.
|
|
19
19
|
|
|
@@ -97,16 +97,16 @@ exit code, and never re-derive a state word — the CLI's state words are the on
|
|
|
97
97
|
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
98
98
|
a failure**. A call the answer does not name is a call this lane does not make.
|
|
99
99
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
100
|
-
command you are about to run, out loud, before running it.
|
|
101
|
-
|
|
102
|
-
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
103
|
-
|
|
104
|
-
`orc rules slice --lane orc-verify --json` is the ONLY assembler; never build
|
|
105
|
-
the card here. It rides under the house rules and above the task —
|
|
106
|
-
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
107
|
-
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
108
|
-
never a silent choice) and `rules_overridden[]`.
|
|
109
|
-
## Waiting mid-run (`/orc-wait`)
|
|
110
|
-
|
|
111
|
-
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
112
|
-
Checkpoint **none** · safe point **single dispatch**. 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.
|
|
100
|
+
command you are about to run, out loud, before running it.
|
|
101
|
+
|
|
102
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
103
|
+
|
|
104
|
+
`orc rules slice --lane orc-verify --json` is the ONLY assembler; never build
|
|
105
|
+
the card here. It rides under the house rules and above the task —
|
|
106
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
107
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
108
|
+
never a silent choice) and `rules_overridden[]`.
|
|
109
|
+
## Waiting mid-run (`/orc-wait`)
|
|
110
|
+
|
|
111
|
+
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
112
|
+
Checkpoint **none** · safe point **single dispatch**. 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.
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
# Example — Annotated Standalone Verify (dry run)
|
|
2
|
-
|
|
3
|
-
V: = verifier (Opus 5 medium) · U: = user. Nothing real. Runs INDEPENDENTLY — no
|
|
4
|
-
orchestrator, no planning, no run folder. Read-only: it reports, never fixes or commits.
|
|
5
|
-
|
|
6
|
-
U: /orc-verify
|
|
7
|
-
|
|
8
|
-
## Scope — git-modified changes only
|
|
9
|
-
V: [git status/diff] 3 modified files: api/routes/orders.py, api/schemas.py,
|
|
10
|
-
tests/test_orders.py. Nothing staged beyond the working tree — verifying exactly
|
|
11
|
-
these changes (no repo-wide sweep).
|
|
12
|
-
|
|
13
|
-
## Build + tests
|
|
14
|
-
V: [detects Python/poetry/pytest]
|
|
15
|
-
$ poetry run pytest tests/test_orders.py → 11 passed
|
|
16
|
-
$ poetry run mypy api/ → clean
|
|
17
|
-
Build/type/test: GREEN.
|
|
18
|
-
|
|
19
|
-
## Diff sanity + findings (P0–P3 ladder)
|
|
20
|
-
V: Walks each hunk against intent inferred from the diff (every P0–P2 finding
|
|
21
|
-
anchored: file:line + the offending line quoted VERBATIM, else auto-P3):
|
|
22
|
-
⛔ P1 api/routes/orders.py:42 — quote: `async def get_order(order_id: str):`
|
|
23
|
-
— new `/orders/{id}` route has no auth decorator; every sibling route
|
|
24
|
-
uses `@require_auth`. Security risk — likely unintended.
|
|
25
|
-
(Not P0: build/tests are green.)
|
|
26
|
-
• P3 api/schemas.py:18 — field `createdAt` breaks the snake_case convention
|
|
27
|
-
used elsewhere (`created_at`).
|
|
28
|
-
• P2 tests/test_orders.py — no negative-path test for a missing id.
|
|
29
|
-
|
|
30
|
-
## Summary (read-only — no edits, no commit)
|
|
31
|
-
V: 1 P1, 1 P2, 1 P3. Tests green but the missing auth decorator gates the
|
|
32
|
-
commit (P0/P1 = fix before commit; P2/P3 advisory). I don't edit or commit —
|
|
33
|
-
hand this to /orc or fix manually, then re-run /orc-verify.
|
|
1
|
+
# Example — Annotated Standalone Verify (dry run)
|
|
2
|
+
|
|
3
|
+
V: = verifier (Opus 5.5 medium) · U: = user. Nothing real. Runs INDEPENDENTLY — no
|
|
4
|
+
orchestrator, no planning, no run folder. Read-only: it reports, never fixes or commits.
|
|
5
|
+
|
|
6
|
+
U: /orc-verify
|
|
7
|
+
|
|
8
|
+
## Scope — git-modified changes only
|
|
9
|
+
V: [git status/diff] 3 modified files: api/routes/orders.py, api/schemas.py,
|
|
10
|
+
tests/test_orders.py. Nothing staged beyond the working tree — verifying exactly
|
|
11
|
+
these changes (no repo-wide sweep).
|
|
12
|
+
|
|
13
|
+
## Build + tests
|
|
14
|
+
V: [detects Python/poetry/pytest]
|
|
15
|
+
$ poetry run pytest tests/test_orders.py → 11 passed
|
|
16
|
+
$ poetry run mypy api/ → clean
|
|
17
|
+
Build/type/test: GREEN.
|
|
18
|
+
|
|
19
|
+
## Diff sanity + findings (P0–P3 ladder)
|
|
20
|
+
V: Walks each hunk against intent inferred from the diff (every P0–P2 finding
|
|
21
|
+
anchored: file:line + the offending line quoted VERBATIM, else auto-P3):
|
|
22
|
+
⛔ P1 api/routes/orders.py:42 — quote: `async def get_order(order_id: str):`
|
|
23
|
+
— new `/orders/{id}` route has no auth decorator; every sibling route
|
|
24
|
+
uses `@require_auth`. Security risk — likely unintended.
|
|
25
|
+
(Not P0: build/tests are green.)
|
|
26
|
+
• P3 api/schemas.py:18 — field `createdAt` breaks the snake_case convention
|
|
27
|
+
used elsewhere (`created_at`).
|
|
28
|
+
• P2 tests/test_orders.py — no negative-path test for a missing id.
|
|
29
|
+
|
|
30
|
+
## Summary (read-only — no edits, no commit)
|
|
31
|
+
V: 1 P1, 1 P2, 1 P3. Tests green but the missing auth decorator gates the
|
|
32
|
+
commit (P0/P1 = fix before commit; P2/P3 advisory). I don't edit or commit —
|
|
33
|
+
hand this to /orc or fix manually, then re-run /orc-verify.
|
|
@@ -20,7 +20,7 @@ tier:
|
|
|
20
20
|
| `wiki-scanner-light` | `orc-wiki-scanner-sonnet-5-high` |
|
|
21
21
|
|
|
22
22
|
Both collapse onto `orc-wiki-scanner-opus-5-med` while `opus5_only` is on, which
|
|
23
|
-
is why this adds **no agent and no pair**. Two slots and one Opus 5 agent is not
|
|
23
|
+
is why this adds **no agent and no pair**. Two slots and one Opus 5.5 agent is not
|
|
24
24
|
a contradiction: a slot names the POSITION, not the model.
|
|
25
25
|
|
|
26
26
|
```
|