@azure-id/orc 1.7.0 → 1.7.1
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 +42 -0
- package/README.md +25 -97
- package/bin/verify-contracts.js +26 -0
- package/package.json +1 -1
- package/templates/agents/orc-executor-haiku-4-5.md +9 -1
- package/templates/agents/orc-executor-opus-4-7-high.md +9 -1
- package/templates/agents/orc-executor-opus-4-7-med.md +9 -1
- package/templates/agents/orc-executor-opus-4-8-high.md +9 -1
- package/templates/agents/orc-executor-opus-5-high.md +9 -1
- package/templates/agents/orc-executor-opus-5-low.md +9 -1
- package/templates/agents/orc-executor-opus-5-med.md +9 -1
- package/templates/agents/orc-executor-sonnet-4-6-high.md +9 -1
- package/templates/agents/orc-executor-sonnet-4-6-med.md +9 -1
- package/templates/agents/orc-executor-sonnet-5-high.md +9 -1
- package/templates/skills/_shared/extra-dispatch.md +1 -1
- package/templates/skills/_shared/phases/execution.md +3 -1
- package/templates/skills/_shared/phases/rules.md +5 -0
- package/templates/skills/orc/SKILL.md +1 -1
- package/templates/skills/orc/references/preflight-report.md +6 -0
- package/templates/skills/orc/subskills/orc-execution/SKILL.md +2 -1
- package/templates/skills/orc/subskills/orc-execution/core.md +9 -1
- package/templates/skills/orc-fast/SKILL.md +2 -2
- package/templates/skills/orc-mini/SKILL.md +3 -3
- package/templates/skills/orc-quick/SKILL.md +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,48 @@ Format: `### v<version> — <title> _(<date>)_`.
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
+
### v1.7.1 - the rules card now reaches the agent _(2026-09-14)_
|
|
14
|
+
|
|
15
|
+
**Still on the unscoped `orc` package?** Do this once first - your `orc upgrade`
|
|
16
|
+
is the pre-v0.56.0 one and cannot install itself. Full detail in the CAUTION at
|
|
17
|
+
the top of this file.
|
|
18
|
+
|
|
19
|
+
- **Step 1 - release the command from the old package:** `npm uninstall -g orc`
|
|
20
|
+
- **Step 2 - install the current package:** `npm i -g @azure-id/orc`
|
|
21
|
+
- **Step 3 - re-apply it to your project:** `orc update`
|
|
22
|
+
|
|
23
|
+
**Do not use `npm i -g -f`.** Full detail in v0.56.0 below.
|
|
24
|
+
|
|
25
|
+
In v1.7.0, subagents and the preflight showed the house rules only. Your project
|
|
26
|
+
rules and the ORC rules did not reach the agent.
|
|
27
|
+
|
|
28
|
+
**The cause.** `orc rules slice` built the card correctly. But each place that
|
|
29
|
+
builds an executor slice named only the `house_rules` card: the `/orc` Phase 3
|
|
30
|
+
dispatch step, `/orc-mini`, `/orc-fast`, `/orc-quick`, the Extra foreign
|
|
31
|
+
dispatch, and the executor contract. `/orc` Phase 3 also did not load
|
|
32
|
+
`rules.md`, and the `/orc` preflight template had no `rules:` row.
|
|
33
|
+
|
|
34
|
+
**The fix.**
|
|
35
|
+
|
|
36
|
+
- **A new slice field, `rules_card`.** It is the `text` of
|
|
37
|
+
`orc rules slice --lane <lane> --json`, put in verbatim directly under
|
|
38
|
+
`house_rules`. A front-end task adds `--pack ui`.
|
|
39
|
+
- **The executors read it.** They obey it after the house rules, and return
|
|
40
|
+
`rules_applied[]`, `rules_conflicts[]` and `rules_overridden[]`.
|
|
41
|
+
- **The `/orc` preflight prints `rules:`** - the CLI `line`, verbatim.
|
|
42
|
+
- **`rules.md` now says it clearly:** the `line` is the report, the `text` is
|
|
43
|
+
the card. Printing the line is not the same as sending the card.
|
|
44
|
+
- **Guards.** `rules_card` is a registered contract token, and a new test
|
|
45
|
+
checks that every dispatch site carries both cards.
|
|
46
|
+
|
|
47
|
+
**How to check it.** Run `orc rules slice --lane orc --json`. When
|
|
48
|
+
`.claude/orc/rules.md` has rules, `line` shows `yours N lines` and `text` starts
|
|
49
|
+
with `YOUR PROJECT'S RULES`. In a run, look for the `rules:` preflight row and
|
|
50
|
+
the three `rules_*` fields in each executor return. Run `orc update` in your
|
|
51
|
+
project to get the fixed skills.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
13
55
|
### v1.7.0 - the rules that keep the slop out _(2026-09-13)_
|
|
14
56
|
|
|
15
57
|
**Still on the unscoped `orc` package?** Do this once first - your `orc upgrade`
|
package/README.md
CHANGED
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
*Intake → analyze → plan → score → parallel subagents → review → verify → ship.*
|
|
8
8
|
|
|
9
9
|

|
|
10
|
-

|
|
11
11
|

|
|
12
12
|

|
|
13
13
|

|
|
14
14
|

|
|
15
15
|

|
|
16
16
|
|
|
17
|
-
**Latest: v1.7.
|
|
17
|
+
**Latest: v1.7.1** · updated 2026-09-14 · [full changelog](CHANGELOG.md)
|
|
18
18
|
|
|
19
19
|
**On npm: [`@azure-id/orc`](https://www.npmjs.com/package/@azure-id/orc)** — `npm i -g @azure-id/orc`
|
|
20
20
|
|
|
@@ -630,108 +630,36 @@ a current audit: [EVAL-REPORT.md](EVAL-REPORT.md).
|
|
|
630
630
|
**Full history: [CHANGELOG.md](CHANGELOG.md)** — or `orc changelog`, which prints
|
|
631
631
|
only what is newer than the version you have.
|
|
632
632
|
|
|
633
|
-
### v1.7.
|
|
633
|
+
### v1.7.1 - the rules card now reaches the agent _(2026-09-14)_
|
|
634
634
|
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
that is longer, more defensive and more abstract than the task asked for. There
|
|
638
|
-
was one standing card against it - the seven-line house rules - and it is about
|
|
639
|
-
CODE. Nothing said anything about the words.
|
|
640
|
-
|
|
641
|
-
**`orc rules` is a second rule surface, and it has two halves that never mix.**
|
|
642
|
-
|
|
643
|
-
- **ORC rules** - 65 rules in four packs, shipped, tagged, **read-only**. They
|
|
644
|
-
change with `orc update` and with nothing else. `orc rules set --pack ...` is
|
|
645
|
-
refused BY NAME, with the command that replaces it.
|
|
646
|
-
- **Your rules** - `.claude/orc/rules.md`. Plain text, three headings, as much
|
|
647
|
-
under each as you want. **They beat an ORC rule outright.**
|
|
648
|
-
|
|
649
|
-
The packs: **`OSW` writing (23)**, **`OSC` code (22)**, **`OSD` delivery (10)** -
|
|
650
|
-
what an agent reports about its OWN work - and **`OSU` UI (10)**, which rides per
|
|
651
|
-
TASK rather than per lane, because a UI rule in a backend slice is tokens paid on
|
|
652
|
-
every spawn for a rule that cannot apply.
|
|
653
|
-
|
|
654
|
-
Three tiers, taken from `anti-slop`: **HARD** absolute, **PURPOSE** allowed with
|
|
655
|
-
a written one-line reason, **LOCK** a consistency check. The purpose gate is the
|
|
656
|
-
mechanism that matters - a ban list alone leaves a void, and a model fills a void
|
|
657
|
-
with its most generic output.
|
|
658
|
-
|
|
659
|
-
**Credit is a shipped artifact here, not a line in a commit message.** Every pack
|
|
660
|
-
opens with its sources; `orc rules credits` prints author, handle, repository,
|
|
661
|
-
licence, and what ORC took from each. Adapted from
|
|
662
|
-
[`petergyang/no-ai-slop`](https://github.com/petergyang/no-ai-slop) (MIT),
|
|
663
|
-
[`miqdadbadjuber/anti-slop`](https://github.com/miqdadbadjuber/anti-slop) (MIT),
|
|
664
|
-
[`ehmo/slopkit`](https://github.com/ehmo/slopkit),
|
|
665
|
-
[`BioInfo/slopless`](https://github.com/BioInfo/slopless), Andrej Karpathy's
|
|
666
|
-
`CLAUDE.md`, Matty Cartwright's Anti-Slop Writing Rules, and three papers on LLM
|
|
667
|
-
code smells.
|
|
635
|
+
In v1.7.0, subagents and the preflight showed the house rules only. Your project
|
|
636
|
+
rules and the ORC rules did not reach the agent.
|
|
668
637
|
|
|
669
|
-
**
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
removed from the slice and the removal is stated inside it.
|
|
673
|
-
|
|
674
|
-
**An override is counted the only honest way.** The CLI counts ORC rule ids you
|
|
675
|
-
NAMED, and says that is what it counted. A conflict you did not name is found by
|
|
676
|
-
the agent at dispatch and comes back as `rules_conflicts[]` - a gap, never a
|
|
677
|
-
silent choice. The CLI cannot parse intent, so it does not pretend to: the same
|
|
678
|
-
decision `orc doc rules` made about its structural boundary, for the same reason.
|
|
679
|
-
|
|
680
|
-
**`orc rules lint` is free, deterministic, and small on purpose.** It checks 13
|
|
681
|
-
of the 65 - banned lexicon and phrases, em dash DENSITY (a dose rule, measured
|
|
682
|
-
per file, because ORC's own docs use them), emoji headings, six comment shapes,
|
|
683
|
-
artifact filenames, `outline: none`, UI buzzwords - and it prints, in every mode
|
|
684
|
-
including `--json`: `not checked here: 52 rules. They need a reader, not a
|
|
685
|
-
matcher.` A clean exit that stands in for a review nobody did is the failure that
|
|
686
|
-
line prevents. It skips the rule packs themselves (a rule that bans a word has to
|
|
687
|
-
print that word to define it) and anything marked `orc-rules-ignore`, and counts
|
|
688
|
-
both rather than staying quiet.
|
|
689
|
-
|
|
690
|
-
**Findings are advisory. There is no gate.** A style preference that fails a
|
|
691
|
-
build gets switched off within a week, and then nothing is enforced at all.
|
|
692
|
-
|
|
693
|
-
The card rides in every slice of **28 lanes** - every one that writes words or
|
|
694
|
-
code. **`/orc-doc` is excluded by design**; it has `orc doc rules`. One assembler
|
|
695
|
-
(`orc rules slice`), because a card built in twenty-eight spines is
|
|
696
|
-
twenty-eight ideas of the precedence order, and because it is the only place the
|
|
697
|
-
per-spawn token weight can be measured. Measured: **~3 600 tokens** per
|
|
698
|
-
build-lane slice, ~2 200 for a prose lane.
|
|
699
|
-
|
|
700
|
-
**`orc ui` gains a Rules panel** - the ladder, your textarea, the 65 read-only
|
|
701
|
-
rows behind a filter, the credit table, and the lint.
|
|
638
|
+
**The cause.** `orc rules slice` built the card correctly, but each place that
|
|
639
|
+
builds an executor slice named only the `house_rules` card. `/orc` Phase 3 also
|
|
640
|
+
did not load `rules.md`, and the `/orc` preflight had no `rules:` row.
|
|
702
641
|
|
|
703
|
-
|
|
642
|
+
**The fix.**
|
|
643
|
+
|
|
644
|
+
- **A new slice field, `rules_card`** - the `text` of
|
|
645
|
+
`orc rules slice --lane <lane> --json`, put in verbatim directly under
|
|
646
|
+
`house_rules` in `/orc`, `/orc-mini`, `/orc-fast`, `/orc-quick` and the
|
|
647
|
+
Extra foreign dispatch.
|
|
648
|
+
- **The executors read it** and return `rules_applied[]`, `rules_conflicts[]`
|
|
649
|
+
and `rules_overridden[]`.
|
|
650
|
+
- **The `/orc` preflight prints `rules:`** - the CLI `line`, verbatim.
|
|
651
|
+
- **Guards** - `rules_card` is a registered contract token, and a test checks
|
|
652
|
+
every dispatch site.
|
|
704
653
|
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
remittance feature" had no path that did not re-plan every area in the repo.
|
|
710
|
-
|
|
711
|
-
- **`/orc-wiki update <doc-or-topic>`** - the targeted refresh, under the name
|
|
712
|
-
people actually type. A topic resolves to a doc first.
|
|
713
|
-
- **`/orc-wiki add "<topic>"`** - A0-A7: resolve, scope, confirm, reserve, scan,
|
|
714
|
-
write, sweep, check. Nothing spawns before the one confirmation turn.
|
|
715
|
-
- **`orc wiki resolve <topic>`** - free, no scan. A MATCH must beat the runner-up
|
|
716
|
-
by half again plus one; anything closer is **AMBIGUOUS and becomes a question**,
|
|
717
|
-
because two docs a point apart is exactly where guessing costs a scan of the
|
|
718
|
-
wrong area.
|
|
719
|
-
- **`orc wiki add <slug> --covers ...`** - reserves a stub carrying
|
|
720
|
-
`status: reserved` and a body that says nothing in it is evidence. A doc that
|
|
721
|
-
lies is worse than a doc that is missing.
|
|
722
|
-
- **`orc wiki refs [--check]`** - the DERIVED-REFERENCE sweep. After one doc
|
|
723
|
-
changes, six surfaces are behind it: the registration, reserved rows, the
|
|
724
|
-
orientation page, the architecture overview, the CLAUDE.md pointer's doc COUNT,
|
|
725
|
-
and any crosslink tag anchored to a file that is gone. It **repairs only the
|
|
726
|
-
registration**, because `orc wiki sync` is free and already the single writer.
|
|
727
|
-
Everything else is reported with its command - a sweep that silently
|
|
728
|
-
regenerated prose would be spending money nobody asked it to spend.
|
|
729
|
-
|
|
730
|
-
The Knowledge panel gains a **One doc at a time** card for both halves.
|
|
654
|
+
**How to check it.** Run `orc rules slice --lane orc --json`. When
|
|
655
|
+
`.claude/orc/rules.md` has rules, `line` shows `yours N lines` and `text`
|
|
656
|
+
starts with `YOUR PROJECT'S RULES`. Run `orc update` in your project to get the
|
|
657
|
+
fixed skills.
|
|
731
658
|
|
|
732
659
|
<details>
|
|
733
|
-
<summary><strong>Earlier releases</strong> —
|
|
660
|
+
<summary><strong>Earlier releases</strong> — 115 of them, titles only. Full text in <a href="CHANGELOG.md">CHANGELOG.md</a>.</summary>
|
|
734
661
|
|
|
662
|
+
- **v1.7.0** — the rules that keep the slop out · _2026-09-13_
|
|
735
663
|
- **v1.6.0** — the rule that can finally say no · _2026-09-07_
|
|
736
664
|
- **v1.5.0** — the lane that runs the test · _2026-09-07_
|
|
737
665
|
- **v1.4.2** — the panel that stops reloading, and the fields you could not read back · _2026-09-05_
|
package/bin/verify-contracts.js
CHANGED
|
@@ -162,6 +162,32 @@ const CONTRACTS = [
|
|
|
162
162
|
"skills/orc/subskills/orc-execution/core.md",
|
|
163
163
|
],
|
|
164
164
|
},
|
|
165
|
+
{
|
|
166
|
+
name: "rules_card slice field (v1.7.1 — the anti-slop card rides every dispatch slice, not only the preflight line)",
|
|
167
|
+
token: "rules_card",
|
|
168
|
+
files: [
|
|
169
|
+
"agents/orc-executor-haiku-4-5.md",
|
|
170
|
+
"agents/orc-executor-opus-4-7-high.md",
|
|
171
|
+
"agents/orc-executor-opus-4-7-med.md",
|
|
172
|
+
"agents/orc-executor-opus-4-8-high.md",
|
|
173
|
+
"agents/orc-executor-opus-5-high.md",
|
|
174
|
+
"agents/orc-executor-opus-5-low.md",
|
|
175
|
+
"agents/orc-executor-opus-5-med.md",
|
|
176
|
+
"agents/orc-executor-sonnet-4-6-high.md",
|
|
177
|
+
"agents/orc-executor-sonnet-4-6-med.md",
|
|
178
|
+
"agents/orc-executor-sonnet-5-high.md",
|
|
179
|
+
"skills/_shared/extra-dispatch.md",
|
|
180
|
+
"skills/_shared/phases/execution.md",
|
|
181
|
+
"skills/_shared/phases/rules.md",
|
|
182
|
+
"skills/orc/SKILL.md",
|
|
183
|
+
"skills/orc/references/preflight-report.md",
|
|
184
|
+
"skills/orc/subskills/orc-execution/SKILL.md",
|
|
185
|
+
"skills/orc/subskills/orc-execution/core.md",
|
|
186
|
+
"skills/orc-fast/SKILL.md",
|
|
187
|
+
"skills/orc-mini/SKILL.md",
|
|
188
|
+
"skills/orc-quick/SKILL.md",
|
|
189
|
+
],
|
|
190
|
+
},
|
|
165
191
|
{
|
|
166
192
|
name: "validation_gate[] flow (codify -> slice -> review -> verify)",
|
|
167
193
|
token: "validation_gate",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@azure-id/orc",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "ORC — an orchestrator skill constellation for Claude Code: intake, planning, scored parallel subagents, code-pattern matching, review, verify, ship, plus a project knowledge-base wiki.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"orc": "bin/cli.js"
|
|
@@ -25,6 +25,9 @@ never spawn other agents, never work outside your task slice.
|
|
|
25
25
|
- house_rules — standing behavioral card (injected literally): surgical changes
|
|
26
26
|
only, simplicity-first, no unrequested scope, boring-solution preference,
|
|
27
27
|
never claim unobserved results, honest partial over false done
|
|
28
|
+
- rules_card — the anti-slop card (injected literally, directly under
|
|
29
|
+
house_rules): YOUR PROJECT'S RULES, then ORC RULES. A project rule beats an ORC
|
|
30
|
+
rule; house_rules beat both, but only on code and behaviour. Absent = no card
|
|
28
31
|
- log_digest — decisions from earlier waves; absorb before starting
|
|
29
32
|
- pattern — resolved code-pattern for your task's language, or null. Present =
|
|
30
33
|
{conventions[] you MUST MATCH, invariants[] that are BLOCKING, validation_gate[]
|
|
@@ -53,7 +56,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
53
56
|
is a corruption bug), and build/test output is always read whole. Canonical:
|
|
54
57
|
`.claude/skills/_shared/read-ladder.md`.
|
|
55
58
|
3. Implement the task within declared_files only. Obey every house_rules
|
|
56
|
-
line
|
|
59
|
+
line, then every rules_card rule — two rules that disagree go in
|
|
60
|
+
rules_conflicts[], never a silent choice. Follow every constraint. If
|
|
57
61
|
`pattern` is present, MATCH its conventions, satisfy every BLOCKING invariant
|
|
58
62
|
AND every enforceable validation_gate line (re-check your diff before
|
|
59
63
|
returning; advisory gate lines never require new tooling). Create/update
|
|
@@ -108,6 +112,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
108
112
|
malformed. NOT required when you never repaired anything, and a loop that hit
|
|
109
113
|
tdd_loop_max and stopped returns `none` — an unsolved failure is not a gotcha.
|
|
110
114
|
You RETURN it; the orchestrator writes the file. Never write it yourself.
|
|
115
|
+
- rules_applied[] · rules_conflicts[] · rules_overridden[] — REQUIRED when the
|
|
116
|
+
slice carried a rules_card (each may be empty; absent is malformed): the rule
|
|
117
|
+
ids you acted on, two rules that disagree, and the ORC ids a project rule
|
|
118
|
+
replaced. Omit all three when no rules_card was supplied.
|
|
111
119
|
|
|
112
120
|
Malformed returns = failure — including status=done with a runner present but
|
|
113
121
|
no evidence, or status=done with a non-empty unmet[]. needs_context cap 2 per task.
|
|
@@ -26,6 +26,9 @@ never spawn other agents, never work outside your task slice.
|
|
|
26
26
|
- house_rules — standing behavioral card (injected literally): surgical changes
|
|
27
27
|
only, simplicity-first, no unrequested scope, boring-solution preference,
|
|
28
28
|
never claim unobserved results, honest partial over false done
|
|
29
|
+
- rules_card — the anti-slop card (injected literally, directly under
|
|
30
|
+
house_rules): YOUR PROJECT'S RULES, then ORC RULES. A project rule beats an ORC
|
|
31
|
+
rule; house_rules beat both, but only on code and behaviour. Absent = no card
|
|
29
32
|
- log_digest — decisions from earlier waves; absorb before starting
|
|
30
33
|
- pattern — resolved code-pattern for your task's language, or null. Present =
|
|
31
34
|
{conventions[] you MUST MATCH, invariants[] that are BLOCKING, validation_gate[]
|
|
@@ -54,7 +57,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
54
57
|
is a corruption bug), and build/test output is always read whole. Canonical:
|
|
55
58
|
`.claude/skills/_shared/read-ladder.md`.
|
|
56
59
|
3. Implement the task within declared_files only. Obey every house_rules
|
|
57
|
-
line
|
|
60
|
+
line, then every rules_card rule — two rules that disagree go in
|
|
61
|
+
rules_conflicts[], never a silent choice. Follow every constraint. If
|
|
58
62
|
`pattern` is present, MATCH its conventions, satisfy every BLOCKING invariant
|
|
59
63
|
AND every enforceable validation_gate line (re-check your diff before
|
|
60
64
|
returning; advisory gate lines never require new tooling). Create/update
|
|
@@ -109,6 +113,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
109
113
|
malformed. NOT required when you never repaired anything, and a loop that hit
|
|
110
114
|
tdd_loop_max and stopped returns `none` — an unsolved failure is not a gotcha.
|
|
111
115
|
You RETURN it; the orchestrator writes the file. Never write it yourself.
|
|
116
|
+
- rules_applied[] · rules_conflicts[] · rules_overridden[] — REQUIRED when the
|
|
117
|
+
slice carried a rules_card (each may be empty; absent is malformed): the rule
|
|
118
|
+
ids you acted on, two rules that disagree, and the ORC ids a project rule
|
|
119
|
+
replaced. Omit all three when no rules_card was supplied.
|
|
112
120
|
|
|
113
121
|
Malformed returns = failure — including status=done with a runner present but
|
|
114
122
|
no evidence, or status=done with a non-empty unmet[]. needs_context cap 2 per task.
|
|
@@ -26,6 +26,9 @@ never spawn other agents, never work outside your task slice.
|
|
|
26
26
|
- house_rules — standing behavioral card (injected literally): surgical changes
|
|
27
27
|
only, simplicity-first, no unrequested scope, boring-solution preference,
|
|
28
28
|
never claim unobserved results, honest partial over false done
|
|
29
|
+
- rules_card — the anti-slop card (injected literally, directly under
|
|
30
|
+
house_rules): YOUR PROJECT'S RULES, then ORC RULES. A project rule beats an ORC
|
|
31
|
+
rule; house_rules beat both, but only on code and behaviour. Absent = no card
|
|
29
32
|
- log_digest — decisions from earlier waves; absorb before starting
|
|
30
33
|
- pattern — resolved code-pattern for your task's language, or null. Present =
|
|
31
34
|
{conventions[] you MUST MATCH, invariants[] that are BLOCKING, validation_gate[]
|
|
@@ -54,7 +57,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
54
57
|
is a corruption bug), and build/test output is always read whole. Canonical:
|
|
55
58
|
`.claude/skills/_shared/read-ladder.md`.
|
|
56
59
|
3. Implement the task within declared_files only. Obey every house_rules
|
|
57
|
-
line
|
|
60
|
+
line, then every rules_card rule — two rules that disagree go in
|
|
61
|
+
rules_conflicts[], never a silent choice. Follow every constraint. If
|
|
58
62
|
`pattern` is present, MATCH its conventions, satisfy every BLOCKING invariant
|
|
59
63
|
AND every enforceable validation_gate line (re-check your diff before
|
|
60
64
|
returning; advisory gate lines never require new tooling). Create/update
|
|
@@ -109,6 +113,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
109
113
|
malformed. NOT required when you never repaired anything, and a loop that hit
|
|
110
114
|
tdd_loop_max and stopped returns `none` — an unsolved failure is not a gotcha.
|
|
111
115
|
You RETURN it; the orchestrator writes the file. Never write it yourself.
|
|
116
|
+
- rules_applied[] · rules_conflicts[] · rules_overridden[] — REQUIRED when the
|
|
117
|
+
slice carried a rules_card (each may be empty; absent is malformed): the rule
|
|
118
|
+
ids you acted on, two rules that disagree, and the ORC ids a project rule
|
|
119
|
+
replaced. Omit all three when no rules_card was supplied.
|
|
112
120
|
|
|
113
121
|
Malformed returns = failure — including status=done with a runner present but
|
|
114
122
|
no evidence, or status=done with a non-empty unmet[]. needs_context cap 2 per task.
|
|
@@ -26,6 +26,9 @@ never spawn other agents, never work outside your task slice.
|
|
|
26
26
|
- house_rules — standing behavioral card (injected literally): surgical changes
|
|
27
27
|
only, simplicity-first, no unrequested scope, boring-solution preference,
|
|
28
28
|
never claim unobserved results, honest partial over false done
|
|
29
|
+
- rules_card — the anti-slop card (injected literally, directly under
|
|
30
|
+
house_rules): YOUR PROJECT'S RULES, then ORC RULES. A project rule beats an ORC
|
|
31
|
+
rule; house_rules beat both, but only on code and behaviour. Absent = no card
|
|
29
32
|
- log_digest — decisions from earlier waves; absorb before starting
|
|
30
33
|
- pattern — resolved code-pattern for your task's language, or null. Present =
|
|
31
34
|
{conventions[] you MUST MATCH, invariants[] that are BLOCKING, validation_gate[]
|
|
@@ -54,7 +57,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
54
57
|
is a corruption bug), and build/test output is always read whole. Canonical:
|
|
55
58
|
`.claude/skills/_shared/read-ladder.md`.
|
|
56
59
|
3. Implement the task within declared_files only. Obey every house_rules
|
|
57
|
-
line
|
|
60
|
+
line, then every rules_card rule — two rules that disagree go in
|
|
61
|
+
rules_conflicts[], never a silent choice. Follow every constraint. If
|
|
58
62
|
`pattern` is present, MATCH its conventions, satisfy every BLOCKING invariant
|
|
59
63
|
AND every enforceable validation_gate line (re-check your diff before
|
|
60
64
|
returning; advisory gate lines never require new tooling). Create/update
|
|
@@ -109,6 +113,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
109
113
|
malformed. NOT required when you never repaired anything, and a loop that hit
|
|
110
114
|
tdd_loop_max and stopped returns `none` — an unsolved failure is not a gotcha.
|
|
111
115
|
You RETURN it; the orchestrator writes the file. Never write it yourself.
|
|
116
|
+
- rules_applied[] · rules_conflicts[] · rules_overridden[] — REQUIRED when the
|
|
117
|
+
slice carried a rules_card (each may be empty; absent is malformed): the rule
|
|
118
|
+
ids you acted on, two rules that disagree, and the ORC ids a project rule
|
|
119
|
+
replaced. Omit all three when no rules_card was supplied.
|
|
112
120
|
|
|
113
121
|
Malformed returns = failure — including status=done with a runner present but
|
|
114
122
|
no evidence, or status=done with a non-empty unmet[]. needs_context cap 2 per task.
|
|
@@ -26,6 +26,9 @@ never spawn other agents, never work outside your task slice.
|
|
|
26
26
|
- house_rules — standing behavioral card (injected literally): surgical changes
|
|
27
27
|
only, simplicity-first, no unrequested scope, boring-solution preference,
|
|
28
28
|
never claim unobserved results, honest partial over false done
|
|
29
|
+
- rules_card — the anti-slop card (injected literally, directly under
|
|
30
|
+
house_rules): YOUR PROJECT'S RULES, then ORC RULES. A project rule beats an ORC
|
|
31
|
+
rule; house_rules beat both, but only on code and behaviour. Absent = no card
|
|
29
32
|
- log_digest — decisions from earlier waves; absorb before starting
|
|
30
33
|
- pattern — resolved code-pattern for your task's language, or null. Present =
|
|
31
34
|
{conventions[] you MUST MATCH, invariants[] that are BLOCKING, validation_gate[]
|
|
@@ -54,7 +57,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
54
57
|
is a corruption bug), and build/test output is always read whole. Canonical:
|
|
55
58
|
`.claude/skills/_shared/read-ladder.md`.
|
|
56
59
|
3. Implement the task within declared_files only. Obey every house_rules
|
|
57
|
-
line
|
|
60
|
+
line, then every rules_card rule — two rules that disagree go in
|
|
61
|
+
rules_conflicts[], never a silent choice. Follow every constraint. If
|
|
58
62
|
`pattern` is present, MATCH its conventions, satisfy every BLOCKING invariant
|
|
59
63
|
AND every enforceable validation_gate line (re-check your diff before
|
|
60
64
|
returning; advisory gate lines never require new tooling). Create/update
|
|
@@ -109,6 +113,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
109
113
|
malformed. NOT required when you never repaired anything, and a loop that hit
|
|
110
114
|
tdd_loop_max and stopped returns `none` — an unsolved failure is not a gotcha.
|
|
111
115
|
You RETURN it; the orchestrator writes the file. Never write it yourself.
|
|
116
|
+
- rules_applied[] · rules_conflicts[] · rules_overridden[] — REQUIRED when the
|
|
117
|
+
slice carried a rules_card (each may be empty; absent is malformed): the rule
|
|
118
|
+
ids you acted on, two rules that disagree, and the ORC ids a project rule
|
|
119
|
+
replaced. Omit all three when no rules_card was supplied.
|
|
112
120
|
|
|
113
121
|
Malformed returns = failure — including status=done with a runner present but
|
|
114
122
|
no evidence, or status=done with a non-empty unmet[]. needs_context cap 2 per task.
|
|
@@ -26,6 +26,9 @@ never spawn other agents, never work outside your task slice.
|
|
|
26
26
|
- house_rules — standing behavioral card (injected literally): surgical changes
|
|
27
27
|
only, simplicity-first, no unrequested scope, boring-solution preference,
|
|
28
28
|
never claim unobserved results, honest partial over false done
|
|
29
|
+
- rules_card — the anti-slop card (injected literally, directly under
|
|
30
|
+
house_rules): YOUR PROJECT'S RULES, then ORC RULES. A project rule beats an ORC
|
|
31
|
+
rule; house_rules beat both, but only on code and behaviour. Absent = no card
|
|
29
32
|
- log_digest — decisions from earlier waves; absorb before starting
|
|
30
33
|
- pattern — resolved code-pattern for your task's language, or null. Present =
|
|
31
34
|
{conventions[] you MUST MATCH, invariants[] that are BLOCKING, validation_gate[]
|
|
@@ -54,7 +57,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
54
57
|
is a corruption bug), and build/test output is always read whole. Canonical:
|
|
55
58
|
`.claude/skills/_shared/read-ladder.md`.
|
|
56
59
|
3. Implement the task within declared_files only. Obey every house_rules
|
|
57
|
-
line
|
|
60
|
+
line, then every rules_card rule — two rules that disagree go in
|
|
61
|
+
rules_conflicts[], never a silent choice. Follow every constraint. If
|
|
58
62
|
`pattern` is present, MATCH its conventions, satisfy every BLOCKING invariant
|
|
59
63
|
AND every enforceable validation_gate line (re-check your diff before
|
|
60
64
|
returning; advisory gate lines never require new tooling). Create/update
|
|
@@ -109,6 +113,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
109
113
|
malformed. NOT required when you never repaired anything, and a loop that hit
|
|
110
114
|
tdd_loop_max and stopped returns `none` — an unsolved failure is not a gotcha.
|
|
111
115
|
You RETURN it; the orchestrator writes the file. Never write it yourself.
|
|
116
|
+
- rules_applied[] · rules_conflicts[] · rules_overridden[] — REQUIRED when the
|
|
117
|
+
slice carried a rules_card (each may be empty; absent is malformed): the rule
|
|
118
|
+
ids you acted on, two rules that disagree, and the ORC ids a project rule
|
|
119
|
+
replaced. Omit all three when no rules_card was supplied.
|
|
112
120
|
|
|
113
121
|
Malformed returns = failure — including status=done with a runner present but
|
|
114
122
|
no evidence, or status=done with a non-empty unmet[]. needs_context cap 2 per task.
|
|
@@ -26,6 +26,9 @@ never spawn other agents, never work outside your task slice.
|
|
|
26
26
|
- house_rules — standing behavioral card (injected literally): surgical changes
|
|
27
27
|
only, simplicity-first, no unrequested scope, boring-solution preference,
|
|
28
28
|
never claim unobserved results, honest partial over false done
|
|
29
|
+
- rules_card — the anti-slop card (injected literally, directly under
|
|
30
|
+
house_rules): YOUR PROJECT'S RULES, then ORC RULES. A project rule beats an ORC
|
|
31
|
+
rule; house_rules beat both, but only on code and behaviour. Absent = no card
|
|
29
32
|
- log_digest — decisions from earlier waves; absorb before starting
|
|
30
33
|
- pattern — resolved code-pattern for your task's language, or null. Present =
|
|
31
34
|
{conventions[] you MUST MATCH, invariants[] that are BLOCKING, validation_gate[]
|
|
@@ -54,7 +57,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
54
57
|
is a corruption bug), and build/test output is always read whole. Canonical:
|
|
55
58
|
`.claude/skills/_shared/read-ladder.md`.
|
|
56
59
|
3. Implement the task within declared_files only. Obey every house_rules
|
|
57
|
-
line
|
|
60
|
+
line, then every rules_card rule — two rules that disagree go in
|
|
61
|
+
rules_conflicts[], never a silent choice. Follow every constraint. If
|
|
58
62
|
`pattern` is present, MATCH its conventions, satisfy every BLOCKING invariant
|
|
59
63
|
AND every enforceable validation_gate line (re-check your diff before
|
|
60
64
|
returning; advisory gate lines never require new tooling). Create/update
|
|
@@ -109,6 +113,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
109
113
|
malformed. NOT required when you never repaired anything, and a loop that hit
|
|
110
114
|
tdd_loop_max and stopped returns `none` — an unsolved failure is not a gotcha.
|
|
111
115
|
You RETURN it; the orchestrator writes the file. Never write it yourself.
|
|
116
|
+
- rules_applied[] · rules_conflicts[] · rules_overridden[] — REQUIRED when the
|
|
117
|
+
slice carried a rules_card (each may be empty; absent is malformed): the rule
|
|
118
|
+
ids you acted on, two rules that disagree, and the ORC ids a project rule
|
|
119
|
+
replaced. Omit all three when no rules_card was supplied.
|
|
112
120
|
|
|
113
121
|
Malformed returns = failure — including status=done with a runner present but
|
|
114
122
|
no evidence, or status=done with a non-empty unmet[]. needs_context cap 2 per task.
|
|
@@ -26,6 +26,9 @@ never spawn other agents, never work outside your task slice.
|
|
|
26
26
|
- house_rules — standing behavioral card (injected literally): surgical changes
|
|
27
27
|
only, simplicity-first, no unrequested scope, boring-solution preference,
|
|
28
28
|
never claim unobserved results, honest partial over false done
|
|
29
|
+
- rules_card — the anti-slop card (injected literally, directly under
|
|
30
|
+
house_rules): YOUR PROJECT'S RULES, then ORC RULES. A project rule beats an ORC
|
|
31
|
+
rule; house_rules beat both, but only on code and behaviour. Absent = no card
|
|
29
32
|
- log_digest — decisions from earlier waves; absorb before starting
|
|
30
33
|
- pattern — resolved code-pattern for your task's language, or null. Present =
|
|
31
34
|
{conventions[] you MUST MATCH, invariants[] that are BLOCKING, validation_gate[]
|
|
@@ -54,7 +57,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
54
57
|
is a corruption bug), and build/test output is always read whole. Canonical:
|
|
55
58
|
`.claude/skills/_shared/read-ladder.md`.
|
|
56
59
|
3. Implement the task within declared_files only. Obey every house_rules
|
|
57
|
-
line
|
|
60
|
+
line, then every rules_card rule — two rules that disagree go in
|
|
61
|
+
rules_conflicts[], never a silent choice. Follow every constraint. If
|
|
58
62
|
`pattern` is present, MATCH its conventions, satisfy every BLOCKING invariant
|
|
59
63
|
AND every enforceable validation_gate line (re-check your diff before
|
|
60
64
|
returning; advisory gate lines never require new tooling). Create/update
|
|
@@ -109,6 +113,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
109
113
|
malformed. NOT required when you never repaired anything, and a loop that hit
|
|
110
114
|
tdd_loop_max and stopped returns `none` — an unsolved failure is not a gotcha.
|
|
111
115
|
You RETURN it; the orchestrator writes the file. Never write it yourself.
|
|
116
|
+
- rules_applied[] · rules_conflicts[] · rules_overridden[] — REQUIRED when the
|
|
117
|
+
slice carried a rules_card (each may be empty; absent is malformed): the rule
|
|
118
|
+
ids you acted on, two rules that disagree, and the ORC ids a project rule
|
|
119
|
+
replaced. Omit all three when no rules_card was supplied.
|
|
112
120
|
|
|
113
121
|
Malformed returns = failure — including status=done with a runner present but
|
|
114
122
|
no evidence, or status=done with a non-empty unmet[]. needs_context cap 2 per task.
|
|
@@ -26,6 +26,9 @@ never spawn other agents, never work outside your task slice.
|
|
|
26
26
|
- house_rules — standing behavioral card (injected literally): surgical changes
|
|
27
27
|
only, simplicity-first, no unrequested scope, boring-solution preference,
|
|
28
28
|
never claim unobserved results, honest partial over false done
|
|
29
|
+
- rules_card — the anti-slop card (injected literally, directly under
|
|
30
|
+
house_rules): YOUR PROJECT'S RULES, then ORC RULES. A project rule beats an ORC
|
|
31
|
+
rule; house_rules beat both, but only on code and behaviour. Absent = no card
|
|
29
32
|
- log_digest — decisions from earlier waves; absorb before starting
|
|
30
33
|
- pattern — resolved code-pattern for your task's language, or null. Present =
|
|
31
34
|
{conventions[] you MUST MATCH, invariants[] that are BLOCKING, validation_gate[]
|
|
@@ -54,7 +57,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
54
57
|
is a corruption bug), and build/test output is always read whole. Canonical:
|
|
55
58
|
`.claude/skills/_shared/read-ladder.md`.
|
|
56
59
|
3. Implement the task within declared_files only. Obey every house_rules
|
|
57
|
-
line
|
|
60
|
+
line, then every rules_card rule — two rules that disagree go in
|
|
61
|
+
rules_conflicts[], never a silent choice. Follow every constraint. If
|
|
58
62
|
`pattern` is present, MATCH its conventions, satisfy every BLOCKING invariant
|
|
59
63
|
AND every enforceable validation_gate line (re-check your diff before
|
|
60
64
|
returning; advisory gate lines never require new tooling). Create/update
|
|
@@ -109,6 +113,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
109
113
|
malformed. NOT required when you never repaired anything, and a loop that hit
|
|
110
114
|
tdd_loop_max and stopped returns `none` — an unsolved failure is not a gotcha.
|
|
111
115
|
You RETURN it; the orchestrator writes the file. Never write it yourself.
|
|
116
|
+
- rules_applied[] · rules_conflicts[] · rules_overridden[] — REQUIRED when the
|
|
117
|
+
slice carried a rules_card (each may be empty; absent is malformed): the rule
|
|
118
|
+
ids you acted on, two rules that disagree, and the ORC ids a project rule
|
|
119
|
+
replaced. Omit all three when no rules_card was supplied.
|
|
112
120
|
|
|
113
121
|
Malformed returns = failure — including status=done with a runner present but
|
|
114
122
|
no evidence, or status=done with a non-empty unmet[]. needs_context cap 2 per task.
|
|
@@ -26,6 +26,9 @@ never spawn other agents, never work outside your task slice.
|
|
|
26
26
|
- house_rules — standing behavioral card (injected literally): surgical changes
|
|
27
27
|
only, simplicity-first, no unrequested scope, boring-solution preference,
|
|
28
28
|
never claim unobserved results, honest partial over false done
|
|
29
|
+
- rules_card — the anti-slop card (injected literally, directly under
|
|
30
|
+
house_rules): YOUR PROJECT'S RULES, then ORC RULES. A project rule beats an ORC
|
|
31
|
+
rule; house_rules beat both, but only on code and behaviour. Absent = no card
|
|
29
32
|
- log_digest — decisions from earlier waves; absorb before starting
|
|
30
33
|
- pattern — resolved code-pattern for your task's language, or null. Present =
|
|
31
34
|
{conventions[] you MUST MATCH, invariants[] that are BLOCKING, validation_gate[]
|
|
@@ -54,7 +57,8 @@ never spawn other agents, never work outside your task slice.
|
|
|
54
57
|
is a corruption bug), and build/test output is always read whole. Canonical:
|
|
55
58
|
`.claude/skills/_shared/read-ladder.md`.
|
|
56
59
|
3. Implement the task within declared_files only. Obey every house_rules
|
|
57
|
-
line
|
|
60
|
+
line, then every rules_card rule — two rules that disagree go in
|
|
61
|
+
rules_conflicts[], never a silent choice. Follow every constraint. If
|
|
58
62
|
`pattern` is present, MATCH its conventions, satisfy every BLOCKING invariant
|
|
59
63
|
AND every enforceable validation_gate line (re-check your diff before
|
|
60
64
|
returning; advisory gate lines never require new tooling). Create/update
|
|
@@ -109,6 +113,10 @@ never spawn other agents, never work outside your task slice.
|
|
|
109
113
|
malformed. NOT required when you never repaired anything, and a loop that hit
|
|
110
114
|
tdd_loop_max and stopped returns `none` — an unsolved failure is not a gotcha.
|
|
111
115
|
You RETURN it; the orchestrator writes the file. Never write it yourself.
|
|
116
|
+
- rules_applied[] · rules_conflicts[] · rules_overridden[] — REQUIRED when the
|
|
117
|
+
slice carried a rules_card (each may be empty; absent is malformed): the rule
|
|
118
|
+
ids you acted on, two rules that disagree, and the ORC ids a project rule
|
|
119
|
+
replaced. Omit all three when no rules_card was supplied.
|
|
112
120
|
|
|
113
121
|
Malformed returns = failure — including status=done with a runner present but
|
|
114
122
|
no evidence, or status=done with a non-empty unmet[]. needs_context cap 2 per task.
|
|
@@ -524,7 +524,7 @@ orc extra dispatch --task <slice.json> --json
|
|
|
524
524
|
|
|
525
525
|
**The slice content is IDENTICAL to what a Claude executor would receive** — the
|
|
526
526
|
task's `prompt`, `acceptance[]`, `tdd_spec` tests, the `house_rules` card, the
|
|
527
|
-
resolved pattern, the scope-matched gotchas, `declared_files`, `grounding[]`.
|
|
527
|
+
`rules_card`, the resolved pattern, the scope-matched gotchas, `declared_files`, `grounding[]`.
|
|
528
528
|
Only the transport differs. That is the property that keeps every gate
|
|
529
529
|
downstream engine-blind, and it is why a foreign task needs no second slice
|
|
530
530
|
builder.
|
|
@@ -42,7 +42,9 @@ the codifier); hold resolved patterns in run state.
|
|
|
42
42
|
`TDD-RED`/`TDD-GREEN` per iteration; cap hit → STOP SEQUENCE + honest red
|
|
43
43
|
report) and the `house_rules` card lines
|
|
44
44
|
(`house-rules.md`, injected LITERALLY — read once per run, never
|
|
45
|
-
a pointer)
|
|
45
|
+
a pointer) with the `rules_card` directly under it — the `text` of
|
|
46
|
+
`orc rules slice --lane <lane> --json`, VERBATIM, `--pack ui` added for a
|
|
47
|
+
front-end task (`rules.md`; the preflight `line` alone is NOT the card); FE/BE and `db:postgres` tasks get the resolved `pattern`
|
|
46
48
|
injected literally (pattern-gate.md), and — with `gotchas: on` — the
|
|
47
49
|
SCOPE-MATCHING gotchas beside it (glob vs this task's `declared_files`, cap 3,
|
|
48
50
|
highest `hits` first; zero matches = NO block, never an empty one — NEVER
|
|
@@ -58,6 +58,11 @@ Nothing goes above 1. Nothing goes between 2 and 3. The assembler emits 2 and 3
|
|
|
58
58
|
as one block in that order, so the lane's job is to place that block directly
|
|
59
59
|
under the house card and before the task.
|
|
60
60
|
|
|
61
|
+
**The slice field is `rules_card`, and it is the `text` field — not the `line`.**
|
|
62
|
+
Run the command at DISPATCH, not only at preflight. The `line` tells the user
|
|
63
|
+
which rules are in force; the `text` is what the agent reads. A lane that prints
|
|
64
|
+
the line and injects only the house card has reported rules that no agent got.
|
|
65
|
+
|
|
61
66
|
## Precedence, and the one sentence that gets it wrong
|
|
62
67
|
|
|
63
68
|
```
|
|
@@ -198,7 +198,7 @@ them; they are never dispatched as subagents).
|
|
|
198
198
|
- Phase 1 wiki grounding → `../_shared/phases/wiki-consult.md` + `references/preflight-report.md`
|
|
199
199
|
- Phase 2 → `references/effort-and-mode.md`; tagging → `references/pattern-gate.md`
|
|
200
200
|
- Phase 3 → `../_shared/phases/wave-grouping.md` + `log-protocol.md` + `../_shared/phases/house-rules.md`
|
|
201
|
-
+ `pattern-gate.md` (resolve gate); workers → `subskills/orc-execution/`;
|
|
201
|
+
+ `../_shared/phases/rules.md` (the `rules_card` rides every slice) + `pattern-gate.md` (resolve gate); workers → `subskills/orc-execution/`;
|
|
202
202
|
stops → `subskills/orc-checkpoint/SKILL.md` + `../_shared/phases/stop-resume.md`
|
|
203
203
|
- Phase 5–6 → `subskills/orc-review-verify/`; FE tasks →
|
|
204
204
|
`../orc-pattern/references/fe-a11y.md` + `fe-perf.md` (as `fe_rules[]`)
|
|
@@ -21,6 +21,7 @@ pattern: js cached · ts cached
|
|
|
21
21
|
gotchas: 12 known · 3 match this change's files
|
|
22
22
|
pact: 11 holding · 2 drifted · 3 uncheckable
|
|
23
23
|
bound: 9 execute · 2 escalate · 1 refuse (2 stale)
|
|
24
|
+
rules: ORC 65 (W 23 · C 22 · D 10 · U 10) · yours 9 lines (P0 4 · P1 2 · P2 3) · 1 override
|
|
24
25
|
after: src/payments — 2 shipped files rewritten within 30 days of run store-credit
|
|
25
26
|
crosslink: 2 boundaries (payments-api) — advisory
|
|
26
27
|
extra: ON — 4 of 9 tasks foreign · deepseek/deepseek-v4-flash via api [0,30)
|
|
@@ -60,6 +61,11 @@ waves: 3 planned — will pause after wave 2 (batch_pause_every=2)
|
|
|
60
61
|
ACTIVE mode is named whenever a verdict is later printed (`boundary_gate: off`
|
|
61
62
|
omits the line). Uncarded areas are `unknown`, never REFUSE. Canonical:
|
|
62
63
|
`../../orc-boundary/references/gate.md`.
|
|
64
|
+
- **rules:** ALWAYS printed — the `line` field from `orc rules slice --lane orc
|
|
65
|
+
--json`, VERBATIM, never recounted. `yours none` is an answer (the project has
|
|
66
|
+
no `.claude/orc/rules.md` rules yet), not a failure. Name each override under
|
|
67
|
+
it. This line is the REPORT; the card itself is the `text` field, injected as
|
|
68
|
+
`rules_card` into every slice (`../../_shared/phases/rules.md`).
|
|
63
69
|
- **after:** printed **ONLY when the area this run is about to touch has a recent
|
|
64
70
|
churn signal** (`orc aftermath status --json`, exit 1 or 2, intersected with the
|
|
65
71
|
plan's `declared_files`). A clean run prints nothing at all — the whole value of
|
|
@@ -26,7 +26,8 @@ contract); the summary below orients — on any conflict, `core.md` wins.
|
|
|
26
26
|
2. Implement EXACTLY the task in the slice, touching only `declared_files[]`,
|
|
27
27
|
honoring every `constraints[]` hard rule AND the standing `house_rules` card
|
|
28
28
|
(surgical changes, simplicity-first, no unrequested scope, never claim
|
|
29
|
-
unobserved results, honest partial over false done)
|
|
29
|
+
unobserved results, honest partial over false done), then the `rules_card`
|
|
30
|
+
under it (project rules beat ORC rules; return the three `rules_*` fields); create/update
|
|
30
31
|
tests for what you build.
|
|
31
32
|
3. Run the proof: build/test for your changes, capturing `evidence`
|
|
32
33
|
{command, exit_code, tail} VERBATIM (no runner → `no_runner_detected: true`);
|
|
@@ -59,6 +59,13 @@ subagent; the orchestrator never runs this itself.
|
|
|
59
59
|
- house_rules — the standing behavioral card (injected literally,
|
|
60
60
|
never a pointer): surgical changes, simplicity-first,
|
|
61
61
|
no unrequested scope, boring-solution preference
|
|
62
|
+
- rules_card — the anti-slop card from `orc rules slice`, injected
|
|
63
|
+
literally directly under `house_rules`: the project's
|
|
64
|
+
rules, then ORC's. A project rule beats an ORC rule;
|
|
65
|
+
`house_rules` beat both on code and behaviour only.
|
|
66
|
+
Carried → return `rules_applied[]`,
|
|
67
|
+
`rules_conflicts[]`, `rules_overridden[]`
|
|
68
|
+
(`../../../_shared/return-validation.md` §5c)
|
|
62
69
|
- log_digest — compacted decisions from prior waves; absorb before working
|
|
63
70
|
- worktree_path — null unless worktrees mode
|
|
64
71
|
- model, effort — informational (already applied by the caller)
|
|
@@ -74,7 +81,8 @@ subagent; the orchestrator never runs this itself.
|
|
|
74
81
|
a FULL read before you edit it (an `old_string` rebuilt from an outline is a
|
|
75
82
|
corruption bug), and build/test output is always read whole.
|
|
76
83
|
3. Perform the task within `worktree_path` (or the current tree if null).
|
|
77
|
-
Obey every `house_rules` line
|
|
84
|
+
Obey every `house_rules` line, then every `rules_card` rule (two rules that
|
|
85
|
+
disagree go in `rules_conflicts[]`, never a silent choice). Follow every constraint. If `pattern` is present, MATCH its conventions,
|
|
78
86
|
satisfy every BLOCKING invariant, and satisfy every enforceable
|
|
79
87
|
`validation_gate[]` line (re-read your diff to confirm before returning;
|
|
80
88
|
advisory gate lines are informational — never add tooling to meet one);
|
|
@@ -121,8 +121,8 @@ pinned in the agent file). **Under `opus5_only` it is `orc-executor-opus-5-low`*
|
|
|
121
121
|
- **the read ladder** (`../_shared/read-ladder.md`): read only as far up as the
|
|
122
122
|
question needs — a file the task will EDIT is read in full first. Precomputed
|
|
123
123
|
knowledge REPLACING exploration is this lane; a directory sweep is not.
|
|
124
|
-
- the standing `house_rules` card (`../_shared/phases/house-rules.md`,
|
|
125
|
-
|
|
124
|
+
- the standing `house_rules` card (`../_shared/phases/house-rules.md`, literal,
|
|
125
|
+
same as full/mini) + the `rules_card` under it (`orc rules slice` → `text`, verbatim)
|
|
126
126
|
- constraints from the intent spec
|
|
127
127
|
- **terse-return rule:** standard contract fields, NO narrative prose — files
|
|
128
128
|
changed, one-line diff summary, smoke-relevant notes only.
|
|
@@ -52,9 +52,9 @@ Phase 0 intake (Q1–Q4, soft sign-off) + run folder + intent-spec
|
|
|
52
52
|
Phase 1 planning (dispatch orc-planner-mini; analyst first only on real docs)
|
|
53
53
|
→ one-line complexity read (mini-ok? or recommend switch-to-full)
|
|
54
54
|
Phase 3 dispatch ONE executor (orc-executor-sonnet-5-high) — slice carries
|
|
55
|
-
the standing `house_rules` card (../_shared/phases/house-rules.md,
|
|
56
|
-
|
|
57
|
-
task (cache HIT only) — collect + validate return
|
|
55
|
+
the standing `house_rules` card (../_shared/phases/house-rules.md, literal)
|
|
56
|
+
+ the `rules_card` under it (`orc rules slice` → `text`, verbatim) + the
|
|
57
|
+
cached `postgres` pattern on a data-access task (cache HIT only) — collect + validate return
|
|
58
58
|
Phase M SMOKE GATE — run build+test → GREEN proceed · RED block ship + surface
|
|
59
59
|
Phase X MOCK EXAMPLE (config mock_example) — offer/build after a GREEN gate
|
|
60
60
|
Phase T TEST-AUTHORING ASK (opt-in) — offer to write test cases (never run them)
|
|
@@ -202,7 +202,8 @@ Rules:
|
|
|
202
202
|
|
|
203
203
|
Put in the slice: the change sketch, the Q2 answers, 2–3 acceptance bullets,
|
|
204
204
|
the wiki **paths**, the cached pattern (whole text), the `house_rules` card
|
|
205
|
-
(`../_shared/phases/house-rules.md`, whole text),
|
|
205
|
+
(`../_shared/phases/house-rules.md`, whole text), the `rules_card` under it
|
|
206
|
+
(`orc rules slice --lane orc-quick --json` → `text`, whole text), PR comments with their
|
|
206
207
|
`file:line`, and a short-return rule (fields only, no long prose).
|
|
207
208
|
|
|
208
209
|
For an **ad-hoc** dispatch, also tell the agent to report its own
|