@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.
Files changed (84) hide show
  1. package/CHANGELOG.md +152 -0
  2. package/README-id.md +206 -125
  3. package/README.md +202 -74
  4. package/bin/cli.js +1595 -2
  5. package/bin/mockrun-catalog.js +272 -267
  6. package/bin/verify-contracts.js +4553 -4509
  7. package/bin/verify-package.js +6 -0
  8. package/bin/webui/api.js +26 -0
  9. package/bin/webui/app.html +10 -0
  10. package/bin/webui/css/panels/knowledge.css +30 -0
  11. package/bin/webui/css/panels/rules.css +145 -0
  12. package/bin/webui/fixtures/index.js +27 -0
  13. package/bin/webui/fixtures/rules.js +1002 -0
  14. package/bin/webui/fixtures/wiki-one.js +198 -0
  15. package/bin/webui/i18n/en/knowledge.json +127 -117
  16. package/bin/webui/i18n/en/nav.json +1 -0
  17. package/bin/webui/i18n/en/rules.json +55 -0
  18. package/bin/webui/i18n/id/knowledge.json +127 -117
  19. package/bin/webui/i18n/id/nav.json +1 -0
  20. package/bin/webui/i18n/id/rules.json +55 -0
  21. package/bin/webui/js/01-i18n.js +1 -0
  22. package/bin/webui/js/panels/knowledge.js +117 -1
  23. package/bin/webui/js/panels/rules.js +351 -0
  24. package/mock-run/INDEX.md +107 -106
  25. package/mock-run/orc-rules.md +254 -0
  26. package/package.json +1 -1
  27. package/templates/agents/orc-executor-haiku-4-5.md +9 -1
  28. package/templates/agents/orc-executor-opus-4-7-high.md +9 -1
  29. package/templates/agents/orc-executor-opus-4-7-med.md +9 -1
  30. package/templates/agents/orc-executor-opus-4-8-high.md +9 -1
  31. package/templates/agents/orc-executor-opus-5-high.md +9 -1
  32. package/templates/agents/orc-executor-opus-5-low.md +9 -1
  33. package/templates/agents/orc-executor-opus-5-med.md +9 -1
  34. package/templates/agents/orc-executor-sonnet-4-6-high.md +9 -1
  35. package/templates/agents/orc-executor-sonnet-4-6-med.md +9 -1
  36. package/templates/agents/orc-executor-sonnet-5-high.md +9 -1
  37. package/templates/commands/orc-rules.md +66 -0
  38. package/templates/commands/orc-wiki.md +23 -1
  39. package/templates/skills/_shared/README.md +61 -54
  40. package/templates/skills/_shared/extra-dispatch.md +1 -1
  41. package/templates/skills/_shared/phases/README.md +1 -0
  42. package/templates/skills/_shared/phases/execution.md +3 -1
  43. package/templates/skills/_shared/phases/preflight.md +20 -0
  44. package/templates/skills/_shared/phases/rules.md +159 -0
  45. package/templates/skills/_shared/return-validation.md +28 -0
  46. package/templates/skills/_shared/rules/CREDITS.md +141 -0
  47. package/templates/skills/_shared/rules/INDEX.md +107 -0
  48. package/templates/skills/_shared/rules/code.md +229 -0
  49. package/templates/skills/_shared/rules/delivery.md +114 -0
  50. package/templates/skills/_shared/rules/ui.md +139 -0
  51. package/templates/skills/_shared/rules/writing.md +223 -0
  52. package/templates/skills/context-combiner/SKILL.md +9 -1
  53. package/templates/skills/orc/SKILL.md +8 -1
  54. package/templates/skills/orc/references/preflight-report.md +6 -0
  55. package/templates/skills/orc/subskills/orc-execution/SKILL.md +2 -1
  56. package/templates/skills/orc/subskills/orc-execution/core.md +9 -1
  57. package/templates/skills/orc-aftermath/SKILL.md +7 -0
  58. package/templates/skills/orc-analyze/SKILL.md +7 -0
  59. package/templates/skills/orc-analyze-mini/SKILL.md +9 -1
  60. package/templates/skills/orc-boundary/SKILL.md +7 -0
  61. package/templates/skills/orc-brainstorm/SKILL.md +7 -0
  62. package/templates/skills/orc-budget/SKILL.md +7 -0
  63. package/templates/skills/orc-challenge/SKILL.md +7 -0
  64. package/templates/skills/orc-claude/SKILL.md +7 -0
  65. package/templates/skills/orc-diy/SKILL.md +7 -0
  66. package/templates/skills/orc-explain/SKILL.md +7 -0
  67. package/templates/skills/orc-export/SKILL.md +7 -0
  68. package/templates/skills/orc-fast/SKILL.md +9 -2
  69. package/templates/skills/orc-grill/SKILL.md +7 -0
  70. package/templates/skills/orc-handoff/SKILL.md +9 -1
  71. package/templates/skills/orc-learn/SKILL.md +7 -0
  72. package/templates/skills/orc-mini/SKILL.md +10 -3
  73. package/templates/skills/orc-pact/SKILL.md +7 -0
  74. package/templates/skills/orc-poly/SKILL.md +7 -0
  75. package/templates/skills/orc-pr-driver/SKILL.md +9 -1
  76. package/templates/skills/orc-pr-setup/SKILL.md +9 -1
  77. package/templates/skills/orc-quick/SKILL.md +9 -1
  78. package/templates/skills/orc-retro/SKILL.md +7 -0
  79. package/templates/skills/orc-route/SKILL.md +7 -0
  80. package/templates/skills/orc-test/SKILL.md +7 -0
  81. package/templates/skills/orc-verify/SKILL.md +7 -0
  82. package/templates/skills/orc-wiki/SKILL.md +15 -0
  83. package/templates/skills/orc-wiki/references/partial-refresh.md +68 -0
  84. 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); create/update
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. Follow every constraint. If `pattern` is present, MATCH its conventions,
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
- injected literally, same as full/mini)
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
- injected literally) + the cached `postgres` pattern on a data-access
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[]`.