@azure-id/orc 0.56.0 → 1.0.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.
- package/CHANGELOG.md +228 -0
- package/README-id.md +143 -53
- package/README.md +124 -103
- package/bin/build-agents.js +18 -11
- package/bin/cli.js +4139 -315
- package/bin/onboarding-content.js +0 -3
- package/bin/test-run.js +491 -0
- package/bin/verify-contracts.js +4256 -3277
- package/bin/verify-package.js +563 -498
- package/bin/webui/api.js +1186 -1163
- package/bin/webui/app.html +9 -0
- package/bin/webui/css/06-responsive.css +120 -108
- package/bin/webui/css/panels/extra.css +29 -0
- package/bin/webui/css/panels/lanes.css +134 -0
- package/bin/webui/css/panels/settings.css +79 -3
- package/bin/webui/fixtures/extra.js +2036 -1934
- package/bin/webui/fixtures/flow.js +2 -2
- package/bin/webui/fixtures/index.js +503 -486
- package/bin/webui/fixtures/lanes.js +218 -0
- package/bin/webui/fixtures/settings.js +261 -34
- package/bin/webui/fixtures/stats.js +3 -3
- package/bin/webui/i18n/TERMS.md +135 -134
- package/bin/webui/i18n/en/extra.json +345 -313
- package/bin/webui/i18n/en/lanes.json +29 -0
- package/bin/webui/i18n/en/nav.json +1 -0
- package/bin/webui/i18n/en/overview.json +2 -0
- package/bin/webui/i18n/en/settings.json +16 -5
- package/bin/webui/i18n/id/extra.json +345 -313
- package/bin/webui/i18n/id/lanes.json +29 -0
- package/bin/webui/i18n/id/nav.json +1 -0
- package/bin/webui/i18n/id/overview.json +2 -0
- package/bin/webui/i18n/id/settings.json +15 -4
- package/bin/webui/js/01-i18n.js +1 -0
- package/bin/webui/js/panels/extra.js +3199 -3011
- package/bin/webui/js/panels/lanes.js +259 -0
- package/bin/webui/js/panels/overview.js +10 -0
- package/bin/webui/js/panels/settings.js +149 -3
- package/package.json +3 -3
- package/templates/agents/MODEL-MAPPING.md +23 -35
- package/templates/agents/orc-executor-opus-4-7-high.md +1 -1
- package/templates/agents/orc-executor-opus-4-7-med.md +1 -1
- package/templates/agents/orc-executor-opus-4-8-high.md +1 -1
- package/templates/agents/orc-executor-opus-5-high.md +1 -1
- package/templates/agents/orc-executor-opus-5-low.md +1 -1
- package/templates/agents/orc-executor-opus-5-med.md +1 -1
- package/templates/agents/orc-retro-opus-5-med.md +73 -73
- package/templates/agents/orc-retro-sonnet-5-high.md +72 -72
- package/templates/agents/orc-trace-writer-haiku-4-5.md +107 -107
- package/templates/commands/orc-route.md +1 -1
- package/templates/commands/orc.md +1 -1
- package/templates/skills/_shared/README.md +7 -3
- package/templates/skills/_shared/config-precedence.md +198 -0
- package/templates/skills/_shared/drift-recovery.md +1 -1
- package/templates/skills/_shared/extra-dispatch.md +292 -6
- package/templates/skills/_shared/interview.md +1 -1
- package/templates/skills/_shared/opus5-only.md +9 -7
- package/templates/skills/_shared/phases/README.md +82 -0
- package/templates/skills/{orc/references → _shared/phases}/analyst-gates.md +15 -3
- package/templates/skills/_shared/phases/execution.md +143 -0
- package/templates/skills/{orc/references → _shared/phases}/house-rules.md +13 -1
- package/templates/skills/{orc/references → _shared/phases}/intake.md +15 -2
- package/templates/skills/_shared/phases/mock-example.md +56 -0
- package/templates/skills/{orc/references → _shared/phases}/plan-handoff.md +16 -3
- package/templates/skills/_shared/phases/planning.md +135 -0
- package/templates/skills/_shared/phases/preflight.md +76 -0
- package/templates/skills/_shared/phases/review.md +53 -0
- package/templates/skills/_shared/phases/scoring.md +65 -0
- package/templates/skills/{orc/references → _shared/phases}/security-checklist.md +12 -1
- package/templates/skills/_shared/phases/security.md +55 -0
- package/templates/skills/_shared/phases/ship.md +88 -0
- package/templates/skills/{orc/references/stop-and-resume.md → _shared/phases/stop-resume.md} +169 -160
- package/templates/skills/_shared/phases/summary.md +48 -0
- package/templates/skills/_shared/phases/testgen.md +51 -0
- package/templates/skills/{orc/references/trace-protocol.md → _shared/phases/trace.md} +49 -6
- package/templates/skills/_shared/phases/verify.md +70 -0
- package/templates/skills/{orc/references → _shared/phases}/wave-grouping.md +14 -2
- package/templates/skills/{orc/references → _shared/phases}/wiki-consult.md +13 -1
- package/templates/skills/_shared/read-ladder.md +48 -0
- package/templates/skills/context-combiner/SKILL.md +214 -187
- package/templates/skills/orc/README.md +148 -150
- package/templates/skills/orc/SKILL.md +70 -358
- package/templates/skills/orc/config.md +137 -389
- package/templates/skills/orc/examples/full-run-mock.md +1 -1
- package/templates/skills/orc/references/effort-and-mode.md +16 -18
- package/templates/skills/orc/references/phases/intake.md +47 -0
- package/templates/skills/orc/references/phases/integration.md +19 -0
- package/templates/skills/orc/references/preflight-report.md +4 -4
- package/templates/skills/orc/references/ultra-mode.md +117 -123
- package/templates/skills/orc/schemas/planning-output.md +279 -279
- package/templates/skills/orc/subskills/orc-planner/SKILL.md +260 -264
- package/templates/skills/orc/subskills/orc-pr/stack-gate.md +4 -1
- package/templates/skills/orc-aftermath/SKILL.md +153 -136
- package/templates/skills/orc-analyze/SKILL.md +247 -220
- package/templates/skills/orc-analyze/references/branching.md +51 -51
- package/templates/skills/orc-analyze/references/thin-input.md +1 -1
- package/templates/skills/orc-analyze-mini/SKILL.md +128 -112
- package/templates/skills/orc-boundary/SKILL.md +244 -208
- package/templates/skills/orc-brainstorm/SKILL.md +372 -339
- package/templates/skills/orc-budget/SKILL.md +243 -225
- package/templates/skills/orc-challenge/README.md +1 -1
- package/templates/skills/orc-challenge/SKILL.md +293 -255
- package/templates/skills/orc-challenge/examples/council-full-roster.md +1 -1
- package/templates/skills/orc-claude/SKILL.md +216 -199
- package/templates/skills/orc-diy/README.md +2 -1
- package/templates/skills/orc-diy/SKILL.md +129 -70
- package/templates/skills/orc-diy/references/blocks/analyze.md +1 -1
- package/templates/skills/orc-diy/references/compile.md +21 -7
- package/templates/skills/orc-diy/references/flow-schema.md +2 -2
- package/templates/skills/orc-doc/SKILL.md +44 -7
- package/templates/skills/orc-explain/SKILL.md +19 -0
- package/templates/skills/orc-export/SKILL.md +26 -5
- package/templates/skills/orc-fast/SKILL.md +215 -187
- package/templates/skills/orc-grill/SKILL.md +233 -207
- package/templates/skills/orc-handoff/SKILL.md +223 -204
- package/templates/skills/orc-learn/SKILL.md +176 -156
- package/templates/skills/orc-mini/SKILL.md +41 -23
- package/templates/skills/orc-pact/SKILL.md +250 -218
- package/templates/skills/orc-pattern/SKILL.md +149 -124
- package/templates/skills/orc-poly/SKILL.md +237 -216
- package/templates/skills/orc-poly/references/gather.md +1 -1
- package/templates/skills/orc-pr-driver/SKILL.md +196 -167
- package/templates/skills/orc-pr-driver/references/orc-run-split.md +1 -1
- package/templates/skills/orc-pr-setup/SKILL.md +212 -184
- package/templates/skills/orc-quick/README.md +2 -2
- package/templates/skills/orc-quick/SKILL.md +346 -313
- package/templates/skills/orc-quick/references/dispatch-gate.md +12 -4
- package/templates/skills/orc-retro/SKILL.md +244 -222
- package/templates/skills/orc-retro/examples/retro-mock.md +171 -171
- package/templates/skills/orc-route/SKILL.md +183 -165
- package/templates/skills/orc-verify/SKILL.md +100 -86
- package/templates/skills/orc-wiki/SKILL.md +55 -206
- package/templates/skills/orc-wiki/references/phases/phase-0.md +71 -0
- package/templates/skills/orc-wiki/references/phases/phase-1.md +35 -0
- package/templates/skills/orc-wiki/references/phases/phase-2.md +52 -0
- package/templates/skills/orc-wiki/references/phases/phase-3.md +57 -0
- package/templates/skills/orc-wiki/references/phases/phase-3c.md +36 -0
- package/templates/agents/orc-advisor-fable-5.md +0 -50
- package/templates/agents/orc-analyst-fable-5.md +0 -115
- package/templates/agents/orc-judge-fable-5.md +0 -79
- package/templates/agents/orc-planner-fable-5.md +0 -152
- package/templates/agents/orc-reviewer-fable-5.md +0 -57
- package/templates/skills/_shared/fable5-override.md +0 -56
- package/templates/skills/orc-diy/references/blocks/execution.md +0 -42
- package/templates/skills/orc-diy/references/blocks/mock-example.md +0 -22
- package/templates/skills/orc-diy/references/blocks/planning.md +0 -34
- package/templates/skills/orc-diy/references/blocks/review.md +0 -18
- package/templates/skills/orc-diy/references/blocks/scoring.md +0 -16
- package/templates/skills/orc-diy/references/blocks/security.md +0 -25
- package/templates/skills/orc-diy/references/blocks/ship.md +0 -25
- package/templates/skills/orc-diy/references/blocks/summary.md +0 -18
- package/templates/skills/orc-diy/references/blocks/testgen.md +0 -17
- package/templates/skills/orc-diy/references/blocks/trace.md +0 -28
- package/templates/skills/orc-diy/references/blocks/verify.md +0 -25
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,234 @@ Format: `### v<version> — <title> _(<date>)_`.
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
+
### v1.0.0 - config, phases and calls stop being prose _(2026-08-30)_
|
|
14
|
+
|
|
15
|
+
**Still on the unscoped `orc` package?** Do this once before anything else -
|
|
16
|
+
your `orc upgrade` is the pre-v0.56.0 one and it cannot install itself:
|
|
17
|
+
|
|
18
|
+
- **Step 1 - release the command from the old package:** `npm uninstall -g orc`
|
|
19
|
+
- **Step 2 - install the current package:** `npm i -g @azure-id/orc`
|
|
20
|
+
- **Step 3 - re-apply it to your project:** `orc update`
|
|
21
|
+
|
|
22
|
+
**Do not use `npm i -g -f`.** It overwrites the command file and leaves the
|
|
23
|
+
superseded package installed underneath, owning nothing and updated by nothing.
|
|
24
|
+
Full detail in v0.56.0 below.
|
|
25
|
+
|
|
26
|
+
**Nothing you configure changes meaning, and no command you run is renamed.**
|
|
27
|
+
The user-visible half of this release is three: a wider Opus 5 band in the score
|
|
28
|
+
table, a foreign worker that stalls twice now steps aside for the rest of the
|
|
29
|
+
run, and `orc diy init` starts on `opus-5-high` instead of `opus-4-8-high`.
|
|
30
|
+
Everything else is ORC finally reading its own payload the way it has been
|
|
31
|
+
telling you to read yours.
|
|
32
|
+
|
|
33
|
+
**Start with what it cost, because the framing was wrong.** This release was
|
|
34
|
+
planned as a deduplication, and it is not one. The payload went from **208 files
|
|
35
|
+
/ 26,507 lines to 291 files / 33,204 lines** — bigger on both counts. Of the
|
|
36
|
+
sixteen waves, four measured as the class they were declared (fewer lines) and
|
|
37
|
+
**most measured as C: correctness, at a small cost in lines**. The prose that
|
|
38
|
+
was copied 14-59 times did not disappear; it moved into one canonical file per
|
|
39
|
+
phase and the copies became pointers, and pointers plus a manifest cost more
|
|
40
|
+
bytes than the duplication did. What changed is not the size. **It is that there
|
|
41
|
+
is now exactly one place to fix each of these things, and a lint that fails when
|
|
42
|
+
a copy grows back.**
|
|
43
|
+
|
|
44
|
+
**Config stops being prose.** Every lane used to restate the config it reads and
|
|
45
|
+
re-derive the precedence around it, and `orc/SKILL.md` declared 8 keys while the
|
|
46
|
+
`/orc` directory referenced 32 - so the per-lane key list already existed and
|
|
47
|
+
was already 75% wrong. Config is now a **rank-ordered registry with declared
|
|
48
|
+
families**, and a lane asks ONE command what resolved:
|
|
49
|
+
|
|
50
|
+
- **`orc lane config <lane> [--json]`** answers "what did this lane's config
|
|
51
|
+
resolve to", with every shadow and inertness ALREADY WORDED. A lane never
|
|
52
|
+
merges `.claude/orc.config.yaml` itself again, and never re-derives a
|
|
53
|
+
precedence. **A rank below a resolved rank is not read at all.**
|
|
54
|
+
- **Six rank states, and they are the CLI's**: `resolved`, `partly-resolved`,
|
|
55
|
+
`not-read`, `inert`, `demoted`, `absent`. `absent` and `not-read` are
|
|
56
|
+
different facts - one rank was consulted and declined, the other was never
|
|
57
|
+
looked at - and rendering them the same way erases the difference between
|
|
58
|
+
"your setting did nothing" and "your setting was never read".
|
|
59
|
+
- A **two-way lint**: a key no lane reads is an error, and so is a lane naming a
|
|
60
|
+
key the CLI cannot write. Ten keys are permanently empty and are on a NAMED
|
|
61
|
+
allowlist - they are operating keys of the `orc extra` bridge, which a lane
|
|
62
|
+
never names - so an empty list is an ANSWER and not a to-do.
|
|
63
|
+
- The **config file is grouped by family**, ranked inside a contested one, with
|
|
64
|
+
the sentence that makes the grouping mean anything: *ranks compare only inside
|
|
65
|
+
a family.* Your existing `orc.config.yaml` is untouched - only the comments
|
|
66
|
+
around it move, and only on your next `orc config set`.
|
|
67
|
+
- The `fable5_*` role override is **removed**. It held exactly three keys, and
|
|
68
|
+
the retired-key mechanism reports them by name rather than silently ignoring
|
|
69
|
+
them.
|
|
70
|
+
|
|
71
|
+
**Phases stop being copied.** One canonical copy per phase in
|
|
72
|
+
`_shared/phases/`, and each lane spine becomes a **manifest** over that library:
|
|
73
|
+
|
|
74
|
+
- **`orc lane phases <lane> [--json]`** answers which shared phases a lane runs,
|
|
75
|
+
in what order, which layers to read, and when. A row names a FILE **or** a
|
|
76
|
+
HEADING - never both, never neither - and a two-way lint means neither a
|
|
77
|
+
missing row nor a phase-shaped heading nobody declared can survive a commit.
|
|
78
|
+
- **A manifest names a file, a layer and at most a heading. Never a line
|
|
79
|
+
number** - a stored line number is a wrong line number one edit later.
|
|
80
|
+
- **`orc-diy` became a consumer of that library** rather than a parallel copy of
|
|
81
|
+
it.
|
|
82
|
+
|
|
83
|
+
**Calls stop being restated.** Eleven CLI invocations were re-described 14-59
|
|
84
|
+
times each, every copy re-wording its own exit codes:
|
|
85
|
+
|
|
86
|
+
- **`orc lane calls [--all] [--json]`** is the one catalogue: the command, what
|
|
87
|
+
it answers, its exit codes, its cost, when to call it, **what a lane must do
|
|
88
|
+
when the answer is empty**, and what it must never do.
|
|
89
|
+
- `_shared/read-ladder.md` - "reading more is not understanding more", which ORC
|
|
90
|
+
has told you about your code since v0.4.0 - now covers reading **ORC's own
|
|
91
|
+
payload**, so a manifest of pointers does not become more round trips than the
|
|
92
|
+
prose it replaced.
|
|
93
|
+
|
|
94
|
+
**The three things that actually change behaviour.**
|
|
95
|
+
|
|
96
|
+
- **The score to model table is six bands and ends `opus-5-low [65,90)` ·
|
|
97
|
+
`opus-5-med [90,100]`.** Two bands in six now need an Opus 5 main session
|
|
98
|
+
where one in eight did. The `opus5_only` ladder is two bands, `[0,90)` low and
|
|
99
|
+
`[90,100]` medium, sharing that same round-90 edge.
|
|
100
|
+
- **A foreign worker that stalls twice in one run is DEMOTED** to the bottom of
|
|
101
|
+
its families for the rest of that run - or once a live attempt has been quiet
|
|
102
|
+
for `extra_demote_stale_min` minutes. **Two clocks, never merged**, each with
|
|
103
|
+
its own key and its own zero, and setting either to `0` disables that clock
|
|
104
|
+
and says so. It **writes no new measurement**: every fact comes from the
|
|
105
|
+
journal already on disk, the verdict is recomputed from disk on every read,
|
|
106
|
+
and the only thing stored is the human half - a promote or a hand demotion,
|
|
107
|
+
with its reason, deleted with the run. It never writes your config, never
|
|
108
|
+
auto-promotes, and never changes WHAT runs: same score, same declared files,
|
|
109
|
+
same acceptance criteria, same Claude agent. Two keys, `extra_demote_after`
|
|
110
|
+
and `extra_demote_stale_min`; a promote is a **watermark, not a mute**.
|
|
111
|
+
- **`orc diy init` now defaults `session_tier` to `opus-5-high`.** The old
|
|
112
|
+
default could not outrank the top two bands, so a wizard-built flow arrived
|
|
113
|
+
with a third of its ladder already collapsed onto one agent before you had
|
|
114
|
+
chosen anything. The clip itself was correct and announced - it is now
|
|
115
|
+
something you opt into by naming a lower tier. Existing configs are untouched.
|
|
116
|
+
|
|
117
|
+
**`orc ui` renders all of it, and decides none of it.**
|
|
118
|
+
|
|
119
|
+
- **Settings gains "Who decides what"** - the rank ladder for every contested
|
|
120
|
+
family, showing which rank ANSWERED and why every other one did not. The panel
|
|
121
|
+
never walks the ladder itself and never names a contested key.
|
|
122
|
+
- **Every setting row now names the lanes that read it**, so "I changed this,
|
|
123
|
+
so what did I just change?" has an answer on the same screen. An empty list is
|
|
124
|
+
an answer and keeps its row.
|
|
125
|
+
- **A new Lanes panel** with two tabs: the shared phases a lane runs, in order,
|
|
126
|
+
and the whole call catalogue with its exit codes. A lane that keeps its
|
|
127
|
+
pipeline in its own spine says so - a blank card would read as a failed load.
|
|
128
|
+
- **Extra ▸ Recovery gains the demotion row**: the counter (at zero too), both
|
|
129
|
+
clocks, the evidence, and **Promote, which requires a reason**. There is
|
|
130
|
+
deliberately no Demote button.
|
|
131
|
+
- **`orc doctor` gains `lane-keys-drifted`** - an installed spine out of step
|
|
132
|
+
with this CLI's config model, which is precisely the state in which a lane
|
|
133
|
+
falls back to resolving config itself and gets a shadowed key wrong, silently.
|
|
134
|
+
|
|
135
|
+
**The test suite, and an honest caveat.** `npm test` went from 596 to **669
|
|
136
|
+
tests** and from a single global concurrency to **pools by resource class**
|
|
137
|
+
(pure 14 / spawn 4 / net 2 / heavy 1) under one global cap. A flake that cost
|
|
138
|
+
four waves their gate was diagnosed: every `extra` test arms its fixture with a
|
|
139
|
+
real `orc extra ping`, and rung 1 of that ping is a hardcoded 3-second wall
|
|
140
|
+
clock in product code with no test seam - so on a loaded box a loopback answer
|
|
141
|
+
misses it, the ping falls through to the 20-second rung 2, and the assertion
|
|
142
|
+
fails at ~23 s on a different file every run. There is now one seam over every
|
|
143
|
+
probe budget; unset, shipped behaviour is byte-identical, and nothing in ORC
|
|
144
|
+
ever sets it. **The caveat that travels with that fix:** three consecutive green
|
|
145
|
+
full runs are the gate, not proof. The same box is green with the seam OFF, so
|
|
146
|
+
an idle run cannot tell a fixed flake from a quiet afternoon.
|
|
147
|
+
|
|
148
|
+
**Two things this release deliberately did NOT do**, both measured before being
|
|
149
|
+
refused:
|
|
150
|
+
|
|
151
|
+
- **`orc-diy/references/blocks/` was not deleted.** The plan said 448 lines
|
|
152
|
+
would go. Counted: 270 relocate, **178 stay**, 0 delete. Five of those blocks
|
|
153
|
+
have no counterpart anywhere in the payload, and 233 of the 448 lines are
|
|
154
|
+
composition prose describing what a phase becomes under each config value -
|
|
155
|
+
something no shared phase file contains, because `/orc` has no such choice to
|
|
156
|
+
express.
|
|
157
|
+
- **20 of 21 lane spines did not move their phase prose out.** The saving was
|
|
158
|
+
measured and refused: those lanes loop, everything genuinely shared had
|
|
159
|
+
already left, and relocating their own wording would have bought a round trip
|
|
160
|
+
per phase for the same bytes. Only `orc-wiki` qualified, and it moved.
|
|
161
|
+
|
|
162
|
+
### v0.56.1 - a worker that is alive and doing nothing _(2026-08-28)_
|
|
163
|
+
|
|
164
|
+
**Still on the unscoped `orc` package?** Do this once before anything else -
|
|
165
|
+
your `orc upgrade` is the pre-v0.56.0 one and it cannot install itself:
|
|
166
|
+
|
|
167
|
+
- **Step 1 - release the command from the old package:** `npm uninstall -g orc`
|
|
168
|
+
- **Step 2 - install the current package:** `npm i -g @azure-id/orc`
|
|
169
|
+
- **Step 3 - re-apply it to your project:** `orc update`
|
|
170
|
+
|
|
171
|
+
**Do not use `npm i -g -f`.** Full detail in v0.56.0 below.
|
|
172
|
+
|
|
173
|
+
**An opencode dispatch that goes quiet mid-task used to burn the whole
|
|
174
|
+
fifteen-minute wall clock and then report `timeout`.** That word is a statement
|
|
175
|
+
about ORC's patience, and it reads as a budget somebody should raise. It was a
|
|
176
|
+
POSITION somebody should resume from - the thing you fix by hand by typing
|
|
177
|
+
`continue` into the worker's window.
|
|
178
|
+
|
|
179
|
+
A wall clock cannot tell a worker that is thinking hard from a worker that has
|
|
180
|
+
stopped. Both look like fifteen minutes of nothing.
|
|
181
|
+
|
|
182
|
+
- **`extra_stall_s` (default 180, `0` disables) is the fourth timeout, and the
|
|
183
|
+
only one that measures the WORKER rather than a socket.** It is reset by
|
|
184
|
+
observable progress in the three places progress can show up: new bytes on the
|
|
185
|
+
worker's stream, new bytes on its stderr, or a **declared file that changed on
|
|
186
|
+
disk**. That third signal is what stops it firing on a worker that thinks for
|
|
187
|
+
four minutes and then writes in one go. Engine `cli` only - engine `api`
|
|
188
|
+
already has a per-request inactivity timeout on its own socket.
|
|
189
|
+
- **Engine `cli` spawns ASYNCHRONOUSLY now, because `spawnSync` cannot be
|
|
190
|
+
watched.** It blocks the event loop for the whole dispatch, so nothing could
|
|
191
|
+
observe the child while it ran. The child's stdout still lands on the journal's
|
|
192
|
+
progress file, so the measurement is a `stat` and not a buffer in a parent that
|
|
193
|
+
might die. On Windows a `.cmd` shim is killed with `taskkill /T`, or the real
|
|
194
|
+
tool survives as a grandchild and edits the repository the next attempt is
|
|
195
|
+
about to resume into.
|
|
196
|
+
- **`stalled` is its own failure class and it is RETRYABLE.** That is the whole
|
|
197
|
+
point: `orc extra reconcile` reads the position out of the journal baseline and
|
|
198
|
+
`extra_resume` continues from what is already on disk instead of starting over.
|
|
199
|
+
**That is ORC's spelling of typing `continue`.** There is deliberately no key
|
|
200
|
+
that nudges the child on its stdin - `opencode run` is not an interactive
|
|
201
|
+
session, so a keystroke nobody reads would be a fake fix, and a fake fix looks
|
|
202
|
+
like the problem was handled.
|
|
203
|
+
- **Ordered once: stall < idle < api < wall.** A stall budget that cannot fit
|
|
204
|
+
under the wall clock stands down entirely and says why, rather than racing it -
|
|
205
|
+
two timers on the same instant report whichever won, which is the exact bug
|
|
206
|
+
`extraTimeouts` exists to prevent.
|
|
207
|
+
- **Every engine-`cli` return carries a `timeline`** - first byte, last progress,
|
|
208
|
+
longest quiet gap, and both budgets - on success as well as on failure. A
|
|
209
|
+
budget you can only see when it fires is a budget nobody can set before it
|
|
210
|
+
does. `first_byte_ms: null` is the honest reading of a worker that never said
|
|
211
|
+
anything, never `0`.
|
|
212
|
+
|
|
213
|
+
**`orc extra health <profile> [--model <id>]` - does this model stall?**
|
|
214
|
+
`0` answered - `1` stalled or failed - `2` unknown profile. It runs the live
|
|
215
|
+
probe through the SAME watchdog a dispatch uses, so a green badge is earned by
|
|
216
|
+
the path a wave actually runs. A **listed** model is not a **working** model, and
|
|
217
|
+
a working model is not a model that **finishes**: three different facts, and this
|
|
218
|
+
is the command that tells the third one apart.
|
|
219
|
+
|
|
220
|
+
**`extra_fallback_agent` (default `band`) - who picks the task up.** `band` is
|
|
221
|
+
the previous behaviour and stays the default, because a fallback that changes
|
|
222
|
+
tier is a re-plan nobody asked for. `ask` STOPS and puts the menu to you with the
|
|
223
|
+
failure and the position already on the table. Any installed agent name pins one.
|
|
224
|
+
|
|
225
|
+
- Under `ask` the lane does **not** choose: `fallback.agent` is `null` and the
|
|
226
|
+
trace line says `pending (extra_fallback_agent=ask)`. A lane that picked the
|
|
227
|
+
first option would answer the one question the setting exists to ask, and
|
|
228
|
+
`/orc-retro` would aggregate a decision nobody made.
|
|
229
|
+
- The menu is computed and the task's own agent leads it. The alternates are
|
|
230
|
+
`orc-executor-opus-5-med`, `orc-executor-opus-5-low` and
|
|
231
|
+
`orc-executor-sonnet-4-6-high`, and any installed agent name is accepted -
|
|
232
|
+
the roster is generated, so a closed list here would go stale.
|
|
233
|
+
- It changes WHO, never WHAT: the score does not move, `declared_files` is not
|
|
234
|
+
widened, `acceptance[]` is not touched. **INERT in `/orc-quick`**, announced at
|
|
235
|
+
the gate - re-opening that gate IS the ask.
|
|
236
|
+
- **A stop now NAMES the model.** The trace line read `profile/?` on a timeout,
|
|
237
|
+
and `orc extra stats` dedupes on the fields that line carries, so a stalled
|
|
238
|
+
dispatch could not be joined to a price, a provider, or another stall on a
|
|
239
|
+
different model.
|
|
240
|
+
|
|
13
241
|
### v0.56.0 - a rename moved the command, and nobody could reach the fix _(2026-08-27)_
|
|
14
242
|
|
|
15
243
|
**READ THIS FIRST IF YOUR `orc upgrade` IS FAILING.** If you are on a version
|
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
|

|
|
10
|
-

|
|
11
11
|

|
|
12
12
|

|
|
13
13
|

|
|
14
14
|

|
|
15
15
|
|
|
16
|
-
**Versi terbaru:
|
|
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
|
|
|
@@ -377,6 +377,8 @@ orc ui --stop # matikan server proyek ini
|
|
|
377
377
|
| Crosslink | **Design** (batas antar repo sebagai gambar) dan **Settings** (kesegaran tiap tetangga) | `crosslink add` / `remove` |
|
|
378
378
|
| Promises · Boundary · Self-serve | buku janji, kartu batas, dan permukaan yang boleh diubah orang non-teknis | `pact check`, `pact sync`, `handoff set` |
|
|
379
379
|
| **Docs** | setiap dokumen `/orc-doc` sebagai **pita** — satu blok per bagian, lebarnya sesuai panjangnya dan warnanya sesuai statusnya — plus berkas tiap bagian, jalur gelombang, kartu kesehatan lint, dan pratinjau gelombang | `doc compile` · `doc migrate` |
|
|
380
|
+
| **Extra** | **enam tab**: penyiapan koneksi, alat lokal beserta keadaannya, tangga rentang skor dan enam posisinya, pengeluaran per profil per rentang, dan **Recovery** — setiap pengiriman yang tidak pernah melapor kembali, beserta apa yang ia tinggalkan di disk | `extra add` / `ping` / `route` / `role` |
|
|
381
|
+
| **Challenge** | setiap putaran `/orc-challenge`: tujuan yang dibekukan, daftar sudut pandang dan apa yang diangkat masing-masing, temuan beserta keputusannya, dan apakah kelulusannya dihitung atau tertahan | `challenge record` · `accept` · `rebut` |
|
|
380
382
|
| **Mocked Skill Use** | semua contoh jalannya yang ikut dikirim bersama ORC, dikelompokkan dan bisa dicari, dengan panel baca | — |
|
|
381
383
|
| Learn | panduan `orc onboarding`, satu bagian sekali baca | — |
|
|
382
384
|
| Experiment | setiap lane dengan tombol salin; membuka sesi Claude di terminal | — |
|
|
@@ -405,6 +407,90 @@ ditulis tangan.
|
|
|
405
407
|
|
|
406
408
|
---
|
|
407
409
|
|
|
410
|
+
## Menjalankan sebagian tangga di tempat lain — `orc extra`
|
|
411
|
+
|
|
412
|
+
**Pengatur utamanya selalu Claude.** Yang diubah Extra adalah *siapa yang
|
|
413
|
+
mengerjakan satu potong tugas*: satu rentang skor milik Anda, atau salah satu
|
|
414
|
+
dari enam posisi bernama, bisa diarahkan ke DeepSeek, GLM, Kimi, MiniMax, Qwen,
|
|
415
|
+
Ollama lokal, atau CLI pemrograman yang sudah Anda pakai (opencode, codex).
|
|
416
|
+
Semua pemeriksaan setelahnya — gerbang asap, gerbang TDD, peninjau, pemeriksa
|
|
417
|
+
selisih pohon kerja — buta terhadap mesin yang dipakai, jadi tak ada satu pun
|
|
418
|
+
yang tahu pekerjaan itu dikerjakan di luar.
|
|
419
|
+
|
|
420
|
+
**Mati secara bawaan, dan tidak bisa dinyalakan sebelum ada yang benar-benar
|
|
421
|
+
menjawab.**
|
|
422
|
+
|
|
423
|
+
```bash
|
|
424
|
+
orc extra providers # katalog bertanggal — penyedia, bukan model
|
|
425
|
+
orc extra tools # CLI lokal: belum ada · terlalu lama · belum masuk · siap
|
|
426
|
+
orc extra add ds --provider deepseek --engine api --env-key DEEPSEEK_API_KEY
|
|
427
|
+
orc extra ping ds # gerbang koneksi: bertingkat, dan tak ada yang dibaca lebih kuat dari kenyataannya
|
|
428
|
+
orc extra models ds --test <id> # model yang TERDAFTAR bisa saja sudah mati di sana
|
|
429
|
+
orc extra health ds --model <id> # …dan model yang jalan belum tentu SELESAI
|
|
430
|
+
orc extra route set 40-55 ds/deepseek-chat # satu rentang skor
|
|
431
|
+
orc extra role set doc-writer ds/deepseek-chat # atau satu posisi bernama
|
|
432
|
+
orc config set extra_enabled true
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
- **Katalognya berisi penyedia, tidak pernah model.** Nama model yang ikut
|
|
436
|
+
dikirim akan salah dalam hitungan bulan, dan salahnya *diam-diam* — 404 di
|
|
437
|
+
tengah gelombang. `orc extra ping` membaca daftar aslinya lalu menyimpannya;
|
|
438
|
+
tidak ada yang mengarang nama. Begitu juga harga: angka biaya yang bukan ORC
|
|
439
|
+
sendiri yang hitung tidak pernah dicetak, melainkan muncul sebagai tanda
|
|
440
|
+
hubung panjang.
|
|
441
|
+
- **Setiap pekerjaan yang aktif mengatakannya sebelum gelombang pertama.**
|
|
442
|
+
Mengirim pekerjaan keluar dari Claude tanpa memberi tahu adalah justru
|
|
443
|
+
kegagalan yang membentuk seluruh bagian ini.
|
|
444
|
+
- **Dua penahan keras**: tugas dengan `risk[]` yang disebut (autentikasi, uang,
|
|
445
|
+
migrasi, keamanan, konkurensi, keutuhan data) tetap di Claude kecuali Anda
|
|
446
|
+
menyatakan lain, dan area REFUSE dari `/orc-boundary` tetap menahan bahkan
|
|
447
|
+
dalam mode `warn`.
|
|
448
|
+
- **Balasan dari luar adalah masukan asing.** Ia satu-satunya jenis masukan
|
|
449
|
+
asing yang menyunting pohon kerja Anda, jadi apa yang ia katakan telah ia
|
|
450
|
+
kerjakan adalah *klaim*, yang diperiksa terhadap pohon kerja.
|
|
451
|
+
- **Kunci Anda tidak pernah sampai ke baris perintah.** Ia lewat stdin menuju
|
|
452
|
+
brankas terenkripsi, atau tetap di variabel lingkungan, atau alatnya yang
|
|
453
|
+
menyimpannya sendiri — dan frasa sandinya adalah **tenggat waktu**, bukan
|
|
454
|
+
faktor kedua.
|
|
455
|
+
- **Enam posisi untuk lane yang mengunci agen alih-alih menilai tugas**:
|
|
456
|
+
`quick-executor` · `fast-executor` · `doc-writer` · `doc-checker` ·
|
|
457
|
+
`wiki-scanner-deep` · `wiki-scanner-light`. Posisi tanpa baris tetap
|
|
458
|
+
ditampilkan dan terbaca sebagai agen Claude yang terkunci padanya — "saya
|
|
459
|
+
sengaja membiarkan pemeriksanya di Claude" dan "tidak ada pemeriksa" tidak
|
|
460
|
+
boleh terlihat sama.
|
|
461
|
+
|
|
462
|
+
**Ketika pekerja luar gagal, yang tertinggal adalah sebuah posisi, bukan halaman
|
|
463
|
+
kosong.** ORC mencatat keadaan awal *sebelum bita pertama meninggalkan mesin
|
|
464
|
+
ini*, jadi pekerja yang terputus di tengah tulisan akan **dicocokkan lalu
|
|
465
|
+
dilanjutkan** — tidak pernah dikirim ulang dari nol ke berkas yang sudah
|
|
466
|
+
dua-pertiga jadi.
|
|
467
|
+
|
|
468
|
+
- **`extra_stall_s` (bawaan 180)** menghentikan pekerja yang tidak menghasilkan
|
|
469
|
+
apa pun selama itu. Hitungannya direset oleh kemajuan yang terlihat — aliran
|
|
470
|
+
keluaran pekerja, keluaran kesalahannya, atau berkas yang dideklarasikan
|
|
471
|
+
berubah di disk — jadi ia tidak pernah memotong pekerja yang sekadar lambat.
|
|
472
|
+
`stalled` boleh diulang, dan itulah yang membuat pelanjutannya menjadi cara
|
|
473
|
+
ORC sendiri mengetik `continue`.
|
|
474
|
+
- **`extra_fallback_agent` (bawaan `band`)** menentukan siapa yang mengambil alih
|
|
475
|
+
tugasnya. `ask` berhenti dan menyodorkan pilihannya kepada Anda; nama agen
|
|
476
|
+
apa pun yang terpasang bisa dikunci. Ia mengubah *siapa*, tidak pernah skornya,
|
|
477
|
+
daftar berkasnya, atau syarat penerimaannya.
|
|
478
|
+
- **Setiap pengiriman menulis catatan biayanya sendiri**, jadi laporan biaya
|
|
479
|
+
tidak pernah bergantung pada sebuah pekerjaan yang harus ingat menceritakan
|
|
480
|
+
pengeluarannya. `orc extra stats` menggabungkan catatan biaya, jejak, dan
|
|
481
|
+
balasan yang tersimpan, dan selalu menyebut berapa baris berasal dari mana.
|
|
482
|
+
|
|
483
|
+
**`/orc-quick` tidak terpengaruh di sini** dan mengatakannya — lane itu selalu
|
|
484
|
+
bertanya agen mana sebelum setiap pengiriman, jadi tidak ada pengaturan yang
|
|
485
|
+
boleh menjawabnya lebih dulu. **`/orc-challenge` tidak pernah keluar dari
|
|
486
|
+
Claude**: mengganti satu sudut pandang dengan model lain tidak membuat lane itu
|
|
487
|
+
lebih murah, ia mengubah apa yang sedang diukur.
|
|
488
|
+
|
|
489
|
+
**Seluruh bagian ini, dengan setiap perintah dan kuncinya:
|
|
490
|
+
[guides/extra-models.md](guides/extra-models.md).**
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
408
494
|
## Bagaimana modelnya dipilih
|
|
409
495
|
|
|
410
496
|
Setiap tugas diberi nilai 0–100 dengan **hitungan, bukan perasaan**: perencana
|
|
@@ -449,12 +535,13 @@ yang sama.
|
|
|
449
535
|
|
|
450
536
|
```
|
|
451
537
|
templates/
|
|
452
|
-
├── skills/
|
|
538
|
+
├── skills/ 31 folder skill, 38 berkas SKILL.md (satu lane boleh membawa
|
|
539
|
+
│ sub-skill) — lane di atas, plus yang tidak punya perintah
|
|
453
540
|
│ sendiri: context-combiner, orc-advisor, orc-judge,
|
|
454
541
|
│ orc-analyze-mini, dan _shared/ (kesepakatan lintas lane)
|
|
455
|
-
├── commands/
|
|
542
|
+
├── commands/ 29 perintah garis miring
|
|
456
543
|
├── hooks/ penjaga effort (PreToolUse) · peringatan statusline · catatan jejak
|
|
457
|
-
└── agents/
|
|
544
|
+
└── agents/ 51 subagen dengan model terkunci + MODEL-MAPPING.md
|
|
458
545
|
bin/cli.js pemasang, penyunting pengaturan, penyusun alur, pembaca status
|
|
459
546
|
pekerjaan, dan separuh pasti dari setiap lane. Setiap pembacaan
|
|
460
547
|
bisa menjawab --json
|
|
@@ -462,7 +549,8 @@ bin/webui/ `orc ui` — panel kendali lokal: css/ + js/ + i18n/<bahasa>/
|
|
|
462
549
|
fixtures/, satu berkas per lapisan dan per panel. Nol dependensi
|
|
463
550
|
bin/mockrun-catalog.js katalog contoh jalannya (diturunkan dari berkas di disk)
|
|
464
551
|
mock-run/ contoh-contoh jalannya itu sendiri — mulai dari INDEX.md
|
|
465
|
-
guides/ pengaturan · pemilihan model · dokumen · pembacaan pengetahuan
|
|
552
|
+
guides/ pengaturan · pemilihan model · dokumen · pembacaan pengetahuan ·
|
|
553
|
+
model AI lain
|
|
466
554
|
```
|
|
467
555
|
|
|
468
556
|
Skill `orc` sendiri hanyalah **tulang punggung** yang tipis: ia hanya memuat
|
|
@@ -531,53 +619,55 @@ Bacalah sebagai catatan putaran itu, bukan sebagai audit terkini:
|
|
|
531
619
|
**Riwayat lengkap: [CHANGELOG.md](CHANGELOG.md)** — atau `orc changelog`, yang
|
|
532
620
|
hanya mencetak yang lebih baru dari versi yang Anda punya.
|
|
533
621
|
|
|
534
|
-
###
|
|
535
|
-
|
|
536
|
-
**
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
**
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
yang
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
622
|
+
### v1.0.0 - konfigurasi, fase, dan panggilan berhenti jadi prosa _(30-08-2026)_
|
|
623
|
+
|
|
624
|
+
**Masih memakai paket `orc` yang tanpa awalan?** Lakukan ini sekali dulu —
|
|
625
|
+
`orc upgrade` Anda adalah versi sebelum v0.56.0 dan tidak bisa memasang dirinya
|
|
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).**
|
|
581
671
|
|
|
582
672
|
---
|
|
583
673
|
|