@azure-id/orc 0.56.1 → 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 +2367 -2218
- package/README-id.md +49 -107
- package/README.md +45 -133
- package/bin/build-agents.js +18 -11
- package/bin/cli.js +33060 -29855
- 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 +39 -39
- 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 +159 -7
- 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 +45 -12
- package/templates/skills/orc-quick/references/dispatch-gate.md +2 -3
- 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
|
@@ -1,70 +1,129 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: orc-diy
|
|
3
|
-
description: >
|
|
4
|
-
User-composable ORC lane. Use for "/orc-diy" or "run my custom orc flow".
|
|
5
|
-
The pipeline shape (analyze/review/verify/security/testgen on-off, scoring
|
|
6
|
-
or a fixed executor, autonomy, ship mode, session tier) is configured
|
|
7
|
-
ENTIRELY through the `orc diy` CLI and compiled into a flow file —
|
|
8
|
-
never configured in-session. HARD-GATED: no config or a stale compile →
|
|
9
|
-
this skill never runs the custom flow; it explains the CLI steps and offers
|
|
10
|
-
plain /orc instead. "/orc-diy compile" re-runs the deterministic CLI
|
|
11
|
-
compiler. See references/flow-schema.md and references/compile.md.
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# ORC-DIY (stub — gate + dispatcher)
|
|
15
|
-
|
|
16
|
-
You are the entry gate for the user's compiled custom flow. You NEVER invent,
|
|
17
|
-
modify, or interpret flow configuration in-session — the `orc diy` CLI is the
|
|
18
|
-
only writer, the compiler is the only builder, and this stub only gates and
|
|
19
|
-
dispatches. All state lives in the project's `.claude/` (project-scoped; no
|
|
20
|
-
global variant).
|
|
21
|
-
|
|
22
|
-
## Step 0 — route `compile`
|
|
23
|
-
|
|
24
|
-
If the invocation argument is `compile` (from `/orc-diy compile`): run
|
|
25
|
-
`orc diy compile` via Bash and relay its output. If the `orc` CLI is not on
|
|
26
|
-
PATH, tell the user to run `orc diy compile` in their own terminal — do NOT
|
|
27
|
-
reimplement the compiler in-session. Then end the turn. (`status` routes the
|
|
28
|
-
same way to `orc diy status`.)
|
|
29
|
-
|
|
30
|
-
## Step 1 — the hard gate (every other invocation)
|
|
31
|
-
|
|
32
|
-
Run `orc diy status` via Bash and branch on the reported state. If the CLI is
|
|
33
|
-
unavailable, apply the same checks manually from
|
|
34
|
-
`.claude/orc-diy.config.yaml` + `.claude/orc/diy/flow.lock.json` per
|
|
35
|
-
`references/flow-schema.md` — and treat ANYTHING you cannot verify as STALE
|
|
36
|
-
(fail closed).
|
|
37
|
-
|
|
38
|
-
- **UNCONFIGURED** — no config exists. Tell the user, in this order: what
|
|
39
|
-
orc-diy is (one sentence), the exact bootstrap
|
|
40
|
-
(`orc diy init` → optionally `orc diy set <key> <value>` →
|
|
41
|
-
`orc diy compile` — see the skill's README for the full guide), then ask
|
|
42
|
-
ONE question: *"Run this request through the regular full `/orc` lane
|
|
43
|
-
instead?"* Yes → invoke the `orc` skill with the user's original request
|
|
44
|
-
carried over verbatim. No → end the turn. Never proceed on an
|
|
45
|
-
unconfigured flow, and never write the config yourself.
|
|
46
|
-
- **STALE** — configured but not runnable. Report the specific reason the
|
|
47
|
-
status gave (config changed since compile / orc was updated / compiled
|
|
48
|
-
flow modified or missing) and the fix (`orc diy compile`), then the same
|
|
49
|
-
single `/orc` fallback question as above. Never run a stale flow.
|
|
50
|
-
- **READY** — proceed to Step 2.
|
|
51
|
-
|
|
52
|
-
## Step 2 — dispatch the compiled flow
|
|
53
|
-
|
|
54
|
-
Read `.claude/orc/diy/FLOW-COMPILED.md` and follow it as your orchestrator
|
|
55
|
-
spine for this run — it is self-contained: tier self-check, locked rules,
|
|
56
|
-
phase sequence, and the references it cherry-picks from the installed orc
|
|
57
|
-
skill. Honor its generated header: if its own self-gate fails, stop exactly
|
|
58
|
-
as it says. Do not consult this stub again for the rest of the run, and do
|
|
59
|
-
not load orc's SKILL.md as a spine (the compiled flow already references the
|
|
60
|
-
exact orc subskills and schemas it needs).
|
|
61
|
-
|
|
62
|
-
##
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
1
|
+
---
|
|
2
|
+
name: orc-diy
|
|
3
|
+
description: >
|
|
4
|
+
User-composable ORC lane. Use for "/orc-diy" or "run my custom orc flow".
|
|
5
|
+
The pipeline shape (analyze/review/verify/security/testgen on-off, scoring
|
|
6
|
+
or a fixed executor, autonomy, ship mode, session tier) is configured
|
|
7
|
+
ENTIRELY through the `orc diy` CLI and compiled into a flow file —
|
|
8
|
+
never configured in-session. HARD-GATED: no config or a stale compile →
|
|
9
|
+
this skill never runs the custom flow; it explains the CLI steps and offers
|
|
10
|
+
plain /orc instead. "/orc-diy compile" re-runs the deterministic CLI
|
|
11
|
+
compiler. See references/flow-schema.md and references/compile.md.
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# ORC-DIY (stub — gate + dispatcher)
|
|
15
|
+
|
|
16
|
+
You are the entry gate for the user's compiled custom flow. You NEVER invent,
|
|
17
|
+
modify, or interpret flow configuration in-session — the `orc diy` CLI is the
|
|
18
|
+
only writer, the compiler is the only builder, and this stub only gates and
|
|
19
|
+
dispatches. All state lives in the project's `.claude/` (project-scoped; no
|
|
20
|
+
global variant).
|
|
21
|
+
|
|
22
|
+
## Step 0 — route `compile`
|
|
23
|
+
|
|
24
|
+
If the invocation argument is `compile` (from `/orc-diy compile`): run
|
|
25
|
+
`orc diy compile` via Bash and relay its output. If the `orc` CLI is not on
|
|
26
|
+
PATH, tell the user to run `orc diy compile` in their own terminal — do NOT
|
|
27
|
+
reimplement the compiler in-session. Then end the turn. (`status` routes the
|
|
28
|
+
same way to `orc diy status`.)
|
|
29
|
+
|
|
30
|
+
## Step 1 — the hard gate (every other invocation)
|
|
31
|
+
|
|
32
|
+
Run `orc diy status` via Bash and branch on the reported state. If the CLI is
|
|
33
|
+
unavailable, apply the same checks manually from
|
|
34
|
+
`.claude/orc-diy.config.yaml` + `.claude/orc/diy/flow.lock.json` per
|
|
35
|
+
`references/flow-schema.md` — and treat ANYTHING you cannot verify as STALE
|
|
36
|
+
(fail closed).
|
|
37
|
+
|
|
38
|
+
- **UNCONFIGURED** — no config exists. Tell the user, in this order: what
|
|
39
|
+
orc-diy is (one sentence), the exact bootstrap
|
|
40
|
+
(`orc diy init` → optionally `orc diy set <key> <value>` →
|
|
41
|
+
`orc diy compile` — see the skill's README for the full guide), then ask
|
|
42
|
+
ONE question: *"Run this request through the regular full `/orc` lane
|
|
43
|
+
instead?"* Yes → invoke the `orc` skill with the user's original request
|
|
44
|
+
carried over verbatim. No → end the turn. Never proceed on an
|
|
45
|
+
unconfigured flow, and never write the config yourself.
|
|
46
|
+
- **STALE** — configured but not runnable. Report the specific reason the
|
|
47
|
+
status gave (config changed since compile / orc was updated / compiled
|
|
48
|
+
flow modified or missing) and the fix (`orc diy compile`), then the same
|
|
49
|
+
single `/orc` fallback question as above. Never run a stale flow.
|
|
50
|
+
- **READY** — proceed to Step 2.
|
|
51
|
+
|
|
52
|
+
## Step 2 — dispatch the compiled flow
|
|
53
|
+
|
|
54
|
+
Read `.claude/orc/diy/FLOW-COMPILED.md` and follow it as your orchestrator
|
|
55
|
+
spine for this run — it is self-contained: tier self-check, locked rules,
|
|
56
|
+
phase sequence, and the references it cherry-picks from the installed orc
|
|
57
|
+
skill. Honor its generated header: if its own self-gate fails, stop exactly
|
|
58
|
+
as it says. Do not consult this stub again for the rest of the run, and do
|
|
59
|
+
not load orc's SKILL.md as a spine (the compiled flow already references the
|
|
60
|
+
exact orc subskills and schemas it needs).
|
|
61
|
+
|
|
62
|
+
## Where the compiled flow comes from
|
|
63
|
+
|
|
64
|
+
You never read these; `orc diy compile` does, once, and stitches the result
|
|
65
|
+
into `FLOW-COMPILED.md`. The table is here so a maintainer can see the
|
|
66
|
+
provenance of a compiled phase without reading the compiler — `orc lane phases
|
|
67
|
+
orc-diy --json` is the authoritative version and marks every row below
|
|
68
|
+
`when: compile-time`.
|
|
69
|
+
|
|
70
|
+
Eleven phases come from the shared library, as that file's `composed` LAYER —
|
|
71
|
+
NOT its `full` layer, which is `/orc`'s procedure for the same phase:
|
|
72
|
+
`../_shared/phases/trace.md` · `../_shared/phases/planning.md` ·
|
|
73
|
+
`../_shared/phases/scoring.md` · `../_shared/phases/execution.md` ·
|
|
74
|
+
`../_shared/phases/review.md` · `../_shared/phases/security.md` ·
|
|
75
|
+
`../_shared/phases/verify.md` · `../_shared/phases/testgen.md` ·
|
|
76
|
+
`../_shared/phases/mock-example.md` · `../_shared/phases/ship.md` ·
|
|
77
|
+
`../_shared/phases/summary.md`.
|
|
78
|
+
|
|
79
|
+
Five have no counterpart anywhere else in the payload and stay this lane's own:
|
|
80
|
+
`references/blocks/header.md` (the tier self-gate), `wiki.md`, `analyze.md`,
|
|
81
|
+
`pattern.md` and `extra.md`. They are composition prose about a decision only a
|
|
82
|
+
composed flow makes, so there is nothing to share them WITH.
|
|
83
|
+
|
|
84
|
+
Four more are pointed at from inside those stitched layers rather than stitched
|
|
85
|
+
themselves: `../_shared/phases/intake.md`,
|
|
86
|
+
`../_shared/phases/wave-grouping.md`,
|
|
87
|
+
`../_shared/phases/security-checklist.md` and
|
|
88
|
+
`../_shared/phases/stop-resume.md`.
|
|
89
|
+
|
|
90
|
+
The stitch ORDER is the compiler's `order` array and is documented in
|
|
91
|
+
`references/compile.md`; a golden test holds the three lists together.
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
## Config
|
|
95
|
+
|
|
96
|
+
**ONE resolver, and it is not you:** `orc lane config orc-diy --json`. Obey
|
|
97
|
+
`effective`, print every line in `announce[]` VERBATIM at preflight, and honour
|
|
98
|
+
`stops[]` before wave 1. Never re-derive a value, a precedence or an inertness
|
|
99
|
+
from `.claude/orc.config.yaml` — a key this lane does not read is not in the
|
|
100
|
+
answer, and a key another key shadows comes back already marked. Exit ≠ 0 → say
|
|
101
|
+
the CLI is unavailable and fall back to `../_shared/config-precedence.md`'s
|
|
102
|
+
documented defaults, out loud. Priorities and families:
|
|
103
|
+
`../_shared/config-precedence.md`.
|
|
104
|
+
|
|
105
|
+
The flow SHAPE is not in that answer: it is compile-owned and lives in
|
|
106
|
+
`flow.lock.json`. The resolver answers for everything else this lane still
|
|
107
|
+
reads, and `extra` is the same split — the flow decides WHETHER, the resolver
|
|
108
|
+
still decides WHERE.
|
|
109
|
+
|
|
110
|
+
## Calls
|
|
111
|
+
|
|
112
|
+
**ONE catalogue, and it is not you:** `orc lane calls orc-diy --json` names every
|
|
113
|
+
CLI call this lane makes, each with its exit-code contract, its cost, when to run
|
|
114
|
+
it, and what an EMPTY answer means. Never invent a spelling, never re-word an
|
|
115
|
+
exit code, and never re-derive a state word — the CLI's state words are the only
|
|
116
|
+
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
117
|
+
a failure**. A call the answer does not name is a call this lane does not make.
|
|
118
|
+
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
119
|
+
command you are about to run, out loud, before running it.
|
|
120
|
+
|
|
121
|
+
## Hard rules
|
|
122
|
+
|
|
123
|
+
1. The compiled flow is a build artifact — NEVER edit
|
|
124
|
+
`FLOW-COMPILED.md`, `flow.lock.json`, or `orc-diy.config.yaml` yourself,
|
|
125
|
+
and never "patch" the flow conversationally. Config changes go through
|
|
126
|
+
`orc diy set` + `orc diy compile`, both run by the user.
|
|
127
|
+
2. Fail closed: any gate ambiguity = STALE, with the reason shown.
|
|
128
|
+
3. The fallback ask is ONE question with two outcomes (`/orc` or stop) —
|
|
129
|
+
never a menu, never a silent fallback.
|
|
@@ -20,5 +20,5 @@ planning. No doc → go straight to planning.
|
|
|
20
20
|
<!-- diy:when analyze=auto -->
|
|
21
21
|
Route doc intake exactly as the full lane does: a document present triggers
|
|
22
22
|
the System Analyst per the intake rules in
|
|
23
|
-
`.claude/skills/
|
|
23
|
+
`.claude/skills/_shared/phases/intake.md`; otherwise proceed to planning.
|
|
24
24
|
<!-- /diy:when -->
|
|
@@ -10,13 +10,27 @@ second implementation, and the skill never stitches the flow itself.
|
|
|
10
10
|
|
|
11
11
|
1. **Validate.** Load `.claude/orc-diy.config.yaml`; run the full cross-key
|
|
12
12
|
validation from `flow-schema.md`. Any hard error aborts the compile.
|
|
13
|
-
2. **Resolve sources.**
|
|
14
|
-
(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
2. **Resolve sources.** A block comes from ONE of two places, and which one
|
|
14
|
+
is not the compiler's choice — it is `LANE_PHASES` (`orc lane phases
|
|
15
|
+
orc-diy --json`).
|
|
16
|
+
|
|
17
|
+
- **Eleven come from the shared phase library** as that file's `composed`
|
|
18
|
+
LAYER: `.claude/skills/_shared/phases/<block>.md`. The `composed` layer
|
|
19
|
+
is this lane's variant of the phase; the `full` layer in the same file is
|
|
20
|
+
`/orc`'s procedure and is NEVER stitched here. A file whose `composed`
|
|
21
|
+
layer is missing aborts the compile naming the file — it must never
|
|
22
|
+
compile to an empty phase.
|
|
23
|
+
- **Five stay this lane's own** in the installed stub
|
|
24
|
+
(`.claude/skills/orc-diy/references/blocks/`): `header`, `wiki`,
|
|
25
|
+
`analyze`, `pattern`, `extra`. They are composition prose about a
|
|
26
|
+
decision only a composed flow makes, so there is nothing to share them
|
|
27
|
+
with.
|
|
28
|
+
|
|
29
|
+
Cherry-picked orc material is REFERENCED in place, never copied: the
|
|
30
|
+
compiler verifies that every orc file a chosen variant points at actually
|
|
31
|
+
exists under `.claude/skills/` (project first, `~/.claude/skills/`
|
|
32
|
+
fallback for a global orc install) and aborts naming the missing file if
|
|
33
|
+
orc is absent or incomplete.
|
|
20
34
|
3. **Stitch.** Concatenate in fixed order — this list and the `order` array in
|
|
21
35
|
`bin/cli.js` are ONE contract; change them together (a golden test compares
|
|
22
36
|
them, because the drift is grammar-shaped and the contract lint cannot see
|
|
@@ -32,7 +32,7 @@ selector.
|
|
|
32
32
|
| `summary` | `full` / `off` / `short` | Summary depth |
|
|
33
33
|
| `autonomy` | `interactive` / `semi` / `hands-off` | Who answers routine asks |
|
|
34
34
|
| `ship_mode` | `ask` / `commit` / `pr` / `report-only` | Terminal ship behavior |
|
|
35
|
-
| `session_tier` | `sonnet-4-6-{med,high}` / `opus-4-7-{med,high}` / `opus-4-8-{med,high,xhigh,max}` / `opus-5-{med,high,xhigh,max}` / `fable-5-{med,high,xhigh,max}` | Required main-session model+effort (default `opus-
|
|
35
|
+
| `session_tier` | `sonnet-4-6-{med,high}` / `opus-4-7-{med,high}` / `opus-4-8-{med,high,xhigh,max}` / `opus-5-{med,high,xhigh,max}` / `fable-5-{med,high,xhigh,max}` | Required main-session model+effort (default `opus-5-high`) |
|
|
36
36
|
| `max_wave_tasks` | `3` (integer ≥ 1) | Wave hard cap |
|
|
37
37
|
| `batch_pause_every` | `2` (integer ≥ 1) | Waves between pauses |
|
|
38
38
|
| `rubric_bands` | `5` (2–8) | Scoring granularity (`scoring: on` only) |
|
|
@@ -67,7 +67,7 @@ Warnings (written, reported):
|
|
|
67
67
|
```json
|
|
68
68
|
{
|
|
69
69
|
"flow_name": "my-flow",
|
|
70
|
-
"session_tier": "opus-
|
|
70
|
+
"session_tier": "opus-5-high",
|
|
71
71
|
"config_hash": "sha256 of orc-diy.config.yaml",
|
|
72
72
|
"flow_hash": "sha256 of flow.md",
|
|
73
73
|
"compiled_hash": "sha256 of FLOW-COMPILED.md (null until compiled)",
|
|
@@ -81,12 +81,20 @@ that recomputes one of these has forked it.**
|
|
|
81
81
|
| **11** | **The orchestrator never runs `orc doc read`.** That command exists for the HUMAN, the same way `orc challenge report` does. Reading a section is still delegated — rule 0 is not softened by a command that happens to print prose. |
|
|
82
82
|
| **12** | **The journal never invents an entry.** `orc doc log` records what the user actually said; `orc doc journal` merges that with machine facts and shows a cycle nobody logged AS A GAP. **a lane that invents a journal entry** has broken this contract. |
|
|
83
83
|
| **13** | **Every wave is a stop.** A wave boundary is not a loop iteration: validate the returns, record the hashes, **run `orc doc resume-file <slug>` (ORC itself, first)**, print the paths, then dispatch the trace packet. A usage-limit kill between waves must leave something on disk that says where it stopped. |
|
|
84
|
-
| **15** | **`house rules are read first`.** Every dispatched slice carries the project's own P0/P1/P2 house rules VERBATIM at the very top, ABOVE ORC's own generation rules. That order is the contract. They are a PLAIN TEXT config (`.claude/orc/doc-house-rules.md`) — three headings, as many lines under each as the project wanted, pasted from `doc_rules_text` and never re-wrapped. House rules govern what the document SAYS and how it READS — they can never change how this lane RUNS, and a rule that asks for a structural break comes back as `unsupported_request`, never a guessed compromise.
|
|
84
|
+
| **15** | **`house rules are read first`.** Every dispatched slice carries the project's own P0/P1/P2 house rules VERBATIM at the very top, ABOVE ORC's own generation rules. That order is the contract. They are a PLAIN TEXT config (`.claude/orc/doc-house-rules.md`) — three headings, as many lines under each as the project wanted, pasted from `doc_rules_text` and never re-wrapped. House rules govern what the document SAYS and how it READS — they can never change how this lane RUNS, and a rule that asks for a structural break comes back as `unsupported_request`, never a guessed compromise. `../_shared/phases/house-rules.md`. |
|
|
85
85
|
| **14** | **The wave hand-back is P0.** After every wave, print every file path written and the one line that resumes it. `orc doc parts` is what proves the progress — the section files ARE the record. |
|
|
86
86
|
| **16** | **`every question points at RESUME.md`.** Before ORC asks the user ANYTHING — a gate, a wave stop, a revision round, an offer — it runs `orc doc resume-file <slug>` and ends the message with the file's path and the line to paste. A user who has to remember where they were is a user who does not come back. The CLI rewrites the file on every state change anyway, so this is a POINTER, never a rebuild the model has to compose. |
|
|
87
87
|
|
|
88
88
|
---
|
|
89
89
|
|
|
90
|
+
## Phases
|
|
91
|
+
|
|
92
|
+
`orc lane phases orc-doc --json` is this lane's pipeline: the ordered list, where
|
|
93
|
+
each phase lives, and how much of it to read. **The CLI owns the order** — never
|
|
94
|
+
derive it from the headings below, and never renumber or rename one without the
|
|
95
|
+
manifest, because a `read: section` pointer names a HEADING and a renamed heading
|
|
96
|
+
is a pointer into nothing.
|
|
97
|
+
|
|
90
98
|
## D0 — Preflight (ONE time, silent)
|
|
91
99
|
|
|
92
100
|
1. **Config.** `log_dir`, `doc_dir`, `doc_language`, `doc_max_lines_per_agent`,
|
|
@@ -104,6 +112,10 @@ that recomputes one of these has forked it.**
|
|
|
104
112
|
rules live. Never compute that line yourself.
|
|
105
113
|
5. If a slug was given, go straight to **Resuming** below.
|
|
106
114
|
|
|
115
|
+
The SHAPE of these steps — the order, and the four rules that make it worth
|
|
116
|
+
having — is `../_shared/phases/preflight.md` (`core`). The probes
|
|
117
|
+
themselves are this lane's own and stay here.
|
|
118
|
+
|
|
107
119
|
## D1 — The context gate (P0 — the only blocking one)
|
|
108
120
|
|
|
109
121
|
`references/gates.md`. One question, and **nothing is created until it is
|
|
@@ -399,14 +411,17 @@ is the most expensive possible way to do nothing.
|
|
|
399
411
|
|
|
400
412
|
## Behavior trace (always on)
|
|
401
413
|
|
|
402
|
-
`../
|
|
403
|
-
|
|
404
|
-
packet
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
414
|
+
`../_shared/phases/trace.md` (`core`, at run start; `orc lane phases` names
|
|
415
|
+
the file and the layers). Lane token `doc`, tier **Iterative** —
|
|
416
|
+
ONE packet per completed cycle — **and a completed WAVE is a completed
|
|
417
|
+
cycle**, so the packet goes out at the end of every wave (last in the stop
|
|
418
|
+
sequence) and at D9, not at D9 only.
|
|
419
|
+
Nothing else about the protocol is restated here; a phase that ends with
|
|
408
420
|
`zero new trace lines is a protocol violation`.
|
|
409
421
|
|
|
422
|
+
A run that dies at wave 3 must not leave a trace holding nothing but the
|
|
423
|
+
hook's `SPAWN`/`RETURN` lines. Verb `DOC` with `cycle=N sections=K/M wave=K/N`.
|
|
424
|
+
|
|
410
425
|
## How this lane fails — and the rule that prevents each
|
|
411
426
|
|
|
412
427
|
| Failure | Prevention |
|
|
@@ -442,3 +457,25 @@ guess a line number · never split a section across agents · one file per secti
|
|
|
442
457
|
· never overwrite a human's paragraph · never invent a fact · never put ORC's
|
|
443
458
|
bookkeeping in the document · every wave is a stop · never pay for what the lint
|
|
444
459
|
answers free · never stage, never commit.
|
|
460
|
+
|
|
461
|
+
## Config
|
|
462
|
+
|
|
463
|
+
**ONE resolver, and it is not you:** `orc lane config orc-doc --json`. Obey
|
|
464
|
+
`effective`, print every line in `announce[]` VERBATIM at preflight, and honour
|
|
465
|
+
`stops[]` before wave 1. Never re-derive a value, a precedence or an inertness
|
|
466
|
+
from `.claude/orc.config.yaml` — a key this lane does not read is not in the
|
|
467
|
+
answer, and a key another key shadows comes back already marked. Exit ≠ 0 → say
|
|
468
|
+
the CLI is unavailable and fall back to `../_shared/config-precedence.md`'s
|
|
469
|
+
documented defaults, out loud. Priorities and families:
|
|
470
|
+
`../_shared/config-precedence.md`.
|
|
471
|
+
|
|
472
|
+
## Calls
|
|
473
|
+
|
|
474
|
+
**ONE catalogue, and it is not you:** `orc lane calls orc-doc --json` names every
|
|
475
|
+
CLI call this lane makes, each with its exit-code contract, its cost, when to run
|
|
476
|
+
it, and what an EMPTY answer means. Never invent a spelling, never re-word an
|
|
477
|
+
exit code, and never re-derive a state word — the CLI's state words are the only
|
|
478
|
+
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
479
|
+
a failure**. A call the answer does not name is a call this lane does not make.
|
|
480
|
+
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
481
|
+
command you are about to run, out loud, before running it.
|
|
@@ -55,3 +55,22 @@ purpose.
|
|
|
55
55
|
- **User-invoked only.** No lane ever calls this for the user.
|
|
56
56
|
- If the user actually wanted the work redone rather than restated, say so and
|
|
57
57
|
point at the lane that does it — do not quietly become that lane.
|
|
58
|
+
|
|
59
|
+
## Config
|
|
60
|
+
|
|
61
|
+
Resolve with `orc lane config orc-explain --json` and obey `effective`. Never merge
|
|
62
|
+
`.claude/orc.config.yaml` yourself, and never re-derive a precedence. Exit ≠ 0 →
|
|
63
|
+
say so and use `../_shared/config-precedence.md`'s documented defaults, out
|
|
64
|
+
loud. Nothing this lane reads is contested, gated or a stop, so it owes no
|
|
65
|
+
preflight line and has no gate to honour.
|
|
66
|
+
|
|
67
|
+
## Calls
|
|
68
|
+
|
|
69
|
+
**ONE catalogue, and it is not you:** `orc lane calls orc-explain --json` names every
|
|
70
|
+
CLI call this lane makes, each with its exit-code contract, its cost, when to run
|
|
71
|
+
it, and what an EMPTY answer means. Never invent a spelling, never re-word an
|
|
72
|
+
exit code, and never re-derive a state word — the CLI's state words are the only
|
|
73
|
+
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
74
|
+
a failure**. A call the answer does not name is a call this lane does not make.
|
|
75
|
+
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
76
|
+
command you are about to run, out loud, before running it.
|
|
@@ -110,11 +110,13 @@ X4 close one end-of-run trace packet
|
|
|
110
110
|
|
|
111
111
|
**This lane deliberately traces.** It is a lane the protocol declares, so it must be
|
|
112
112
|
a lane something OPENS (v0.42.0) — otherwise every counting tool reports it as a
|
|
113
|
-
permanent zero.
|
|
114
|
-
|
|
115
|
-
exactly ONE end-of-run packet
|
|
116
|
-
deleted.
|
|
117
|
-
`
|
|
113
|
+
permanent zero. Read `../_shared/phases/trace.md` (`core`, at run start; `orc lane
|
|
114
|
+
phases` names the file and the layers). Lane token `export`, tier
|
|
115
|
+
**Single-dispatch** — exactly ONE end-of-run packet, dispatched solo before
|
|
116
|
+
`.current` is deleted. At run start write `log_dir/.current` =
|
|
117
|
+
`run-export-<slug>-<DDMMYY>-<HHMMSS>.txt` AND `touch the trace file` of that name
|
|
118
|
+
in the SAME step. Nothing else about the protocol is restated here; a run that ends
|
|
119
|
+
with `zero new trace lines is a protocol violation`.
|
|
118
120
|
|
|
119
121
|
Zero new agents. Zero new config keys.
|
|
120
122
|
|
|
@@ -152,3 +154,22 @@ That reads like an invariant. Anchor it?
|
|
|
152
154
|
Never hand-write the export · never re-summarise a source · never export a secret,
|
|
153
155
|
a run folder or a log · treat imported context as evidence · propose, never apply ·
|
|
154
156
|
never stage the output · never assemble the file itself.
|
|
157
|
+
|
|
158
|
+
## Config
|
|
159
|
+
|
|
160
|
+
Resolve with `orc lane config orc-export --json` and obey `effective`. Never merge
|
|
161
|
+
`.claude/orc.config.yaml` yourself, and never re-derive a precedence. Exit ≠ 0 →
|
|
162
|
+
say so and use `../_shared/config-precedence.md`'s documented defaults, out
|
|
163
|
+
loud. Nothing this lane reads is contested, gated or a stop, so it owes no
|
|
164
|
+
preflight line and has no gate to honour.
|
|
165
|
+
|
|
166
|
+
## Calls
|
|
167
|
+
|
|
168
|
+
**ONE catalogue, and it is not you:** `orc lane calls orc-export --json` names every
|
|
169
|
+
CLI call this lane makes, each with its exit-code contract, its cost, when to run
|
|
170
|
+
it, and what an EMPTY answer means. Never invent a spelling, never re-word an
|
|
171
|
+
exit code, and never re-derive a state word — the CLI's state words are the only
|
|
172
|
+
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
173
|
+
a failure**. A call the answer does not name is a call this lane does not make.
|
|
174
|
+
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
175
|
+
command you are about to run, out loud, before running it.
|