@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.
Files changed (134) hide show
  1. package/CHANGELOG.md +202 -0
  2. package/README-id.md +57 -59
  3. package/README.md +53 -54
  4. package/bin/build-agents.js +109 -109
  5. package/bin/cli.js +262 -58
  6. package/bin/graph-audit.js +235 -0
  7. package/bin/graph-extract.js +308 -3
  8. package/bin/graph-gain.js +23 -3
  9. package/bin/graph-map.js +9 -1
  10. package/bin/graph-query.js +152 -10
  11. package/bin/graph-shard.js +6 -1
  12. package/bin/graph-signals.js +287 -4
  13. package/bin/graph.js +717 -658
  14. package/bin/onboarding-content.js +4 -4
  15. package/bin/pricing.json +207 -200
  16. package/bin/verify-contracts.js +117 -2
  17. package/bin/verify-package.js +11 -7
  18. package/bin/webui/css/04-motion.css +162 -152
  19. package/bin/webui/css/panels/knowledge.css +563 -116
  20. package/bin/webui/fixtures/extra.js +2036 -2036
  21. package/bin/webui/fixtures/hookui.js +5 -5
  22. package/bin/webui/fixtures/knowledge.js +21 -4
  23. package/bin/webui/fixtures/settings.js +305 -305
  24. package/bin/webui/i18n/en/knowledge.json +122 -4
  25. package/bin/webui/i18n/id/knowledge.json +122 -4
  26. package/bin/webui/js/panels/knowledge.js +573 -9
  27. package/bin/webui/js/panels/overview.js +13 -4
  28. package/mock-run/context-combiner.md +100 -100
  29. package/mock-run/orc-budget.md +534 -534
  30. package/mock-run/orc-challenge-council.md +262 -262
  31. package/mock-run/orc-ultra.md +103 -103
  32. package/package.json +1 -1
  33. package/templates/agents/MODEL-MAPPING.md +43 -43
  34. package/templates/agents/orc-advisor-opus-5-xhigh.md +56 -56
  35. package/templates/agents/orc-analyze-mini-opus-5-med.md +60 -60
  36. package/templates/agents/orc-analyze-mini-sonnet-5-high.md +58 -58
  37. package/templates/agents/orc-challenge-advisor-opus-5-med.md +75 -75
  38. package/templates/agents/orc-challenge-contrarian-opus-5-high.md +110 -110
  39. package/templates/agents/orc-challenge-executor-opus-5-med.md +114 -114
  40. package/templates/agents/orc-challenge-expansionist-opus-5-med.md +112 -112
  41. package/templates/agents/orc-challenge-judge-opus-5-high.md +132 -132
  42. package/templates/agents/orc-challenge-outsider-opus-5-low.md +109 -109
  43. package/templates/agents/orc-challenge-principles-opus-5-high.md +109 -109
  44. package/templates/agents/orc-challenge-reader-opus-5-low.md +90 -90
  45. package/templates/agents/orc-claude-writer-opus-5-med.md +55 -55
  46. package/templates/agents/orc-context-combiner-opus-5-high.md +88 -88
  47. package/templates/agents/orc-doc-checker-opus-5-low.md +108 -108
  48. package/templates/agents/orc-doc-writer-opus-5-med.md +134 -134
  49. package/templates/agents/orc-executor-haiku-4-5.md +2 -1
  50. package/templates/agents/orc-executor-opus-4-7-high.md +2 -1
  51. package/templates/agents/orc-executor-opus-4-7-med.md +2 -1
  52. package/templates/agents/orc-executor-opus-4-8-high.md +2 -1
  53. package/templates/agents/orc-executor-opus-5-high.md +4 -3
  54. package/templates/agents/orc-executor-opus-5-low.md +4 -3
  55. package/templates/agents/orc-executor-opus-5-med.md +4 -3
  56. package/templates/agents/orc-executor-sonnet-4-6-high.md +2 -1
  57. package/templates/agents/orc-executor-sonnet-4-6-med.md +2 -1
  58. package/templates/agents/orc-executor-sonnet-5-high.md +2 -1
  59. package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +1 -1
  60. package/templates/agents/orc-judge-opus-5-xhigh.md +85 -85
  61. package/templates/agents/orc-learn-writer-opus-5-low.md +73 -73
  62. package/templates/agents/orc-pattern-codifier-opus-5-med.md +65 -65
  63. package/templates/agents/orc-planner-mini-opus-5-med.md +4 -4
  64. package/templates/agents/orc-planner-mini-sonnet-5-high.md +1 -1
  65. package/templates/agents/orc-planner-opus-5-med.md +160 -160
  66. package/templates/agents/orc-recon-opus-5-low.md +18 -8
  67. package/templates/agents/orc-recon-sonnet-4-6-med.md +15 -5
  68. package/templates/agents/orc-retro-opus-5-med.md +3 -3
  69. package/templates/agents/orc-reviewer-opus-5-med.md +60 -60
  70. package/templates/agents/orc-scout-opus-5-low.md +40 -40
  71. package/templates/agents/orc-system-analyst-opus-5-high.md +120 -120
  72. package/templates/agents/orc-test-author-opus-5-med.md +71 -71
  73. package/templates/agents/orc-test-designer-opus-5-high.md +158 -158
  74. package/templates/agents/orc-test-interpreter-opus-5-low.md +130 -130
  75. package/templates/agents/orc-verifier-opus-5-med.md +69 -69
  76. package/templates/agents/orc-wiki-scanner-opus-5-med.md +81 -81
  77. package/templates/commands/orc-ultra.md +17 -17
  78. package/templates/commands/orc-verify.md +11 -11
  79. package/templates/hooks/README.md +13 -3
  80. package/templates/hooks/orc-effort-guard.js +178 -178
  81. package/templates/hooks/orc-graph-hook.js +53 -7
  82. package/templates/hooks/orc-statusline.js +6 -6
  83. package/templates/skills/_shared/code-graph.md +57 -18
  84. package/templates/skills/_shared/config-precedence.md +198 -198
  85. package/templates/skills/_shared/extra-dispatch.md +1346 -1346
  86. package/templates/skills/_shared/opus5-only.md +8 -8
  87. package/templates/skills/_shared/phases/analyst-gates.md +136 -136
  88. package/templates/skills/_shared/phases/execution.md +4 -4
  89. package/templates/skills/_shared/phases/planning.md +3 -3
  90. package/templates/skills/_shared/phases/preflight.md +1 -1
  91. package/templates/skills/_shared/phases/review.md +4 -2
  92. package/templates/skills/_shared/phases/ship.md +1 -1
  93. package/templates/skills/_shared/phases/trace.md +3 -2
  94. package/templates/skills/_shared/read-ladder.md +14 -1
  95. package/templates/skills/_shared/return-validation.md +1 -1
  96. package/templates/skills/context-combiner/SKILL.md +1 -1
  97. package/templates/skills/context-combiner/schemas/combined-report.md +78 -78
  98. package/templates/skills/orc/README.md +2 -2
  99. package/templates/skills/orc/SKILL.md +8 -8
  100. package/templates/skills/orc/config.md +9 -9
  101. package/templates/skills/orc/examples/full-run-mock.md +73 -73
  102. package/templates/skills/orc/references/effort-and-mode.md +222 -222
  103. package/templates/skills/orc/references/preflight-report.md +2 -2
  104. package/templates/skills/orc/references/ultra-mode.md +3 -3
  105. package/templates/skills/orc/subskills/orc-planner/SKILL.md +2 -2
  106. package/templates/skills/orc/subskills/orc-planner-mini/SKILL.md +121 -121
  107. package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +76 -76
  108. package/templates/skills/orc/subskills/orc-testgen/SKILL.md +45 -45
  109. package/templates/skills/orc-analyze/SKILL.md +2 -2
  110. package/templates/skills/orc-analyze/examples/analyze-mock.md +42 -42
  111. package/templates/skills/orc-analyze/schemas/report-audit.md +83 -83
  112. package/templates/skills/orc-analyze/schemas/report-prose.md +63 -63
  113. package/templates/skills/orc-analyze/schemas/report-requirement.md +78 -78
  114. package/templates/skills/orc-challenge/README.md +142 -142
  115. package/templates/skills/orc-challenge/examples/council-full-roster.md +273 -273
  116. package/templates/skills/orc-challenge/references/council.md +315 -315
  117. package/templates/skills/orc-challenge/references/intake.md +171 -171
  118. package/templates/skills/orc-claude/SKILL.md +14 -14
  119. package/templates/skills/orc-diy/README.md +143 -143
  120. package/templates/skills/orc-diy/references/flow-schema.md +1 -1
  121. package/templates/skills/orc-doc/README.md +229 -229
  122. package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +325 -325
  123. package/templates/skills/orc-doc/references/chunking.md +527 -527
  124. package/templates/skills/orc-fast/SKILL.md +4 -4
  125. package/templates/skills/orc-learn/SKILL.md +14 -14
  126. package/templates/skills/orc-learn/examples/learn-run-mock.md +61 -61
  127. package/templates/skills/orc-mini/SKILL.md +16 -20
  128. package/templates/skills/orc-mini/references/complexity.md +25 -11
  129. package/templates/skills/orc-quick/SKILL.md +12 -13
  130. package/templates/skills/orc-quick/references/gh-mode.md +1 -1
  131. package/templates/skills/orc-quick/references/look.md +5 -5
  132. package/templates/skills/orc-verify/SKILL.md +15 -15
  133. package/templates/skills/orc-verify/examples/verify-mock.md +33 -33
  134. 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, into `graph_facts` and the complexity line:** `orc graph impact <declared_files> --if-enabled --json` (ONE call) and `orc graph cochange <each declared file> --if-enabled --json` — NUMBERS, never a judgment (`references/complexity.md`).
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` names the tests that reach the change; run those first, then the suite. `risk` never prints without its `why`.
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 — never a narrative
138
- judgment. Counted from `graph_facts` and `facets.risk[]`; how, and why each
139
- threshold is that number: `references/complexity.md`.
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
- **Recommend the full lane when ANY holds:** confident callers in 4+ files
142
- outside `declared_files` · 8+ confident callers · any `facets.risk[]` entry · a
143
- `cochange` partner with 3+ co-commits not in the plan. `AMBIGUOUS` callers print
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 three calls
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` | confident callers OUTSIDE `declared_files`, the distinct files they sit in, the tests that reach | 0 found · 1 no graph · 3 off · 4 not found |
14
- | `orc graph cochange <each declared file> --if-enabled --json` | partners with `count >= 3` that are not in `declared_files` | 0 rows · 1 no history · 3 off · 4 none |
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
- One `impact` call for ALL the declared files. `cochange` is one call per file.
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 anywhere means the graph is off.** Print the `graph off` form of the
20
- line (§3) and decide from `facets.risk[]` alone. Never invent a number.
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 planner is dispatched BEFORE the complexity read, and it gets the same
25
- facts, so it can ground its own plan on them instead of guessing:
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 to count
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. Three shapes:
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 --json`, keep the
191
- `symbols[]` whose `file` is in the return's `actual_files`, and run the test
192
- files their `tests[]` name BEFORE the suite — when the runner takes a file list.
193
- A runner that takes none → one line saying so. Then print the blast radius from
194
- the same answer, one line, and never a `risk` word without its `why`. Zero
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
  ```