@azure-id/orc 1.9.1 → 2.0.2

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 (224) hide show
  1. package/CHANGELOG.md +390 -0
  2. package/README-id.md +20 -36
  3. package/README.md +24 -34
  4. package/bin/build-agents.js +206 -109
  5. package/bin/cli.js +760 -62
  6. package/bin/gotcha-import.js +1081 -0
  7. package/bin/gotcha.js +1286 -0
  8. package/bin/graph-query.js +1 -1
  9. package/bin/graph.js +717 -717
  10. package/bin/habit.js +1453 -0
  11. package/bin/mockrun-catalog.js +281 -276
  12. package/bin/onboarding-content.js +4 -4
  13. package/bin/pricing.json +207 -200
  14. package/bin/run-undo.js +398 -0
  15. package/bin/trace-write.js +657 -0
  16. package/bin/verify-contracts.js +527 -81
  17. package/bin/verify-package.js +58 -11
  18. package/bin/webui/api.js +26 -0
  19. package/bin/webui/app.html +239 -232
  20. package/bin/webui/css/00-tokens.css +110 -92
  21. package/bin/webui/css/04-motion.css +249 -152
  22. package/bin/webui/css/06-responsive.css +203 -178
  23. package/bin/webui/css/panels/behaviour.css +205 -0
  24. package/bin/webui/css/panels/knowledge.css +563 -116
  25. package/bin/webui/fixtures/behaviour.js +532 -0
  26. package/bin/webui/fixtures/extra.js +2036 -2036
  27. package/bin/webui/fixtures/hookui.js +5 -5
  28. package/bin/webui/fixtures/index.js +34 -0
  29. package/bin/webui/fixtures/knowledge.js +7 -1
  30. package/bin/webui/fixtures/settings.js +305 -305
  31. package/bin/webui/fixtures/stats.js +16 -0
  32. package/bin/webui/i18n/en/behaviour.json +143 -0
  33. package/bin/webui/i18n/en/knowledge.json +117 -2
  34. package/bin/webui/i18n/en/nav.json +25 -24
  35. package/bin/webui/i18n/en/tour.json +37 -35
  36. package/bin/webui/i18n/id/behaviour.json +143 -0
  37. package/bin/webui/i18n/id/knowledge.json +117 -2
  38. package/bin/webui/i18n/id/nav.json +25 -24
  39. package/bin/webui/i18n/id/tour.json +37 -35
  40. package/bin/webui/js/01-i18n.js +155 -154
  41. package/bin/webui/js/90-tour.js +498 -494
  42. package/bin/webui/js/91-shortcuts.js +126 -126
  43. package/bin/webui/js/99-boot.js +121 -118
  44. package/bin/webui/js/panels/behaviour.js +1022 -0
  45. package/bin/webui/js/panels/knowledge.js +552 -7
  46. package/bin/webui/js/panels/overview.js +13 -4
  47. package/mock-run/INDEX.md +109 -107
  48. package/mock-run/context-combiner.md +100 -100
  49. package/mock-run/gotcha-import.md +118 -0
  50. package/mock-run/habits.md +129 -0
  51. package/mock-run/orc-budget.md +534 -534
  52. package/mock-run/orc-challenge-council.md +262 -262
  53. package/mock-run/orc-quick.md +6 -1
  54. package/mock-run/orc-ultra.md +103 -103
  55. package/package.json +1 -1
  56. package/templates/agents/MODEL-MAPPING.md +49 -49
  57. package/templates/agents/orc-advisor-opus-5-xhigh.md +50 -56
  58. package/templates/agents/orc-analyze-mini-opus-5-med.md +55 -60
  59. package/templates/agents/orc-analyze-mini-sonnet-5-high.md +55 -58
  60. package/templates/agents/orc-challenge-advisor-opus-5-med.md +75 -75
  61. package/templates/agents/orc-challenge-contrarian-opus-5-high.md +110 -110
  62. package/templates/agents/orc-challenge-executor-opus-5-med.md +114 -114
  63. package/templates/agents/orc-challenge-expansionist-opus-5-med.md +112 -112
  64. package/templates/agents/orc-challenge-judge-opus-5-high.md +132 -132
  65. package/templates/agents/orc-challenge-outsider-opus-5-low.md +109 -109
  66. package/templates/agents/orc-challenge-principles-opus-5-high.md +109 -109
  67. package/templates/agents/orc-challenge-reader-opus-5-low.md +90 -90
  68. package/templates/agents/orc-claude-writer-opus-4-8-high.md +48 -53
  69. package/templates/agents/orc-claude-writer-opus-5-med.md +48 -55
  70. package/templates/agents/orc-context-combiner-opus-5-high.md +78 -88
  71. package/templates/agents/orc-doc-checker-opus-5-low.md +108 -108
  72. package/templates/agents/orc-doc-writer-opus-5-med.md +134 -134
  73. package/templates/agents/orc-executor-haiku-4-5.md +14 -6
  74. package/templates/agents/orc-executor-opus-4-7-high.md +14 -6
  75. package/templates/agents/orc-executor-opus-4-7-med.md +14 -6
  76. package/templates/agents/orc-executor-opus-4-8-high.md +14 -6
  77. package/templates/agents/orc-executor-opus-5-high.md +15 -7
  78. package/templates/agents/orc-executor-opus-5-low.md +15 -7
  79. package/templates/agents/orc-executor-opus-5-med.md +15 -7
  80. package/templates/agents/orc-executor-sonnet-4-6-high.md +14 -6
  81. package/templates/agents/orc-executor-sonnet-4-6-med.md +14 -6
  82. package/templates/agents/orc-executor-sonnet-5-high.md +14 -6
  83. package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +1 -10
  84. package/templates/agents/orc-judge-opus-5-xhigh.md +81 -85
  85. package/templates/agents/orc-learn-writer-opus-5-low.md +67 -73
  86. package/templates/agents/orc-pattern-codifier-opus-5-med.md +58 -65
  87. package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +58 -63
  88. package/templates/agents/orc-planner-mini-opus-5-med.md +4 -7
  89. package/templates/agents/orc-planner-mini-sonnet-5-high.md +2 -3
  90. package/templates/agents/orc-planner-opus-5-med.md +157 -160
  91. package/templates/agents/orc-recon-opus-5-low.md +3 -10
  92. package/templates/agents/orc-recon-sonnet-4-6-med.md +1 -8
  93. package/templates/agents/orc-retro-opus-5-med.md +8 -10
  94. package/templates/agents/orc-retro-sonnet-5-high.md +6 -7
  95. package/templates/agents/orc-reviewer-opus-5-med.md +96 -60
  96. package/templates/agents/orc-scout-opus-5-low.md +35 -40
  97. package/templates/agents/orc-scout-sonnet-4-6-high.md +35 -39
  98. package/templates/agents/orc-system-analyst-opus-5-high.md +115 -120
  99. package/templates/agents/orc-test-author-opus-5-med.md +70 -71
  100. package/templates/agents/orc-test-designer-opus-5-high.md +158 -158
  101. package/templates/agents/orc-test-interpreter-opus-5-low.md +130 -130
  102. package/templates/agents/orc-trace-writer-haiku-4-5.md +3 -7
  103. package/templates/agents/orc-verifier-opus-5-med.md +77 -69
  104. package/templates/agents/orc-wiki-scanner-opus-4-8-high.md +74 -79
  105. package/templates/agents/orc-wiki-scanner-opus-5-med.md +74 -81
  106. package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +97 -106
  107. package/templates/commands/orc-analyze.md +13 -21
  108. package/templates/commands/orc-fast.md +10 -15
  109. package/templates/commands/orc-poly.md +12 -21
  110. package/templates/commands/orc-pr-driver.md +11 -30
  111. package/templates/commands/orc-pr-setup.md +10 -31
  112. package/templates/commands/orc-route.md +11 -41
  113. package/templates/commands/orc-test.md +5 -60
  114. package/templates/commands/orc-ultra.md +17 -17
  115. package/templates/commands/orc-verify.md +11 -11
  116. package/templates/hooks/README.md +36 -2
  117. package/templates/hooks/orc-effort-guard.js +178 -178
  118. package/templates/hooks/orc-session-hook.js +264 -0
  119. package/templates/hooks/orc-statusline.js +9 -7
  120. package/templates/skills/_shared/README.md +9 -0
  121. package/templates/skills/_shared/code-graph.md +48 -56
  122. package/templates/skills/_shared/config-precedence.md +200 -198
  123. package/templates/skills/_shared/extra-dispatch.md +1331 -1346
  124. package/templates/skills/_shared/gotchas.md +228 -177
  125. package/templates/skills/_shared/habits.md +101 -0
  126. package/templates/skills/_shared/lane-contract.md +84 -0
  127. package/templates/skills/_shared/opus5-only.md +8 -8
  128. package/templates/skills/_shared/phases/README.md +142 -83
  129. package/templates/skills/_shared/phases/analyst-gates.md +125 -136
  130. package/templates/skills/_shared/phases/execution.md +8 -14
  131. package/templates/skills/_shared/phases/house-rules.md +27 -32
  132. package/templates/skills/_shared/phases/intake.md +127 -133
  133. package/templates/skills/_shared/phases/mock-example.md +46 -56
  134. package/templates/skills/_shared/phases/plan-handoff.md +91 -97
  135. package/templates/skills/_shared/phases/planning.md +7 -17
  136. package/templates/skills/_shared/phases/preflight.md +19 -42
  137. package/templates/skills/_shared/phases/review.md +23 -27
  138. package/templates/skills/_shared/phases/rules.md +18 -42
  139. package/templates/skills/_shared/phases/scoring.md +55 -65
  140. package/templates/skills/_shared/phases/security-checklist.md +46 -50
  141. package/templates/skills/_shared/phases/security.md +45 -55
  142. package/templates/skills/_shared/phases/ship.md +6 -15
  143. package/templates/skills/_shared/phases/stop-resume.md +2 -5
  144. package/templates/skills/_shared/phases/summary.md +73 -48
  145. package/templates/skills/_shared/phases/testgen.md +41 -51
  146. package/templates/skills/_shared/phases/trace-verbs.md +433 -0
  147. package/templates/skills/_shared/phases/trace.md +136 -367
  148. package/templates/skills/_shared/phases/verify.md +62 -70
  149. package/templates/skills/_shared/phases/wave-grouping.md +128 -133
  150. package/templates/skills/_shared/phases/wiki-consult.md +10 -6
  151. package/templates/skills/_shared/read-ladder.md +2 -55
  152. package/templates/skills/_shared/return-validation.md +17 -70
  153. package/templates/skills/_shared/review-slice.md +79 -0
  154. package/templates/skills/_shared/smoke-gate.md +46 -28
  155. package/templates/skills/context-combiner/SKILL.md +16 -45
  156. package/templates/skills/context-combiner/schemas/combined-report.md +78 -78
  157. package/templates/skills/orc/README.md +2 -2
  158. package/templates/skills/orc/SKILL.md +41 -69
  159. package/templates/skills/orc/config.md +9 -9
  160. package/templates/skills/orc/examples/full-run-mock.md +73 -73
  161. package/templates/skills/orc/references/effort-and-mode.md +222 -222
  162. package/templates/skills/orc/references/pattern-gate.md +89 -89
  163. package/templates/skills/orc/references/phases/intake.md +41 -47
  164. package/templates/skills/orc/references/phases/integration.md +13 -19
  165. package/templates/skills/orc/references/preflight-report.md +10 -11
  166. package/templates/skills/orc/references/ultra-mode.md +11 -9
  167. package/templates/skills/orc/subskills/orc-execution/SKILL.md +27 -73
  168. package/templates/skills/orc/subskills/orc-execution/core.md +12 -99
  169. package/templates/skills/orc/subskills/orc-execution/subagent.md +14 -13
  170. package/templates/skills/orc/subskills/orc-planner/SKILL.md +2 -2
  171. package/templates/skills/orc/subskills/orc-planner-mini/SKILL.md +121 -121
  172. package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +35 -76
  173. package/templates/skills/orc/subskills/orc-review-verify/core.md +52 -135
  174. package/templates/skills/orc/subskills/orc-review-verify/subagent.md +7 -7
  175. package/templates/skills/orc/subskills/orc-testgen/SKILL.md +34 -45
  176. package/templates/skills/orc/subskills/orc-testgen/core.md +20 -59
  177. package/templates/skills/orc/subskills/orc-testgen/subagent.md +7 -7
  178. package/templates/skills/orc-advisor/SKILL.md +56 -60
  179. package/templates/skills/orc-analyze/SKILL.md +32 -68
  180. package/templates/skills/orc-analyze/examples/analyze-mock.md +42 -42
  181. package/templates/skills/orc-analyze/schemas/report-audit.md +84 -83
  182. package/templates/skills/orc-analyze/schemas/report-prose.md +64 -63
  183. package/templates/skills/orc-analyze/schemas/report-requirement.md +78 -78
  184. package/templates/skills/orc-analyze-mini/SKILL.md +35 -70
  185. package/templates/skills/orc-challenge/README.md +142 -142
  186. package/templates/skills/orc-challenge/examples/council-full-roster.md +273 -273
  187. package/templates/skills/orc-challenge/references/council.md +315 -315
  188. package/templates/skills/orc-challenge/references/intake.md +171 -171
  189. package/templates/skills/orc-claude/SKILL.md +14 -14
  190. package/templates/skills/orc-diy/README.md +174 -143
  191. package/templates/skills/orc-diy/SKILL.md +23 -74
  192. package/templates/skills/orc-diy/references/blocks/pattern.md +18 -18
  193. package/templates/skills/orc-diy/references/flow-schema.md +1 -1
  194. package/templates/skills/orc-doc/README.md +229 -229
  195. package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +325 -325
  196. package/templates/skills/orc-doc/references/chunking.md +527 -527
  197. package/templates/skills/orc-fast/SKILL.md +45 -73
  198. package/templates/skills/orc-judge/SKILL.md +77 -82
  199. package/templates/skills/orc-learn/SKILL.md +14 -14
  200. package/templates/skills/orc-learn/examples/learn-run-mock.md +61 -61
  201. package/templates/skills/orc-mini/SKILL.md +65 -113
  202. package/templates/skills/orc-pattern/SKILL.md +27 -48
  203. package/templates/skills/orc-poly/SKILL.md +32 -61
  204. package/templates/skills/orc-pr-driver/SKILL.md +25 -51
  205. package/templates/skills/orc-pr-driver/references/green-gate.md +113 -105
  206. package/templates/skills/orc-pr-setup/SKILL.md +20 -45
  207. package/templates/skills/orc-quick/README.md +43 -2
  208. package/templates/skills/orc-quick/SKILL.md +76 -107
  209. package/templates/skills/orc-quick/references/dispatch-gate.md +16 -5
  210. package/templates/skills/orc-quick/references/gh-mode.md +48 -1
  211. package/templates/skills/orc-quick/references/look.md +3 -1
  212. package/templates/skills/orc-retro/SKILL.md +19 -18
  213. package/templates/skills/orc-retro/examples/retro-mock.md +1 -1
  214. package/templates/skills/orc-route/SKILL.md +25 -45
  215. package/templates/skills/orc-test/SKILL.md +16 -37
  216. package/templates/skills/orc-verify/SKILL.md +21 -39
  217. package/templates/skills/orc-verify/examples/verify-mock.md +33 -33
  218. package/templates/skills/orc-wait/SKILL.md +156 -163
  219. package/templates/skills/orc-wiki/references/extra.md +1 -1
  220. package/templates/skills/orc-wiki/references/phases/phase-0.md +1 -6
  221. package/templates/skills/orc-wiki/references/phases/phase-1.md +1 -6
  222. package/templates/skills/orc-wiki/references/phases/phase-2.md +1 -6
  223. package/templates/skills/orc-wiki/references/phases/phase-3.md +1 -6
  224. package/templates/skills/orc-wiki/references/phases/phase-3c.md +1 -6
@@ -1,83 +1,84 @@
1
- # Template — Analyst Report (AUDIT mode)
2
-
3
- Human-readable source of truth. You review and confirm this; the machine spec
4
- is derived from it. Written to analyst_report/{analysis-name}/report.md.
5
-
6
- ```markdown
7
- # Analysis Report — {analysis-name}
8
- mode: audit
9
- depth: standard | deep
10
- source_doc: <path or "pasted">
11
- scope: <X — the requested scope only>
12
- analyzed_at: DDMMYY HH:MM:SS
13
- model: opus-5-high # the RESOLVED model of the agent that produced this
14
- # (mini writes sonnet-5-high) — never copied from here
15
- grounding: repo-read | repo-read+scouts # scouts only in deep mode
16
-
17
- ## In-scope rows (X only)
18
-
19
- Each row = one audit line that belongs to scope X, reconciled against code. Every
20
- "Code reality" cell carries quote-anchored file:line evidence
21
- (`file:line — "verbatim snippet"`, never paraphrased; a ref with no quote
22
- auto-downgrades to UNVERIFIED), OR the row is tagged ASSUMPTION/UNVERIFIED (and
23
- appears below as an open question). A row whose code reality is a claim of
24
- ABSENCE ("no retry exists") instead carries `searched:` — the concrete
25
- globs/greps run. In deep mode EVERY row is verified, not just the load-bearing
26
- ones.
27
-
28
- | # | Claim (result + notes) | Code reality | Evidence (file:line + quote / searched:) | Files/modules | Status | Resolution |
29
- |---|------------------------|--------------|------------------------------------------|---------------|--------|------------|
30
- | 1 | PASS — "UUID validated" | present | auth/uuid.x:8 — "validateUuid(id)" | auth/uuid.x | verified | — |
31
- | 2 | PASS — notes: "consider adding retry" | no retry | searched: `retry`, `backoff` in svc/ — no hits | svc/x | diverged | user: retry OUT of scope |
32
- | 3 | FAIL — "missing UUID check" | field renamed to ref_id | models/user.x:20 — "ref_id:" | models/x | diverged | user: update premise; check ref_id |
33
-
34
- Status: verified | diverged | resolved
35
- - verified: claim matches code (with evidence), nothing to challenge.
36
- - diverged: claim vs code mismatch → was challenged.
37
- - resolved: a diverged row the user decided on (Resolution column holds the call).
38
-
39
- ## Assumptions & Open Questions
40
- - UNVERIFIED (resolved): row 7 cited a "legacy flag" not found in code — user
41
- confirmed it was removed; row dropped.
42
-
43
- ## Additional context (do not build)
44
- Anchored, non-actionable context pulled from an ADJACENT scope because an in-scope
45
- row depends on it. Read for understanding; never a task. Each item names the
46
- in-scope row it serves + why. Omit this whole section if none survived.
47
- | Anchor (in-scope #) | From scope | Dependency | Touchpoint to respect | Evidence (file:line) |
48
- |---------------------|-----------|------------|-----------------------|----------------------|
49
- | Row 3 (ref_id check) | models (Y) | consumes-output | ref_id is set by the user loader before validation | models/user.x:20 |
50
-
51
- ## Alternatives & risks (DEEP mode only — omit in standard)
52
- - Row 3 fix: add ref_id check in the model (recommended) vs at the API edge —
53
- edge version duplicates validation across 3 handlers.
54
-
55
- ## Challenges raised & answers
56
- - Row 2: notes suggested retry — user confirmed OUT of scope X.
57
- - Row 3: audit says missing UUID check, code renamed field to ref_id — user
58
- confirmed implement the check against ref_id.
59
-
60
- ## Row numbering — `R#` is the SPEC's namespace, never the report's
61
- Refer to report rows as **"row N"** only. Labelling a report row `R1` collides
62
- with the spec's own `R#` ids, and the derivation lint compares the two id sets:
63
- report-`R1` (a build item) vs spec-`R1` (audit row 1) either false-passes or
64
- false-bounces. A row that legitimately duplicates another's `files[]` (e.g. a
65
- doc's closing `Recommendation:` line) carries `yields_build_work: false` in the
66
- spec rather than a prose qualifier.
67
-
68
- ## Excluded scopes (recognized, not detailed)
69
- - Recognized Y, Z in the source doc; excluded from this report per scope = X.
70
-
71
- ## Handoff readiness (checklist — all five or handoff_ready is false)
72
- The first three are checkable IN this report. The last two can only become true
73
- AFTER this report is confirmed and frozen, so on a correct run they stay
74
- unticked here and are satisfied in the spec — a reader of report.md alone must
75
- not read that as a failed checklist.
76
- - [ ] all BLOCKING challenges resolved (every diverged row decided)
77
- - [ ] zero open UNVERIFIED on any in-scope row
78
- - [ ] every row has status + evidence-or-resolution
79
- - [ ] spec derived AFTER the user confirmed this report (satisfied
80
- post-confirmation — see the spec)
81
- - [ ] scope_closed: true written into the spec (satisfied post-confirmation —
82
- see the spec)
83
- ```
1
+ # Template — Analyst Report (AUDIT mode)
2
+
3
+ Human-readable source of truth. You review and confirm this; the machine spec
4
+ is derived from it. Written to `<analyzer_dir>/{analysis-name}/report.md`;
5
+ COPIED to `<report_out_dir>/{analysis-name}/` only on the stop-here branch.
6
+
7
+ ```markdown
8
+ # Analysis Report — {analysis-name}
9
+ mode: audit
10
+ depth: standard | deep
11
+ source_doc: <path or "pasted">
12
+ scope: <X — the requested scope only>
13
+ analyzed_at: DDMMYY HH:MM:SS
14
+ model: opus-5-5-high # the RESOLVED model of the agent that produced this
15
+ # (mini writes sonnet-5-high) — never copied from here
16
+ grounding: repo-read | repo-read+scouts # scouts only in deep mode
17
+
18
+ ## In-scope rows (X only)
19
+
20
+ Each row = one audit line that belongs to scope X, reconciled against code. Every
21
+ "Code reality" cell carries quote-anchored file:line evidence
22
+ (`file:line — "verbatim snippet"`, never paraphrased; a ref with no quote
23
+ auto-downgrades to UNVERIFIED), OR the row is tagged ASSUMPTION/UNVERIFIED (and
24
+ appears below as an open question). A row whose code reality is a claim of
25
+ ABSENCE ("no retry exists") instead carries `searched:` — the concrete
26
+ globs/greps run. In deep mode EVERY row is verified, not just the load-bearing
27
+ ones.
28
+
29
+ | # | Claim (result + notes) | Code reality | Evidence (file:line + quote / searched:) | Files/modules | Status | Resolution |
30
+ |---|------------------------|--------------|------------------------------------------|---------------|--------|------------|
31
+ | 1 | PASS — "UUID validated" | present | auth/uuid.x:8 — "validateUuid(id)" | auth/uuid.x | verified | — |
32
+ | 2 | PASS — notes: "consider adding retry" | no retry | searched: `retry`, `backoff` in svc/ — no hits | svc/x | diverged | user: retry OUT of scope |
33
+ | 3 | FAIL — "missing UUID check" | field renamed to ref_id | models/user.x:20 — "ref_id:" | models/x | diverged | user: update premise; check ref_id |
34
+
35
+ Status: verified | diverged | resolved
36
+ - verified: claim matches code (with evidence), nothing to challenge.
37
+ - diverged: claim vs code mismatch → was challenged.
38
+ - resolved: a diverged row the user decided on (Resolution column holds the call).
39
+
40
+ ## Assumptions & Open Questions
41
+ - UNVERIFIED (resolved): row 7 cited a "legacy flag" not found in code — user
42
+ confirmed it was removed; row dropped.
43
+
44
+ ## Additional context (do not build)
45
+ Anchored, non-actionable context pulled from an ADJACENT scope because an in-scope
46
+ row depends on it. Read for understanding; never a task. Each item names the
47
+ in-scope row it serves + why. Omit this whole section if none survived.
48
+ | Anchor (in-scope #) | From scope | Dependency | Touchpoint to respect | Evidence (file:line) |
49
+ |---------------------|-----------|------------|-----------------------|----------------------|
50
+ | Row 3 (ref_id check) | models (Y) | consumes-output | ref_id is set by the user loader before validation | models/user.x:20 |
51
+
52
+ ## Alternatives & risks (DEEP mode only — omit in standard)
53
+ - Row 3 fix: add ref_id check in the model (recommended) vs at the API edge —
54
+ edge version duplicates validation across 3 handlers.
55
+
56
+ ## Challenges raised & answers
57
+ - Row 2: notes suggested retry — user confirmed OUT of scope X.
58
+ - Row 3: audit says missing UUID check, code renamed field to ref_id — user
59
+ confirmed implement the check against ref_id.
60
+
61
+ ## Row numbering — `R#` is the SPEC's namespace, never the report's
62
+ Refer to report rows as **"row N"** only. Labelling a report row `R1` collides
63
+ with the spec's own `R#` ids, and the derivation lint compares the two id sets:
64
+ report-`R1` (a build item) vs spec-`R1` (audit row 1) either false-passes or
65
+ false-bounces. A row that legitimately duplicates another's `files[]` (e.g. a
66
+ doc's closing `Recommendation:` line) carries `yields_build_work: false` in the
67
+ spec rather than a prose qualifier.
68
+
69
+ ## Excluded scopes (recognized, not detailed)
70
+ - Recognized Y, Z in the source doc; excluded from this report per scope = X.
71
+
72
+ ## Handoff readiness (checklist — all five or handoff_ready is false)
73
+ The first three are checkable IN this report. The last two can only become true
74
+ AFTER this report is confirmed and frozen, so on a correct run they stay
75
+ unticked here and are satisfied in the spec — a reader of report.md alone must
76
+ not read that as a failed checklist.
77
+ - [ ] all BLOCKING challenges resolved (every diverged row decided)
78
+ - [ ] zero open UNVERIFIED on any in-scope row
79
+ - [ ] every row has status + evidence-or-resolution
80
+ - [ ] spec derived AFTER the user confirmed this report (satisfied
81
+ post-confirmation — see the spec)
82
+ - [ ] scope_closed: true written into the spec (satisfied post-confirmation —
83
+ see the spec)
84
+ ```
@@ -1,63 +1,64 @@
1
- # Template — Analyst Report (PROSE mode)
2
-
3
- Human-readable source of truth. Written to analyst_report/{analysis-name}/report.md.
4
-
5
- ```markdown
6
- # Analysis Report — {analysis-name}
7
- mode: prose
8
- depth: standard | deep
9
- source_doc: <path or "pasted">
10
- scope: <X — the requested scope only>
11
- analyzed_at: DDMMYY HH:MM:SS
12
- model: opus-5-high # the RESOLVED model of the agent that produced this
13
- # (mini writes sonnet-5-high) — never copied from here
14
- grounding: repo-read | repo-read+scouts # scouts only in deep mode
15
-
16
- ## In-scope requirements (X only)
17
-
18
- Every "Code reality" cell carries quote-anchored file:line evidence
19
- (`file:line — "verbatim snippet"`, never paraphrased; a ref with no quote
20
- auto-downgrades to UNVERIFIED), OR the row is tagged ASSUMPTION/UNVERIFIED (and
21
- appears below as an open question). Absence claims (status missing) instead
22
- carry `searched:` — the concrete globs/greps run.
23
-
24
- | # | Requirement (from doc) | Code reality | Evidence (file:line + quote / searched:) | Files/modules | Status | Resolution |
25
- |---|------------------------|--------------|------------------------------------------|---------------|--------|------------|
26
- | 1 | "notifications must paginate" | list is unbounded | searched: `paginate`, `cursor`, `limit` in api/notifications — no hits | api/notifications/x | missing | implement pagination |
27
- | 2 | "respect existing auth" | auth middleware present | auth/mw.x:10 — "app.use(requireAuth)" | auth/mw.x | exists | reuse, no change |
28
-
29
- Status: exists | missing | conflict | resolved
30
-
31
- ## Assumptions & Open Questions
32
- Anything not grounded to code, plus every ambiguity — each was raised as a
33
- recommended-option challenge and resolved (or is still open).
34
- - ASSUMPTION (resolved): "paginate" = cursor-based (recommended) — user confirmed.
35
- - UNVERIFIED (open): whether a rate-limit already exists — evidence not found.
36
-
37
- ## Additional context (do not build)
38
- Anchored, non-actionable context pulled from an ADJACENT scope because an in-scope
39
- requirement depends on it. Read for understanding; never a task. Each item names
40
- the in-scope requirement it serves + why. Omit this whole section if none survived.
41
- | Anchor (in-scope #) | From scope | Dependency | Touchpoint to respect | Evidence (file:line) |
42
- |---------------------|-----------|------------|-----------------------|----------------------|
43
- | Req 1 (pagination) | listing (Y) | guards-invariant | shared list serializer caps a page at 100 | api/serializers/list.x:31 |
44
-
45
- ## Alternatives & risks (DEEP mode only — omit in standard)
46
- - Approach A (recommended): reuse existing cursor helper — low blast radius, 3 files.
47
- - Approach B: new offset paginator — simpler read, breaks existing cursor clients.
48
- - Risk: pagination touches the shared list serializer (dependents: 4 call sites).
49
-
50
- ## Challenges raised & answers
51
- - Req 3 appeared to require an admin panel (belongs to scope Z) — user confirmed
52
- OUT of scope X.
53
-
54
- ## Excluded scopes (recognized, not detailed)
55
- - Recognized Y, Z; excluded per scope = X.
56
-
57
- ## Handoff readiness (checklist — all five or handoff_ready is false)
58
- - [ ] all BLOCKING challenges resolved
59
- - [ ] zero open UNVERIFIED on any in-scope requirement
60
- - [ ] every requirement has status + evidence-or-resolution
61
- - [ ] spec derived AFTER the user confirmed this report
62
- - [ ] scope_closed: true written into the spec
63
- ```
1
+ # Template — Analyst Report (PROSE mode)
2
+
3
+ Human-readable source of truth. Written to `<analyzer_dir>/{analysis-name}/report.md`;
4
+ COPIED to `<report_out_dir>/{analysis-name}/` only on the stop-here branch.
5
+
6
+ ```markdown
7
+ # Analysis Report — {analysis-name}
8
+ mode: prose
9
+ depth: standard | deep
10
+ source_doc: <path or "pasted">
11
+ scope: <X — the requested scope only>
12
+ analyzed_at: DDMMYY HH:MM:SS
13
+ model: opus-5-5-high # the RESOLVED model of the agent that produced this
14
+ # (mini writes sonnet-5-high) — never copied from here
15
+ grounding: repo-read | repo-read+scouts # scouts only in deep mode
16
+
17
+ ## In-scope requirements (X only)
18
+
19
+ Every "Code reality" cell carries quote-anchored file:line evidence
20
+ (`file:line — "verbatim snippet"`, never paraphrased; a ref with no quote
21
+ auto-downgrades to UNVERIFIED), OR the row is tagged ASSUMPTION/UNVERIFIED (and
22
+ appears below as an open question). Absence claims (status missing) instead
23
+ carry `searched:` — the concrete globs/greps run.
24
+
25
+ | # | Requirement (from doc) | Code reality | Evidence (file:line + quote / searched:) | Files/modules | Status | Resolution |
26
+ |---|------------------------|--------------|------------------------------------------|---------------|--------|------------|
27
+ | 1 | "notifications must paginate" | list is unbounded | searched: `paginate`, `cursor`, `limit` in api/notifications — no hits | api/notifications/x | missing | implement pagination |
28
+ | 2 | "respect existing auth" | auth middleware present | auth/mw.x:10 — "app.use(requireAuth)" | auth/mw.x | exists | reuse, no change |
29
+
30
+ Status: exists | missing | conflict | resolved
31
+
32
+ ## Assumptions & Open Questions
33
+ Anything not grounded to code, plus every ambiguity — each was raised as a
34
+ recommended-option challenge and resolved (or is still open).
35
+ - ASSUMPTION (resolved): "paginate" = cursor-based (recommended) — user confirmed.
36
+ - UNVERIFIED (open): whether a rate-limit already exists — evidence not found.
37
+
38
+ ## Additional context (do not build)
39
+ Anchored, non-actionable context pulled from an ADJACENT scope because an in-scope
40
+ requirement depends on it. Read for understanding; never a task. Each item names
41
+ the in-scope requirement it serves + why. Omit this whole section if none survived.
42
+ | Anchor (in-scope #) | From scope | Dependency | Touchpoint to respect | Evidence (file:line) |
43
+ |---------------------|-----------|------------|-----------------------|----------------------|
44
+ | Req 1 (pagination) | listing (Y) | guards-invariant | shared list serializer caps a page at 100 | api/serializers/list.x:31 |
45
+
46
+ ## Alternatives & risks (DEEP mode only — omit in standard)
47
+ - Approach A (recommended): reuse existing cursor helper — low blast radius, 3 files.
48
+ - Approach B: new offset paginator — simpler read, breaks existing cursor clients.
49
+ - Risk: pagination touches the shared list serializer (dependents: 4 call sites).
50
+
51
+ ## Challenges raised & answers
52
+ - Req 3 appeared to require an admin panel (belongs to scope Z) — user confirmed
53
+ OUT of scope X.
54
+
55
+ ## Excluded scopes (recognized, not detailed)
56
+ - Recognized Y, Z; excluded per scope = X.
57
+
58
+ ## Handoff readiness (checklist — all five or handoff_ready is false)
59
+ - [ ] all BLOCKING challenges resolved
60
+ - [ ] zero open UNVERIFIED on any in-scope requirement
61
+ - [ ] every requirement has status + evidence-or-resolution
62
+ - [ ] spec derived AFTER the user confirmed this report
63
+ - [ ] scope_closed: true written into the spec
64
+ ```
@@ -1,78 +1,78 @@
1
- # Template — Analyst Report (REQUIREMENT mode — no document)
2
-
3
- Used when there is NO source document: the user's plain-language request IS the
4
- requirement, reconciled against the existing code. Human-readable source of
5
- truth. Written to `<analyzer_dir>/{analysis-name}/report.md` (config
6
- `analyzer_dir` — the internal artifact dir); it is COPIED to
7
- `<report_out_dir>/{analysis-name}/report.md` only on the report-only /
8
- stop-here branch. The old "written to analyst_report/…" wording described the
9
- copy target as if it were the write target.
10
-
11
- ```markdown
12
- # Analysis Report — {analysis-name}
13
- mode: requirement
14
- depth: standard | deep
15
- source: "pasted request" # the user's own words, verbatim
16
- scope: <X — the requested scope only>
17
- analyzed_at: DDMMYY HH:MM:SS
18
- model: opus-5-high # the RESOLVED model of the agent that produced this
19
- # (mini writes sonnet-5-high) — never copied from here
20
- grounding: repo-read | repo-read+scouts # scouts only in deep mode
21
-
22
- ## Restated requirement (analyst's words)
23
- One or two sentences restating the request — restating is what surfaces
24
- misreadings. If the restatement rests on any assumption, tag it and ask.
25
-
26
- ## In-scope requirement parts (X only)
27
-
28
- Each part of the request, reconciled against code. Every "Code reality" cell
29
- carries quote-anchored file:line evidence (`file:line — "verbatim snippet"`,
30
- never paraphrased; a ref with no quote auto-downgrades to UNVERIFIED), OR the
31
- part is tagged ASSUMPTION/UNVERIFIED (and appears below as an open question).
32
- Absence claims (status missing/buildable) instead carry `searched:` — the
33
- concrete globs/greps run. In deep mode EVERY part is verified.
34
-
35
- | # | Requirement part (from request) | Code reality | Evidence (file:line + quote / searched:) | Files/modules | Status | Resolution |
36
- |---|---------------------------------|--------------|------------------------------------------|---------------|--------|------------|
37
- | 1 | "add CSV export to reports" | reports render HTML only | searched: `export*`, `csv`, `download` — no hits | web/reports/x | missing | new export path |
38
- | 2 | "reuse current auth" | auth guard on report routes | web/reports/routes.x:12 — "requireAuth(" | web/reports/x | exists | reuse, no change |
39
-
40
- Status: buildable | exists | conflict | resolved
41
- - buildable: not present, but consistent with the code — safe to build.
42
- - exists: already implemented — flag so the planner doesn't duplicate.
43
- - conflict: request contradicts existing behavior → challenged.
44
- - resolved: a challenged part the user decided on.
45
-
46
- ## Assumptions & Open Questions
47
- Every ambiguity in the request + anything not grounded to code. Each raised as a
48
- recommended-option challenge and resolved (or still open).
49
- - ASSUMPTION (resolved): "export" = download file (recommended) vs email — user
50
- confirmed download.
51
- - UNVERIFIED (open): whether a reports permission gate exists — evidence not found.
52
-
53
- ## Additional context (do not build)
54
- Anchored, non-actionable context pulled from an ADJACENT scope because an in-scope
55
- request part depends on it. Read for understanding; never a task. Each item names
56
- the in-scope part it serves + why. Omit this whole section if none survived.
57
- | Anchor (in-scope #) | From scope | Dependency | Touchpoint to respect | Evidence (file:line) |
58
- |---------------------|-----------|------------|-----------------------|----------------------|
59
- | Part 1 (CSV export) | reporting (Y) | consumes-output | report query already paginates; export must page too | web/reports/query.x:44 |
60
-
61
- ## Alternatives & risks (DEEP mode only — omit in standard)
62
- - Approach A (recommended): stream CSV from the existing query — low blast radius.
63
- - Approach B: precompute + cache — faster reads, adds a cache dependency.
64
- - Risk: export reuses the report query (dependents: 2 schedulers).
65
-
66
- ## Challenges raised & answers
67
- - Part 3 ("admin-only export") looked like scope Z (admin) — user confirmed OUT.
68
-
69
- ## Excluded scopes (recognized, not detailed)
70
- - Recognized Y, Z implied by the request; excluded per scope = X.
71
-
72
- ## Handoff readiness (checklist — all five or handoff_ready is false)
73
- - [ ] all BLOCKING challenges resolved
74
- - [ ] zero open UNVERIFIED on any in-scope part
75
- - [ ] every part has status + evidence-or-resolution
76
- - [ ] spec derived AFTER the user confirmed this report
77
- - [ ] scope_closed: true written into the spec
78
- ```
1
+ # Template — Analyst Report (REQUIREMENT mode — no document)
2
+
3
+ Used when there is NO source document: the user's plain-language request IS the
4
+ requirement, reconciled against the existing code. Human-readable source of
5
+ truth. Written to `<analyzer_dir>/{analysis-name}/report.md` (config
6
+ `analyzer_dir` — the internal artifact dir); it is COPIED to
7
+ `<report_out_dir>/{analysis-name}/report.md` only on the report-only /
8
+ stop-here branch. The old "written to analyst_report/…" wording described the
9
+ copy target as if it were the write target.
10
+
11
+ ```markdown
12
+ # Analysis Report — {analysis-name}
13
+ mode: requirement
14
+ depth: standard | deep
15
+ source: "pasted request" # the user's own words, verbatim
16
+ scope: <X — the requested scope only>
17
+ analyzed_at: DDMMYY HH:MM:SS
18
+ model: opus-5-5-high # the RESOLVED model of the agent that produced this
19
+ # (mini writes sonnet-5-high) — never copied from here
20
+ grounding: repo-read | repo-read+scouts # scouts only in deep mode
21
+
22
+ ## Restated requirement (analyst's words)
23
+ One or two sentences restating the request — restating is what surfaces
24
+ misreadings. If the restatement rests on any assumption, tag it and ask.
25
+
26
+ ## In-scope requirement parts (X only)
27
+
28
+ Each part of the request, reconciled against code. Every "Code reality" cell
29
+ carries quote-anchored file:line evidence (`file:line — "verbatim snippet"`,
30
+ never paraphrased; a ref with no quote auto-downgrades to UNVERIFIED), OR the
31
+ part is tagged ASSUMPTION/UNVERIFIED (and appears below as an open question).
32
+ Absence claims (status missing/buildable) instead carry `searched:` — the
33
+ concrete globs/greps run. In deep mode EVERY part is verified.
34
+
35
+ | # | Requirement part (from request) | Code reality | Evidence (file:line + quote / searched:) | Files/modules | Status | Resolution |
36
+ |---|---------------------------------|--------------|------------------------------------------|---------------|--------|------------|
37
+ | 1 | "add CSV export to reports" | reports render HTML only | searched: `export*`, `csv`, `download` — no hits | web/reports/x | missing | new export path |
38
+ | 2 | "reuse current auth" | auth guard on report routes | web/reports/routes.x:12 — "requireAuth(" | web/reports/x | exists | reuse, no change |
39
+
40
+ Status: buildable | exists | conflict | resolved
41
+ - buildable: not present, but consistent with the code — safe to build.
42
+ - exists: already implemented — flag so the planner doesn't duplicate.
43
+ - conflict: request contradicts existing behavior → challenged.
44
+ - resolved: a challenged part the user decided on.
45
+
46
+ ## Assumptions & Open Questions
47
+ Every ambiguity in the request + anything not grounded to code. Each raised as a
48
+ recommended-option challenge and resolved (or still open).
49
+ - ASSUMPTION (resolved): "export" = download file (recommended) vs email — user
50
+ confirmed download.
51
+ - UNVERIFIED (open): whether a reports permission gate exists — evidence not found.
52
+
53
+ ## Additional context (do not build)
54
+ Anchored, non-actionable context pulled from an ADJACENT scope because an in-scope
55
+ request part depends on it. Read for understanding; never a task. Each item names
56
+ the in-scope part it serves + why. Omit this whole section if none survived.
57
+ | Anchor (in-scope #) | From scope | Dependency | Touchpoint to respect | Evidence (file:line) |
58
+ |---------------------|-----------|------------|-----------------------|----------------------|
59
+ | Part 1 (CSV export) | reporting (Y) | consumes-output | report query already paginates; export must page too | web/reports/query.x:44 |
60
+
61
+ ## Alternatives & risks (DEEP mode only — omit in standard)
62
+ - Approach A (recommended): stream CSV from the existing query — low blast radius.
63
+ - Approach B: precompute + cache — faster reads, adds a cache dependency.
64
+ - Risk: export reuses the report query (dependents: 2 schedulers).
65
+
66
+ ## Challenges raised & answers
67
+ - Part 3 ("admin-only export") looked like scope Z (admin) — user confirmed OUT.
68
+
69
+ ## Excluded scopes (recognized, not detailed)
70
+ - Recognized Y, Z implied by the request; excluded per scope = X.
71
+
72
+ ## Handoff readiness (checklist — all five or handoff_ready is false)
73
+ - [ ] all BLOCKING challenges resolved
74
+ - [ ] zero open UNVERIFIED on any in-scope part
75
+ - [ ] every part has status + evidence-or-resolution
76
+ - [ ] spec derived AFTER the user confirmed this report
77
+ - [ ] scope_closed: true written into the spec
78
+ ```
@@ -1,19 +1,12 @@
1
1
  ---
2
2
  name: orc-analyze-mini
3
3
  description: >
4
- Fast-lane System Analyst for ORC-MINI (Sonnet 5, high effort). Turns a
5
- requirement — a document (PDF by path or pasted) OR a plain-language request —
6
- into a scope-bounded, code-grounded requirement report + derived spec: bounds
7
- the deliverable to exactly the asked scope (other scopes never become tasks),
8
- maps each requirement to real files with quote-anchored file:line evidence —
9
- or marks it an ASSUMPTION and turns it into a question — and challenges the
10
- user with recommended options. Use for "/orc-analyze-mini", "quickly analyze
11
- this doc", "fast doc analysis", "quick requirement check", "fast requirement
12
- analysis", or when orc-mini meets a document or an ambiguous requirement.
13
- Distinct from /orc-analyze: ALWAYS single-pass — NO deep mode, NO scouts —
14
- trading depth for speed and tokens; switch to /orc-analyze (deep) when you
15
- need a wider code sweep, verify-every-claim, or alternatives with trade-offs.
16
- The orchestrator dispatches this to a subagent — it never analyzes itself.
4
+ Fast-lane System Analyst for ORC-MINI (Sonnet 5, high effort). Use for
5
+ "/orc-analyze-mini", "quickly analyze this doc", "fast doc analysis", "quick
6
+ requirement check", "fast requirement analysis", or when orc-mini meets a
7
+ document or an ambiguous requirement. Writes a scope-bounded requirement
8
+ report with file:line evidence. ALWAYS single-pass — NO deep mode, NO scouts;
9
+ use /orc-analyze for depth.
17
10
  ---
18
11
 
19
12
  # ORC-ANALYZE-MINI
@@ -39,48 +32,37 @@ for the formats; this skill does not duplicate them.
39
32
  silently dropped.
40
33
  - **No deep mode, no scouts.** Always single-pass.
41
34
  - **Concrete escalation thresholds** (recommend the full `/orc-analyze`, Opus
42
- 4.8 high, and let the user choose — the boundary is not self-assessed vibes):
35
+ 5.5 high, and let the user choose — the boundary is not self-assessed vibes):
43
36
  source doc > ~10 pages, OR > 12 in-scope requirements, OR > 3 conflict rows,
44
37
  OR audit mode with > 5 stale-premise rows.
45
38
  - **Model:** Sonnet 5, high effort.
46
39
 
47
40
  ## What's identical
48
41
 
42
+ The full analyst's **hard rules 2, 3, 3a, 4a, 5 and 6** apply unchanged
43
+ (`../orc-analyze/SKILL.md` §Hard rules): quote-anchored evidence-or-mark with
44
+ `searched:` on absence claims, the read ladder (`../_shared/read-ladder.md`),
45
+ recommended-option challenges, two perimeters with the **Additional context (do
46
+ not build)** section, and a spec derived from the confirmed report (with the Evidence column and the
47
+ Assumptions & Open Questions section). Anchored context is self-read (no
48
+ scouts). Also the same:
49
+
49
50
  - **Doc-optional intake:** auto-detect + confirm mode — prose / audit
50
- (documents) or **requirement** (NO doc; the user's request is the source of
51
- truth, reconciled against code).
52
- - **Evidence-or-mark, quote-anchored:** every code claim / interpretation is
53
- grounded with `file:line — "verbatim snippet"` (a ref with no quote
54
- auto-downgrades to `UNVERIFIED`), OR tagged `ASSUMPTION`/`UNVERIFIED` and
55
- turned into a question — never a silent guess. **Absence claims**
56
- (missing/buildable) carry `searched:` — the concrete globs/greps run.
57
- - **The read ladder:** locate → outline → range → full, escalating only as far as
58
- the question needs (`../_shared/read-ladder.md`). Trimmed depth is not a lower
59
- evidence floor — it is fewer wasted full reads reaching the same anchors.
60
- - **Recommended-option challenges:** each challenge is a 2–3 option set with one
61
- flagged recommended option + reason (blocking one at a time, advisory batched).
62
- - Two perimeters: the deliverable stays scope X (Y/Z never become tasks), but
63
- anchored, non-actionable adjacent context is gathered when an in-scope item
64
- depends on it — touchpoint-bounded, self-read (no scouts), each item anchored to
65
- the requirement it serves + labeled "do not build". Same **Additional context
66
- (do not build)** section in report + spec. Unanchored context is dropped.
67
- - Two artifacts, spec derived from the confirmed report, same folder
68
- `orc/analyzer/{analysis-name}/` (internal; copied out only on report-only),
69
- including the Evidence column and Assumptions & Open Questions section. The
70
- spec is stamped with `git_head` + `dirty` for plan-time staleness detection.
51
+ (documents) or **requirement** (NO doc; the request is the source of truth).
52
+ - Same folder `orc/analyzer/{analysis-name}/` (internal; copied out only on
53
+ report-only). The spec is stamped with `git_head` + `dirty` for plan-time
54
+ staleness detection.
71
55
  - Same branch: report-only, or take into build (hand both files to orc-mini,
72
- which continues with the mini planner) — orc-mini runs the same evidence
73
- spot-check + derivation lint gates as the full lane before building.
56
+ which continues with the mini planner and runs the same evidence spot-check +
57
+ derivation lint gates).
74
58
 
75
59
  ## Behavior trace (always on)
76
60
 
77
- `../_shared/phases/trace.md` (`core`, at run start; `orc lane phases` names
78
- the file and the layers). Lane token `analyze`, tier **Single-dispatch** —
79
- exactly ONE end-of-run packet, dispatched solo before `.current` is deleted.
80
- At run start write `log_dir/.current` = `run-analyze-<slug>-<DDMMYY>-<HHMMSS>.txt` AND
81
- `touch the trace file` of that name in the SAME step.
82
- Nothing else about the protocol is restated here; a phase that ends with
83
- `zero new trace lines is a protocol violation`.
61
+ `../_shared/phases/trace.md` (`core`, at run start; `orc lane phases orc-analyze-mini --json` →
62
+ `trace_grammar` gives the verbs). Lane token `analyze`, tier
63
+ **Single-dispatch**. At run start write `log_dir/.current` =
64
+ `run-analyze-<slug>-<DDMMYY>-<HHMMSS>.txt` AND `touch the trace file` of that name
65
+ in the SAME step. A phase that ends with `zero new trace lines is a protocol violation`.
84
66
 
85
67
  ## Workflow checkpoint (gate before deriving the spec)
86
68
 
@@ -108,29 +90,12 @@ survived. Return exactly:
108
90
 
109
91
  Never build or spawn.
110
92
 
111
- ## Config
112
-
113
- Resolve with `orc lane config orc-analyze-mini --json` and obey `effective`. Never merge
114
- `.claude/orc.config.yaml` yourself, and never re-derive a precedence. Exit ≠ 0 →
115
- say so and use `../_shared/config-precedence.md`'s documented defaults, out
116
- loud. Nothing this lane reads is contested, gated or a stop, so it owes no
117
- preflight line and has no gate to honour.
118
-
119
- ## Calls
120
-
121
- **ONE catalogue, and it is not you:** `orc lane calls orc-analyze-mini --json` names every
122
- CLI call this lane makes, each with its exit-code contract, its cost, when to run
123
- it, and what an EMPTY answer means. Never invent a spelling, never re-word an
124
- exit code, and never re-derive a state word — the CLI's state words are the only
125
- state words, and **an exit code is an ANSWER wherever that contract says so, not
126
- a failure**. A call the answer does not name is a call this lane does not make.
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.
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[]`.
93
+ ## Lane contract (`../_shared/lane-contract.md` — read it ONLY when a call exits ≠ 0)
94
+
95
+ - **Calls:** `orc lane calls orc-analyze-mini --json` names every call and its exit codes.
96
+ **An exit code is an ANSWER where it says so, not a failure.** Make no other call.
97
+ - **Config:** `orc lane config orc-analyze-mini --json`. Obey `effective`. Never merge
98
+ `.claude/orc.config.yaml` yourself (`../_shared/config-precedence.md`). Nothing
99
+ here is contested, gated or a stop: no preflight line, no gate to honour.
100
+ - **Rules:** `orc rules slice --lane orc-analyze-mini --json` is the ONLY assembler
101
+ (`../_shared/phases/rules.md`). Its `line` prints VERBATIM at preflight.