@azure-id/orc 0.56.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/CHANGELOG.md +219 -0
  2. package/README-id.md +49 -107
  3. package/README.md +694 -719
  4. package/bin/build-agents.js +18 -11
  5. package/bin/cli.js +33699 -29855
  6. package/bin/onboarding-content.js +0 -3
  7. package/bin/test-run.js +491 -0
  8. package/bin/verify-contracts.js +4330 -3277
  9. package/bin/verify-package.js +76 -6
  10. package/bin/webui/api.js +1201 -1163
  11. package/bin/webui/app.html +210 -198
  12. package/bin/webui/css/06-responsive.css +120 -108
  13. package/bin/webui/css/panels/extra.css +29 -0
  14. package/bin/webui/css/panels/lanes.css +134 -0
  15. package/bin/webui/css/panels/settings.css +79 -3
  16. package/bin/webui/css/panels/wait.css +123 -0
  17. package/bin/webui/fixtures/extra.js +2036 -1934
  18. package/bin/webui/fixtures/flow.js +2 -2
  19. package/bin/webui/fixtures/index.js +510 -486
  20. package/bin/webui/fixtures/lanes.js +218 -0
  21. package/bin/webui/fixtures/settings.js +261 -34
  22. package/bin/webui/fixtures/stats.js +3 -3
  23. package/bin/webui/fixtures/wait.js +97 -0
  24. package/bin/webui/i18n/TERMS.md +135 -134
  25. package/bin/webui/i18n/en/extra.json +345 -313
  26. package/bin/webui/i18n/en/lanes.json +29 -0
  27. package/bin/webui/i18n/en/nav.json +21 -19
  28. package/bin/webui/i18n/en/overview.json +2 -0
  29. package/bin/webui/i18n/en/settings.json +16 -5
  30. package/bin/webui/i18n/en/wait.json +41 -0
  31. package/bin/webui/i18n/id/extra.json +345 -313
  32. package/bin/webui/i18n/id/lanes.json +29 -0
  33. package/bin/webui/i18n/id/nav.json +21 -19
  34. package/bin/webui/i18n/id/overview.json +2 -0
  35. package/bin/webui/i18n/id/settings.json +15 -4
  36. package/bin/webui/i18n/id/wait.json +41 -0
  37. package/bin/webui/js/01-i18n.js +151 -149
  38. package/bin/webui/js/panels/extra.js +3199 -3011
  39. package/bin/webui/js/panels/lanes.js +259 -0
  40. package/bin/webui/js/panels/overview.js +10 -0
  41. package/bin/webui/js/panels/settings.js +149 -3
  42. package/bin/webui/js/panels/wait.js +253 -0
  43. package/package.json +39 -39
  44. package/templates/agents/MODEL-MAPPING.md +23 -35
  45. package/templates/agents/orc-executor-opus-4-7-high.md +1 -1
  46. package/templates/agents/orc-executor-opus-4-7-med.md +1 -1
  47. package/templates/agents/orc-executor-opus-4-8-high.md +1 -1
  48. package/templates/agents/orc-executor-opus-5-high.md +1 -1
  49. package/templates/agents/orc-executor-opus-5-low.md +1 -1
  50. package/templates/agents/orc-executor-opus-5-med.md +1 -1
  51. package/templates/agents/orc-retro-opus-5-med.md +73 -73
  52. package/templates/agents/orc-retro-sonnet-5-high.md +72 -72
  53. package/templates/agents/orc-trace-writer-haiku-4-5.md +107 -107
  54. package/templates/commands/orc-route.md +1 -1
  55. package/templates/commands/orc-wait.md +19 -0
  56. package/templates/commands/orc.md +1 -1
  57. package/templates/hooks/orc-statusline.js +39 -0
  58. package/templates/skills/_shared/README.md +7 -3
  59. package/templates/skills/_shared/config-precedence.md +198 -0
  60. package/templates/skills/_shared/drift-recovery.md +1 -1
  61. package/templates/skills/_shared/extra-dispatch.md +159 -7
  62. package/templates/skills/_shared/interview.md +1 -1
  63. package/templates/skills/_shared/opus5-only.md +9 -7
  64. package/templates/skills/_shared/phases/README.md +82 -0
  65. package/templates/skills/{orc/references → _shared/phases}/analyst-gates.md +15 -3
  66. package/templates/skills/_shared/phases/execution.md +143 -0
  67. package/templates/skills/{orc/references → _shared/phases}/house-rules.md +13 -1
  68. package/templates/skills/{orc/references → _shared/phases}/intake.md +15 -2
  69. package/templates/skills/_shared/phases/mock-example.md +56 -0
  70. package/templates/skills/{orc/references → _shared/phases}/plan-handoff.md +16 -3
  71. package/templates/skills/_shared/phases/planning.md +135 -0
  72. package/templates/skills/_shared/phases/preflight.md +98 -0
  73. package/templates/skills/_shared/phases/review.md +53 -0
  74. package/templates/skills/_shared/phases/scoring.md +65 -0
  75. package/templates/skills/{orc/references → _shared/phases}/security-checklist.md +12 -1
  76. package/templates/skills/_shared/phases/security.md +55 -0
  77. package/templates/skills/_shared/phases/ship.md +88 -0
  78. package/templates/skills/{orc/references/stop-and-resume.md → _shared/phases/stop-resume.md} +169 -160
  79. package/templates/skills/_shared/phases/summary.md +48 -0
  80. package/templates/skills/_shared/phases/testgen.md +51 -0
  81. package/templates/skills/{orc/references/trace-protocol.md → _shared/phases/trace.md} +49 -6
  82. package/templates/skills/_shared/phases/verify.md +70 -0
  83. package/templates/skills/{orc/references → _shared/phases}/wave-grouping.md +14 -2
  84. package/templates/skills/{orc/references → _shared/phases}/wiki-consult.md +13 -1
  85. package/templates/skills/_shared/read-ladder.md +48 -0
  86. package/templates/skills/_shared/wait.md +240 -0
  87. package/templates/skills/context-combiner/SKILL.md +214 -187
  88. package/templates/skills/orc/README.md +148 -150
  89. package/templates/skills/orc/SKILL.md +75 -358
  90. package/templates/skills/orc/config.md +137 -389
  91. package/templates/skills/orc/examples/full-run-mock.md +1 -1
  92. package/templates/skills/orc/references/effort-and-mode.md +16 -18
  93. package/templates/skills/orc/references/phases/intake.md +47 -0
  94. package/templates/skills/orc/references/phases/integration.md +19 -0
  95. package/templates/skills/orc/references/preflight-report.md +4 -4
  96. package/templates/skills/orc/references/ultra-mode.md +117 -123
  97. package/templates/skills/orc/schemas/planning-output.md +279 -279
  98. package/templates/skills/orc/subskills/orc-planner/SKILL.md +260 -264
  99. package/templates/skills/orc/subskills/orc-pr/stack-gate.md +4 -1
  100. package/templates/skills/orc-aftermath/SKILL.md +158 -136
  101. package/templates/skills/orc-analyze/SKILL.md +252 -220
  102. package/templates/skills/orc-analyze/references/branching.md +51 -51
  103. package/templates/skills/orc-analyze/references/thin-input.md +1 -1
  104. package/templates/skills/orc-analyze-mini/SKILL.md +128 -112
  105. package/templates/skills/orc-boundary/SKILL.md +249 -208
  106. package/templates/skills/orc-brainstorm/SKILL.md +377 -339
  107. package/templates/skills/orc-budget/SKILL.md +248 -225
  108. package/templates/skills/orc-challenge/README.md +1 -1
  109. package/templates/skills/orc-challenge/SKILL.md +298 -255
  110. package/templates/skills/orc-challenge/examples/council-full-roster.md +1 -1
  111. package/templates/skills/orc-claude/SKILL.md +221 -199
  112. package/templates/skills/orc-diy/README.md +2 -1
  113. package/templates/skills/orc-diy/SKILL.md +132 -68
  114. package/templates/skills/orc-diy/references/blocks/analyze.md +1 -1
  115. package/templates/skills/orc-diy/references/compile.md +21 -7
  116. package/templates/skills/orc-diy/references/flow-schema.md +2 -2
  117. package/templates/skills/orc-doc/SKILL.md +49 -7
  118. package/templates/skills/orc-explain/SKILL.md +24 -0
  119. package/templates/skills/orc-export/SKILL.md +31 -5
  120. package/templates/skills/orc-fast/SKILL.md +218 -185
  121. package/templates/skills/orc-grill/SKILL.md +238 -207
  122. package/templates/skills/orc-handoff/SKILL.md +223 -204
  123. package/templates/skills/orc-learn/SKILL.md +181 -156
  124. package/templates/skills/orc-mini/SKILL.md +47 -24
  125. package/templates/skills/orc-pact/SKILL.md +255 -218
  126. package/templates/skills/orc-pattern/SKILL.md +154 -124
  127. package/templates/skills/orc-poly/SKILL.md +242 -216
  128. package/templates/skills/orc-poly/references/gather.md +1 -1
  129. package/templates/skills/orc-pr-driver/SKILL.md +196 -167
  130. package/templates/skills/orc-pr-driver/references/orc-run-split.md +1 -1
  131. package/templates/skills/orc-pr-setup/SKILL.md +212 -184
  132. package/templates/skills/orc-quick/README.md +2 -2
  133. package/templates/skills/orc-quick/SKILL.md +51 -13
  134. package/templates/skills/orc-quick/references/dispatch-gate.md +2 -3
  135. package/templates/skills/orc-retro/SKILL.md +249 -222
  136. package/templates/skills/orc-retro/examples/retro-mock.md +171 -171
  137. package/templates/skills/orc-route/SKILL.md +188 -165
  138. package/templates/skills/orc-verify/SKILL.md +103 -84
  139. package/templates/skills/orc-wait/SKILL.md +163 -0
  140. package/templates/skills/orc-wiki/SKILL.md +60 -206
  141. package/templates/skills/orc-wiki/references/phases/phase-0.md +71 -0
  142. package/templates/skills/orc-wiki/references/phases/phase-1.md +35 -0
  143. package/templates/skills/orc-wiki/references/phases/phase-2.md +52 -0
  144. package/templates/skills/orc-wiki/references/phases/phase-3.md +57 -0
  145. package/templates/skills/orc-wiki/references/phases/phase-3c.md +36 -0
  146. package/templates/agents/orc-advisor-fable-5.md +0 -50
  147. package/templates/agents/orc-analyst-fable-5.md +0 -115
  148. package/templates/agents/orc-judge-fable-5.md +0 -79
  149. package/templates/agents/orc-planner-fable-5.md +0 -152
  150. package/templates/agents/orc-reviewer-fable-5.md +0 -57
  151. package/templates/skills/_shared/fable5-override.md +0 -56
  152. package/templates/skills/orc-diy/references/blocks/execution.md +0 -42
  153. package/templates/skills/orc-diy/references/blocks/mock-example.md +0 -22
  154. package/templates/skills/orc-diy/references/blocks/planning.md +0 -34
  155. package/templates/skills/orc-diy/references/blocks/review.md +0 -18
  156. package/templates/skills/orc-diy/references/blocks/scoring.md +0 -16
  157. package/templates/skills/orc-diy/references/blocks/security.md +0 -25
  158. package/templates/skills/orc-diy/references/blocks/ship.md +0 -25
  159. package/templates/skills/orc-diy/references/blocks/summary.md +0 -18
  160. package/templates/skills/orc-diy/references/blocks/testgen.md +0 -17
  161. package/templates/skills/orc-diy/references/blocks/trace.md +0 -28
  162. package/templates/skills/orc-diy/references/blocks/verify.md +0 -25
@@ -1,136 +1,158 @@
1
- ---
2
- name: orc-aftermath
3
- description: >
4
- Did the thing we shipped hold up. Use for "/orc-aftermath", "did that change
5
- stick", "what did we ship last month and how did it go", "which runs came back".
6
- Read-only and report-only: it grades past runs from the repository's own future —
7
- files rewritten soon after, a test we added deleted or skipped, the commit
8
- reverted, a promise that was HOLDING now BROKEN — all from git log, ORC's traces
9
- and the pact ledger. No vendor, no telemetry, no instrumentation. Churn is a
10
- SIGNAL, never a verdict: it reports the signal and its strength, never "this
11
- change was bad", and never a person's name.
12
- ---
13
-
14
- # ORC-AFTERMATH
15
-
16
- The lane that **measures** — backwards. The missing half of ORC's flywheel.
17
-
18
- `/orc-retro` measures the **process**: bands, downgrades, retries, gate bounces,
19
- narration coverage. It cannot tell you whether any of it was any good. Aftermath
20
- measures the **result** — and together the score→model table can finally be tuned
21
- against *what stuck* instead of *what ran smoothly*.
22
-
23
- ## The insight
24
-
25
- Everyone reaches for production telemetry. For a large class of outcomes **the
26
- repository's own future is the grading signal**, and it is free:
27
-
28
- | Signal | What it suggests | Strength |
29
- |---|---|---|
30
- | The commit was reverted | obvious | 3 |
31
- | A test we added no longer exists | our proof was rejected | 3 |
32
- | A promise anchored in this change is BROKEN | the change leaked | 3 |
33
- | A test we added now contains a skip | the proof was neutralised | 2 |
34
- | 3+ shipped files rewritten inside the window | the change likely missed | 2 |
35
- | 1–2 shipped files rewritten | weak — normal iteration looks like this | 1 |
36
-
37
- All of it from `git log` + the trace corpus + `.claude/orc/pact/ledger.json`.
38
-
39
- ## The rule that keeps it honest
40
-
41
- **Churn is a signal, not a verdict.** A file being rewritten is a fact; *why* is not
42
- knowable from git. Somebody may have fixed a real miss, or extended a good change,
43
- or reformatted the file. The lane reports **the signal and its strength** and stops
44
- there.
45
-
46
- It never writes "this change was bad". It never names a person — `git log` knows who
47
- committed and this lane never asks. It never edits anything: not the rubric, not
48
- config, not code, not a run.
49
-
50
- **A run younger than 7 days is `too recent to grade`.** That is an ANSWER, not a
51
- gap, and it keeps its slot in the report. So does `history too shallow` when there
52
- are no runs in the window at all.
53
-
54
- ## Nothing to configure but the window
55
-
56
- `aftermath_window_days` (default 30) is how far back it grades. That is the only key
57
- this lane reads besides `log_dir`.
58
-
59
- ---
60
-
61
- ## Phases
62
-
63
- ```
64
- A0 preflight (silent) log_dir · git work tree · orc pact status --json
65
- A1 scope a run slug · --since Nd · everything in the window
66
- A2 grade orc aftermath status --json — the CLI computes; this RENDERS
67
- A3 report orc-aftermath/<period>/aftermath.md + the /orc-retro block
68
- A4 close one end-of-run trace packet
69
- ```
70
-
71
- **A0 opens the run properly.** Write `log_dir/.current` =
72
- `run-aftermath-<slug>-<DDMMYY>-<HHMMSS>.txt` AND `touch the trace file` of that
73
- name in the SAME step. Both, or neither. A lane the protocol declares must be a
74
- lane something OPENS, or every counting tool reports it as a permanent zero.
75
-
76
- **A2 does no grading of its own.** `orc aftermath status` is the only engine — the
77
- skill never re-derives a signal, a strength or a grade. Same rule as the wiki tier.
78
-
79
- ## A3 — the report
80
-
81
- Write `orc-aftermath/<period>/aftermath.md` at the project root, where `<period>` is
82
- the window (`last-30d`) or the single run slug. Per run: **what it promised**
83
- (acceptance criteria from the plan, plus any invariants it was told about) versus
84
- **what the repo now shows**. Shape: `references/report.md`.
85
-
86
- The report ends with a structured block `/orc-retro` aggregates — that is the whole
87
- point of writing a file rather than only printing.
88
-
89
- **Every claim carries its evidence.** A churn row names the files and the commits.
90
- A revert row quotes the revert's subject line. A broken-promise row names the pact
91
- id. An unevidenced signal is not reported at all.
92
-
93
- ## Where this shows up in `/orc`
94
-
95
- **One line at preflight, and only when the area about to be touched has a recent
96
- churn signal:**
97
-
98
- ```
99
- after : src/payments — 2 shipped files rewritten within 30 days of run store-credit
100
- ```
101
-
102
- **Never a line on a clean run.** A preflight that reports "nothing to report" on
103
- every run is a preflight people learn to skip, and this one has to be readable the
104
- one time it matters.
105
-
106
- At ship it feeds `/orc-retro` alongside `orc budget actual`.
107
-
108
- ## Behavior trace (always on)
109
-
110
- Follow `../orc/references/trace-protocol.md`. Lane name `aftermath`.
111
- **Single-dispatch lane: exactly ONE end-of-run packet** to
112
- `orc-trace-writer-haiku-4-5` after A3 and BEFORE `.current` is deleted. It carries
113
- `run_meta`, the events (runs graded, signals found) and the scope choice as
114
- `decisions`. A run that ends with
115
- `zero new trace lines is a protocol violation`.
116
-
117
- Zero new agents — the grading is deterministic and the rendering is this lane's own
118
- work.
119
-
120
- ## How this lane fails — and the rule that prevents each
121
-
122
- | Failure | Prevention |
123
- |---|---|
124
- | It reads as blame | Signals with strengths, never a verdict; no names, ever |
125
- | A normal follow-up commit looks like a failure | 1–2 files is strength 1 and is labelled weak |
126
- | A fresh run is graded as clean | Under 7 days is `too recent to grade`, and it says so |
127
- | It edits the rubric it is measuring | Report-only. It writes one markdown file and nothing else |
128
- | A signal with no evidence | Every row names its files, commits or pact ids |
129
- | It needs a vendor | git log + traces + the ledger. Nothing else |
130
- | Noise on every preflight | The preflight line fires ONLY on a real churn signal |
131
-
132
- ## Rules this lane always keeps
133
-
134
- Report-only · never a verdict · never a person's name · never edit anything · every
135
- signal carries its evidence · `too recent` is an answer · never compute what the CLI
136
- computes.
1
+ ---
2
+ name: orc-aftermath
3
+ description: >
4
+ Did the thing we shipped hold up. Use for "/orc-aftermath", "did that change
5
+ stick", "what did we ship last month and how did it go", "which runs came back".
6
+ Read-only and report-only: it grades past runs from the repository's own future —
7
+ files rewritten soon after, a test we added deleted or skipped, the commit
8
+ reverted, a promise that was HOLDING now BROKEN — all from git log, ORC's traces
9
+ and the pact ledger. No vendor, no telemetry, no instrumentation. Churn is a
10
+ SIGNAL, never a verdict: it reports the signal and its strength, never "this
11
+ change was bad", and never a person's name.
12
+ ---
13
+
14
+ # ORC-AFTERMATH
15
+
16
+ The lane that **measures** — backwards. The missing half of ORC's flywheel.
17
+
18
+ `/orc-retro` measures the **process**: bands, downgrades, retries, gate bounces,
19
+ narration coverage. It cannot tell you whether any of it was any good. Aftermath
20
+ measures the **result** — and together the score→model table can finally be tuned
21
+ against *what stuck* instead of *what ran smoothly*.
22
+
23
+ ## The insight
24
+
25
+ Everyone reaches for production telemetry. For a large class of outcomes **the
26
+ repository's own future is the grading signal**, and it is free:
27
+
28
+ | Signal | What it suggests | Strength |
29
+ |---|---|---|
30
+ | The commit was reverted | obvious | 3 |
31
+ | A test we added no longer exists | our proof was rejected | 3 |
32
+ | A promise anchored in this change is BROKEN | the change leaked | 3 |
33
+ | A test we added now contains a skip | the proof was neutralised | 2 |
34
+ | 3+ shipped files rewritten inside the window | the change likely missed | 2 |
35
+ | 1–2 shipped files rewritten | weak — normal iteration looks like this | 1 |
36
+
37
+ All of it from `git log` + the trace corpus + `.claude/orc/pact/ledger.json`.
38
+
39
+ ## The rule that keeps it honest
40
+
41
+ **Churn is a signal, not a verdict.** A file being rewritten is a fact; *why* is not
42
+ knowable from git. Somebody may have fixed a real miss, or extended a good change,
43
+ or reformatted the file. The lane reports **the signal and its strength** and stops
44
+ there.
45
+
46
+ It never writes "this change was bad". It never names a person — `git log` knows who
47
+ committed and this lane never asks. It never edits anything: not the rubric, not
48
+ config, not code, not a run.
49
+
50
+ **A run younger than 7 days is `too recent to grade`.** That is an ANSWER, not a
51
+ gap, and it keeps its slot in the report. So does `history too shallow` when there
52
+ are no runs in the window at all.
53
+
54
+ ## Nothing to configure but the window
55
+
56
+ `aftermath_window_days` (default 30) is how far back it grades. That is the only key
57
+ this lane reads besides `log_dir`.
58
+
59
+ ---
60
+
61
+ ## Phases
62
+
63
+ ```
64
+ A0 preflight (silent) log_dir · git work tree · orc pact status --json
65
+ A1 scope a run slug · --since Nd · everything in the window
66
+ A2 grade orc aftermath status --json — the CLI computes; this RENDERS
67
+ A3 report orc-aftermath/<period>/aftermath.md + the /orc-retro block
68
+ A4 close one end-of-run trace packet
69
+ ```
70
+
71
+ **A0 opens the run properly.** Write `log_dir/.current` =
72
+ `run-aftermath-<slug>-<DDMMYY>-<HHMMSS>.txt` AND `touch the trace file` of that
73
+ name in the SAME step. Both, or neither. A lane the protocol declares must be a
74
+ lane something OPENS, or every counting tool reports it as a permanent zero.
75
+
76
+ **A2 does no grading of its own.** `orc aftermath status` is the only engine — the
77
+ skill never re-derives a signal, a strength or a grade. Same rule as the wiki tier.
78
+
79
+ ## A3 — the report
80
+
81
+ Write `orc-aftermath/<period>/aftermath.md` at the project root, where `<period>` is
82
+ the window (`last-30d`) or the single run slug. Per run: **what it promised**
83
+ (acceptance criteria from the plan, plus any invariants it was told about) versus
84
+ **what the repo now shows**. Shape: `references/report.md`.
85
+
86
+ The report ends with a structured block `/orc-retro` aggregates — that is the whole
87
+ point of writing a file rather than only printing.
88
+
89
+ **Every claim carries its evidence.** A churn row names the files and the commits.
90
+ A revert row quotes the revert's subject line. A broken-promise row names the pact
91
+ id. An unevidenced signal is not reported at all.
92
+
93
+ ## Where this shows up in `/orc`
94
+
95
+ **One line at preflight, and only when the area about to be touched has a recent
96
+ churn signal:**
97
+
98
+ ```
99
+ after : src/payments — 2 shipped files rewritten within 30 days of run store-credit
100
+ ```
101
+
102
+ **Never a line on a clean run.** A preflight that reports "nothing to report" on
103
+ every run is a preflight people learn to skip, and this one has to be readable the
104
+ one time it matters.
105
+
106
+ At ship it feeds `/orc-retro` alongside `orc budget actual`.
107
+
108
+ ## Behavior trace (always on)
109
+
110
+ `../_shared/phases/trace.md` (`core`, at run start; `orc lane phases` names
111
+ the file and the layers). Lane token `aftermath`, tier **Single-dispatch**
112
+ exactly ONE end-of-run packet, dispatched solo before `.current` is deleted.
113
+ At run start write `log_dir/.current` = `run-aftermath-<slug>-<DDMMYY>-<HHMMSS>.txt` AND
114
+ `touch the trace file` of that name in the SAME step.
115
+ Nothing else about the protocol is restated here; a phase that ends with
116
+ `zero new trace lines is a protocol violation`.
117
+
118
+ ## How this lane fails — and the rule that prevents each
119
+
120
+ | Failure | Prevention |
121
+ |---|---|
122
+ | It reads as blame | Signals with strengths, never a verdict; no names, ever |
123
+ | A normal follow-up commit looks like a failure | 1–2 files is strength 1 and is labelled weak |
124
+ | A fresh run is graded as clean | Under 7 days is `too recent to grade`, and it says so |
125
+ | It edits the rubric it is measuring | Report-only. It writes one markdown file and nothing else |
126
+ | A signal with no evidence | Every row names its files, commits or pact ids |
127
+ | It needs a vendor | git log + traces + the ledger. Nothing else |
128
+ | Noise on every preflight | The preflight line fires ONLY on a real churn signal |
129
+
130
+ ## Rules this lane always keeps
131
+
132
+ Report-only · never a verdict · never a person's name · never edit anything · every
133
+ signal carries its evidence · `too recent` is an answer · never compute what the CLI
134
+ computes.
135
+
136
+ ## Config
137
+
138
+ Resolve with `orc lane config orc-aftermath --json` and obey `effective`. Never merge
139
+ `.claude/orc.config.yaml` yourself, and never re-derive a precedence. Exit ≠ 0 →
140
+ say so and use `../_shared/config-precedence.md`'s documented defaults, out
141
+ loud. Nothing this lane reads is contested, gated or a stop, so it owes no
142
+ preflight line and has no gate to honour.
143
+
144
+ ## Calls
145
+
146
+ **ONE catalogue, and it is not you:** `orc lane calls orc-aftermath --json` names every
147
+ CLI call this lane makes, each with its exit-code contract, its cost, when to run
148
+ it, and what an EMPTY answer means. Never invent a spelling, never re-word an
149
+ exit code, and never re-derive a state word — the CLI's state words are the only
150
+ state words, and **an exit code is an ANSWER wherever that contract says so, not
151
+ a failure**. A call the answer does not name is a call this lane does not make.
152
+ Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
153
+ command you are about to run, out loud, before running it.
154
+
155
+ ## Waiting mid-run (`/orc-wait`)
156
+
157
+ Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
158
+ 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.