@azure-id/orc 1.9.1 → 2.0.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 (224) hide show
  1. package/CHANGELOG.md +390 -0
  2. package/README-id.md +20 -36
  3. package/README.md +24 -34
  4. package/bin/build-agents.js +206 -109
  5. package/bin/cli.js +760 -62
  6. package/bin/gotcha-import.js +1081 -0
  7. package/bin/gotcha.js +1286 -0
  8. package/bin/graph-query.js +1 -1
  9. package/bin/graph.js +717 -717
  10. package/bin/habit.js +1453 -0
  11. package/bin/mockrun-catalog.js +281 -276
  12. package/bin/onboarding-content.js +4 -4
  13. package/bin/pricing.json +207 -200
  14. package/bin/run-undo.js +398 -0
  15. package/bin/trace-write.js +657 -0
  16. package/bin/verify-contracts.js +527 -81
  17. package/bin/verify-package.js +58 -11
  18. package/bin/webui/api.js +26 -0
  19. package/bin/webui/app.html +239 -232
  20. package/bin/webui/css/00-tokens.css +110 -92
  21. package/bin/webui/css/04-motion.css +249 -152
  22. package/bin/webui/css/06-responsive.css +203 -178
  23. package/bin/webui/css/panels/behaviour.css +205 -0
  24. package/bin/webui/css/panels/knowledge.css +563 -116
  25. package/bin/webui/fixtures/behaviour.js +532 -0
  26. package/bin/webui/fixtures/extra.js +2036 -2036
  27. package/bin/webui/fixtures/hookui.js +5 -5
  28. package/bin/webui/fixtures/index.js +34 -0
  29. package/bin/webui/fixtures/knowledge.js +7 -1
  30. package/bin/webui/fixtures/settings.js +305 -305
  31. package/bin/webui/fixtures/stats.js +16 -0
  32. package/bin/webui/i18n/en/behaviour.json +143 -0
  33. package/bin/webui/i18n/en/knowledge.json +117 -2
  34. package/bin/webui/i18n/en/nav.json +25 -24
  35. package/bin/webui/i18n/en/tour.json +37 -35
  36. package/bin/webui/i18n/id/behaviour.json +143 -0
  37. package/bin/webui/i18n/id/knowledge.json +117 -2
  38. package/bin/webui/i18n/id/nav.json +25 -24
  39. package/bin/webui/i18n/id/tour.json +37 -35
  40. package/bin/webui/js/01-i18n.js +155 -154
  41. package/bin/webui/js/90-tour.js +498 -494
  42. package/bin/webui/js/91-shortcuts.js +126 -126
  43. package/bin/webui/js/99-boot.js +121 -118
  44. package/bin/webui/js/panels/behaviour.js +1022 -0
  45. package/bin/webui/js/panels/knowledge.js +552 -7
  46. package/bin/webui/js/panels/overview.js +13 -4
  47. package/mock-run/INDEX.md +109 -107
  48. package/mock-run/context-combiner.md +100 -100
  49. package/mock-run/gotcha-import.md +118 -0
  50. package/mock-run/habits.md +129 -0
  51. package/mock-run/orc-budget.md +534 -534
  52. package/mock-run/orc-challenge-council.md +262 -262
  53. package/mock-run/orc-quick.md +6 -1
  54. package/mock-run/orc-ultra.md +103 -103
  55. package/package.json +1 -1
  56. package/templates/agents/MODEL-MAPPING.md +49 -49
  57. package/templates/agents/orc-advisor-opus-5-xhigh.md +50 -56
  58. package/templates/agents/orc-analyze-mini-opus-5-med.md +55 -60
  59. package/templates/agents/orc-analyze-mini-sonnet-5-high.md +55 -58
  60. package/templates/agents/orc-challenge-advisor-opus-5-med.md +75 -75
  61. package/templates/agents/orc-challenge-contrarian-opus-5-high.md +110 -110
  62. package/templates/agents/orc-challenge-executor-opus-5-med.md +114 -114
  63. package/templates/agents/orc-challenge-expansionist-opus-5-med.md +112 -112
  64. package/templates/agents/orc-challenge-judge-opus-5-high.md +132 -132
  65. package/templates/agents/orc-challenge-outsider-opus-5-low.md +109 -109
  66. package/templates/agents/orc-challenge-principles-opus-5-high.md +109 -109
  67. package/templates/agents/orc-challenge-reader-opus-5-low.md +90 -90
  68. package/templates/agents/orc-claude-writer-opus-4-8-high.md +48 -53
  69. package/templates/agents/orc-claude-writer-opus-5-med.md +48 -55
  70. package/templates/agents/orc-context-combiner-opus-5-high.md +78 -88
  71. package/templates/agents/orc-doc-checker-opus-5-low.md +108 -108
  72. package/templates/agents/orc-doc-writer-opus-5-med.md +134 -134
  73. package/templates/agents/orc-executor-haiku-4-5.md +14 -6
  74. package/templates/agents/orc-executor-opus-4-7-high.md +14 -6
  75. package/templates/agents/orc-executor-opus-4-7-med.md +14 -6
  76. package/templates/agents/orc-executor-opus-4-8-high.md +14 -6
  77. package/templates/agents/orc-executor-opus-5-high.md +15 -7
  78. package/templates/agents/orc-executor-opus-5-low.md +15 -7
  79. package/templates/agents/orc-executor-opus-5-med.md +15 -7
  80. package/templates/agents/orc-executor-sonnet-4-6-high.md +14 -6
  81. package/templates/agents/orc-executor-sonnet-4-6-med.md +14 -6
  82. package/templates/agents/orc-executor-sonnet-5-high.md +14 -6
  83. package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +1 -10
  84. package/templates/agents/orc-judge-opus-5-xhigh.md +81 -85
  85. package/templates/agents/orc-learn-writer-opus-5-low.md +67 -73
  86. package/templates/agents/orc-pattern-codifier-opus-5-med.md +58 -65
  87. package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +58 -63
  88. package/templates/agents/orc-planner-mini-opus-5-med.md +4 -7
  89. package/templates/agents/orc-planner-mini-sonnet-5-high.md +2 -3
  90. package/templates/agents/orc-planner-opus-5-med.md +157 -160
  91. package/templates/agents/orc-recon-opus-5-low.md +3 -10
  92. package/templates/agents/orc-recon-sonnet-4-6-med.md +1 -8
  93. package/templates/agents/orc-retro-opus-5-med.md +8 -10
  94. package/templates/agents/orc-retro-sonnet-5-high.md +6 -7
  95. package/templates/agents/orc-reviewer-opus-5-med.md +96 -60
  96. package/templates/agents/orc-scout-opus-5-low.md +35 -40
  97. package/templates/agents/orc-scout-sonnet-4-6-high.md +35 -39
  98. package/templates/agents/orc-system-analyst-opus-5-high.md +115 -120
  99. package/templates/agents/orc-test-author-opus-5-med.md +70 -71
  100. package/templates/agents/orc-test-designer-opus-5-high.md +158 -158
  101. package/templates/agents/orc-test-interpreter-opus-5-low.md +130 -130
  102. package/templates/agents/orc-trace-writer-haiku-4-5.md +3 -7
  103. package/templates/agents/orc-verifier-opus-5-med.md +77 -69
  104. package/templates/agents/orc-wiki-scanner-opus-4-8-high.md +74 -79
  105. package/templates/agents/orc-wiki-scanner-opus-5-med.md +74 -81
  106. package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +97 -106
  107. package/templates/commands/orc-analyze.md +13 -21
  108. package/templates/commands/orc-fast.md +10 -15
  109. package/templates/commands/orc-poly.md +12 -21
  110. package/templates/commands/orc-pr-driver.md +11 -30
  111. package/templates/commands/orc-pr-setup.md +10 -31
  112. package/templates/commands/orc-route.md +11 -41
  113. package/templates/commands/orc-test.md +5 -60
  114. package/templates/commands/orc-ultra.md +17 -17
  115. package/templates/commands/orc-verify.md +11 -11
  116. package/templates/hooks/README.md +36 -2
  117. package/templates/hooks/orc-effort-guard.js +178 -178
  118. package/templates/hooks/orc-session-hook.js +264 -0
  119. package/templates/hooks/orc-statusline.js +9 -7
  120. package/templates/skills/_shared/README.md +9 -0
  121. package/templates/skills/_shared/code-graph.md +48 -56
  122. package/templates/skills/_shared/config-precedence.md +200 -198
  123. package/templates/skills/_shared/extra-dispatch.md +1331 -1346
  124. package/templates/skills/_shared/gotchas.md +228 -177
  125. package/templates/skills/_shared/habits.md +101 -0
  126. package/templates/skills/_shared/lane-contract.md +84 -0
  127. package/templates/skills/_shared/opus5-only.md +8 -8
  128. package/templates/skills/_shared/phases/README.md +142 -83
  129. package/templates/skills/_shared/phases/analyst-gates.md +125 -136
  130. package/templates/skills/_shared/phases/execution.md +8 -14
  131. package/templates/skills/_shared/phases/house-rules.md +27 -32
  132. package/templates/skills/_shared/phases/intake.md +127 -133
  133. package/templates/skills/_shared/phases/mock-example.md +46 -56
  134. package/templates/skills/_shared/phases/plan-handoff.md +91 -97
  135. package/templates/skills/_shared/phases/planning.md +7 -17
  136. package/templates/skills/_shared/phases/preflight.md +19 -42
  137. package/templates/skills/_shared/phases/review.md +23 -27
  138. package/templates/skills/_shared/phases/rules.md +18 -42
  139. package/templates/skills/_shared/phases/scoring.md +55 -65
  140. package/templates/skills/_shared/phases/security-checklist.md +46 -50
  141. package/templates/skills/_shared/phases/security.md +45 -55
  142. package/templates/skills/_shared/phases/ship.md +6 -15
  143. package/templates/skills/_shared/phases/stop-resume.md +2 -5
  144. package/templates/skills/_shared/phases/summary.md +73 -48
  145. package/templates/skills/_shared/phases/testgen.md +41 -51
  146. package/templates/skills/_shared/phases/trace-verbs.md +433 -0
  147. package/templates/skills/_shared/phases/trace.md +136 -367
  148. package/templates/skills/_shared/phases/verify.md +62 -70
  149. package/templates/skills/_shared/phases/wave-grouping.md +128 -133
  150. package/templates/skills/_shared/phases/wiki-consult.md +10 -6
  151. package/templates/skills/_shared/read-ladder.md +2 -55
  152. package/templates/skills/_shared/return-validation.md +17 -70
  153. package/templates/skills/_shared/review-slice.md +79 -0
  154. package/templates/skills/_shared/smoke-gate.md +46 -28
  155. package/templates/skills/context-combiner/SKILL.md +16 -45
  156. package/templates/skills/context-combiner/schemas/combined-report.md +78 -78
  157. package/templates/skills/orc/README.md +2 -2
  158. package/templates/skills/orc/SKILL.md +41 -69
  159. package/templates/skills/orc/config.md +9 -9
  160. package/templates/skills/orc/examples/full-run-mock.md +73 -73
  161. package/templates/skills/orc/references/effort-and-mode.md +222 -222
  162. package/templates/skills/orc/references/pattern-gate.md +89 -89
  163. package/templates/skills/orc/references/phases/intake.md +41 -47
  164. package/templates/skills/orc/references/phases/integration.md +13 -19
  165. package/templates/skills/orc/references/preflight-report.md +10 -11
  166. package/templates/skills/orc/references/ultra-mode.md +11 -9
  167. package/templates/skills/orc/subskills/orc-execution/SKILL.md +27 -73
  168. package/templates/skills/orc/subskills/orc-execution/core.md +12 -99
  169. package/templates/skills/orc/subskills/orc-execution/subagent.md +14 -13
  170. package/templates/skills/orc/subskills/orc-planner/SKILL.md +2 -2
  171. package/templates/skills/orc/subskills/orc-planner-mini/SKILL.md +121 -121
  172. package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +35 -76
  173. package/templates/skills/orc/subskills/orc-review-verify/core.md +52 -135
  174. package/templates/skills/orc/subskills/orc-review-verify/subagent.md +7 -7
  175. package/templates/skills/orc/subskills/orc-testgen/SKILL.md +34 -45
  176. package/templates/skills/orc/subskills/orc-testgen/core.md +20 -59
  177. package/templates/skills/orc/subskills/orc-testgen/subagent.md +7 -7
  178. package/templates/skills/orc-advisor/SKILL.md +56 -60
  179. package/templates/skills/orc-analyze/SKILL.md +32 -68
  180. package/templates/skills/orc-analyze/examples/analyze-mock.md +42 -42
  181. package/templates/skills/orc-analyze/schemas/report-audit.md +84 -83
  182. package/templates/skills/orc-analyze/schemas/report-prose.md +64 -63
  183. package/templates/skills/orc-analyze/schemas/report-requirement.md +78 -78
  184. package/templates/skills/orc-analyze-mini/SKILL.md +35 -70
  185. package/templates/skills/orc-challenge/README.md +142 -142
  186. package/templates/skills/orc-challenge/examples/council-full-roster.md +273 -273
  187. package/templates/skills/orc-challenge/references/council.md +315 -315
  188. package/templates/skills/orc-challenge/references/intake.md +171 -171
  189. package/templates/skills/orc-claude/SKILL.md +14 -14
  190. package/templates/skills/orc-diy/README.md +174 -143
  191. package/templates/skills/orc-diy/SKILL.md +23 -74
  192. package/templates/skills/orc-diy/references/blocks/pattern.md +18 -18
  193. package/templates/skills/orc-diy/references/flow-schema.md +1 -1
  194. package/templates/skills/orc-doc/README.md +229 -229
  195. package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +325 -325
  196. package/templates/skills/orc-doc/references/chunking.md +527 -527
  197. package/templates/skills/orc-fast/SKILL.md +45 -73
  198. package/templates/skills/orc-judge/SKILL.md +77 -82
  199. package/templates/skills/orc-learn/SKILL.md +14 -14
  200. package/templates/skills/orc-learn/examples/learn-run-mock.md +61 -61
  201. package/templates/skills/orc-mini/SKILL.md +65 -113
  202. package/templates/skills/orc-pattern/SKILL.md +27 -48
  203. package/templates/skills/orc-poly/SKILL.md +32 -61
  204. package/templates/skills/orc-pr-driver/SKILL.md +25 -51
  205. package/templates/skills/orc-pr-driver/references/green-gate.md +113 -105
  206. package/templates/skills/orc-pr-setup/SKILL.md +20 -45
  207. package/templates/skills/orc-quick/README.md +43 -2
  208. package/templates/skills/orc-quick/SKILL.md +76 -107
  209. package/templates/skills/orc-quick/references/dispatch-gate.md +16 -5
  210. package/templates/skills/orc-quick/references/gh-mode.md +48 -1
  211. package/templates/skills/orc-quick/references/look.md +3 -1
  212. package/templates/skills/orc-retro/SKILL.md +19 -18
  213. package/templates/skills/orc-retro/examples/retro-mock.md +1 -1
  214. package/templates/skills/orc-route/SKILL.md +25 -45
  215. package/templates/skills/orc-test/SKILL.md +16 -37
  216. package/templates/skills/orc-verify/SKILL.md +21 -39
  217. package/templates/skills/orc-verify/examples/verify-mock.md +33 -33
  218. package/templates/skills/orc-wait/SKILL.md +156 -163
  219. package/templates/skills/orc-wiki/references/extra.md +1 -1
  220. package/templates/skills/orc-wiki/references/phases/phase-0.md +1 -6
  221. package/templates/skills/orc-wiki/references/phases/phase-1.md +1 -6
  222. package/templates/skills/orc-wiki/references/phases/phase-2.md +1 -6
  223. package/templates/skills/orc-wiki/references/phases/phase-3.md +1 -6
  224. package/templates/skills/orc-wiki/references/phases/phase-3c.md +1 -6
@@ -1,14 +1,12 @@
1
1
  ---
2
2
  name: orc-fast
3
3
  description: >
4
- Fastest ORC lane — knowledge-gated single-executor implementation. Use for
5
- "use orc-fast to implement X" or "/orc-fast". Requires TWO prerequisites:
6
- a fresh project wiki (orc-wiki) AND a cached code-pattern for the request's
7
- language — the precomputed knowledge replaces the analyst/planner entirely.
8
- Either missing → falls back to orc-mini (never stops the chat). One
9
- Sonnet 4.6 high executor, a build+test smoke gate, one repair round, ship.
10
- Orchestrator runs fine at Sonnet medium. The orchestrator never implements —
11
- it spawns.
4
+ Fastest ORC lane — knowledge-gated single-executor implementation, with no
5
+ analyst and no planner. Use for "use orc-fast to implement X" or "/orc-fast".
6
+ Requires TWO prerequisites: a fresh project wiki (orc-wiki) AND a cached
7
+ code-pattern for the request's language. If either is missing, it falls back
8
+ to orc-mini. One Sonnet 4.6 high executor, a build+test smoke gate, one repair
9
+ round, ship.
12
10
  ---
13
11
 
14
12
  # ORC-FAST
@@ -32,24 +30,21 @@ fit gate hands it to orc-mini.
32
30
 
33
31
  ## Phases
34
32
 
35
- `orc lane phases orc-fast --json` is this lane's pipeline: the ordered list, where
36
- each phase lives, and how much of it to read. **The CLI owns the order** — never
37
- derive it from the headings below, and never renumber or rename one without the
38
- manifest, because a `read: section` pointer names a HEADING and a renamed heading
39
- is a pointer into nothing.
33
+ `orc lane phases orc-fast --json` is this lane's pipeline. **The CLI owns the order**:
34
+ never derive it from the headings below, and never rename or renumber one
35
+ without the manifest (`../_shared/lane-contract.md` §Phases).
40
36
 
41
37
  ## Phase F0 — Preflight (the two prerequisite gates; no spawn)
42
38
 
43
- Emit a `GATE` trace line per check when logging.
39
+ Emit a `GATE` trace line per check.
44
40
 
45
41
  **a. Wiki gate.** Decide existence with `orc wiki status` — the deterministic
46
42
  probe in `../_shared/detecting-artifacts.md`, never an ad-hoc `find` (`.claude`
47
- is hidden). `none` = gate FAILED → fallback; else wiki present → compute the
48
- tier from `.claude/orc/wiki-meta.json` per `../orc-wiki/references/staleness.md`:
49
- `git rev-list --count <scan_commit>..HEAD` → FRESH / AGING / STALE (manifest
50
- absent but docs present = STALE; wiki absent/empty = gate FAILED → fallback).
43
+ is hidden). `none` = gate FAILED → fallback; else read the tier from
44
+ `orc wiki status --json` → `.tier` (FRESH / AGING / STALE; the CLI computes
45
+ it — never recompute it by hand).
51
46
  - **FRESH** → proceed silently. **AGING** → one-line notice, proceed.
52
- - **STALE** → the user judges. Ask with exactly these options:
47
+ - **STALE** → the user judges. Ask (H `fast.f0.stale-wiki`) with exactly these options:
53
48
  1. **Refresh wiki, then continue fast** *(recommended)* — run orc-wiki's
54
49
  incremental refresh (diff since `scan_commit`, re-scan only affected
55
50
  docs), then re-enter this preflight.
@@ -99,7 +94,7 @@ migration) and write the intent-spec + a minimal checkpoint.
99
94
  ## Phase F2 — Slice build + dispatch (ONE executor)
100
95
 
101
96
  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`).
97
+ 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
98
 
104
99
  **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
100
 
@@ -134,35 +129,35 @@ pinned in the agent file). **Under `opus5_only` it is `orc-executor-opus-5-low`*
134
129
  - **terse-return rule:** standard contract fields, NO narrative prose — files
135
130
  changed, one-line diff summary, smoke-relevant notes only.
136
131
 
137
- Validate the return per `../_shared/return-validation.md` — `unmet[]`
132
+ Validate the return per `../_shared/return-validation.md` §1–§3 + the § of
133
+ each field you injected — `unmet[]`
138
134
  honesty, `pattern_version` + `invariants_checked` attestation, `actual_model`
139
135
  / `actual_effort` downgrade check (emit the `VERIFY` trace line), and §6's worktree delta (`git status --short` before/after; a path changed outside `declared_files` is a violation whatever the return said). Malformed
140
136
  return = failure (one re-dispatch, then fallback offer).
141
137
 
142
- **Before any re-dispatch, run `orc run inflight`** (0 clear · 1 in-flight · 2 unknown). A Task error does not kill the agent behind it, and exit 2 REFUSES by default — `a lane that re-dispatches over a live attempt` has broken the contract. Canonical: `../_shared/return-validation.md`.
138
+ **Before any re-dispatch, run `orc run inflight`**. A Task error does not kill the agent behind it, and exit 2 REFUSES by default — `a lane that re-dispatches over a live attempt` has broken the contract. Canonical: `../_shared/return-validation.md`.
143
139
 
144
140
  ## Phase F3 — Smoke gate (build + test; blocks ship on red)
145
141
 
146
142
  Run the gate per `../_shared/smoke-gate.md`, sourcing commands **from
147
143
  `wiki-meta.json`'s `commands` block** (recorded at wiki scan — don't
148
144
  rediscover tooling; manifest lacks them → detect once and say so). **GREEN**
149
- → code-graph step e.(3) (never a gate) → ship. **RED** → one repair round; second red → STOP and offer: escalate to
145
+ → code-graph step e.(3) (never a gate) → ship. **RED** → the flaky check, then one repair round; second red → STOP and offer: escalate to
150
146
  orc-mini (reason `smoke-red-escalation`) / switch to full `/orc` / stop.
151
147
  Docs-only → gate N/A, say so.
152
148
 
153
149
  ## Phase F3.5 — Mock example (config `mock_example`, default ask)
154
150
 
155
- Canonical: `../_shared/drift-recovery.md` — load on fire. Only after a GREEN
156
- F3, before ship: `ask` → MANDATORY offer · `on` → build · `off` → skip.
157
- Deliverable `mock-examples/<change-slug>/` at project root — **never
158
- committed/staged**. Drift answer → `DRIFT-FROM` recovery (cap 2 loops, honest
159
- report on cap). Trace: `PHASE mock-example`, `DRIFT loop=<n>`.
151
+ After a GREEN F3, before ship (H `fast.f3-5.mock`): follow `../_shared/drift-recovery.md` (load on
152
+ fire) — the `mock-examples/<change-slug>/` deliverable, the `DRIFT-FROM` loop and
153
+ its cap. Trace: `PHASE mock-example`, `DRIFT loop=<n>`.
160
154
 
161
155
  ## Phase F4 — Ship
162
156
 
163
- Offer commit (push if asked; never stage `mock-examples/`). Append the final markers to the checkpoint, emit
157
+ Offer commit (H `fast.f4.ship` · `any.ship.review-before-push`; push if asked; never stage `mock-examples/`). Append the final markers to the checkpoint, emit
164
158
  `OUTCOME task=… band=fast model=… retries=… unmet=…` + `FINISH`, show the
165
- dispatch line (model/effort actually used) + the `/usage` reminder. Fast never
159
+ dispatch line (model/effort actually used) + the `/usage` reminder. Every end — ship
160
+ or a red STOP — prints the card (`../_shared/phases/summary.md` §End-of-run card). Fast never
166
161
  triggers the post-ship wiki refresh ask (preflight polices freshness on the
167
162
  way in) — the passive stale-flag note still applies to touched covered files.
168
163
 
@@ -176,46 +171,25 @@ already in the shared format — no migration.
176
171
 
177
172
  ## Behavior trace (always on)
178
173
 
179
- `../_shared/phases/trace.md` (`core`, at run start; `orc lane phases` names
180
- the file and the layers). Lane token `fast`, tier **Build lanes** —
181
- per phase, batched to **2 packets** (preflight+dispatch · gate+ship), each
182
- paired with the next phase's first dispatch.
183
- At run start write `log_dir/.current` = `run-fast-<slug>-<DDMMYY>-<HHMMSS>.txt` AND
184
- `touch the trace file` of that name in the SAME step.
185
- Nothing else about the protocol is restated here; a phase that ends with
186
- `zero new trace lines is a protocol violation`.
187
-
188
- ## Config
189
-
190
- **ONE resolver, and it is not you:** `orc lane config orc-fast --json`. Obey
191
- `effective`, print every line in `announce[]` VERBATIM at preflight, and honour
192
- `stops[]` before wave 1. Never re-derive a value, a precedence or an inertness
193
- from `.claude/orc.config.yaml` — a key this lane does not read is not in the
194
- answer, and a key another key shadows comes back already marked. Exit ≠ 0 → say
195
- the CLI is unavailable and fall back to `../_shared/config-precedence.md`'s
196
- documented defaults, out loud. Priorities and families:
197
- `../_shared/config-precedence.md`.
174
+ `../_shared/phases/trace.md` (`core`, at run start; `orc lane phases orc-fast --json` →
175
+ `trace_grammar` gives the verbs). Lane token `fast`, tier
176
+ **Build lanes** — batched to **2 packets** (preflight+dispatch ·
177
+ gate+ship) → `orc trace write --packet -`. At run start write `log_dir/.current` =
178
+ `run-fast-<slug>-<DDMMYY>-<HHMMSS>.txt` AND `touch the trace file` of that name
179
+ in the SAME step. A phase that ends with `zero new trace lines is a protocol violation`.
198
180
 
199
- Fast has no config key of its own — command-entry only; wave/scoring/review
200
- keys never apply, and the tier edges the F0 gate reads arrive resolved.
201
-
202
- ## Rules — the anti-slop card (`../_shared/phases/rules.md`)
181
+ ## Lane contract (`../_shared/lane-contract.md` — read it ONLY when a call exits ≠ 0)
203
182
 
204
- `orc rules slice --lane orc-fast --json` is the ONLY assembler; never build
205
- the card here. It rides under the house rules and above the task —
206
- **house rules > your project's rules > ORC's own packs** — and its `line` prints
207
- VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
208
- never a silent choice) and `rules_overridden[]`.
209
- ## Calls
183
+ - **Calls:** `orc lane calls orc-fast --json` names every call and its exit codes.
184
+ **An exit code is an ANSWER where it says so, not a failure.** Make no other call.
185
+ - **Config:** `orc lane config orc-fast --json`. Obey `effective`, print every line
186
+ in `announce[]` VERBATIM at preflight, and honour `stops[]` before wave 1.
187
+ Never merge `.claude/orc.config.yaml` yourself (`../_shared/config-precedence.md`).
188
+ - **Rules:** `orc rules slice --lane orc-fast --json` is the ONLY assembler
189
+ (`../_shared/phases/rules.md`). Its `line` prints VERBATIM at preflight.
210
190
 
211
- **ONE catalogue, and it is not you:** `orc lane calls orc-fast --json` names every
212
- CLI call this lane makes, each with its exit-code contract, its cost, when to run
213
- it, and what an EMPTY answer means. Never invent a spelling, never re-word an
214
- exit code, and never re-derive a state word — the CLI's state words are the only
215
- state words, and **an exit code is an ANSWER wherever that contract says so, not
216
- a failure**. A call the answer does not name is a call this lane does not make.
217
- Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
218
- command you are about to run, out loud, before running it.
191
+ Fast has no config key of its own — command-entry only; wave/scoring/review
192
+ keys never apply, and the tier edges the F0 gate reads arrive resolved.
219
193
 
220
194
  ## Checkpoint (minimal, append-only)
221
195
 
@@ -223,14 +197,12 @@ One `fast-checkpoint.md` in the run folder: GATE results (+ any
223
197
  `wiki_stale_override`), the dispatch, smoke verdicts, OUTCOME — enough for
224
198
  /orc-retro mining and fresh-session resume, nothing more.
225
199
 
226
- ## What fast still enforces (from the main hard rules)
200
+ ## What fast still enforces
227
201
 
228
- Never implement yourself (smoke gate = read-only build+test) · all artifacts
229
- in the run subfolder, never project root · validate the subagent return
230
- (malformed = failure) · never offer commit on a red build · report the
231
- dispatch + remind the user to run `/usage` (never invoke it programmatically).
202
+ All artifacts in the run subfolder, never project root · never offer commit on
203
+ a red build · never invoke `/usage` programmatically.
232
204
 
233
205
  ## Waiting mid-run (`/orc-wait`)
234
206
 
235
207
  Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
236
- Checkpoint **full** · safe point **after the executor returns**. `soft` FORCES that checkpoint and does NOT stop if the write fails; `hard` skips it and can lose an in-flight return. Never begin a wait between a dispatch and its validated return, or before the smoke gate has reported.
208
+ Checkpoint **full** · safe point **after the executor returns**.
@@ -1,82 +1,77 @@
1
- ---
2
- name: orc-judge
3
- description: >
4
- Judgment gates for the ORC ultra lane. One judge skill, one agent
5
- (orc-judge-opus-5-xhigh), three dispatch contexts: gate=analysis (after the
6
- analyst), gate=plan (after the planner), gate=implementation (after verify —
7
- the anti-miss-implementation fidelity + strict-quality gate). Returns a
8
- structured verdict (APPROVE | REVISE | ESCALATE) with anchored,
9
- consequence-cited findings; REVISE loops the author with a hard 2-loop cap
10
- and a convergence rule. Dispatched only from /orc-ultra — no slash command
11
- of its own, never in orc or orc-mini. The orchestrator dispatches the judge
12
- subagent — it never judges itself.
13
- ---
14
-
15
- # ORC-JUDGE (ultra-lane judgment gates)
16
-
17
- A model-based quality gate on top of ORC's deterministic gates. The judge
18
- handles what determinism cannot: scope-interpretation correctness, plan
19
- soundness, implementation fidelity, and — at the final gate — ultra-strict
20
- code quality. Deterministic gates ALWAYS run first; the judge never re-checks
21
- what a string-compare catches.
22
-
23
- Ultra lane ONLY. No `/orc-judge` command; the orchestrator dispatches
24
- `orc-judge-opus-5-xhigh` at the three ultra gates.
25
-
26
- ## Hard rules
27
-
28
- 1. **The orchestrator never judges — it spawns.** One agent, three contexts
29
- (`gate=analysis|plan|implementation`).
30
- 2. **Deterministic first.** A judge dispatch is only legal AFTER the gate's
31
- deterministic checks passed (evidence spot-check + derivation lint /
32
- coverage + graph checks / verify + traceability matrix + static analysis).
33
- 3. **The judge is read-only** and blind to the author's internal reasoning or
34
- self-assessment (anti-anchoring): it sees the artifact, its evidence, the
35
- advisor brief + rubric, and the original request.
36
- 4. **Judge gates ADD to user sign-offs, never replace them.** Gate approvals
37
- never skip the analyst challenge round or the plan sign-off.
38
- 5. **Gate scope is one-directional.** gate=plan takes the approved spec as
39
- fixed ground truth; gate=implementation takes the approved plan as fixed —
40
- no gate re-litigates an earlier approved gate.
41
- 6. **The judge never fixes.** Authors fix: analyst (gate=analysis), planner
42
- (gate=plan), a scored executor fix wave (gate=implementation).
43
-
44
- ## Verdict handling (orchestrator side)
45
-
46
- Validate the return against the agent's verdict contract, then:
47
-
48
- - **Downgrade enforcement:** any blocking finding missing its verbatim
49
- anchor or its class-appropriate justification (failure_consequence for
50
- correctness/security; named category + concrete alternative for
51
- smell/simplification/placement) → downgrade to advisory and tell the user.
52
- EXCEPTION: a security finding with a concrete consequence is always
53
- blocking — never downgraded.
54
- - **APPROVE** → record the verdict artifact, continue the pipeline.
55
- - **REVISE** → re-dispatch the author with the original slice + the blocking
56
- findings verbatim. The author's return must echo `finding_id → resolution`
57
- per finding; a missing echo is a malformed return (requeue). Then RE-JUDGE
58
- under the convergence rule: block only on unresolved prior findings by id
59
- or on lines the revision changed; new findings on untouched material are
60
- advisory-only. **Hard cap: 2 revision loops per gate**, counted in the
61
- checkpoint.
62
- - **ESCALATE** (or a third failure) → present the ESCALATE menu:
63
- accept-and-proceed (unresolved findings recorded in the Phase 7 summary) /
64
- user fixes manually then re-judge (does not consume a loop) / grant one
65
- extra loop / stop-and-checkpoint.
66
- - Advisory findings NEVER loop — they ride forward attached to the next
67
- phase's slices as notes.
68
- - Persist every verdict as `run/{run-slug}/ultra/verdict-<gate>-<round>.md`
69
- (mined by /orc-retro; survives resume). When logging, emit
70
- `JUDGE <gate> <verdict>` and the judgment GATE line (pass|bounce|escalate).
71
-
72
- ## The three gates
73
-
74
- | Gate | After | Judges | REVISE target |
75
- |------|-------|--------|---------------|
76
- | analysis | analyst-return deterministic gates | scope interpretation, requirement coherence, rubric misses, stale-doc risk | analyst |
77
- | plan | Phase 1 exit gate + blast-radius map | decomposition, declared-file plausibility, deps, right-sizing, blast-radius coverage | planner |
78
- | implementation | Phase 6/6.5 + traceability matrix + static analysis | fidelity to the user's ask + ultra-strict quality (security, smells, simplification, placement, pattern invariants) | scored executor fix wave → re-verify → re-judge |
79
-
80
- Return fields include `actual_model` + `actual_effort` (standard
81
- claimed-vs-actual check) and `rubric_items_checked[]` +
82
- `unconfirmed_assumptions_touched[]` — validate them like any worker return.
1
+ ---
2
+ name: orc-judge
3
+ description: >
4
+ Internal to /orc-ultra: the three judgment gates — analysis, plan,
5
+ implementation. Returns APPROVE | REVISE | ESCALATE with anchored findings;
6
+ REVISE has a hard 2-loop cap. No slash command of its own.
7
+ disable-model-invocation: true
8
+ ---
9
+
10
+ # ORC-JUDGE (ultra-lane judgment gates)
11
+
12
+ A model-based quality gate on top of ORC's deterministic gates. The judge
13
+ handles what determinism cannot: scope-interpretation correctness, plan
14
+ soundness, implementation fidelity, and — at the final gate — ultra-strict
15
+ code quality. Deterministic gates ALWAYS run first; the judge never re-checks
16
+ what a string-compare catches.
17
+
18
+ Ultra lane ONLY. No `/orc-judge` command; the orchestrator dispatches
19
+ `orc-judge-opus-5-xhigh` at the three ultra gates.
20
+
21
+ ## Hard rules
22
+
23
+ 1. **The orchestrator never judges — it spawns.** One agent, three contexts
24
+ (`gate=analysis|plan|implementation`).
25
+ 2. **Deterministic first.** A judge dispatch is only legal AFTER the gate's
26
+ deterministic checks passed (evidence spot-check + derivation lint /
27
+ coverage + graph checks / verify + traceability matrix + static analysis).
28
+ 3. **The judge is read-only** and blind to the author's internal reasoning or
29
+ self-assessment (anti-anchoring): it sees the artifact, its evidence, the
30
+ advisor brief + rubric, and the original request.
31
+ 4. **Judge gates ADD to user sign-offs, never replace them.** Gate approvals
32
+ never skip the analyst challenge round or the plan sign-off.
33
+ 5. **Gate scope is one-directional.** gate=plan takes the approved spec as
34
+ fixed ground truth; gate=implementation takes the approved plan as fixed —
35
+ no gate re-litigates an earlier approved gate.
36
+ 6. **The judge never fixes.** Authors fix: analyst (gate=analysis), planner
37
+ (gate=plan), a scored executor fix wave (gate=implementation).
38
+
39
+ ## Verdict handling (orchestrator side)
40
+
41
+ Validate the return against the agent's verdict contract, then:
42
+
43
+ - **Downgrade enforcement:** any blocking finding missing its verbatim
44
+ anchor or its class-appropriate justification (failure_consequence for
45
+ correctness/security; named category + concrete alternative for
46
+ smell/simplification/placement) → downgrade to advisory and tell the user.
47
+ EXCEPTION: a security finding with a concrete consequence is always
48
+ blocking — never downgraded.
49
+ - **APPROVE** → record the verdict artifact, continue the pipeline.
50
+ - **REVISE** → re-dispatch the author with the original slice + the blocking
51
+ findings verbatim. The author's return must echo `finding_id → resolution`
52
+ per finding; a missing echo is a malformed return (requeue). Then RE-JUDGE
53
+ under the convergence rule: block only on unresolved prior findings by id
54
+ or on lines the revision changed; new findings on untouched material are
55
+ advisory-only. **Hard cap: 2 revision loops per gate**, counted in the
56
+ checkpoint.
57
+ - **ESCALATE** (or a third failure) → present the ESCALATE menu:
58
+ accept-and-proceed (unresolved findings recorded in the Phase 7 summary) /
59
+ user fixes manually then re-judge (does not consume a loop) / grant one
60
+ extra loop / stop-and-checkpoint.
61
+ - Advisory findings NEVER loop — they ride forward attached to the next
62
+ phase's slices as notes.
63
+ - Persist every verdict as `run/{run-slug}/ultra/verdict-<gate>-<round>.md`
64
+ (mined by /orc-retro; survives resume). When logging, emit
65
+ `JUDGE <gate> <verdict>` and the judgment GATE line (pass|bounce|escalate).
66
+
67
+ ## The three gates
68
+
69
+ | Gate | After | Judges | REVISE target |
70
+ |------|-------|--------|---------------|
71
+ | analysis | analyst-return deterministic gates | scope interpretation, requirement coherence, rubric misses, stale-doc risk | analyst |
72
+ | plan | Phase 1 exit gate + blast-radius map | decomposition, declared-file plausibility, deps, right-sizing, blast-radius coverage | planner |
73
+ | implementation | Phase 6/6.5 + traceability matrix + static analysis | fidelity to the user's ask + ultra-strict quality (security, smells, simplification, placement, pattern invariants) | scored executor fix wave → re-verify → re-judge |
74
+
75
+ Return fields include `actual_model` + `actual_effort` (standard
76
+ claimed-vs-actual check) and `rubric_items_checked[]` +
77
+ `unconfirmed_assumptions_touched[]` — validate them like any worker return.
@@ -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.