@azure-id/orc 1.6.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 +152 -0
- package/README-id.md +206 -125
- package/README.md +202 -74
- package/bin/cli.js +1595 -2
- package/bin/mockrun-catalog.js +272 -267
- package/bin/verify-contracts.js +4553 -4509
- package/bin/verify-package.js +6 -0
- package/bin/webui/api.js +26 -0
- package/bin/webui/app.html +10 -0
- package/bin/webui/css/panels/knowledge.css +30 -0
- package/bin/webui/css/panels/rules.css +145 -0
- package/bin/webui/fixtures/index.js +27 -0
- package/bin/webui/fixtures/rules.js +1002 -0
- package/bin/webui/fixtures/wiki-one.js +198 -0
- package/bin/webui/i18n/en/knowledge.json +127 -117
- package/bin/webui/i18n/en/nav.json +1 -0
- package/bin/webui/i18n/en/rules.json +55 -0
- package/bin/webui/i18n/id/knowledge.json +127 -117
- package/bin/webui/i18n/id/nav.json +1 -0
- package/bin/webui/i18n/id/rules.json +55 -0
- package/bin/webui/js/01-i18n.js +1 -0
- package/bin/webui/js/panels/knowledge.js +117 -1
- package/bin/webui/js/panels/rules.js +351 -0
- package/mock-run/INDEX.md +107 -106
- package/mock-run/orc-rules.md +254 -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/commands/orc-rules.md +66 -0
- package/templates/commands/orc-wiki.md +23 -1
- package/templates/skills/_shared/README.md +61 -54
- package/templates/skills/_shared/extra-dispatch.md +1 -1
- package/templates/skills/_shared/phases/README.md +1 -0
- package/templates/skills/_shared/phases/execution.md +3 -1
- package/templates/skills/_shared/phases/preflight.md +20 -0
- package/templates/skills/_shared/phases/rules.md +159 -0
- package/templates/skills/_shared/return-validation.md +28 -0
- package/templates/skills/_shared/rules/CREDITS.md +141 -0
- package/templates/skills/_shared/rules/INDEX.md +107 -0
- package/templates/skills/_shared/rules/code.md +229 -0
- package/templates/skills/_shared/rules/delivery.md +114 -0
- package/templates/skills/_shared/rules/ui.md +139 -0
- package/templates/skills/_shared/rules/writing.md +223 -0
- package/templates/skills/context-combiner/SKILL.md +9 -1
- package/templates/skills/orc/SKILL.md +8 -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-aftermath/SKILL.md +7 -0
- package/templates/skills/orc-analyze/SKILL.md +7 -0
- package/templates/skills/orc-analyze-mini/SKILL.md +9 -1
- package/templates/skills/orc-boundary/SKILL.md +7 -0
- package/templates/skills/orc-brainstorm/SKILL.md +7 -0
- package/templates/skills/orc-budget/SKILL.md +7 -0
- package/templates/skills/orc-challenge/SKILL.md +7 -0
- package/templates/skills/orc-claude/SKILL.md +7 -0
- package/templates/skills/orc-diy/SKILL.md +7 -0
- package/templates/skills/orc-explain/SKILL.md +7 -0
- package/templates/skills/orc-export/SKILL.md +7 -0
- package/templates/skills/orc-fast/SKILL.md +9 -2
- package/templates/skills/orc-grill/SKILL.md +7 -0
- package/templates/skills/orc-handoff/SKILL.md +9 -1
- package/templates/skills/orc-learn/SKILL.md +7 -0
- package/templates/skills/orc-mini/SKILL.md +10 -3
- package/templates/skills/orc-pact/SKILL.md +7 -0
- package/templates/skills/orc-poly/SKILL.md +7 -0
- package/templates/skills/orc-pr-driver/SKILL.md +9 -1
- package/templates/skills/orc-pr-setup/SKILL.md +9 -1
- package/templates/skills/orc-quick/SKILL.md +9 -1
- package/templates/skills/orc-retro/SKILL.md +7 -0
- package/templates/skills/orc-route/SKILL.md +7 -0
- package/templates/skills/orc-test/SKILL.md +7 -0
- package/templates/skills/orc-verify/SKILL.md +7 -0
- package/templates/skills/orc-wiki/SKILL.md +15 -0
- package/templates/skills/orc-wiki/references/partial-refresh.md +68 -0
- package/templates/skills/orc-wiki/references/phases/phase-0.md +15 -1
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
<!-- orc-rules:pack id=writing prefix=OSW layer=writing -->
|
|
2
|
+
|
|
3
|
+
# ORC RULES · Writing (`OSW`)
|
|
4
|
+
|
|
5
|
+
> **READ-ONLY.** This file ships with ORC and changes only with `orc update`.
|
|
6
|
+
> Your own rules go in `.claude/orc/rules.md` (`orc rules add --priority P0
|
|
7
|
+
> --text "…"`), and **yours win** wherever the two disagree.
|
|
8
|
+
|
|
9
|
+
**Applies to** every word an agent writes: wiki docs, analysis reports, plans,
|
|
10
|
+
requirement specs, commit bodies, PR descriptions, and what it says in chat.
|
|
11
|
+
|
|
12
|
+
**Source.** Peter G. Yang — [`petergyang/no-ai-slop`](https://github.com/petergyang/no-ai-slop) (MIT) ·
|
|
13
|
+
Miqdad Badjuber — [`miqdadbadjuber/anti-slop`](https://github.com/miqdadbadjuber/anti-slop), the `antislop-copywriting` skill (MIT) ·
|
|
14
|
+
Matty Cartwright — [The Anti-Slop Writing Rules](https://mattycartwright.com/blog/the-anti-slop-writing-rules).
|
|
15
|
+
Full attribution in `CREDITS.md`.
|
|
16
|
+
|
|
17
|
+
**Tiers.** `HARD` absolute · `PURPOSE` allowed with a written one-line reason ·
|
|
18
|
+
`LOCK` a consistency requirement, reported but never blocking.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
### OSW-01 · HARD · Lead with the point
|
|
23
|
+
|
|
24
|
+
No throat-clearing opener. Cut "Here's the thing", "Here's what I mean", "Let me
|
|
25
|
+
be clear", "I'll be honest", "The uncomfortable truth is". State the point.
|
|
26
|
+
|
|
27
|
+
Keep a personal aside, a story or an admission when it creates context or
|
|
28
|
+
tension. The ban is on the empty run-up, not on character.
|
|
29
|
+
|
|
30
|
+
### OSW-02 · HARD · No binary contrast
|
|
31
|
+
|
|
32
|
+
Cut "It's not X, it's Y", "The question isn't X, it's Y", "It's not just X but
|
|
33
|
+
Y", and negative listing ("Not a X. Not a Y. A Z."). State Y directly.
|
|
34
|
+
|
|
35
|
+
"The question isn't the model. It's the eval." becomes "The eval matters more
|
|
36
|
+
than the model."
|
|
37
|
+
|
|
38
|
+
### OSW-03 · HARD · No faux-insight setup
|
|
39
|
+
|
|
40
|
+
Cut "What nobody tells you", "the part everyone misses", "what most people get
|
|
41
|
+
wrong", "this is the part most people skip". The setup flatters the writer and
|
|
42
|
+
carries no information. Make the claim stand on its own.
|
|
43
|
+
|
|
44
|
+
### OSW-04 · LOCK · No colon reveal
|
|
45
|
+
|
|
46
|
+
A noun phrase, a colon, then a dramatic lowercase reveal is a generated shape:
|
|
47
|
+
"The detail that makes it work: a separate agent grades it." Rewrite as a plain
|
|
48
|
+
sentence. Colons are for lists, labels and quotes.
|
|
49
|
+
|
|
50
|
+
### OSW-05 · HARD · No fake-profound kicker, no summary recap
|
|
51
|
+
|
|
52
|
+
Cut the final "deep" line that turns the point into an aphorism or a mic drop.
|
|
53
|
+
Do not rewrite it into a better metaphor. Delete it.
|
|
54
|
+
|
|
55
|
+
Cut "In conclusion", "Ultimately", "Overall" and the closing paragraph that
|
|
56
|
+
restates the piece. End on the last concrete point, the takeaway, or the next
|
|
57
|
+
action.
|
|
58
|
+
|
|
59
|
+
### OSW-06 · HARD · No importance puffery
|
|
60
|
+
|
|
61
|
+
Cut "marks a pivotal moment", "underscores its significance", "plays a vital
|
|
62
|
+
role", "stands as a testament", "solidifies its position". State the fact and
|
|
63
|
+
let the reader judge whether it matters.
|
|
64
|
+
|
|
65
|
+
"The launch marks a pivotal moment for the company" becomes "The launch is the
|
|
66
|
+
company's first paid product."
|
|
67
|
+
|
|
68
|
+
### OSW-07 · HARD · No `-ing` pseudo-analysis
|
|
69
|
+
|
|
70
|
+
Cut trailing clauses that pretend to explain meaning: "highlighting",
|
|
71
|
+
"underscoring", "reflecting", "showcasing", "demonstrating". Replace with the
|
|
72
|
+
actual consequence.
|
|
73
|
+
|
|
74
|
+
"The launch adds file search, highlighting the team's commitment to workflows"
|
|
75
|
+
becomes "The launch adds file search, so users find old drafts without leaving
|
|
76
|
+
the editor."
|
|
77
|
+
|
|
78
|
+
### OSW-08 · HARD · No weasel attribution
|
|
79
|
+
|
|
80
|
+
Cut "experts agree", "studies show", "industry reports suggest", "many argue",
|
|
81
|
+
"widely regarded as". Name the source, or cut the claim. If there is no source,
|
|
82
|
+
ask. Never invent one.
|
|
83
|
+
|
|
84
|
+
### OSW-09 · LOCK · No synonym cycling
|
|
85
|
+
|
|
86
|
+
If the clear word is right, repeat it. Do not rotate terms for style. "The agent
|
|
87
|
+
reviews the draft. The assistant scores the piece. The tool suggests fixes"
|
|
88
|
+
becomes "The agent reviews the draft, scores it, and suggests fixes."
|
|
89
|
+
|
|
90
|
+
This matters more in technical writing than anywhere else: a second name for one
|
|
91
|
+
thing reads as a second thing.
|
|
92
|
+
|
|
93
|
+
### OSW-10 · HARD · Banned lexicon
|
|
94
|
+
|
|
95
|
+
Never use, in any output: delve · leverage · utilize · facilitate · empower ·
|
|
96
|
+
streamline · robust · cutting-edge · paradigm shift · game changer · tapestry ·
|
|
97
|
+
realm · beacon · multifaceted · meticulous · intricate · paramount ·
|
|
98
|
+
transformative · elevate · embark · supercharge · harness · ever-evolving ·
|
|
99
|
+
seamless · unleash · pivotal.
|
|
100
|
+
|
|
101
|
+
Use the plain word. "Utilize" is "use". "Leverage" is "use". "Facilitate" is
|
|
102
|
+
"help" or the verb for what actually happens.
|
|
103
|
+
|
|
104
|
+
Checked by `orc rules lint`.
|
|
105
|
+
|
|
106
|
+
### OSW-11 · HARD · Banned phrases
|
|
107
|
+
|
|
108
|
+
Never use: "it's worth noting" · "it's important to note" · "at the end of the
|
|
109
|
+
day" · "when it comes to" · "at its core" · "in today's world" · "in the age
|
|
110
|
+
of" · "in the world of" · "the reality is" · "the truth is" · "in terms of" ·
|
|
111
|
+
"with regard to" · "going forward" · "let's dive in" · "in this article".
|
|
112
|
+
|
|
113
|
+
Every one of them delays the point by a clause. Delete the clause and keep the
|
|
114
|
+
point.
|
|
115
|
+
|
|
116
|
+
Checked by `orc rules lint`.
|
|
117
|
+
|
|
118
|
+
### OSW-12 · PURPOSE · Hedge adverbs earn their place
|
|
119
|
+
|
|
120
|
+
Cut when they add nothing: just · literally · honestly · simply · actually ·
|
|
121
|
+
truly · fundamentally · importantly · crucially · inherently · inevitably.
|
|
122
|
+
|
|
123
|
+
Keep one when it carries real uncertainty, a real contrast, or the writer's own
|
|
124
|
+
rhythm. That is the written reason.
|
|
125
|
+
|
|
126
|
+
### OSW-13 · PURPOSE · Em dash dose cap
|
|
127
|
+
|
|
128
|
+
This is a **dose rule, not a ban.** The em dash is a real punctuation mark and
|
|
129
|
+
ORC's own documentation uses it.
|
|
130
|
+
|
|
131
|
+
- Short output (a chat answer, a commit body, a CTA, a label): none.
|
|
132
|
+
- A long document: at most two per thousand words, and only where the dash
|
|
133
|
+
clearly beats a comma, a period or parentheses.
|
|
134
|
+
- Never as a rhythm crutch, and never in clusters.
|
|
135
|
+
|
|
136
|
+
`orc rules lint` reports **density**, not presence.
|
|
137
|
+
|
|
138
|
+
### OSW-14 · LOCK · No rule-of-three padding
|
|
139
|
+
|
|
140
|
+
Three items only when there are three items. Do not invent a third to complete
|
|
141
|
+
the cadence, and do not drop a fourth to preserve it.
|
|
142
|
+
|
|
143
|
+
### OSW-15 · HARD · No staccato drama
|
|
144
|
+
|
|
145
|
+
Cut "X. And Y. And Z.", "That's it. That's the whole thing.", and stacked punchy
|
|
146
|
+
fragments. Use complete sentences. Vary sentence shape only when it helps the
|
|
147
|
+
point.
|
|
148
|
+
|
|
149
|
+
### OSW-16 · HARD · No rhetorical setup
|
|
150
|
+
|
|
151
|
+
Cut "What if I told you…", "Think about it:", "Plot twist:", and self-answered
|
|
152
|
+
"Question? Answer." pairs. Make the point.
|
|
153
|
+
|
|
154
|
+
### OSW-17 · HARD · No interpretive metadiscourse
|
|
155
|
+
|
|
156
|
+
Cut lines that step outside the subject to tell the reader what to notice: "That
|
|
157
|
+
last part matters more than it sounds", "The key point is", "As you can see",
|
|
158
|
+
"This distinction matters", and a redundant "In other words".
|
|
159
|
+
|
|
160
|
+
If the point is clear, delete the aside. If it is not, add the fact that would
|
|
161
|
+
make it clear.
|
|
162
|
+
|
|
163
|
+
### OSW-18 · LOCK · No formatting slop
|
|
164
|
+
|
|
165
|
+
- No emoji in a heading (checked by `orc rules lint`).
|
|
166
|
+
- No bold sprinkled mid-sentence for emphasis.
|
|
167
|
+
- No heading over a two-sentence section.
|
|
168
|
+
- No bullet list where two sentences of prose read better.
|
|
169
|
+
- No table with one column of real content.
|
|
170
|
+
|
|
171
|
+
Format follows the content. It does not decorate it.
|
|
172
|
+
|
|
173
|
+
### OSW-19 · LOCK · Active voice, real actors
|
|
174
|
+
|
|
175
|
+
"The team shipped it Tuesday" beats "the decision emerged". Never let an
|
|
176
|
+
inanimate thing do a human verb: an architecture does not believe, a module does
|
|
177
|
+
not want, a decision does not emerge.
|
|
178
|
+
|
|
179
|
+
Passive voice is allowed when the actor is genuinely unknown or genuinely
|
|
180
|
+
irrelevant, and only then.
|
|
181
|
+
|
|
182
|
+
### OSW-20 · LOCK · The portability test
|
|
183
|
+
|
|
184
|
+
If a sentence could move unchanged to another project, another company or
|
|
185
|
+
another product, it is filler. Replace it with a fact, a mechanism, a
|
|
186
|
+
consequence, or a judgement specific to this subject. Otherwise cut it.
|
|
187
|
+
|
|
188
|
+
### OSW-21 · LOCK · Concrete beats abstract
|
|
189
|
+
|
|
190
|
+
Names, numbers, dates, file paths, commands, error codes and examples beat
|
|
191
|
+
abstractions. "The integration improved efficiency" becomes "The integration cut
|
|
192
|
+
deploy time from 40 minutes to 4."
|
|
193
|
+
|
|
194
|
+
Protect the specific fact. Never smooth a useful detail into generic importance.
|
|
195
|
+
|
|
196
|
+
### OSW-22 · HARD · A human's paragraph is not yours to restyle
|
|
197
|
+
|
|
198
|
+
Never rewrite user-authored prose to match this pack. Preserve the writer's
|
|
199
|
+
vocabulary, bluntness, humour, digressions and level of polish.
|
|
200
|
+
|
|
201
|
+
This rule beats every other rule in this file. A pack that flattens the human
|
|
202
|
+
voice it was written to protect has failed.
|
|
203
|
+
|
|
204
|
+
### OSW-23 · HARD · Never invent a specific
|
|
205
|
+
|
|
206
|
+
No invented number, date, name, version, benchmark or range. No "anywhere from X
|
|
207
|
+
to Y" that nothing measured. No filled-in gap presented as a fact.
|
|
208
|
+
|
|
209
|
+
If the number is needed and unknown, say it is unknown, or ask.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Not a ban — keep these
|
|
214
|
+
|
|
215
|
+
Never cut, in the name of this pack:
|
|
216
|
+
|
|
217
|
+
- A load-bearing caveat about scope, risk or uncertainty (see `delivery.md`, OSD-04).
|
|
218
|
+
- A named source, a file path, a command, an error code, a version.
|
|
219
|
+
- The user's own words, anywhere (OSW-22).
|
|
220
|
+
- A hedge that reports real uncertainty rather than decorating a claim.
|
|
221
|
+
|
|
222
|
+
**Removing slop leaves a void.** The fix for flat prose is never more bans — it
|
|
223
|
+
is a fact, a mechanism, or a consequence the reader did not have.
|
|
@@ -211,4 +211,12 @@ exit code, and never re-derive a state word — the CLI's state words are the on
|
|
|
211
211
|
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
212
212
|
a failure**. A call the answer does not name is a call this lane does not make.
|
|
213
213
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
214
|
-
command you are about to run, out loud, before running it.
|
|
214
|
+
command you are about to run, out loud, before running it.
|
|
215
|
+
|
|
216
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
217
|
+
|
|
218
|
+
`orc rules slice --lane context-combiner --json` is the ONLY assembler; never build
|
|
219
|
+
the card here. It rides under the house rules and above the task —
|
|
220
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
221
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
222
|
+
never a silent choice) and `rules_overridden[]`.
|
|
@@ -111,6 +111,13 @@ the CLI is unavailable and fall back to `../_shared/config-precedence.md`'s
|
|
|
111
111
|
documented defaults, out loud. Priorities and families:
|
|
112
112
|
`../_shared/config-precedence.md`.
|
|
113
113
|
|
|
114
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
115
|
+
|
|
116
|
+
`orc rules slice --lane orc --json` is the ONLY assembler; never build
|
|
117
|
+
the card here. It rides under the house rules and above the task —
|
|
118
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
119
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
120
|
+
never a silent choice) and `rules_overridden[]`.
|
|
114
121
|
## Calls
|
|
115
122
|
|
|
116
123
|
**ONE catalogue, and it is not you:** `orc lane calls orc --json` names every
|
|
@@ -191,7 +198,7 @@ them; they are never dispatched as subagents).
|
|
|
191
198
|
- Phase 1 wiki grounding → `../_shared/phases/wiki-consult.md` + `references/preflight-report.md`
|
|
192
199
|
- Phase 2 → `references/effort-and-mode.md`; tagging → `references/pattern-gate.md`
|
|
193
200
|
- Phase 3 → `../_shared/phases/wave-grouping.md` + `log-protocol.md` + `../_shared/phases/house-rules.md`
|
|
194
|
-
+ `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/`;
|
|
195
202
|
stops → `subskills/orc-checkpoint/SKILL.md` + `../_shared/phases/stop-resume.md`
|
|
196
203
|
- Phase 5–6 → `subskills/orc-review-verify/`; FE tasks →
|
|
197
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);
|
|
@@ -152,6 +152,13 @@ a failure**. A call the answer does not name is a call this lane does not make.
|
|
|
152
152
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
153
153
|
command you are about to run, out loud, before running it.
|
|
154
154
|
|
|
155
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
156
|
+
|
|
157
|
+
`orc rules slice --lane orc-aftermath --json` is the ONLY assembler; never build
|
|
158
|
+
the card here. It rides under the house rules and above the task —
|
|
159
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
160
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
161
|
+
never a silent choice) and `rules_overridden[]`.
|
|
155
162
|
## Waiting mid-run (`/orc-wait`)
|
|
156
163
|
|
|
157
164
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -246,6 +246,13 @@ a failure**. A call the answer does not name is a call this lane does not make.
|
|
|
246
246
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
247
247
|
command you are about to run, out loud, before running it.
|
|
248
248
|
|
|
249
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
250
|
+
|
|
251
|
+
`orc rules slice --lane orc-analyze --json` is the ONLY assembler; never build
|
|
252
|
+
the card here. It rides under the house rules and above the task —
|
|
253
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
254
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
255
|
+
never a silent choice) and `rules_overridden[]`.
|
|
249
256
|
## Waiting mid-run (`/orc-wait`)
|
|
250
257
|
|
|
251
258
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -125,4 +125,12 @@ exit code, and never re-derive a state word — the CLI's state words are the on
|
|
|
125
125
|
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
126
126
|
a failure**. A call the answer does not name is a call this lane does not make.
|
|
127
127
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
128
|
-
command you are about to run, out loud, before running it.
|
|
128
|
+
command you are about to run, out loud, before running it.
|
|
129
|
+
|
|
130
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
131
|
+
|
|
132
|
+
`orc rules slice --lane orc-analyze-mini --json` is the ONLY assembler; never build
|
|
133
|
+
the card here. It rides under the house rules and above the task —
|
|
134
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
135
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
136
|
+
never a silent choice) and `rules_overridden[]`.
|
|
@@ -243,6 +243,13 @@ a failure**. A call the answer does not name is a call this lane does not make.
|
|
|
243
243
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
244
244
|
command you are about to run, out loud, before running it.
|
|
245
245
|
|
|
246
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
247
|
+
|
|
248
|
+
`orc rules slice --lane orc-boundary --json` is the ONLY assembler; never build
|
|
249
|
+
the card here. It rides under the house rules and above the task —
|
|
250
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
251
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
252
|
+
never a silent choice) and `rules_overridden[]`.
|
|
246
253
|
## Waiting mid-run (`/orc-wait`)
|
|
247
254
|
|
|
248
255
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -371,6 +371,13 @@ a failure**. A call the answer does not name 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
372
|
command you are about to run, out loud, before running it.
|
|
373
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[]`.
|
|
374
381
|
## Waiting mid-run (`/orc-wait`)
|
|
375
382
|
|
|
376
383
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -242,6 +242,13 @@ a failure**. A call the answer does not name 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
243
|
command you are about to run, out loud, before running it.
|
|
244
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[]`.
|
|
245
252
|
## Waiting mid-run (`/orc-wait`)
|
|
246
253
|
|
|
247
254
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -292,6 +292,13 @@ a failure**. A call the answer does not name 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
293
|
command you are about to run, out loud, before running it.
|
|
294
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[]`.
|
|
295
302
|
## Waiting mid-run (`/orc-wait`)
|
|
296
303
|
|
|
297
304
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -215,6 +215,13 @@ a failure**. A call the answer does not name 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
|
|
|
218
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
219
|
+
|
|
220
|
+
`orc rules slice --lane orc-claude --json` is the ONLY assembler; never build
|
|
221
|
+
the card here. It rides under the house rules and above the task —
|
|
222
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
223
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
224
|
+
never a silent choice) and `rules_overridden[]`.
|
|
218
225
|
## Waiting mid-run (`/orc-wait`)
|
|
219
226
|
|
|
220
227
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -128,6 +128,13 @@ command you are about to run, out loud, before running it.
|
|
|
128
128
|
3. The fallback ask is ONE question with two outcomes (`/orc` or stop) —
|
|
129
129
|
never a menu, never a silent fallback.
|
|
130
130
|
|
|
131
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
132
|
+
|
|
133
|
+
`orc rules slice --lane orc-diy --json` is the ONLY assembler; never build
|
|
134
|
+
the card here. It rides under the house rules and above the task —
|
|
135
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
136
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
137
|
+
never a silent choice) and `rules_overridden[]`.
|
|
131
138
|
## Waiting mid-run (`/orc-wait`)
|
|
132
139
|
|
|
133
140
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -64,6 +64,13 @@ say so and use `../_shared/config-precedence.md`'s documented defaults, out
|
|
|
64
64
|
loud. Nothing this lane reads is contested, gated or a stop, so it owes no
|
|
65
65
|
preflight line and has no gate to honour.
|
|
66
66
|
|
|
67
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
68
|
+
|
|
69
|
+
`orc rules slice --lane orc-explain --json` is the ONLY assembler; never build
|
|
70
|
+
the card here. It rides under the house rules and above the task —
|
|
71
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
72
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
73
|
+
never a silent choice) and `rules_overridden[]`.
|
|
67
74
|
## Calls
|
|
68
75
|
|
|
69
76
|
**ONE catalogue, and it is not you:** `orc lane calls orc-explain --json` names every
|
|
@@ -163,6 +163,13 @@ say so and use `../_shared/config-precedence.md`'s documented defaults, out
|
|
|
163
163
|
loud. Nothing this lane reads is contested, gated or a stop, so it owes no
|
|
164
164
|
preflight line and has no gate to honour.
|
|
165
165
|
|
|
166
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
167
|
+
|
|
168
|
+
`orc rules slice --lane orc-export --json` is the ONLY assembler; never build
|
|
169
|
+
the card here. It rides under the house rules and above the task —
|
|
170
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
171
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
172
|
+
never a silent choice) and `rules_overridden[]`.
|
|
166
173
|
## Calls
|
|
167
174
|
|
|
168
175
|
**ONE catalogue, and it is not you:** `orc lane calls orc-export --json` names every
|
|
@@ -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.
|
|
@@ -192,6 +192,13 @@ documented defaults, out loud. Priorities and families:
|
|
|
192
192
|
Fast has no config key of its own — command-entry only; wave/scoring/review
|
|
193
193
|
keys never apply, and the tier edges the F0 gate reads arrive resolved.
|
|
194
194
|
|
|
195
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
196
|
+
|
|
197
|
+
`orc rules slice --lane orc-fast --json` is the ONLY assembler; never build
|
|
198
|
+
the card here. It rides under the house rules and above the task —
|
|
199
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
200
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
201
|
+
never a silent choice) and `rules_overridden[]`.
|
|
195
202
|
## Calls
|
|
196
203
|
|
|
197
204
|
**ONE catalogue, and it is not you:** `orc lane calls orc-fast --json` names every
|
|
@@ -232,6 +232,13 @@ a failure**. A call the answer does not name is a call this lane does not make.
|
|
|
232
232
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
233
233
|
command you are about to run, out loud, before running it.
|
|
234
234
|
|
|
235
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
236
|
+
|
|
237
|
+
`orc rules slice --lane orc-grill --json` is the ONLY assembler; never build
|
|
238
|
+
the card here. It rides under the house rules and above the task —
|
|
239
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
240
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
241
|
+
never a silent choice) and `rules_overridden[]`.
|
|
235
242
|
## Waiting mid-run (`/orc-wait`)
|
|
236
243
|
|
|
237
244
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -220,4 +220,12 @@ exit code, and never re-derive a state word — the CLI's state words are the on
|
|
|
220
220
|
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
221
221
|
a failure**. A call the answer does not name is a call this lane does not make.
|
|
222
222
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
223
|
-
command you are about to run, out loud, before running it.
|
|
223
|
+
command you are about to run, out loud, before running it.
|
|
224
|
+
|
|
225
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
226
|
+
|
|
227
|
+
`orc rules slice --lane orc-handoff --json` is the ONLY assembler; never build
|
|
228
|
+
the card here. It rides under the house rules and above the task —
|
|
229
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
230
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
231
|
+
never a silent choice) and `rules_overridden[]`.
|
|
@@ -175,6 +175,13 @@ a failure**. A call the answer does not name is a call this lane does not make.
|
|
|
175
175
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
176
176
|
command you are about to run, out loud, before running it.
|
|
177
177
|
|
|
178
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
179
|
+
|
|
180
|
+
`orc rules slice --lane orc-learn --json` is the ONLY assembler; never build
|
|
181
|
+
the card here. It rides under the house rules and above the task —
|
|
182
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
183
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
184
|
+
never a silent choice) and `rules_overridden[]`.
|
|
178
185
|
## Waiting mid-run (`/orc-wait`)
|
|
179
186
|
|
|
180
187
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -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)
|
|
@@ -176,6 +176,13 @@ documented defaults, out loud. Priorities and families:
|
|
|
176
176
|
Wave/scoring/scout keys never apply to mini — and they are not in the answer,
|
|
177
177
|
so there is nothing to render or ask.
|
|
178
178
|
|
|
179
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
180
|
+
|
|
181
|
+
`orc rules slice --lane orc-mini --json` is the ONLY assembler; never build
|
|
182
|
+
the card here. It rides under the house rules and above the task —
|
|
183
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
184
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
185
|
+
never a silent choice) and `rules_overridden[]`.
|
|
179
186
|
## Calls
|
|
180
187
|
|
|
181
188
|
**ONE catalogue, and it is not you:** `orc lane calls orc-mini --json` names every
|
|
@@ -249,6 +249,13 @@ a failure**. A call the answer does not name is a call this lane does not make.
|
|
|
249
249
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
250
250
|
command you are about to run, out loud, before running it.
|
|
251
251
|
|
|
252
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
253
|
+
|
|
254
|
+
`orc rules slice --lane orc-pact --json` is the ONLY assembler; never build
|
|
255
|
+
the card here. It rides under the house rules and above the task —
|
|
256
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
257
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
258
|
+
never a silent choice) and `rules_overridden[]`.
|
|
252
259
|
## Waiting mid-run (`/orc-wait`)
|
|
253
260
|
|
|
254
261
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -236,6 +236,13 @@ a failure**. A call the answer does not name is a call this lane does not make.
|
|
|
236
236
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
237
237
|
command you are about to run, out loud, before running it.
|
|
238
238
|
|
|
239
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
240
|
+
|
|
241
|
+
`orc rules slice --lane orc-poly --json` is the ONLY assembler; never build
|
|
242
|
+
the card here. It rides under the house rules and above the task —
|
|
243
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
244
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
245
|
+
never a silent choice) and `rules_overridden[]`.
|
|
239
246
|
## Waiting mid-run (`/orc-wait`)
|
|
240
247
|
|
|
241
248
|
Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
|
|
@@ -193,4 +193,12 @@ exit code, and never re-derive a state word — the CLI's state words are the on
|
|
|
193
193
|
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
194
194
|
a failure**. A call the answer does not name is a call this lane does not make.
|
|
195
195
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
196
|
-
command you are about to run, out loud, before running it.
|
|
196
|
+
command you are about to run, out loud, before running it.
|
|
197
|
+
|
|
198
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
199
|
+
|
|
200
|
+
`orc rules slice --lane orc-pr-driver --json` is the ONLY assembler; never build
|
|
201
|
+
the card here. It rides under the house rules and above the task —
|
|
202
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
203
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
204
|
+
never a silent choice) and `rules_overridden[]`.
|
|
@@ -209,4 +209,12 @@ exit code, and never re-derive a state word — the CLI's state words are the on
|
|
|
209
209
|
state words, and **an exit code is an ANSWER wherever that contract says so, not
|
|
210
210
|
a failure**. A call the answer does not name is a call this lane does not make.
|
|
211
211
|
Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
|
|
212
|
-
command you are about to run, out loud, before running it.
|
|
212
|
+
command you are about to run, out loud, before running it.
|
|
213
|
+
|
|
214
|
+
## Rules — the anti-slop card (`../_shared/phases/rules.md`)
|
|
215
|
+
|
|
216
|
+
`orc rules slice --lane orc-pr-setup --json` is the ONLY assembler; never build
|
|
217
|
+
the card here. It rides under the house rules and above the task —
|
|
218
|
+
**house rules > your project's rules > ORC's own packs** — and its `line` prints
|
|
219
|
+
VERBATIM at preflight. Returns gain `rules_applied[]`, `rules_conflicts[]` (a gap,
|
|
220
|
+
never a silent choice) and `rules_overridden[]`.
|