@azure-id/orc 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/CHANGELOG.md +320 -0
  2. package/README.md +48 -23
  3. package/bin/build-agents.js +207 -205
  4. package/bin/cli.js +48188 -47417
  5. package/bin/fix.js +21 -18
  6. package/bin/graph-extract.js +314 -6
  7. package/bin/graph-gain.js +83 -2
  8. package/bin/graph-map.js +23 -1
  9. package/bin/graph-notes.js +1 -1
  10. package/bin/graph-query.js +1362 -37
  11. package/bin/graph-resolve.js +1 -1
  12. package/bin/graph-shard.js +29 -6
  13. package/bin/graph-signals.js +5 -3
  14. package/bin/graph.js +7 -3
  15. package/bin/habit.js +1 -1
  16. package/bin/pricing.json +8 -1
  17. package/bin/trace-write.js +40 -11
  18. package/bin/verify-contracts.js +5661 -5552
  19. package/bin/verify-package.js +716 -716
  20. package/bin/webui/api.js +8 -0
  21. package/bin/webui/fixtures/extra.js +2036 -2036
  22. package/bin/webui/fixtures/flow.js +1 -1
  23. package/bin/webui/fixtures/index.js +2 -2
  24. package/bin/webui/fixtures/knowledge.js +8 -1
  25. package/bin/webui/fixtures/pact.js +112 -111
  26. package/bin/webui/fixtures/stats.js +2 -2
  27. package/bin/webui/i18n/en/knowledge.json +2 -0
  28. package/bin/webui/i18n/id/knowledge.json +2 -0
  29. package/bin/webui/js/panels/knowledge.js +17 -0
  30. package/guides/code-graph-benefit.md +116 -0
  31. package/guides/configuration.md +150 -0
  32. package/guides/documents.md +262 -0
  33. package/guides/extra-models.md +448 -0
  34. package/guides/habits-and-gotchas.md +152 -0
  35. package/guides/knowledge-reads.md +190 -0
  36. package/guides/model-selection.md +186 -0
  37. package/guides/rules.md +305 -0
  38. package/guides/status-line.md +344 -0
  39. package/mock-run/orc-cli.md +3 -2
  40. package/mock-run/orc-doc.md +452 -448
  41. package/mock-run/orc.md +157 -157
  42. package/package.json +2 -1
  43. package/templates/agents/MODEL-MAPPING.md +176 -176
  44. package/templates/agents/{orc-executor-haiku-4-5.md → orc-executor-haiku-5-high.md} +21 -8
  45. package/templates/agents/orc-executor-opus-4-7-high.md +17 -5
  46. package/templates/agents/orc-executor-opus-4-7-med.md +17 -5
  47. package/templates/agents/orc-executor-opus-4-8-high.md +17 -5
  48. package/templates/agents/orc-executor-opus-5-high.md +17 -5
  49. package/templates/agents/orc-executor-opus-5-low.md +17 -5
  50. package/templates/agents/orc-executor-opus-5-med.md +17 -5
  51. package/templates/agents/orc-executor-sonnet-4-6-high.md +17 -5
  52. package/templates/agents/orc-executor-sonnet-5-high.md +17 -5
  53. package/templates/agents/orc-executor-sonnet-5-low.md +17 -5
  54. package/templates/agents/orc-executor-sonnet-5-med.md +17 -5
  55. package/templates/agents/{orc-graph-noter-sonnet-4-6-med.md → orc-graph-noter-haiku-5-high.md} +4 -4
  56. package/templates/agents/orc-planner-mini-opus-5-med.md +3 -1
  57. package/templates/agents/orc-planner-mini-sonnet-5-high.md +3 -1
  58. package/templates/agents/orc-planner-opus-5-med.md +3 -1
  59. package/templates/agents/{orc-trace-writer-haiku-4-5.md → orc-trace-writer-haiku-5-high.md} +4 -3
  60. package/templates/commands/orc-doc.md +128 -128
  61. package/templates/commands/orc-export.md +51 -46
  62. package/templates/hooks/README.md +8 -3
  63. package/templates/hooks/orc-effort-guard.js +105 -27
  64. package/templates/hooks/orc-graph-hook.js +252 -4
  65. package/templates/hooks/orc-statusline.js +13 -6
  66. package/templates/hooks/orc-trace.js +1 -1
  67. package/templates/skills/_shared/README.md +2 -2
  68. package/templates/skills/_shared/code-graph.md +185 -251
  69. package/templates/skills/_shared/extra-dispatch.md +1331 -1331
  70. package/templates/skills/_shared/lane-contract.md +7 -3
  71. package/templates/skills/_shared/opus5-only.md +137 -137
  72. package/templates/skills/_shared/phases/execution.md +13 -11
  73. package/templates/skills/_shared/phases/planning.md +27 -9
  74. package/templates/skills/_shared/phases/preflight.md +3 -3
  75. package/templates/skills/_shared/phases/review.md +4 -3
  76. package/templates/skills/_shared/phases/ship.md +7 -10
  77. package/templates/skills/_shared/phases/summary.md +2 -3
  78. package/templates/skills/_shared/phases/trace-verbs.md +21 -16
  79. package/templates/skills/_shared/phases/trace.md +3 -3
  80. package/templates/skills/_shared/phases/wiki-consult.md +2 -2
  81. package/templates/skills/_shared/pr-templates.md +108 -106
  82. package/templates/skills/_shared/read-ladder.md +8 -2
  83. package/templates/skills/_shared/return-validation.md +10 -6
  84. package/templates/skills/_shared/review-slice.md +1 -1
  85. package/templates/skills/_shared/stack-plan.md +135 -135
  86. package/templates/skills/_shared/wait.md +14 -2
  87. package/templates/skills/context-combiner/SKILL.md +2 -2
  88. package/templates/skills/orc/SKILL.md +227 -227
  89. package/templates/skills/orc/config.md +2 -2
  90. package/templates/skills/orc/examples/full-run-mock.md +74 -74
  91. package/templates/skills/orc/schemas/planning-output.md +3 -0
  92. package/templates/skills/orc-aftermath/SKILL.md +15 -15
  93. package/templates/skills/orc-analyze/SKILL.md +2 -2
  94. package/templates/skills/orc-analyze-mini/SKILL.md +2 -2
  95. package/templates/skills/orc-boundary/SKILL.md +15 -15
  96. package/templates/skills/orc-boundary/references/card.md +81 -78
  97. package/templates/skills/orc-boundary/references/gate.md +113 -113
  98. package/templates/skills/orc-brainstorm/SKILL.md +15 -15
  99. package/templates/skills/orc-budget/SKILL.md +15 -15
  100. package/templates/skills/orc-challenge/README.md +1 -1
  101. package/templates/skills/orc-challenge/SKILL.md +16 -16
  102. package/templates/skills/orc-challenge/examples/council-full-roster.md +1 -1
  103. package/templates/skills/orc-claude/SKILL.md +4 -4
  104. package/templates/skills/orc-claude/examples/claude-run-mock.md +1 -1
  105. package/templates/skills/orc-diy/SKILL.md +2 -2
  106. package/templates/skills/orc-diy/references/blocks/wiki.md +26 -26
  107. package/templates/skills/orc-diy/references/flow-schema.md +2 -2
  108. package/templates/skills/orc-doc/README.md +2 -2
  109. package/templates/skills/orc-doc/SKILL.md +501 -490
  110. package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +12 -1
  111. package/templates/skills/orc-doc/references/chunking.md +6 -4
  112. package/templates/skills/orc-doc/references/gates.md +311 -311
  113. package/templates/skills/orc-doc/references/resume-protocol.md +229 -228
  114. package/templates/skills/orc-explain/SKILL.md +88 -88
  115. package/templates/skills/orc-export/SKILL.md +190 -187
  116. package/templates/skills/orc-fast/SKILL.md +213 -210
  117. package/templates/skills/orc-grill/SKILL.md +245 -245
  118. package/templates/skills/orc-handoff/SKILL.md +11 -11
  119. package/templates/skills/orc-learn/SKILL.md +13 -13
  120. package/templates/skills/orc-learn/examples/learn-run-mock.md +2 -2
  121. package/templates/skills/orc-mini/SKILL.md +12 -12
  122. package/templates/skills/orc-mini/examples/mini-run-mock.md +4 -5
  123. package/templates/skills/orc-pact/SKILL.md +15 -15
  124. package/templates/skills/orc-pact/references/gate.md +70 -70
  125. package/templates/skills/orc-pattern/SKILL.md +3 -3
  126. package/templates/skills/orc-poly/SKILL.md +4 -4
  127. package/templates/skills/orc-poly/examples/poly-run-mock.md +51 -51
  128. package/templates/skills/orc-pr-driver/SKILL.md +4 -3
  129. package/templates/skills/orc-pr-driver/references/orc-run-split.md +108 -99
  130. package/templates/skills/orc-pr-setup/SKILL.md +2 -2
  131. package/templates/skills/orc-quick/README.md +535 -536
  132. package/templates/skills/orc-quick/SKILL.md +29 -32
  133. package/templates/skills/orc-quick/references/context-doc.md +145 -145
  134. package/templates/skills/orc-quick/references/dispatch-gate.md +220 -220
  135. package/templates/skills/orc-quick/references/gh-mode.md +2 -1
  136. package/templates/skills/orc-quick/references/look.md +34 -12
  137. package/templates/skills/orc-retro/SKILL.md +2 -2
  138. package/templates/skills/orc-retro/examples/retro-mock.md +2 -2
  139. package/templates/skills/orc-route/SKILL.md +2 -2
  140. package/templates/skills/orc-test/SKILL.md +6 -3
  141. package/templates/skills/orc-verify/SKILL.md +2 -2
  142. package/templates/skills/orc-wait/SKILL.md +10 -2
  143. package/templates/skills/orc-wiki/SKILL.md +4 -4
  144. package/templates/skills/orc-wiki/references/pattern-prewarm.md +19 -19
  145. package/templates/agents/orc-executor-sonnet-4-6-med.md +0 -155
@@ -1,113 +1,113 @@
1
- # Reference — the boundary gate inside `/orc` (`boundary_gate`)
2
-
3
- Loaded by the spine at Phase 1. This is the CONSUMER half: `/orc` reads cards, it
4
- never writes one.
5
-
6
- `boundary_gate: off | warn | block` — default **`warn`**.
7
-
8
- | Mode | What changes |
9
- |---|---|
10
- | `off` | nothing. Cards are ignored entirely. |
11
- | `warn` | the preflight line, plus a per-task verdict printed before each wave. No dispatch changes. |
12
- | `block` | additionally: a REFUSE task is LIFTED OUT of its wave and never dispatched. |
13
-
14
- `block` changes dispatch behaviour on upgrade, which is why it is not the default.
15
- Print the active mode whenever a verdict is shown — a gate whose mode is invisible
16
- gets blamed for things it did not do.
17
-
18
- ## Phase 1 — preflight, one line
19
-
20
- `orc boundary status --json` with the other probes. Print the `line` field
21
- VERBATIM:
22
-
23
- ```
24
- bound : 9 execute · 2 escalate · 1 refuse (2 stale)
25
- ```
26
-
27
- Never re-word it, never compute the counts. No cards at all:
28
-
29
- ```
30
- bound : none — /orc-boundary writes them; no card means an area is UNKNOWN, not safe
31
- ```
32
-
33
- ## Phase 3 — per wave
34
-
35
- Before dispatching wave W, resolve each task's area by matching its
36
- `declared_files` against every card's `anchored_files` (longest match wins), then:
37
-
38
- **EXECUTE** — dispatch normally. Nothing printed beyond the wave table.
39
-
40
- **ESCALATE** — dispatch normally, and record the named human on the task. **Ship
41
- is gated on that sign-off**, using the EXISTING pause machinery — the stop sequence
42
- at the wave boundary, with the escalation named in the stop reason. No new stop
43
- mechanic, no new config key.
44
-
45
- **REFUSE** —
46
-
47
- - `warn`: print the verdict and its checklist, then dispatch anyway. The user was
48
- told; the run is theirs.
49
- - `block`: **lift that ONE task out of the wave. The wave proceeds with the
50
- rest.** Blocking the whole wave punishes the tasks that were fine, and a gate
51
- that costs a wave gets switched off. Print:
52
-
53
- ```
54
- boundary → wave 2: T04 lifted out (REFUSE · src/payments)
55
- the wave runs with T03, T05.
56
- T04 comes back when:
57
- □ add a test runner to this package
58
- □ cover the idempotency path → /orc-pattern
59
- Not blocked for you — say "do T04 anyway" and it dispatches.
60
- ```
61
-
62
- That last line is required. The gate constrains ORC, not the user.
63
-
64
- A lifted task's dependents are **requeued, not cancelled**: the existing
65
- `REPLAN wave=<n>` path already handles a task that did not land, and this is that
66
- case with a different cause.
67
-
68
- **A task in an area with NO card** is dispatched normally and reported as
69
- `boundary: unknown` on its dispatch line. Unknown is not REFUSE — refusing
70
- everything uncarded would make the first run after install useless.
71
-
72
- ### Extra — a REFUSE area never goes foreign, in either mode
73
-
74
- A task whose area is **REFUSE never routes to a non-Claude worker** whatever the
75
- route table says (`extra_enabled`, `../../_shared/extra-dispatch.md`), and this
76
- holds in `warn` mode too — where the task still dispatches, but to Claude. It is
77
- the second hard hold-back beside the cited-risk one, and it is deliberately
78
- *wider* than the `block` mode it sits next to.
79
-
80
- The reason is that the two verdicts are answering different questions. `block`
81
- decides whether ORC should attempt the task at all, and `warn` says the user
82
- accepted that risk. Neither of them asked whether the work should leave the
83
- machine — and a REFUSE is, by construction, an area where ORC **cannot verify
84
- its own output** (that is one of the four questions the verdict is derived from).
85
- Handing exactly that work to the executor with the weakest fence and no
86
- `actual_model` line compounds the one condition the card was written about.
87
-
88
- Print it with the verdict, and name it in the `extra:` preflight's held-back
89
- count. **A card that caused a hold-back must say so on its own card**, so the
90
- next reader learns it from the boundary lane rather than from a routing table
91
- they were not looking at. `unknown` is not REFUSE here either — an uncarded area
92
- routes by the ordinary rules.
93
-
94
- ## `/orc-route`
95
-
96
- A plan with any REFUSE task **cannot route to `/orc-fast`**: fast has one executor
97
- and no wave to lift anything out of, so the gate has nowhere to act. Report it in
98
- the not-possible column with the verdict named, exactly like the other blocking
99
- conditions.
100
-
101
- ## `/orc-ultra`
102
-
103
- The implementation judge may score against the area's card: an implementation that
104
- did the REFUSE-listed thing anyway is a blocking finding with an anchor
105
- (`.claude/orc/boundary/<area>.md`) and a consequence already written down.
106
-
107
- ## The trace verb
108
-
109
- `BOUNDARY <verdict> task=<id> :: <area>` per gated task, and
110
- `BOUNDARY lift task=<id> :: <area>` when `block` removes one. Carried in the phase
111
- packet like every other verb — handed to `orc-trace-writer-haiku-4-5`, never
112
- written directly. `/orc-retro` reads them to answer the question this whole lane
113
- exists for: how much work did we stop attempting, and was that right?
1
+ # Reference — the boundary gate inside `/orc` (`boundary_gate`)
2
+
3
+ Loaded by the spine at Phase 1. This is the CONSUMER half: `/orc` reads cards, it
4
+ never writes one.
5
+
6
+ `boundary_gate: off | warn | block` — default **`warn`**.
7
+
8
+ | Mode | What changes |
9
+ |---|---|
10
+ | `off` | nothing. Cards are ignored entirely. |
11
+ | `warn` | the preflight line, plus a per-task verdict printed before each wave. No dispatch changes. |
12
+ | `block` | additionally: a REFUSE task is LIFTED OUT of its wave and never dispatched. |
13
+
14
+ `block` changes dispatch behaviour on upgrade, which is why it is not the default.
15
+ Print the active mode whenever a verdict is shown — a gate whose mode is invisible
16
+ gets blamed for things it did not do.
17
+
18
+ ## Phase 1 — preflight, one line
19
+
20
+ `orc boundary status --json` with the other probes. Print the `line` field
21
+ VERBATIM:
22
+
23
+ ```
24
+ bound : 9 execute · 2 escalate · 1 refuse (2 stale)
25
+ ```
26
+
27
+ Never re-word it, never compute the counts. No cards at all:
28
+
29
+ ```
30
+ bound : none — /orc-boundary writes them; no card means an area is UNKNOWN, not safe
31
+ ```
32
+
33
+ ## Phase 3 — per wave
34
+
35
+ Before dispatching wave W, resolve each task's area by matching its
36
+ `declared_files` against every card's `anchored_files` (longest match wins), then:
37
+
38
+ **EXECUTE** — dispatch normally. Nothing printed beyond the wave table.
39
+
40
+ **ESCALATE** — dispatch normally, and record the named human on the task. **Ship
41
+ is gated on that sign-off**, using the EXISTING pause machinery — the stop sequence
42
+ at the wave boundary, with the escalation named in the stop reason. No new stop
43
+ mechanic, no new config key.
44
+
45
+ **REFUSE** —
46
+
47
+ - `warn`: print the verdict and its checklist, then dispatch anyway. The user was
48
+ told; the run is theirs.
49
+ - `block`: **lift that ONE task out of the wave. The wave proceeds with the
50
+ rest.** Blocking the whole wave punishes the tasks that were fine, and a gate
51
+ that costs a wave gets switched off. Print:
52
+
53
+ ```
54
+ boundary → wave 2: T04 lifted out (REFUSE · src/payments)
55
+ the wave runs with T03, T05.
56
+ T04 comes back when:
57
+ □ add a test runner to this package
58
+ □ cover the idempotency path → /orc-pattern
59
+ Not blocked for you — say "do T04 anyway" and it dispatches.
60
+ ```
61
+
62
+ That last line is required. The gate constrains ORC, not the user.
63
+
64
+ A lifted task's dependents are **requeued, not cancelled**: the existing
65
+ `REPLAN wave=<n>` path already handles a task that did not land, and this is that
66
+ case with a different cause.
67
+
68
+ **A task in an area with NO card** is dispatched normally and reported as
69
+ `boundary: unknown` on its dispatch line. Unknown is not REFUSE — refusing
70
+ everything uncarded would make the first run after install useless.
71
+
72
+ ### Extra — a REFUSE area never goes foreign, in either mode
73
+
74
+ A task whose area is **REFUSE never routes to a non-Claude worker** whatever the
75
+ route table says (`extra_enabled`, `../../_shared/extra-dispatch.md`), and this
76
+ holds in `warn` mode too — where the task still dispatches, but to Claude. It is
77
+ the second hard hold-back beside the cited-risk one, and it is deliberately
78
+ *wider* than the `block` mode it sits next to.
79
+
80
+ The reason is that the two verdicts are answering different questions. `block`
81
+ decides whether ORC should attempt the task at all, and `warn` says the user
82
+ accepted that risk. Neither of them asked whether the work should leave the
83
+ machine — and a REFUSE is, by construction, an area where ORC **cannot verify
84
+ its own output** (that is one of the four questions the verdict is derived from).
85
+ Handing exactly that work to the executor with the weakest fence and no
86
+ `actual_model` line compounds the one condition the card was written about.
87
+
88
+ Print it with the verdict, and name it in the `extra:` preflight's held-back
89
+ count. **A card that caused a hold-back must say so on its own card**, so the
90
+ next reader learns it from the boundary lane rather than from a routing table
91
+ they were not looking at. `unknown` is not REFUSE here either — an uncarded area
92
+ routes by the ordinary rules.
93
+
94
+ ## `/orc-route`
95
+
96
+ A plan with any REFUSE task **cannot route to `/orc-fast`**: fast has one executor
97
+ and no wave to lift anything out of, so the gate has nowhere to act. Report it in
98
+ the not-possible column with the verdict named, exactly like the other blocking
99
+ conditions.
100
+
101
+ ## `/orc-ultra`
102
+
103
+ The implementation judge may score against the area's card: an implementation that
104
+ did the REFUSE-listed thing anyway is a blocking finding with an anchor
105
+ (`.claude/orc/boundary/<area>.md`) and a consequence already written down.
106
+
107
+ ## The trace verb
108
+
109
+ `BOUNDARY <verdict> task=<id> :: <area>` per gated task, and
110
+ `BOUNDARY lift task=<id> :: <area>` when `block` removes one. Carried in the phase
111
+ packet like every other verb — handed to `orc-trace-writer-haiku-5-high`, never
112
+ written directly. `/orc-retro` reads them to answer the question this whole lane
113
+ exists for: how much work did we stop attempting, and was that right?
@@ -363,22 +363,22 @@ preflight line and has no gate to honour.
363
363
  ## Calls
364
364
 
365
365
  **ONE catalogue, and it is not you:** `orc lane calls orc-brainstorm --json` names every
366
- CLI call this lane makes, each with its exit-code contract, its cost, when to run
366
+ SHARED CLI call this lane makes, each with its exit-code contract, its cost, when to run
367
367
  it, and what an EMPTY answer means. Never invent a spelling, never re-word an
368
368
  exit code, and never re-derive a state word — the CLI's state words are the only
369
369
  state words, and **an exit code is an ANSWER wherever that contract says so, not
370
- a failure**. A call the answer does not name is a call this lane does not make.
370
+ a failure**. A call that neither it nor this skill names is a call this lane does not make.
371
371
  Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
372
- command you are about to run, out loud, before running it.
373
-
374
- ## Rules — the anti-slop card (`../_shared/phases/rules.md`)
375
-
376
- `orc rules slice --lane orc-brainstorm --json` is the ONLY assembler; never build
377
- the card here. It rides under the house rules and above the task —
378
- **house rules > your project's rules > ORC's own packs** — and its `line` prints
379
- VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
380
- never a silent choice) and `rules_overridden[]`.
381
- ## Waiting mid-run (`/orc-wait`)
382
-
383
- Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
384
- Checkpoint **snapshot** · safe point **phase edge**. `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.
372
+ command you are about to run, out loud, before running it.
373
+
374
+ ## Rules — the anti-slop card (`../_shared/phases/rules.md`)
375
+
376
+ `orc rules slice --lane orc-brainstorm --json` is the ONLY assembler; never build
377
+ the card here. It rides under the house rules and above the task —
378
+ **house rules > your project's rules > ORC's own packs** — and its `line` prints
379
+ VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
380
+ never a silent choice) and `rules_overridden[]`.
381
+ ## Waiting mid-run (`/orc-wait`)
382
+
383
+ Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
384
+ Checkpoint **snapshot** · safe point **phase edge**. `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.
@@ -234,22 +234,22 @@ preflight line and has no gate to honour.
234
234
  ## Calls
235
235
 
236
236
  **ONE catalogue, and it is not you:** `orc lane calls orc-budget --json` names every
237
- CLI call this lane makes, each with its exit-code contract, its cost, when to run
237
+ SHARED CLI call this lane makes, each with its exit-code contract, its cost, when to run
238
238
  it, and what an EMPTY answer means. Never invent a spelling, never re-word an
239
239
  exit code, and never re-derive a state word — the CLI's state words are the only
240
240
  state words, and **an exit code is an ANSWER wherever that contract says so, not
241
- a failure**. A call the answer does not name is a call this lane does not make.
241
+ a failure**. A call that neither it nor this skill names is a call this lane does not make.
242
242
  Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
243
- command you are about to run, out loud, before running it.
244
-
245
- ## Rules — the anti-slop card (`../_shared/phases/rules.md`)
246
-
247
- `orc rules slice --lane orc-budget --json` is the ONLY assembler; never build
248
- the card here. It rides under the house rules and above the task —
249
- **house rules > your project's rules > ORC's own packs** — and its `line` prints
250
- VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
251
- never a silent choice) and `rules_overridden[]`.
252
- ## Waiting mid-run (`/orc-wait`)
253
-
254
- Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
255
- Checkpoint **none** · safe point **read-only, seconds long**. Nothing here to checkpoint, so all three modes behave identically — say so rather than asking. Never begin a wait between a dispatch and its validated return, or before the smoke gate has reported.
243
+ command you are about to run, out loud, before running it.
244
+
245
+ ## Rules — the anti-slop card (`../_shared/phases/rules.md`)
246
+
247
+ `orc rules slice --lane orc-budget --json` is the ONLY assembler; never build
248
+ the card here. It rides under the house rules and above the task —
249
+ **house rules > your project's rules > ORC's own packs** — and its `line` prints
250
+ VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
251
+ never a silent choice) and `rules_overridden[]`.
252
+ ## Waiting mid-run (`/orc-wait`)
253
+
254
+ Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
255
+ Checkpoint **none** · safe point **read-only, seconds long**. Nothing here to checkpoint, so all three modes behave identically — say so rather than asking. Never begin a wait between a dispatch and its validated return, or before the smoke gate has reported.
@@ -135,7 +135,7 @@ one.
135
135
 
136
136
  ## Reading order for a new maintainer
137
137
 
138
- `../_shared/phases/intake.md` (it defines what every later file grades against) →
138
+ `references/intake.md` (it defines what every later file grades against) →
139
139
  `council.md` → `sealed-slice.md` → `rubric.md` → `conservation.md` →
140
140
  `cycle-state.md` → `fix-brief.md`. Then `examples/tsd-two-iterations.md` for the
141
141
  whole thing end to end, and `examples/council-full-roster.md` for a run where
@@ -115,7 +115,7 @@ themselves are this lane's own and stay here.
115
115
  ## C1 — Intake (ONE round, ASK — never guess)
116
116
 
117
117
  Full field list, the round format and the "I don't know yet" exit:
118
- `../_shared/phases/intake.md`. It ends by running `orc challenge init`, which **freezes
118
+ `references/intake.md`. It ends by running `orc challenge init`, which **freezes
119
119
  `goals.md`, `template.md` and the COUNCIL ROSTER**.
120
120
 
121
121
  **Question 7 is the P0 council ask**, rendered from `orc challenge roles --kind
@@ -284,22 +284,22 @@ documented defaults, out loud. Priorities and families:
284
284
  ## Calls
285
285
 
286
286
  **ONE catalogue, and it is not you:** `orc lane calls orc-challenge --json` names every
287
- CLI call this lane makes, each with its exit-code contract, its cost, when to run
287
+ SHARED CLI call this lane makes, each with its exit-code contract, its cost, when to run
288
288
  it, and what an EMPTY answer means. Never invent a spelling, never re-word an
289
289
  exit code, and never re-derive a state word — the CLI's state words are the only
290
290
  state words, and **an exit code is an ANSWER wherever that contract says so, not
291
- a failure**. A call the answer does not name is a call this lane does not make.
291
+ a failure**. A call that neither it nor this skill names is a call this lane does not make.
292
292
  Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
293
- command you are about to run, out loud, before running it.
294
-
295
- ## Rules — the anti-slop card (`../_shared/phases/rules.md`)
296
-
297
- `orc rules slice --lane orc-challenge --json` is the ONLY assembler; never build
298
- the card here. It rides under the house rules and above the task —
299
- **house rules > your project's rules > ORC's own packs** — and its `line` prints
300
- VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
301
- never a silent choice) and `rules_overridden[]`.
302
- ## Waiting mid-run (`/orc-wait`)
303
-
304
- Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
305
- Checkpoint **cycle** · safe point **after a cycle records**. `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.
293
+ command you are about to run, out loud, before running it.
294
+
295
+ ## Rules — the anti-slop card (`../_shared/phases/rules.md`)
296
+
297
+ `orc rules slice --lane orc-challenge --json` is the ONLY assembler; never build
298
+ the card here. It rides under the house rules and above the task —
299
+ **house rules > your project's rules > ORC's own packs** — and its `line` prints
300
+ VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
301
+ never a silent choice) and `rules_overridden[]`.
302
+ ## Waiting mid-run (`/orc-wait`)
303
+
304
+ Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
305
+ Checkpoint **cycle** · safe point **after a cycle records**. `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.
@@ -15,7 +15,7 @@ for a PRD includes the two lenses that never block.
15
15
  > /orc-challenge docs/prd-self-serve.md
16
16
  ```
17
17
 
18
- The first six questions are unchanged (`../../_shared/phases/intake.md`). Question 7 is
18
+ The first six questions are unchanged (`references/intake.md`). Question 7 is
19
19
  rendered from `orc challenge roles --kind prd --json` — **the skill never
20
20
  hand-lists the lenses**:
21
21
 
@@ -74,7 +74,7 @@ set in "Behavior trace").
74
74
  does not change this role) with: `mode`, `repo_root`,
75
75
  `budget` (from a `budget=N` argument, else null), and the paths to
76
76
  `references/template.md` + `references/refresh.md`. **Trace:** emit
77
- `DISPATCH orc-claude-writer :: <mode> expect=opus-5/low` just before the
77
+ `DISPATCH orc-claude-writer :: <mode> expect=opus-5-5/low` just before the
78
78
  spawn (the expectation is derived from the agent NAME you actually
79
79
  dispatched, never from this line's default; the hook then adds
80
80
  `SPAWN`/`RETURN` on its own).
@@ -175,7 +175,7 @@ Dispatch-only lane: emit ONLY the markers it can truthfully witness — **not**
175
175
  `PHASE`/`SCORE`/`FINDING`/`VERDICT`, because scan/generate/report run INSIDE
176
176
  the writer sub-agent and there is no scoring or review here. The marker set, in
177
177
  order (actor `orc`, plus the hook's `SPAWN`/`RETURN`): `DISPATCH
178
- orc-claude-writer :: <mode> expect=opus-5/low` before the spawn (the mode
178
+ orc-claude-writer :: <mode> expect=opus-5-5/low` before the spawn (the mode
179
179
  rides in this tail and in `FINISH`, so no separate mode marker) · `VERIFY writer
180
180
  actual=<model>/<effort>` · `FINISH :: <mode_ran> CLAUDE.md v<X.Y.Z>`, where
181
181
  `mode_ran` may be `noop`. A noop refresh still traces the full cycle.
@@ -207,11 +207,11 @@ documented defaults, out loud. Priorities and families:
207
207
  ## Calls
208
208
 
209
209
  **ONE catalogue, and it is not you:** `orc lane calls orc-claude --json` names every
210
- CLI call this lane makes, each with its exit-code contract, its cost, when to run
210
+ SHARED CLI call this lane makes, each with its exit-code contract, its cost, when to run
211
211
  it, and what an EMPTY answer means. Never invent a spelling, never re-word an
212
212
  exit code, and never re-derive a state word — the CLI's state words are the only
213
213
  state words, and **an exit code is an ANSWER wherever that contract says so, not
214
- a failure**. A call the answer does not name is a call this lane does not make.
214
+ a failure**. A call that neither it nor this skill names is a call this lane does not make.
215
215
  Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
216
216
  command you are about to run, out loud, before running it.
217
217
 
@@ -50,7 +50,7 @@ dispatches the trace writer ONCE at run end to append them (`SPAWN`/`RETURN`
50
50
  come from the `orc-trace.js` hook as they occur):
51
51
 
52
52
  ```
53
- [120726 09:14:02.110] writer DISPATCH orc-claude-writer :: refresh expect=opus-5/low
53
+ [120726 09:14:02.110] writer DISPATCH orc-claude-writer :: refresh expect=opus-5-5/low
54
54
  [120726 09:14:02.230] hook SPAWN orc-claude-writer-opus-5-low
55
55
  [120726 09:15:47.900] hook RETURN
56
56
  [120726 09:15:48.010] writer VERIFY writer actual=claude-opus-5-5/low ✅ MATCH
@@ -60,8 +60,8 @@ SKILL.md as a spine — the flow names every subskill and schema it needs.
60
60
 
61
61
  ## Lane contract (`../_shared/lane-contract.md` — read it ONLY when a call exits ≠ 0)
62
62
 
63
- - **Calls:** `orc lane calls orc-diy --json` names every call and its exit codes.
64
- **An exit code is an ANSWER where it says so, not a failure.** Make no other call.
63
+ - **Calls:** `orc lane calls orc-diy --json` names shared calls and exit codes.
64
+ **An exit code is an ANSWER where it says so, not a failure.** Own calls are here; make no other.
65
65
  - **Config:** `orc lane config orc-diy --json`. Obey `effective`, print every line
66
66
  in `announce[]` VERBATIM at preflight, and honour `stops[]` before wave 1.
67
67
  Never merge `.claude/orc.config.yaml` yourself (`../_shared/config-precedence.md`).
@@ -1,26 +1,26 @@
1
- ## Wiki gate
2
-
3
- <!-- diy:when wiki_gate=off -->
4
- Skip the wiki freshness check entirely for this flow. If a project wiki
5
- exists, executors may still receive wiki page pointers, but freshness is
6
- never computed and never surfaced.
7
- <!-- /diy:when -->
8
- <!-- diy:when wiki_gate=notice -->
9
- Compute the wiki freshness tier exactly as the full lane does (follow the
10
- read-side procedure in `.claude/skills/orc-wiki/references/staleness.md`).
11
- Fresh → use silently; aging → one-line notice, continue; stale → warn the
12
- user that wiki hints may be outdated, continue. Never block on it.
13
- <!-- /diy:when -->
14
- <!-- diy:when wiki_gate=hard -->
15
- Compute the wiki freshness tier exactly as the full lane does (follow the
16
- read-side procedure in `.claude/skills/orc-wiki/references/staleness.md`).
17
- Fresh or aging → proceed. Stale or missing → STOP and ask the user: refresh
18
- the wiki first (recommended), or continue anyway with hints demoted. Respect
19
- the precedence rule from that reference in every consumer slice.
20
- <!-- /diy:when -->
21
-
22
- <!-- diy:when post_ship_wiki_ask=on -->
23
- After a successful ship on a big run, offer the post-ship wiki refresh ask
24
- exactly as the full lane defines it in the orc skill (guarded on a non-empty
25
- wiki; judged by final task/file counts at ship time).
26
- <!-- /diy:when -->
1
+ ## Wiki gate
2
+
3
+ <!-- diy:when wiki_gate=off -->
4
+ Skip the wiki freshness check entirely for this flow. If a project wiki
5
+ exists, executors may still receive wiki page pointers, but freshness is
6
+ never computed and never surfaced.
7
+ <!-- /diy:when -->
8
+ <!-- diy:when wiki_gate=notice -->
9
+ Read the wiki freshness tier from `orc wiki status --json` (`state`, then
10
+ `tier`) — the CLI is its only executor; never compute it yourself.
11
+ Fresh → use silently; aging → one-line notice, continue; stale → warn the
12
+ user that wiki hints may be outdated, continue. Never block on it.
13
+ <!-- /diy:when -->
14
+ <!-- diy:when wiki_gate=hard -->
15
+ Read the wiki freshness tier from `orc wiki status --json` (`state`, then
16
+ `tier`) — the CLI is its only executor; never compute it yourself.
17
+ Fresh or aging → proceed. Stale or missing → STOP and ask the user: refresh
18
+ the wiki first (recommended), or continue anyway with hints demoted. Respect
19
+ the precedence rule from that reference in every consumer slice.
20
+ <!-- /diy:when -->
21
+
22
+ <!-- diy:when post_ship_wiki_ask=on -->
23
+ After a successful ship on a big run, offer the post-ship wiki refresh ask
24
+ exactly as the full lane defines it in the orc skill (guarded on a non-empty
25
+ wiki; judged by final task/file counts at ship time).
26
+ <!-- /diy:when -->
@@ -27,7 +27,7 @@ selector.
27
27
  | `mock_example` | `ask` / `on` / `off` | Post-verify mocked example + drift recovery (`mock-examples/<slug>/`, never committed) |
28
28
  | `tdd` | `on` / `off` | TDD-anchored planning: plan-time `tdd_spec` (scoped by `disposition`), paired TDD tasks for the red proof, TDD gate in the verify slot |
29
29
  | `gotchas` | `on` / `off` | Repair memory: inject scope-matching gotchas into slices, record one when a repair loop goes red → green (`_shared/gotchas.md`) |
30
- | `code_graph` | `on` (default) / `off` | Code-graph cache steps: `orc graph status --heal` at preflight, `orc graph ctx` cards in slices, `orc graph map` then `orc graph impact` + `orc graph cochange` at planning, `orc graph changes` at review, `orc graph coverage` on demand, `orc graph update` after every wave and at ship, one `orc graph notes` batch per wave when notes are on. `on` compiles them in and the global `code_graph` key decides at run time (every call carries `--if-enabled`); `off` removes them (`_shared/code-graph.md`) |
30
+ | `code_graph` | `on` (default) / `off` | The four graph touchpoints: consult at preflight (print the probe line; `orc graph status --heal` only when `heal_needed`), orient at planning (`orc graph map --focus=` once, then `orc graph impact` + `orc graph cochange`), ONE `orc graph ctx --for-slice … --anchors` per writing slice (`graph_anchors`, inline), `orc graph changes --files=` once at review; `orc graph update --notes-pending` only when `update_step` is `lane`; no gain step. `on` compiles them in and the global `code_graph` key decides at run time (every call carries `--if-enabled`); `off` removes them (`_shared/code-graph.md`) |
31
31
  | `wiki_gate` | `notice` / `off` / `hard` | Wiki freshness handling at preflight |
32
32
  | `post_ship_wiki_ask` | `on` / `off` | Post-ship wiki refresh offer on big runs |
33
33
  | `summary` | `full` / `off` / `short` | Summary depth |
@@ -44,7 +44,7 @@ selector.
44
44
  Hard errors (config not written):
45
45
  - `scoring: off` without a `fixed_executor`.
46
46
  - `fixed_executor` or any agent choice above `session_tier` (tier order:
47
- haiku-4-5 < sonnet-4-6 < sonnet-5 < opus-4-7 < opus-4-8 < opus-5 < fable-5 —
47
+ haiku-5 < sonnet-4-6 < sonnet-5 < opus-4-7 < opus-4-8 < opus-5 < fable-5 —
48
48
  subagents cannot exceed the main session; effort medium < high < xhigh < max).
49
49
  A tier below `opus-5-high` clips the `[90,100]` band to the highest agent it
50
50
  allows, at compile time.
@@ -13,7 +13,7 @@ explaining anything twice.
13
13
 
14
14
  That is why a 900-line TSD does not end a session. Nothing that holds context
15
15
  ever holds the document: each writer owns exactly ONE file, each checker reads
16
- ONE bounded part, and the orchestrator holds a map.
16
+ only the bounded part files of its slice, and the orchestrator holds a map.
17
17
 
18
18
  And since v0.49.0 there is a second sentence:
19
19
 
@@ -159,7 +159,7 @@ orc doc parts my-prd # what is written, and what is not
159
159
  orc doc compile my-prd [--partial] # sections/ -> document.md. FREE
160
160
  orc doc lint my-prd # the free check (0 clean / 1 findings)
161
161
  orc doc map my-prd # fresh line numbers, never stored
162
- orc doc plan my-prd --role check --json # one bounded part file per checker
162
+ orc doc plan my-prd --role check --json # bounded part files per checker slice
163
163
  orc doc split my-prd --section 04-design --by-heading # store a big section in parts
164
164
  orc doc split my-prd # recover sections/ from document.md
165
165
  orc doc status my-prd # 0 nothing to do / 1 something to do / 2 unknown