@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
package/CHANGELOG.md CHANGED
@@ -10,6 +10,225 @@ Format: `### v<version> — <title> _(<date>)_`.
10
10
 
11
11
  ---
12
12
 
13
+ ### v1.1.0 - the wait, and a window ORC can finally see _(2026-08-31)_
14
+
15
+ **Still on the unscoped `orc` package?** Do this once first — your `orc upgrade`
16
+ is the pre-v0.56.0 one and cannot install itself. Full detail in the CAUTION at
17
+ the top of this file.
18
+
19
+ - **Step 1 — release the command from the old package:** `npm uninstall -g orc`
20
+ - **Step 2 — install the current package:** `npm i -g @azure-id/orc`
21
+ - **Step 3 — re-apply it to your project:** `orc update`
22
+
23
+ **Do not use `npm i -g -f`.** Full detail in v0.56.0 below.
24
+
25
+ Until now the only thing in ORC that could see how full your 5-hour and 7-day
26
+ windows were was the statusline, which drew a string and threw the numbers away.
27
+ So a lane started a wave with no idea it was about to run out, and the wave
28
+ stopped in the middle.
29
+
30
+ - **`/orc-wait`** - a wall-clock pause that does not lose the run. Type
31
+ `/orc-wait 30` and ORC writes the hand-back, waits in detached hops, and picks
32
+ the run up where it stopped. **The waiting costs zero tokens** - a detached
33
+ command does it, and no model runs. It never dispatches an agent to wait,
34
+ because an agent would spend the very window you are waiting for.
35
+ - **Three modes, and they differ in one thing only: how much finishes first.**
36
+ `safe` finishes the current wave and loses nothing. `soft` stops at the next
37
+ turn but **forces** the checkpoint - and if that write fails it does not stop.
38
+ `hard` stops at the next turn with the hand-back alone.
39
+ - **`/orc-wait block <reason>`** - the veto. It tells ORC not to stop this run at
40
+ all. The reason is required, it is never written to your config, and it is
41
+ re-printed with its age at every gate it suppresses.
42
+ - **`orc usage check`** - one reader, three answers: `0` ok, `1` low, `2`
43
+ unknown. **The worst window decides.** A weekly window at 96% is not a green
44
+ light because the 5-hour one is at 20%.
45
+ - **`orc ui` gains a Wait panel** - your windows, a wait in progress, a standing
46
+ block and its age. It cannot start a wait: a wait lives in a Claude Code
47
+ session, and the panel never runs a lane.
48
+ - **Every lane supports it, in one release.** 24 spines carry the contract, each
49
+ naming what it checkpoints and where its safe point is - generated from one
50
+ registry, so a spine cannot disagree with the CLI.
51
+
52
+ > [!CAUTION]
53
+ > **`/orc-wait ... hard` can lose work.** It stops at the first moment ORC can
54
+ > act - it does not wait for the current wave, phase or gate to finish, and it
55
+ > dispatches nothing, so it writes `RESUME.md` and skips the checkpoint. What
56
+ > you can lose: a dispatch that was in flight (its file writes may still land,
57
+ > but its return is never validated), the checkpoint, and that phase's trace
58
+ > packet. Use `hard` when losing the current wave is cheaper than losing the
59
+ > window; use `soft` when you can spare a few seconds; use no keyword at all
60
+ > when you can wait for the wave to end.
61
+ >
62
+ > **A wait longer than one hour ends the prompt cache.** The first turn after it
63
+ > re-reads your whole context at full input price, exactly when your quota is
64
+ > lowest. When the context is large ORC stops and offers a fresh session
65
+ > instead - **it cannot clear its own context**, only offer the swap.
66
+ >
67
+ > **`/orc-wait block` moves the risk to you, deliberately.** It suppresses every
68
+ > computed stop for the rest of the run. If the window empties mid-wave, the
69
+ > wave stops in the middle and you keep the pieces.
70
+ >
71
+ > **Nothing here is on by default.** `usage_gate` ships `off` and
72
+ > `wait_default_mode` ships `ask`. A fresh install behaves exactly as it did
73
+ > before this release. You choose every stop.
74
+
75
+ **Five new config keys**, every default off or ask: `usage_gate` (`off`),
76
+ `usage_stop_pct` (`10`), `wait_default_mode` (`ask`), `wait_hop_minutes` (`30`),
77
+ `wait_max_hops` (`5`).
78
+
79
+ **One honest limit:** a reading is only as fresh as the last statusline render,
80
+ so during a long dispatch it goes stale. Anything older than 30 minutes reads as
81
+ `unknown`, and **unknown never stops a run**.
82
+
83
+ ### v1.0.0 - config, phases and calls stop being prose _(2026-08-30)_
84
+
85
+ **Still on the unscoped `orc` package?** Do this once before anything else -
86
+ your `orc upgrade` is the pre-v0.56.0 one and it cannot install itself:
87
+
88
+ - **Step 1 - release the command from the old package:** `npm uninstall -g orc`
89
+ - **Step 2 - install the current package:** `npm i -g @azure-id/orc`
90
+ - **Step 3 - re-apply it to your project:** `orc update`
91
+
92
+ **Do not use `npm i -g -f`.** It overwrites the command file and leaves the
93
+ superseded package installed underneath, owning nothing and updated by nothing.
94
+ Full detail in v0.56.0 below.
95
+
96
+ **Nothing you configure changes meaning, and no command you run is renamed.**
97
+ The user-visible half of this release is three: a wider Opus 5 band in the score
98
+ table, a foreign worker that stalls twice now steps aside for the rest of the
99
+ run, and `orc diy init` starts on `opus-5-high` instead of `opus-4-8-high`.
100
+ Everything else is ORC finally reading its own payload the way it has been
101
+ telling you to read yours.
102
+
103
+ **Start with what it cost, because the framing was wrong.** This release was
104
+ planned as a deduplication, and it is not one. The payload went from **208 files
105
+ / 26,507 lines to 291 files / 33,204 lines** — bigger on both counts. Of the
106
+ sixteen waves, four measured as the class they were declared (fewer lines) and
107
+ **most measured as C: correctness, at a small cost in lines**. The prose that
108
+ was copied 14-59 times did not disappear; it moved into one canonical file per
109
+ phase and the copies became pointers, and pointers plus a manifest cost more
110
+ bytes than the duplication did. What changed is not the size. **It is that there
111
+ is now exactly one place to fix each of these things, and a lint that fails when
112
+ a copy grows back.**
113
+
114
+ **Config stops being prose.** Every lane used to restate the config it reads and
115
+ re-derive the precedence around it, and `orc/SKILL.md` declared 8 keys while the
116
+ `/orc` directory referenced 32 - so the per-lane key list already existed and
117
+ was already 75% wrong. Config is now a **rank-ordered registry with declared
118
+ families**, and a lane asks ONE command what resolved:
119
+
120
+ - **`orc lane config <lane> [--json]`** answers "what did this lane's config
121
+ resolve to", with every shadow and inertness ALREADY WORDED. A lane never
122
+ merges `.claude/orc.config.yaml` itself again, and never re-derives a
123
+ precedence. **A rank below a resolved rank is not read at all.**
124
+ - **Six rank states, and they are the CLI's**: `resolved`, `partly-resolved`,
125
+ `not-read`, `inert`, `demoted`, `absent`. `absent` and `not-read` are
126
+ different facts - one rank was consulted and declined, the other was never
127
+ looked at - and rendering them the same way erases the difference between
128
+ "your setting did nothing" and "your setting was never read".
129
+ - A **two-way lint**: a key no lane reads is an error, and so is a lane naming a
130
+ key the CLI cannot write. Ten keys are permanently empty and are on a NAMED
131
+ allowlist - they are operating keys of the `orc extra` bridge, which a lane
132
+ never names - so an empty list is an ANSWER and not a to-do.
133
+ - The **config file is grouped by family**, ranked inside a contested one, with
134
+ the sentence that makes the grouping mean anything: *ranks compare only inside
135
+ a family.* Your existing `orc.config.yaml` is untouched - only the comments
136
+ around it move, and only on your next `orc config set`.
137
+ - The `fable5_*` role override is **removed**. It held exactly three keys, and
138
+ the retired-key mechanism reports them by name rather than silently ignoring
139
+ them.
140
+
141
+ **Phases stop being copied.** One canonical copy per phase in
142
+ `_shared/phases/`, and each lane spine becomes a **manifest** over that library:
143
+
144
+ - **`orc lane phases <lane> [--json]`** answers which shared phases a lane runs,
145
+ in what order, which layers to read, and when. A row names a FILE **or** a
146
+ HEADING - never both, never neither - and a two-way lint means neither a
147
+ missing row nor a phase-shaped heading nobody declared can survive a commit.
148
+ - **A manifest names a file, a layer and at most a heading. Never a line
149
+ number** - a stored line number is a wrong line number one edit later.
150
+ - **`orc-diy` became a consumer of that library** rather than a parallel copy of
151
+ it.
152
+
153
+ **Calls stop being restated.** Eleven CLI invocations were re-described 14-59
154
+ times each, every copy re-wording its own exit codes:
155
+
156
+ - **`orc lane calls [--all] [--json]`** is the one catalogue: the command, what
157
+ it answers, its exit codes, its cost, when to call it, **what a lane must do
158
+ when the answer is empty**, and what it must never do.
159
+ - `_shared/read-ladder.md` - "reading more is not understanding more", which ORC
160
+ has told you about your code since v0.4.0 - now covers reading **ORC's own
161
+ payload**, so a manifest of pointers does not become more round trips than the
162
+ prose it replaced.
163
+
164
+ **The three things that actually change behaviour.**
165
+
166
+ - **The score to model table is six bands and ends `opus-5-low [65,90)` ·
167
+ `opus-5-med [90,100]`.** Two bands in six now need an Opus 5 main session
168
+ where one in eight did. The `opus5_only` ladder is two bands, `[0,90)` low and
169
+ `[90,100]` medium, sharing that same round-90 edge.
170
+ - **A foreign worker that stalls twice in one run is DEMOTED** to the bottom of
171
+ its families for the rest of that run - or once a live attempt has been quiet
172
+ for `extra_demote_stale_min` minutes. **Two clocks, never merged**, each with
173
+ its own key and its own zero, and setting either to `0` disables that clock
174
+ and says so. It **writes no new measurement**: every fact comes from the
175
+ journal already on disk, the verdict is recomputed from disk on every read,
176
+ and the only thing stored is the human half - a promote or a hand demotion,
177
+ with its reason, deleted with the run. It never writes your config, never
178
+ auto-promotes, and never changes WHAT runs: same score, same declared files,
179
+ same acceptance criteria, same Claude agent. Two keys, `extra_demote_after`
180
+ and `extra_demote_stale_min`; a promote is a **watermark, not a mute**.
181
+ - **`orc diy init` now defaults `session_tier` to `opus-5-high`.** The old
182
+ default could not outrank the top two bands, so a wizard-built flow arrived
183
+ with a third of its ladder already collapsed onto one agent before you had
184
+ chosen anything. The clip itself was correct and announced - it is now
185
+ something you opt into by naming a lower tier. Existing configs are untouched.
186
+
187
+ **`orc ui` renders all of it, and decides none of it.**
188
+
189
+ - **Settings gains "Who decides what"** - the rank ladder for every contested
190
+ family, showing which rank ANSWERED and why every other one did not. The panel
191
+ never walks the ladder itself and never names a contested key.
192
+ - **Every setting row now names the lanes that read it**, so "I changed this,
193
+ so what did I just change?" has an answer on the same screen. An empty list is
194
+ an answer and keeps its row.
195
+ - **A new Lanes panel** with two tabs: the shared phases a lane runs, in order,
196
+ and the whole call catalogue with its exit codes. A lane that keeps its
197
+ pipeline in its own spine says so - a blank card would read as a failed load.
198
+ - **Extra ▸ Recovery gains the demotion row**: the counter (at zero too), both
199
+ clocks, the evidence, and **Promote, which requires a reason**. There is
200
+ deliberately no Demote button.
201
+ - **`orc doctor` gains `lane-keys-drifted`** - an installed spine out of step
202
+ with this CLI's config model, which is precisely the state in which a lane
203
+ falls back to resolving config itself and gets a shadowed key wrong, silently.
204
+
205
+ **The test suite, and an honest caveat.** `npm test` went from 596 to **669
206
+ tests** and from a single global concurrency to **pools by resource class**
207
+ (pure 14 / spawn 4 / net 2 / heavy 1) under one global cap. A flake that cost
208
+ four waves their gate was diagnosed: every `extra` test arms its fixture with a
209
+ real `orc extra ping`, and rung 1 of that ping is a hardcoded 3-second wall
210
+ clock in product code with no test seam - so on a loaded box a loopback answer
211
+ misses it, the ping falls through to the 20-second rung 2, and the assertion
212
+ fails at ~23 s on a different file every run. There is now one seam over every
213
+ probe budget; unset, shipped behaviour is byte-identical, and nothing in ORC
214
+ ever sets it. **The caveat that travels with that fix:** three consecutive green
215
+ full runs are the gate, not proof. The same box is green with the seam OFF, so
216
+ an idle run cannot tell a fixed flake from a quiet afternoon.
217
+
218
+ **Two things this release deliberately did NOT do**, both measured before being
219
+ refused:
220
+
221
+ - **`orc-diy/references/blocks/` was not deleted.** The plan said 448 lines
222
+ would go. Counted: 270 relocate, **178 stay**, 0 delete. Five of those blocks
223
+ have no counterpart anywhere in the payload, and 233 of the 448 lines are
224
+ composition prose describing what a phase becomes under each config value -
225
+ something no shared phase file contains, because `/orc` has no such choice to
226
+ express.
227
+ - **20 of 21 lane spines did not move their phase prose out.** The saving was
228
+ measured and refused: those lanes loop, everything genuinely shared had
229
+ already left, and relocating their own wording would have bought a round trip
230
+ per phase for the same bytes. Only `orc-wiki` qualified, and it moved.
231
+
13
232
  ### v0.56.1 - a worker that is alive and doing nothing _(2026-08-28)_
14
233
 
15
234
  **Still on the unscoped `orc` package?** Do this once before anything else -
package/README-id.md CHANGED
@@ -7,13 +7,13 @@
7
7
  *Terima permintaan → pahami → rencanakan → beri nilai → kerjakan paralel → periksa → uji → kirim.*
8
8
 
9
9
  ![npm](https://img.shields.io/npm/v/%40azure-id%2Forc?style=for-the-badge&color=cb3837&logo=npm)
10
- ![Version](https://img.shields.io/badge/version-0.56.0-blue.svg?style=for-the-badge)
10
+ ![Version](https://img.shields.io/badge/version-1.0.0-blue.svg?style=for-the-badge)
11
11
  ![License](https://img.shields.io/badge/license-MIT-green.svg?style=for-the-badge)
12
12
  ![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg?style=for-the-badge)
13
13
  ![Claude Code](https://img.shields.io/badge/Claude_Code-Skills-purple.svg?style=for-the-badge)
14
14
  ![Dependencies](https://img.shields.io/badge/dependencies-zero-lightgrey.svg?style=for-the-badge)
15
15
 
16
- **Versi terbaru: v0.56.1** · diperbarui 28-08-2026 · [daftar perubahan lengkap](CHANGELOG.md)
16
+ **Versi terbaru: v1.0.0** · diperbarui 30-08-2026 · [daftar perubahan lengkap](CHANGELOG.md)
17
17
 
18
18
  **Ada di npm: [`@azure-id/orc`](https://www.npmjs.com/package/@azure-id/orc)** — `npm i -g @azure-id/orc`
19
19
 
@@ -619,113 +619,55 @@ Bacalah sebagai catatan putaran itu, bukan sebagai audit terkini:
619
619
  **Riwayat lengkap: [CHANGELOG.md](CHANGELOG.md)** — atau `orc changelog`, yang
620
620
  hanya mencetak yang lebih baru dari versi yang Anda punya.
621
621
 
622
- ### v0.56.1 - pekerja yang hidup tapi tidak mengerjakan apa pun _(28-08-2026)_
622
+ ### v1.0.0 - konfigurasi, fase, dan panggilan berhenti jadi prosa _(30-08-2026)_
623
623
 
624
- **Masih memakai paket `orc` yang tanpa awalan?** Lakukan ini sekali dulu -
624
+ **Masih memakai paket `orc` yang tanpa awalan?** Lakukan ini sekali dulu
625
625
  `orc upgrade` Anda adalah versi sebelum v0.56.0 dan tidak bisa memasang dirinya
626
- sendiri:
627
-
628
- - **Langkah 1 - lepaskan perintahnya dari paket lama:** `npm uninstall -g orc`
629
- - **Langkah 2 - pasang paket yang sekarang:** `npm i -g @azure-id/orc`
630
- - **Langkah 3 - terapkan lagi ke proyek Anda:** `orc update`
631
-
632
- **Jangan pakai `npm i -g -f`.** Rinciannya ada di v0.56.0 di bawah.
633
-
634
- **Pengiriman ke opencode yang diam di tengah jalan dulu menghabiskan seluruh
635
- batas waktu lima belas menit lalu melapor `timeout`.** Kata itu bercerita
636
- tentang kesabaran ORC, dan terbaca sebagai batas waktu yang perlu dinaikkan.
637
- Padahal yang tertinggal adalah sebuah POSISI yang perlu dilanjutkan seseorang.
638
-
639
- - **`extra_stall_s` (bawaan 180, `0` mematikannya)** menghentikan pekerja luar
640
- yang tidak menghasilkan apa pun selama itu. Direset oleh kemajuan yang
641
- terlihat - aliran keluaran pekerja, keluaran kesalahannya, atau berkas yang
642
- dideklarasikan berubah di disk - jadi ia tidak pernah memotong pekerja yang
643
- sekadar lambat. Hanya untuk mesin `cli`.
644
- - **`stalled` adalah jenis kegagalannya sendiri dan boleh diulang**, jadi
645
- `orc extra reconcile` membaca posisinya dan `extra_resume` melanjutkan dari
646
- apa yang sudah ada di disk, bukan mengulang dari nol. Itulah cara ORC sendiri
647
- mengetik `continue`. Sengaja tidak ada dorongan lewat stdin: `opencode run`
648
- bukan sesi percakapan, jadi ketikan yang tak dibaca siapa pun hanyalah
649
- perbaikan palsu.
650
- - **Setiap balasan mesin `cli` membawa `timeline`** - bita pertama, kemajuan
651
- terakhir, jeda diam terpanjang, dan kedua batas waktunya - baik saat berhasil
652
- maupun gagal.
653
- - **`orc extra health <profil> [--model <id>]`** menjawab "apakah model ini suka
654
- diam", lewat pengawas yang SAMA dengan yang dipakai pengiriman sungguhan.
655
- Model yang terdaftar belum tentu jalan, dan model yang jalan belum tentu
656
- selesai.
657
- - **`extra_fallback_agent` (bawaan `band`)** menentukan siapa yang mengambil
658
- alih tugasnya. `ask` berhenti dan menyodorkan pilihannya kepada Anda; nama
659
- agen apa pun yang terpasang bisa dikunci. Saat `ask`, lane-nya tidak memilih
660
- sendiri. Ia mengubah siapa, bukan skor, daftar berkas, atau syarat
661
- penerimaannya. Tidak berlaku di `/orc-quick`.
662
-
663
- ### v0.56.0 - satu penggantian nama memindahkan perintahnya, dan tak seorang pun bisa meraih perbaikannya _(27-08-2026)_
664
-
665
- **Paketnya pindah dari `orc` tanpa awalan ke `@azure-id/orc`, dan semua jalur
666
- pemutakhiran di lapangan mati bersamaan.** Kedua nama itu mendaftarkan perintah
667
- `orc` yang sama, dan npm tidak mau menautkannya untuk paket baru selama paket
668
- lama masih memilikinya - jadi tarball, spesifikasi `github:`, dan registry
669
- semuanya gagal dengan `EEXIST` yang sama pada berkas perintahnya. Itu bentrokan
670
- BERKAS, bukan masalah sumber, dan itulah sebabnya berganti sumber tidak pernah
671
- menolong.
672
-
673
- - **`orc upgrade` mengusir paket lama SEBELUM mencoba sumber mana pun.**
674
- Diumumkan, tidak pernah diam-diam. Pengenalannya lewat KEPEMILIKAN - paket
675
- yang tidak mendaftarkan perintah `orc` tidak pernah disentuh.
676
- - **Registry npm dicoba lebih dulu**, lalu tarball, lalu spesifikasi `github:`.
677
- - **`--force` tetap ada untuk satu kasus yang cocok saja** - berkas perintah
678
- yatim yang tidak dimiliki paket mana pun.
679
- - **`orc doctor` melaporkan `legacy-global-package` dengan namanya.** Sengaja
680
- tidak bisa diperbaiki `--fix`: jangkauan `--fix` hanya `.claude/` proyek ini.
681
-
682
- ### v0.55.1 — ORC sudah ada di npm _(27-08-2026)_
683
-
684
- **ORC diterbitkan dengan nama [`@azure-id/orc`](https://www.npmjs.com/package/@azure-id/orc).**
685
- Pemasangan lewat GitHub tetap jalan, dan isi paketnya tidak berubah sama sekali —
686
- ini hanya soal cara memasangnya sekarang punya nama.
687
-
688
- - **`npm i -g @azure-id/orc`** untuk memasang, dan
689
- **`npm i -g @azure-id/orc@latest`** untuk memperbarui. `orc upgrade` sudah
690
- melakukan keduanya sejak dulu dan tetap begitu.
691
- - **Pemasangan dari GitHub sekarang jadi cadangan**, bukan cara utama — tetap ada
692
- di bagian "Cara mulai", dilipat, untuk fork atau kalau Anda mengunci sebuah
693
- branch.
694
-
695
- ### v0.51.0 — alat yang sudah Anda punya, dan koneksi yang membuktikan dirinya _(22-08-2026)_
696
-
697
- **Koneksi `orc extra`.** Dua alat coding yang bisa diberi pekerjaan oleh ORC
698
- adalah **program di komputer Anda sendiri**, bukan situs — jadi sekarang keduanya
699
- jadi penyedia kelas satu, punya kotak hubungkan masing-masing, dan daftar model
700
- yang dibangun dari apa yang benar-benar bisa dijangkau akun Anda.
701
-
702
- - **Program bisa saja belum terpasang, dan panelnya mengatakan itu lebih dulu** —
703
- empat keadaan, dihitung setiap kali, tidak pernah diingat. Alat yang belum
704
- terpasang tidak diberi tombol yang tidak mungkin berhasil, dan `orc extra add`
705
- menolak sambil menyebutkan perintah pemasangannya.
706
- - **ORC membuka terminal Anda sendiri dan menjalankan pemasangannya di sana.**
707
- Bukan pekerjaan tersembunyi di latar — di dalamnya, permintaan hak
708
- administrator, kegagalan izin, unduhan 80 MB, dan tunggu empat puluh detik
709
- semuanya terlihat sama: *tidak terjadi apa-apa*. Perintahnya tampil sebelum
710
- tombolnya, jendelanya milik Anda, dan **ORC tidak pernah meminta hak
711
- administrator**. Tidak ada terminal yang bisa dibuka? Anda tetap dapat
712
- perintahnya untuk disalin.
713
- - **Uji koneksi sekarang bertingkat**: programnya ada · cukup baru · sudah masuk
714
- akun · model apa yang bisa dijangkau akun ini · dan, hanya kalau Anda minta,
715
- **apakah pesan sungguhan benar-benar dijawab** — lengkap dengan waktu tempuh,
716
- jawabannya, dan empat jenis hitungan token yang tidak pernah dicampur.
717
- - **Model yang terdaftar bukan berarti model yang bekerja.**
718
- `orc extra models <nama> --test <id>` adalah satu-satunya cara membedakannya.
719
- - **Kedua alat lokal itu tidak memberi tahu model mana yang menjawab**, jadi ORC
720
- menuliskan kalimat itu, bukan membiarkan kolom kosong.
721
- - **`extra_enabled` tidak bisa dinyalakan sebelum ada yang menjawab** — dulu ia
722
- akan terbaca NYALA padahal artinya MATI.
723
-
724
- Sebelumnya: **v0.50.0 — pekerjaan yang berjalan di tempat lain** (`orc extra`),
725
- **v0.49.1 — dewan penilai, dan `--json` yang berhenti membuang isinya**,
726
- **v0.49.0 — dokumen itu folder, dan berkasnya hasil rakitan** (`/orc-doc`), dan
727
- **v0.48.1 — satu berkas untuk satu hal, dan dokumen yang bisa diselesaikan**.
728
- [Baca semuanya di daftar perubahan](CHANGELOG.md).
626
+ sendiri. Rincian lengkapnya ada di blok PERHATIAN di bagian atas berkas ini.
627
+
628
+ - **Langkah 1 lepaskan perintahnya dari paket lama:** `npm uninstall -g orc`
629
+ - **Langkah 2 pasang paket yang sekarang:** `npm i -g @azure-id/orc`
630
+ - **Langkah 3 terapkan lagi ke proyek Anda:** `orc update`
631
+
632
+ **Tidak ada pengaturan yang berubah artinya, dan tidak ada perintah yang diganti
633
+ namanya.** Tiga hal benar-benar mengubah perilaku; sisanya adalah ORC yang
634
+ akhirnya membaca muatannya sendiri dengan cara yang selama ini ia ajarkan kepada
635
+ Anda untuk membaca kode Anda.
636
+
637
+ - **Tabel skor ke model berakhir di `opus-5-low [65,90)` · `opus-5-med
638
+ [90,100]`.** Dua dari enam pita kini ingin sesi utama Opus 5, dari sebelumnya
639
+ satu dari delapan.
640
+ - **Pekerja luar yang macet dua kali dalam satu run akan menepi** untuk sisa run
641
+ itu. Dua jam, tidak pernah digabung; ia tidak menulis pengukuran baru dan tidak
642
+ pernah menulis konfigurasi Anda; sebuah promote adalah tanda batas, bukan
643
+ membisukan, dan perlu alasan.
644
+ - **`orc diy init` kini berbawaan `opus-5-high`.** Bawaan yang lama diam-diam
645
+ meruntuhkan sepertiga atas tangga Anda ke satu agen sebelum Anda memilih
646
+ apa pun.
647
+
648
+ Bagian strukturalnya - **konfigurasi, fase, dan panggilan berhenti jadi prosa**:
649
+
650
+ - **`orc lane config <lane>`** menjawab konfigurasi sebuah lane sudah menjadi
651
+ apa, dengan setiap bayangan sudah dikalimatkan. Sebuah lane tidak pernah lagi
652
+ menggabungkan berkas konfigurasi sendiri, dan **peringkat di bawah peringkat
653
+ yang sudah menjawab tidak dibaca sama sekali**.
654
+ - **`orc lane phases <lane>`** dan **`orc lane calls --all`** melakukan hal yang
655
+ sama untuk pustaka fase bersama dan katalog panggilan CLI - masing-masing satu
656
+ salinan kanonis, dari sebelumnya 14-59 pengulangan per panggilan.
657
+ - **`orc ui` menampilkan semuanya**: tangga peringkat yang menunjukkan
658
+ pengaturan mana yang MENJAWAB, lane mana yang membaca tiap kunci, panel Lane
659
+ baru, dan baris penurunan di Extra Recovery beserta tombol Promote.
660
+ `orc doctor` mendapat `lane-keys-drifted`.
661
+
662
+ **Ini tidak membuat muatannya lebih kecil** - 208 berkas menjadi 291, 26.507
663
+ baris menjadi 33.204. Sebagian besar gelombang terukur sebagai kebenaran, bukan
664
+ penghapusan duplikasi. Yang berubah adalah kini ada satu tempat untuk memperbaiki
665
+ masing-masing hal ini, dan ada lint yang gagal saat sebuah salinan tumbuh
666
+ kembali. Dua penghapusan yang direncanakan **diukur lalu ditolak**, dan flake
667
+ yang membuat empat gelombang gagal akhirnya didiagnosis - dengan catatan jujur
668
+ bahwa tiga run hijau adalah gerbangnya, bukan buktinya.
669
+
670
+ **Entri lengkap: [CHANGELOG.md](CHANGELOG.md).**
729
671
 
730
672
  ---
731
673