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