@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,45 +1,34 @@
1
- ---
2
- name: orc-testgen
3
- description: >
4
- Worker subskill for ORC's opt-in Phase 6.5 (Test Authoring). Fires when the user
5
- opts into writing tests ("write test cases", "generate tests", "author test
6
- cases for these changes"). Writes test cases as a deliverable — automated test
7
- files, a manual TEST-PLAN.md, and (for HTTP/API backends) a Postman-importable
8
- curl bundle. It NEVER runs tests and NEVER gates the ship; the user tests
9
- manually. ALWAYS invoked as a spawned subagent by the orchestrator. Not for
10
- direct user invocation.
11
- ---
12
-
13
- # orc-testgen
14
-
15
- One entry point: spawned via the Task tool with `subagent.md` framing + the
16
- slice, which points to `core.md` — the AUTHORITATIVE procedure + return contract;
17
- the summary below orients.
18
-
19
- ## What the worker does (summary)
20
-
21
- 1. Take the slice: changed surface (`actual_files`), the intent-spec's
22
- definition-of-done (acceptance criteria), touched flows, constraints, detected stack.
23
- 2. Write **automated test files** in the project's framework, covering the changed surface.
24
- 3. Write a manual **TEST-PLAN.md** with two separated sections — "run the automated
25
- suite" (exact CLI command) and "exercise the real running service" (manual/curl steps).
26
- 4. For an HTTP/API backend, write a Postman-importable **test-cases.http** curl bundle
27
- (env-var placeholders — never real secrets).
28
- 5. Run NOTHING. Advisory `notes[]` may flag a case the code likely won't satisfy.
29
-
30
- The manual deliverables (TEST-PLAN.md + test-cases.http) are pinned to
31
- **`test-generator/<change-slug>/` at the project root** — a visible user
32
- deliverable, never inside `.claude/` or the run folder (see `core.md`).
33
-
34
- **Validation checkpoint before returning:** confirm each promised deliverable
35
- actually exists on disk **at the pinned path** (test files in the project's
36
- conventions; TEST-PLAN.md and — when the stack exposes HTTP — test-cases.http
37
- under `test-generator/<change-slug>/`) before emitting the return contract in `core.md`.
38
-
39
- Fixed model: `orc-test-author-opus-5-med` (Opus 5 medium — authoring good
40
- integration tests is a judgment task). Opt-in: the orchestrator dispatches this
41
- only when the user accepts the offer, defaulted from `config.generate_tests`. The
42
- full lane runs it as Phase 6.5 (after Verify, confirmed at intake); **orc-mini
43
- also offers it** as an end-of-run ask (only on a GREEN smoke gate). Either lane,
44
- it never runs tests and never gates the ship. orc-mini still skips full
45
- review/verify.
1
+ ---
2
+ name: orc-testgen
3
+ description: >
4
+ Worker subskill for ORC's opt-in Phase 6.5 (Test Authoring). Fires when the user
5
+ opts into writing tests ("write test cases", "generate tests", "author test
6
+ cases for these changes"). Writes test cases as a deliverable — automated test
7
+ files, a manual TEST-PLAN.md, and (for HTTP/API backends) a Postman-importable
8
+ curl bundle. It NEVER runs tests and NEVER gates the ship; the user tests
9
+ manually. ALWAYS invoked as a spawned subagent by the orchestrator. Not for
10
+ direct user invocation.
11
+ ---
12
+
13
+ # orc-testgen
14
+
15
+ A pointer. The orchestrator spawns `orc-test-author-opus-5-med` via the Task
16
+ tool, prepending `subagent.md` framing + the input slice. It WRITES test cases;
17
+ it never runs them and never gates the ship.
18
+
19
+ - **Input slice** (the orchestrator builds it): `core.md`.
20
+ - **Procedure + return contract** (the ONE source): the agent file,
21
+ `.claude/agents/orc-test-author-opus-5-med.md`. The manual deliverables
22
+ (TEST-PLAN.md + test-cases.http) are pinned to
23
+ **`test-generator/<change-slug>/` at the project root** — a visible user
24
+ deliverable, never inside `.claude/` or the run folder.
25
+ - **Validator** (the caller checks every return against it):
26
+ `../../../_shared/return-validation.md`.
27
+
28
+ Fixed model: `orc-test-author-opus-5-med` (Opus 5.5 medium — authoring good
29
+ integration tests is a judgment task). Opt-in: the orchestrator dispatches this
30
+ only when the user accepts the offer, defaulted from `config.generate_tests`. The
31
+ full lane runs it as Phase 6.5 (after Verify, confirmed at intake); **orc-mini
32
+ also offers it** as an end-of-run ask (only on a GREEN smoke gate). Either lane,
33
+ it never runs tests and never gates the ship. orc-mini still skips full
34
+ review/verify.
@@ -1,59 +1,20 @@
1
- # orc-testgen — Core (mode-neutral)
2
-
3
- A procedure specification: inputs, steps, outputs. Executed by a spawned
4
- `orc-test-author-opus-5-med` subagent; the orchestrator never runs this
5
- itself. **Authoring only — RUN NOTHING, GATE NOTHING.** The user tests manually.
6
-
7
- ## Input slice (you receive exactly this)
8
-
9
- - changed_files[] — the surface the change touched (from the run's actual_files)
10
- - acceptance_criteria[] — the intent-spec's definition-of-done (the "new behaviour")
11
- - touched_flows[] — user journeys through the changed code (may be empty)
12
- - constraints[] — intent-spec hard rules
13
- - stack — {language, test_framework, is_http_api}; detect if absent
14
- - test_types[] — subset of {new_behaviour, flow, change, regression}; default all
15
- - output_conventions — where tests live in this repo
16
-
17
- ## Procedure
18
-
19
- 1. Detect stack: test framework + conventions, and whether the project exposes
20
- HTTP endpoints (→ `is_http_api`).
21
- 2. Derive a **test matrix** from changed_files + acceptance_criteria + flows —
22
- one row per case {id, type, target, asserts, external_deps}. Bound regression
23
- to the diff's blast radius; never test the whole app.
24
- 3. Author **automated test files** in the project's framework/conventions where
25
- feasible. Match existing test style. These stay in the project's own test
26
- conventions (`output_conventions`) — do NOT move them.
27
- 4. **Pin the manual-QA output folder.** The two manual deliverables below are
28
- USER deliverables, not run state — write BOTH to
29
- **`test-generator/<change-slug>/` at the PROJECT ROOT** (create the folder if
30
- absent). `<change-slug>` = the run's existing kebab-case run-folder slug (e.g.
31
- `post-users`). NEVER write them inside `.claude/`, and NEVER inside the run
32
- folder — a hidden path is invisible for self-QA.
33
- 5. Write **`test-generator/<change-slug>/TEST-PLAN.md`** (manual cases: scenario,
34
- setup, steps, expected) with two CLEARLY SEPARATED sections:
35
- - "Run the automated test suite" — the exact CLI command(s), pasted.
36
- - "Exercise the real running service" — manual steps / curl.
37
- 6. If `is_http_api`: write **`test-generator/<change-slug>/test-cases.http`** —
38
- one Postman-importable `curl` per endpoint/flow (env-var placeholders for base
39
- URL + auth; NEVER real secrets). Reference it from TEST-PLAN.md.
40
- 7. Advisory only: note (do not gate) any case the code likely won't satisfy.
41
-
42
- ## Return contract (emit EXACTLY this; the caller validates)
43
-
44
- - test_matrix[] — the rows above (or counts by type)
45
- - files_authored[] — automated test files created/updated
46
- - test_plan_path — path to TEST-PLAN.md; MUST be inside
47
- `test-generator/<change-slug>/` (any other location is
48
- a malformed return)
49
- - curl_bundle_path — path to test-cases.http (also inside
50
- `test-generator/<change-slug>/`), or null (non-API projects)
51
- - run_command — exact CLI command(s) to run the authored tests
52
- - notes[] — advisory gaps noticed while authoring (non-blocking); else []
53
- - actual_model — model id quoted VERBATIM from your system prompt ("The
54
- exact model ID is …"); NEVER inferred; `unknown` if absent
55
- - actual_effort — the value of $CLAUDE_EFFORT (read via Bash)
56
- - failure_reason — required if you could not author; else null
57
-
58
- Malformed returns are treated as failure by the caller. Never run tests; never
59
- spawn subagents.
1
+ # orc-testgen — Core (the input slice)
2
+
3
+ The INPUT SLICE the orchestrator builds for ONE `orc-test-author-opus-5-med`
4
+ dispatch. The procedure and the return contract live in ONE place: the agent
5
+ file, `.claude/agents/orc-test-author-opus-5-med.md`. The orchestrator never
6
+ runs this itself. **Authoring only — RUN NOTHING, GATE NOTHING.** The user tests manually.
7
+
8
+ ## Input slice (you receive exactly this)
9
+
10
+ - changed_files[] — the surface the change touched (from the run's actual_files)
11
+ - acceptance_criteria[] — the intent-spec's definition-of-done (the "new behaviour")
12
+ - touched_flows[] — user journeys through the changed code (may be empty)
13
+ - constraints[] — intent-spec hard rules
14
+ - stack — {language, test_framework, is_http_api}; detect if absent
15
+ - test_types[] — subset of {new_behaviour, flow, change, regression}; default all
16
+ - output_conventions — where tests live in this repo
17
+
18
+ The manual deliverables go to `test-generator/<change-slug>/` at the PROJECT
19
+ ROOT (`<change-slug>` = the run's kebab-case run-folder slug). Malformed returns
20
+ are treated as failure by the caller.
@@ -1,7 +1,7 @@
1
- # orc-testgen — Subagent wrapper (orchestrator prepends at spawn)
2
-
3
- You are an isolated test-authoring worker. You WRITE test cases from the slice
4
- below; you never run them, never fix code, never gate the ship. Make manual
5
- testing easy for the user. Emit the return structure from core.md and STOP.
6
-
7
- [Orchestrator: append the input slice here at spawn time.]
1
+ # orc-testgen — Subagent wrapper (orchestrator prepends at spawn)
2
+
3
+ You are an isolated test-authoring worker. You WRITE test cases from the slice
4
+ below; you never run them, never fix code, never gate the ship. Make manual
5
+ testing easy for the user. Emit the return structure your agent file defines and STOP.
6
+
7
+ [Orchestrator: append the input slice here at spawn time.]
@@ -1,60 +1,56 @@
1
- ---
2
- name: orc-advisor
3
- description: >
4
- Pre-analysis Advisor for the ORC ultra lane. Runs ONCE at ultra Phase U0
5
- (after intake, before the analyst) to produce a code-grounded advisory
6
- brief: domain risks, alternatives, a mandatory security-risk section, a
7
- request-specific rubric the ultra judges score against, open questions
8
- (relayed to the user in one batch), and the seed of the run's assumption
9
- ledger. Dispatched only from /orc-ultra — no slash command of its own, never
10
- in orc or orc-mini. The orchestrator dispatches the advisor subagent — it
11
- never advises itself.
12
- ---
13
-
14
- # ORC-ADVISOR (ultra-lane advisory brief)
15
-
16
- Ultra-complex tasks fail on wrong interpretation, silent assumptions, and
17
- generic quality bars. The Advisor front-loads the fix: one max-effort pass
18
- that frames the request against the REAL codebase and hands every downstream
19
- role — analyst, planner, judges, executors — the same request-specific brief.
20
-
21
- Ultra lane ONLY. There is no `/orc-advisor` command; the orchestrator
22
- dispatches `orc-advisor-opus-5-xhigh` at Phase U0 of an `/orc-ultra` run.
23
- Cost is accepted by definition of the lane — no consent prompt.
24
-
25
- ## Hard rules
26
-
27
- 1. **The orchestrator never advises — it spawns.** Dispatch
28
- `orc-advisor-opus-5-xhigh` with the slice below; the advisor writes the
29
- brief; the orchestrator relays and injects.
30
- 2. **The advisor is read-only on the project** (Read/Glob/Grep + Bash for
31
- git introspection). It never edits code, never spawns subagents.
32
- 3. **One dispatch per run.** The advisor is never re-dispatched for
33
- revisions — post-brief quality is the judges' job.
34
- 4. **The brief is injected LITERALLY** (never a file pointer) into the
35
- analyst slice, the planner slice, all three judge slices, and — as
36
- advisory notes — the executor slices.
37
- 5. **The security section may not be skipped.** "No security surface" is a
38
- legitimate conclusion but must be stated with reasoning.
39
-
40
- ## Dispatch slice (orchestrator → advisor)
41
-
42
- - The user's request verbatim (plus the doc path when one exists).
43
- - The run-folder path for `advisory-brief.md`.
44
- - Detected stack summary (from intake — never re-detected).
45
-
46
- ## Brief contents (see the agent file for the full section spec)
47
-
48
- Risks & pitfalls (anchored) · alternatives + trade-offs · security risks
49
- (mandatory) · the three-part RUBRIC (correct analysis / correct plan /
50
- faithful implementation) · open questions with proposed defaults · seed
51
- assumption-ledger entries.
52
-
53
- ## Return contract
54
-
55
- `brief_path`, `open_questions[]`, `assumptions[]`, `actual_model` (verbatim
56
- from the agent's system-prompt model-id line), `actual_effort`
57
- ($CLAUDE_EFFORT). The orchestrator validates the return, emits the `ADVISE`
58
- trace line when logging, relays the open questions to the user in ONE batched
59
- round, folds the answers into the intent-spec, and records unanswered
60
- defaults as UNCONFIRMED in the assumption ledger.
1
+ ---
2
+ name: orc-advisor
3
+ description: >
4
+ Internal to /orc-ultra: the pre-analysis Advisor. Runs ONCE at Phase U0 and
5
+ writes the advisory brief, the security-risk section and the rubric the ultra
6
+ judges score against. No slash command of its own.
7
+ disable-model-invocation: true
8
+ ---
9
+
10
+ # ORC-ADVISOR (ultra-lane advisory brief)
11
+
12
+ Ultra-complex tasks fail on wrong interpretation, silent assumptions, and
13
+ generic quality bars. The Advisor front-loads the fix: one max-effort pass
14
+ that frames the request against the REAL codebase and hands every downstream
15
+ role — analyst, planner, judges, executors — the same request-specific brief.
16
+
17
+ Ultra lane ONLY. There is no `/orc-advisor` command; the orchestrator
18
+ dispatches `orc-advisor-opus-5-xhigh` at Phase U0 of an `/orc-ultra` run.
19
+ Cost is accepted by definition of the lane — no consent prompt.
20
+
21
+ ## Hard rules
22
+
23
+ 1. **The orchestrator never advises — it spawns.** Dispatch
24
+ `orc-advisor-opus-5-xhigh` with the slice below; the advisor writes the
25
+ brief; the orchestrator relays and injects.
26
+ 2. **The advisor is read-only on the project** (Read/Glob/Grep + Bash for
27
+ git introspection). It never edits code, never spawns subagents.
28
+ 3. **One dispatch per run.** The advisor is never re-dispatched for
29
+ revisions — post-brief quality is the judges' job.
30
+ 4. **The brief is injected LITERALLY** (never a file pointer) into the
31
+ analyst slice, the planner slice, all three judge slices, and — as
32
+ advisory notes — the executor slices.
33
+ 5. **The security section may not be skipped.** "No security surface" is a
34
+ legitimate conclusion but must be stated with reasoning.
35
+
36
+ ## Dispatch slice (orchestrator → advisor)
37
+
38
+ - The user's request verbatim (plus the doc path when one exists).
39
+ - The run-folder path for `advisory-brief.md`.
40
+ - Detected stack summary (from intake — never re-detected).
41
+
42
+ ## Brief contents (see the agent file for the full section spec)
43
+
44
+ Risks & pitfalls (anchored) · alternatives + trade-offs · security risks
45
+ (mandatory) · the three-part RUBRIC (correct analysis / correct plan /
46
+ faithful implementation) · open questions with proposed defaults · seed
47
+ assumption-ledger entries.
48
+
49
+ ## Return contract
50
+
51
+ `brief_path`, `open_questions[]`, `assumptions[]`, `actual_model` (verbatim
52
+ from the agent's system-prompt model-id line), `actual_effort`
53
+ ($CLAUDE_EFFORT). The orchestrator validates the return, emits the `ADVISE`
54
+ trace line when logging, relays the open questions to the user in ONE batched
55
+ round, folds the answers into the intent-spec, and records unanswered
56
+ defaults as UNCONFIRMED in the assumption ledger.
@@ -2,22 +2,17 @@
2
2
  name: orc-analyze
3
3
  description: >
4
4
  System Analyst for ORC. Use for "/orc-analyze", "analyze this doc for scope
5
- X", or "analyze this requirement against the code" — turning a requirement (a
6
- document, PDF by path or pasted, OR a plain-language request) into a precise,
7
- code-grounded requirement set BEFORE any planning. Bounds the deliverable to
8
- exactly the asked scope, pulls related adjacent scopes in only as anchored
9
- "do not build" context, maps each requirement to real files with
10
- quote-anchored file:line evidence, and challenges the user with recommended
11
- options. Opt-in DEEP mode adds a scout-driven code sweep, verify-every-claim,
12
- and alternatives + risks. Also auto-triggers inside /orc on a doc or
13
- ambiguous requirement. The orchestrator dispatches this to a subagent — it
14
- never analyzes itself.
5
+ X", or "analyze this requirement against the code". Turns a document (PDF by
6
+ path or pasted) or a plain-language request into a scope-bounded,
7
+ code-grounded requirement set with quote-anchored file:line evidence BEFORE
8
+ any planning, and challenges the user with recommended options. Opt-in DEEP
9
+ mode adds a scout-driven code sweep. Also auto-triggers inside /orc on a doc.
15
10
  ---
16
11
 
17
12
  # ORC-ANALYZE (System Analyst)
18
13
 
19
14
  The orchestrator stays on top and **dispatches a System Analyst subagent
20
- (Opus 5, high)** to do this work — it never analyzes itself, keeping its own
15
+ (Opus 5.5, high)** to do this work — it never analyzes itself, keeping its own
21
16
  context lean. This skill defines what that subagent does, how the orchestrator
22
17
  runs the standard/deep gate + scout dispatch, and how it relays challenges and
23
18
  branches on the result.
@@ -33,7 +28,7 @@ the user meant.
33
28
  ## Hard rules
34
29
 
35
30
  1. **Dispatched, not self-run.** The orchestrator coordinates; the Analyst
36
- subagent (Opus 5 high) reads the source, reads the code, and reconciles.
31
+ subagent (Opus 5.5 high) reads the source, reads the code, and reconciles.
37
32
  2. **Evidence-or-mark (never hallucinate) — quote-anchored.** Every
38
33
  requirement interpretation and code claim carries `file:line — "verbatim
39
34
  snippet"` evidence (≤1 line, quoted not paraphrased; no quote →
@@ -79,24 +74,20 @@ the user meant.
79
74
 
80
75
  ## Behavior trace (always on)
81
76
 
82
- `../_shared/phases/trace.md` (`core`, at run start; `orc lane phases` names
83
- the file and the layers). Lane token `analyze`, tier **Single-dispatch** —
84
- exactly ONE end-of-run packet, dispatched solo before `.current` is deleted.
85
- At run start write `log_dir/.current` = `run-analyze-<slug>-<DDMMYY>-<HHMMSS>.txt` AND
86
- `touch the trace file` of that name in the SAME step.
87
- Nothing else about the protocol is restated here; a phase that ends with
88
- `zero new trace lines is a protocol violation`.
77
+ `../_shared/phases/trace.md` (`core`, at run start; `orc lane phases orc-analyze --json` →
78
+ `trace_grammar` gives the verbs). Lane token `analyze`, tier
79
+ **Single-dispatch**. At run start write `log_dir/.current` =
80
+ `run-analyze-<slug>-<DDMMYY>-<HHMMSS>.txt` AND `touch the trace file` of that name
81
+ in the SAME step. A phase that ends with `zero new trace lines is a protocol violation`.
89
82
 
90
83
  `context-combiner` is a PHASE of this run, not a lane: its `DISPATCH`/`RETURN`,
91
84
  its Phase D verdicts and its conservation-gate result fold into THIS packet.
92
85
 
93
86
  ## Phases
94
87
 
95
- `orc lane phases orc-analyze --json` is this lane's pipeline: the ordered list, where
96
- each phase lives, and how much of it to read. **The CLI owns the order** — never
97
- derive it from the headings below, and never renumber or rename one without the
98
- manifest, because a `read: section` pointer names a HEADING and a renamed heading
99
- is a pointer into nothing.
88
+ `orc lane phases orc-analyze --json` is this lane's pipeline. **The CLI owns the order**:
89
+ never derive it from the headings below, and never rename or renumber one
90
+ without the manifest (`../_shared/lane-contract.md` §Phases).
100
91
 
101
92
  ## Phase A — Ingest & detect source mode
102
93
 
@@ -133,12 +124,11 @@ offer wording, the auto-consume back here: `references/thin-input.md`.
133
124
 
134
125
  ## Phase A′ — Standard vs Deep gate (default STANDARD)
135
126
 
136
- Before reconciliation, offer the depth choice (config `default_analysis_depth`
137
- presets the default; the run still confirms): deep = wider sweep, verify every
138
- claim, more questions, alternatives with trade-offs, noticeably more tokens;
139
- standard = faster, verifies the stated floor (hard rule 4). Mention the
140
- zero-token default switch `orc config set default_analysis_depth deep`. Deep
141
- requires explicit consent — never auto-escalates — and is **two-pass with
127
+ Before reconciliation, offer the depth choice (H `any.analysis.depth`). Config
128
+ `default_analysis_depth` presets it; mention the free switch `orc config set
129
+ default_analysis_depth deep`. Deep = wider sweep, verify every claim, more
130
+ questions, alternatives, more tokens; standard = faster, the hard rule 4 floor.
131
+ Deep needs explicit consent EVERY run (never auto) and is **two-pass with
142
132
  scouts**: load `references/deep-mode.md`. Standard is single-pass.
143
133
 
144
134
  ## Phase B — Bound scope
@@ -216,44 +206,18 @@ another RELATED doc (multi-analyze loop → combiner once 2+ related analyses
216
206
  exist). Menu rules, relatedness gate, combiner handling:
217
207
  `references/branching.md`.
218
208
 
219
- ## Mini variant
220
-
221
- For the fast lane, `orc-analyze-mini` (Sonnet 5 high) does a shallower version
222
- of the same flow: doc-optional intake, the same evidence-or-mark + floor (a)+(b)
223
- + triage rules — but **no deep mode and no scouts** (always single-pass), and
224
- concrete escalation thresholds to the full analyst. Used by orc-mini. Same
225
- artifacts, same output contract; trimmed depth. See that skill.
226
-
227
- ## Config
228
-
229
- **ONE resolver, and it is not you:** `orc lane config orc-analyze --json`. Obey
230
- `effective`, print every line in `announce[]` VERBATIM at preflight, and honour
231
- `stops[]` before wave 1. Never re-derive a value, a precedence or an inertness
232
- from `.claude/orc.config.yaml` — a key this lane does not read is not in the
233
- answer, and a key another key shadows comes back already marked. Exit ≠ 0 → say
234
- the CLI is unavailable and fall back to `../_shared/config-precedence.md`'s
235
- documented defaults, out loud. Priorities and families:
236
- `../_shared/config-precedence.md`.
237
-
238
- ## Calls
239
-
240
- **ONE catalogue, and it is not you:** `orc lane calls orc-analyze --json` names every
241
- CLI call this lane makes, each with its exit-code contract, its cost, when to run
242
- it, and what an EMPTY answer means. Never invent a spelling, never re-word an
243
- exit code, and never re-derive a state word — the CLI's state words are the only
244
- state words, and **an exit code is an ANSWER wherever that contract says so, not
245
- a failure**. A call the answer does not name is a call this lane does not make.
246
- Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
247
- command you are about to run, out loud, before running it.
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[]`.
209
+ ## Lane contract (`../_shared/lane-contract.md` — read it ONLY when a call exits ≠ 0)
210
+
211
+ - **Calls:** `orc lane calls orc-analyze --json` names every call and its exit codes.
212
+ **An exit code is an ANSWER where it says so, not a failure.** Make no other call.
213
+ - **Config:** `orc lane config orc-analyze --json`. Obey `effective`, print every line
214
+ in `announce[]` VERBATIM at preflight, and honour `stops[]` before wave 1.
215
+ Never merge `.claude/orc.config.yaml` yourself (`../_shared/config-precedence.md`).
216
+ - **Habits:** `habits{}` in that answer → `../_shared/habits.md`; else ignore `(H …)`.
217
+ - **Rules:** `orc rules slice --lane orc-analyze --json` is the ONLY assembler
218
+ (`../_shared/phases/rules.md`). Its `line` prints VERBATIM at preflight.
219
+
256
220
  ## Waiting mid-run (`/orc-wait`)
257
221
 
258
222
  Canonical: `../_shared/wait.md`. **`a lane that waits without a hand-back` has broken this contract.**
259
- Checkpoint **full** · safe point **after the analyst returns**. `soft` FORCES that checkpoint and does NOT stop if the write fails; `hard` skips it and can lose an in-flight return. Never begin a wait between a dispatch and its validated return, or before the smoke gate has reported.
223
+ Checkpoint **full** · safe point **after the analyst returns**.
@@ -1,42 +1,42 @@
1
- # Example — Annotated System Analysis (dry run)
2
-
3
- A: = analyst (Opus 5 high) · U: = user. Nothing real. Bounds the DELIVERABLE to
4
- the asked scope; every claim is grounded with file:line evidence OR marked an
5
- assumption and turned into a question. The orchestrator dispatches this — it never
6
- analyzes itself.
7
-
8
- U: /orc-analyze security-audit.pdf — implement the AUTH findings only
9
-
10
- ## Mode + scope
11
- A: [reads the PDF] Mode: AUDIT (structured findings sheet). Scope X = auth.
12
- Payments and logging findings exist in the doc — recognized only to EXCLUDE them
13
- (they never become tasks). Depth gate: standard or deep? (default standard)
14
- U: standard
15
-
16
- ## Ground against real code (evidence-or-mark)
17
- A: Finding A1 "login lacks rate-limit" → CONFIRMED, auth/login.py:33 has no limiter.
18
- Finding A2 "JWT uses HS256, should be RS256" → auth/token.py:12 uses HS256 ✓ real.
19
- Finding A3 "missing UUID check on /reset" → ⚠ STALE: reset.py:20 renamed that field
20
- to `token_id` and DOES validate it. Marking A3 UNVERIFIED → question.
21
-
22
- ## Challenge (recommended options, one at a time)
23
- A: A3 looks stale against the code. Options:
24
- (a) Drop A3 — code already validates (RECOMMENDED: evidence at reset.py:20).
25
- (b) Keep A3 — you know of a gap the diff doesn't show.
26
- U: (a) drop it
27
-
28
- ## Adjacent context (anchored, do-not-build)
29
- A: A2's RS256 switch depends on the key-loading in config/keys.py — captured as
30
- "Additional context (do not build)", anchored to A2, so the build respects it
31
- without treating it as a task.
32
-
33
- ## Artifacts + branch
34
- A: Writes orc/analyzer/auth-audit/report.md (Evidence column + Assumptions & Open
35
- Questions) + derived requirement-spec.md. handoff_ready: true.
36
- Keep as report, or take into build?
37
- U: take into build → hands both files to /orc, which plans from the spec (no
38
- re-questioning of scope — it's already settled).
39
-
40
- ## (Phase F) Another related doc?
41
- A: You could analyze a related doc in this same scope; once 2+ related analyses
42
- exist I'll offer context-combiner to merge them into one spec. [not needed here]
1
+ # Example — Annotated System Analysis (dry run)
2
+
3
+ A: = analyst (Opus 5.5 high) · U: = user. Nothing real. Bounds the DELIVERABLE to
4
+ the asked scope; every claim is grounded with file:line evidence OR marked an
5
+ assumption and turned into a question. The orchestrator dispatches this — it never
6
+ analyzes itself.
7
+
8
+ U: /orc-analyze security-audit.pdf — implement the AUTH findings only
9
+
10
+ ## Mode + scope
11
+ A: [reads the PDF] Mode: AUDIT (structured findings sheet). Scope X = auth.
12
+ Payments and logging findings exist in the doc — recognized only to EXCLUDE them
13
+ (they never become tasks). Depth gate: standard or deep? (default standard)
14
+ U: standard
15
+
16
+ ## Ground against real code (evidence-or-mark)
17
+ A: Finding A1 "login lacks rate-limit" → CONFIRMED, auth/login.py:33 has no limiter.
18
+ Finding A2 "JWT uses HS256, should be RS256" → auth/token.py:12 uses HS256 ✓ real.
19
+ Finding A3 "missing UUID check on /reset" → ⚠ STALE: reset.py:20 renamed that field
20
+ to `token_id` and DOES validate it. Marking A3 UNVERIFIED → question.
21
+
22
+ ## Challenge (recommended options, one at a time)
23
+ A: A3 looks stale against the code. Options:
24
+ (a) Drop A3 — code already validates (RECOMMENDED: evidence at reset.py:20).
25
+ (b) Keep A3 — you know of a gap the diff doesn't show.
26
+ U: (a) drop it
27
+
28
+ ## Adjacent context (anchored, do-not-build)
29
+ A: A2's RS256 switch depends on the key-loading in config/keys.py — captured as
30
+ "Additional context (do not build)", anchored to A2, so the build respects it
31
+ without treating it as a task.
32
+
33
+ ## Artifacts + branch
34
+ A: Writes orc/analyzer/auth-audit/report.md (Evidence column + Assumptions & Open
35
+ Questions) + derived requirement-spec.md. handoff_ready: true.
36
+ Keep as report, or take into build?
37
+ U: take into build → hands both files to /orc, which plans from the spec (no
38
+ re-questioning of scope — it's already settled).
39
+
40
+ ## (Phase F) Another related doc?
41
+ A: You could analyze a related doc in this same scope; once 2+ related analyses
42
+ exist I'll offer context-combiner to merge them into one spec. [not needed here]