@azure-id/orc 0.55.0

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 (449) hide show
  1. package/CHANGELOG.md +2017 -0
  2. package/README-id.md +521 -0
  3. package/README.md +485 -0
  4. package/bin/build-agents.js +86 -0
  5. package/bin/cli.js +29050 -0
  6. package/bin/mockrun-catalog.js +267 -0
  7. package/bin/onboarding-content.js +172 -0
  8. package/bin/pricing.json +200 -0
  9. package/bin/providers.json +437 -0
  10. package/bin/ui.js +95 -0
  11. package/bin/verify-contracts.js +3277 -0
  12. package/bin/verify-package.js +498 -0
  13. package/bin/webui/api.js +1163 -0
  14. package/bin/webui/app.html +198 -0
  15. package/bin/webui/css/00-tokens.css +92 -0
  16. package/bin/webui/css/01-base.css +42 -0
  17. package/bin/webui/css/02-shell.css +103 -0
  18. package/bin/webui/css/03-components.css +462 -0
  19. package/bin/webui/css/04-motion.css +91 -0
  20. package/bin/webui/css/05-tour.css +100 -0
  21. package/bin/webui/css/06-responsive.css +108 -0
  22. package/bin/webui/css/panels/boundary.css +26 -0
  23. package/bin/webui/css/panels/challenge.css +151 -0
  24. package/bin/webui/css/panels/crosslink.css +194 -0
  25. package/bin/webui/css/panels/docs.css +254 -0
  26. package/bin/webui/css/panels/experiment.css +23 -0
  27. package/bin/webui/css/panels/extra.css +536 -0
  28. package/bin/webui/css/panels/flow.css +177 -0
  29. package/bin/webui/css/panels/handoff.css +67 -0
  30. package/bin/webui/css/panels/knowledge.css +86 -0
  31. package/bin/webui/css/panels/learn.css +154 -0
  32. package/bin/webui/css/panels/maintenance.css +55 -0
  33. package/bin/webui/css/panels/mockrun.css +268 -0
  34. package/bin/webui/css/panels/overview.css +100 -0
  35. package/bin/webui/css/panels/pact.css +43 -0
  36. package/bin/webui/css/panels/runs.css +105 -0
  37. package/bin/webui/css/panels/settings.css +227 -0
  38. package/bin/webui/css/panels/stats.css +87 -0
  39. package/bin/webui/fixtures/boundary.js +92 -0
  40. package/bin/webui/fixtures/challenge.js +825 -0
  41. package/bin/webui/fixtures/crosslink.js +31 -0
  42. package/bin/webui/fixtures/docs.js +982 -0
  43. package/bin/webui/fixtures/extra.js +1934 -0
  44. package/bin/webui/fixtures/flow.js +81 -0
  45. package/bin/webui/fixtures/handoff.js +35 -0
  46. package/bin/webui/fixtures/index.js +486 -0
  47. package/bin/webui/fixtures/knowledge.js +291 -0
  48. package/bin/webui/fixtures/maintenance.js +42 -0
  49. package/bin/webui/fixtures/mockrun.js +36 -0
  50. package/bin/webui/fixtures/pact.js +111 -0
  51. package/bin/webui/fixtures/runs.js +109 -0
  52. package/bin/webui/fixtures/settings.js +78 -0
  53. package/bin/webui/fixtures/shell.js +48 -0
  54. package/bin/webui/fixtures/stats.js +104 -0
  55. package/bin/webui/i18n/TERMS.md +134 -0
  56. package/bin/webui/i18n/en/banner.json +29 -0
  57. package/bin/webui/i18n/en/boundary.json +20 -0
  58. package/bin/webui/i18n/en/challenge.json +106 -0
  59. package/bin/webui/i18n/en/common.json +69 -0
  60. package/bin/webui/i18n/en/crosslink.json +69 -0
  61. package/bin/webui/i18n/en/docs.json +175 -0
  62. package/bin/webui/i18n/en/experiment.json +17 -0
  63. package/bin/webui/i18n/en/extra.json +313 -0
  64. package/bin/webui/i18n/en/flow.json +30 -0
  65. package/bin/webui/i18n/en/handoff.json +37 -0
  66. package/bin/webui/i18n/en/knowledge.json +141 -0
  67. package/bin/webui/i18n/en/learn.json +16 -0
  68. package/bin/webui/i18n/en/maintenance.json +52 -0
  69. package/bin/webui/i18n/en/mockrun.json +19 -0
  70. package/bin/webui/i18n/en/nav.json +19 -0
  71. package/bin/webui/i18n/en/overview.json +89 -0
  72. package/bin/webui/i18n/en/pact.json +36 -0
  73. package/bin/webui/i18n/en/runs.json +51 -0
  74. package/bin/webui/i18n/en/settings.json +49 -0
  75. package/bin/webui/i18n/en/stats.json +69 -0
  76. package/bin/webui/i18n/en/tour.json +33 -0
  77. package/bin/webui/i18n/id/banner.json +29 -0
  78. package/bin/webui/i18n/id/boundary.json +20 -0
  79. package/bin/webui/i18n/id/challenge.json +106 -0
  80. package/bin/webui/i18n/id/common.json +70 -0
  81. package/bin/webui/i18n/id/crosslink.json +69 -0
  82. package/bin/webui/i18n/id/docs.json +175 -0
  83. package/bin/webui/i18n/id/experiment.json +17 -0
  84. package/bin/webui/i18n/id/extra.json +313 -0
  85. package/bin/webui/i18n/id/flow.json +30 -0
  86. package/bin/webui/i18n/id/handoff.json +37 -0
  87. package/bin/webui/i18n/id/knowledge.json +141 -0
  88. package/bin/webui/i18n/id/learn.json +16 -0
  89. package/bin/webui/i18n/id/maintenance.json +52 -0
  90. package/bin/webui/i18n/id/mockrun.json +19 -0
  91. package/bin/webui/i18n/id/nav.json +19 -0
  92. package/bin/webui/i18n/id/overview.json +89 -0
  93. package/bin/webui/i18n/id/pact.json +36 -0
  94. package/bin/webui/i18n/id/runs.json +51 -0
  95. package/bin/webui/i18n/id/settings.json +49 -0
  96. package/bin/webui/i18n/id/stats.json +69 -0
  97. package/bin/webui/i18n/id/tour.json +33 -0
  98. package/bin/webui/js/00-core.js +115 -0
  99. package/bin/webui/js/01-i18n.js +149 -0
  100. package/bin/webui/js/02-ui.js +211 -0
  101. package/bin/webui/js/03-md.js +286 -0
  102. package/bin/webui/js/04-router.js +51 -0
  103. package/bin/webui/js/05-banners.js +172 -0
  104. package/bin/webui/js/06-edit.js +183 -0
  105. package/bin/webui/js/90-tour.js +488 -0
  106. package/bin/webui/js/91-shortcuts.js +126 -0
  107. package/bin/webui/js/99-boot.js +118 -0
  108. package/bin/webui/js/panels/boundary.js +104 -0
  109. package/bin/webui/js/panels/challenge.js +781 -0
  110. package/bin/webui/js/panels/crosslink.js +654 -0
  111. package/bin/webui/js/panels/docs.js +1338 -0
  112. package/bin/webui/js/panels/experiment.js +98 -0
  113. package/bin/webui/js/panels/extra.js +3011 -0
  114. package/bin/webui/js/panels/flow.js +297 -0
  115. package/bin/webui/js/panels/handoff.js +169 -0
  116. package/bin/webui/js/panels/knowledge.js +890 -0
  117. package/bin/webui/js/panels/learn.js +220 -0
  118. package/bin/webui/js/panels/maintenance.js +235 -0
  119. package/bin/webui/js/panels/mockrun.js +227 -0
  120. package/bin/webui/js/panels/overview.js +447 -0
  121. package/bin/webui/js/panels/pact.js +189 -0
  122. package/bin/webui/js/panels/runs.js +416 -0
  123. package/bin/webui/js/panels/settings.js +573 -0
  124. package/bin/webui/js/panels/stats.js +378 -0
  125. package/bin/webui/serve.js +557 -0
  126. package/mock-run/INDEX.md +106 -0
  127. package/mock-run/a-normal-day.md +587 -0
  128. package/mock-run/context-combiner.md +100 -0
  129. package/mock-run/extra-recovery.md +330 -0
  130. package/mock-run/extra-slots.md +177 -0
  131. package/mock-run/media/README.md +43 -0
  132. package/mock-run/orc-aftermath.md +392 -0
  133. package/mock-run/orc-boundary.md +356 -0
  134. package/mock-run/orc-brainstorm.md +177 -0
  135. package/mock-run/orc-budget.md +534 -0
  136. package/mock-run/orc-challenge-council.md +262 -0
  137. package/mock-run/orc-challenge.md +416 -0
  138. package/mock-run/orc-cli.md +200 -0
  139. package/mock-run/orc-diy.md +129 -0
  140. package/mock-run/orc-doc.md +448 -0
  141. package/mock-run/orc-explain.md +86 -0
  142. package/mock-run/orc-export.md +423 -0
  143. package/mock-run/orc-extra.md +392 -0
  144. package/mock-run/orc-fast.md +106 -0
  145. package/mock-run/orc-grill.md +151 -0
  146. package/mock-run/orc-handoff.md +480 -0
  147. package/mock-run/orc-pact.md +421 -0
  148. package/mock-run/orc-pattern.md +112 -0
  149. package/mock-run/orc-plan.md +108 -0
  150. package/mock-run/orc-pr-setup.md +126 -0
  151. package/mock-run/orc-quick.md +113 -0
  152. package/mock-run/orc-route.md +93 -0
  153. package/mock-run/orc-ui.md +125 -0
  154. package/mock-run/orc-ultra.md +103 -0
  155. package/mock-run/orc.md +157 -0
  156. package/mock-run/the-example-project.md +55 -0
  157. package/package.json +39 -0
  158. package/templates/agents/MODEL-MAPPING.md +168 -0
  159. package/templates/agents/orc-advisor-fable-5.md +50 -0
  160. package/templates/agents/orc-advisor-opus-5-xhigh.md +56 -0
  161. package/templates/agents/orc-analyst-fable-5.md +115 -0
  162. package/templates/agents/orc-analyze-mini-opus-5-med.md +60 -0
  163. package/templates/agents/orc-analyze-mini-sonnet-5-high.md +58 -0
  164. package/templates/agents/orc-challenge-advisor-opus-5-med.md +75 -0
  165. package/templates/agents/orc-challenge-contrarian-opus-5-high.md +110 -0
  166. package/templates/agents/orc-challenge-executor-opus-5-med.md +114 -0
  167. package/templates/agents/orc-challenge-expansionist-opus-5-med.md +112 -0
  168. package/templates/agents/orc-challenge-judge-opus-5-high.md +132 -0
  169. package/templates/agents/orc-challenge-outsider-opus-5-low.md +109 -0
  170. package/templates/agents/orc-challenge-principles-opus-5-high.md +109 -0
  171. package/templates/agents/orc-challenge-reader-opus-5-low.md +90 -0
  172. package/templates/agents/orc-claude-writer-opus-4-8-high.md +53 -0
  173. package/templates/agents/orc-claude-writer-opus-5-med.md +55 -0
  174. package/templates/agents/orc-context-combiner-opus-5-high.md +88 -0
  175. package/templates/agents/orc-doc-checker-opus-5-low.md +108 -0
  176. package/templates/agents/orc-doc-writer-opus-5-med.md +134 -0
  177. package/templates/agents/orc-executor-haiku-4-5.md +113 -0
  178. package/templates/agents/orc-executor-opus-4-7-high.md +114 -0
  179. package/templates/agents/orc-executor-opus-4-7-med.md +114 -0
  180. package/templates/agents/orc-executor-opus-4-8-high.md +114 -0
  181. package/templates/agents/orc-executor-opus-5-high.md +114 -0
  182. package/templates/agents/orc-executor-opus-5-low.md +114 -0
  183. package/templates/agents/orc-executor-opus-5-med.md +114 -0
  184. package/templates/agents/orc-executor-sonnet-4-6-high.md +114 -0
  185. package/templates/agents/orc-executor-sonnet-4-6-med.md +114 -0
  186. package/templates/agents/orc-executor-sonnet-5-high.md +114 -0
  187. package/templates/agents/orc-judge-fable-5.md +79 -0
  188. package/templates/agents/orc-judge-opus-5-xhigh.md +85 -0
  189. package/templates/agents/orc-learn-writer-opus-5-low.md +73 -0
  190. package/templates/agents/orc-pattern-codifier-opus-5-med.md +65 -0
  191. package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +63 -0
  192. package/templates/agents/orc-planner-fable-5.md +152 -0
  193. package/templates/agents/orc-planner-mini-opus-5-med.md +69 -0
  194. package/templates/agents/orc-planner-mini-sonnet-5-high.md +67 -0
  195. package/templates/agents/orc-planner-opus-5-med.md +160 -0
  196. package/templates/agents/orc-retro-opus-5-med.md +73 -0
  197. package/templates/agents/orc-retro-sonnet-5-high.md +72 -0
  198. package/templates/agents/orc-reviewer-fable-5.md +57 -0
  199. package/templates/agents/orc-reviewer-opus-5-med.md +60 -0
  200. package/templates/agents/orc-scout-opus-5-low.md +40 -0
  201. package/templates/agents/orc-scout-sonnet-4-6-high.md +39 -0
  202. package/templates/agents/orc-system-analyst-opus-5-high.md +120 -0
  203. package/templates/agents/orc-test-author-opus-5-med.md +71 -0
  204. package/templates/agents/orc-trace-writer-haiku-4-5.md +107 -0
  205. package/templates/agents/orc-verifier-opus-5-med.md +69 -0
  206. package/templates/agents/orc-wiki-scanner-opus-4-8-high.md +79 -0
  207. package/templates/agents/orc-wiki-scanner-opus-5-med.md +81 -0
  208. package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +106 -0
  209. package/templates/commands/orc-aftermath.md +49 -0
  210. package/templates/commands/orc-analyze.md +21 -0
  211. package/templates/commands/orc-boundary.md +46 -0
  212. package/templates/commands/orc-brainstorm.md +51 -0
  213. package/templates/commands/orc-budget.md +54 -0
  214. package/templates/commands/orc-challenge.md +58 -0
  215. package/templates/commands/orc-claude.md +14 -0
  216. package/templates/commands/orc-diy.md +13 -0
  217. package/templates/commands/orc-doc.md +128 -0
  218. package/templates/commands/orc-explain.md +20 -0
  219. package/templates/commands/orc-export.md +46 -0
  220. package/templates/commands/orc-fast.md +15 -0
  221. package/templates/commands/orc-grill.md +40 -0
  222. package/templates/commands/orc-handoff.md +52 -0
  223. package/templates/commands/orc-learn.md +17 -0
  224. package/templates/commands/orc-mini.md +12 -0
  225. package/templates/commands/orc-pact.md +44 -0
  226. package/templates/commands/orc-pattern.md +15 -0
  227. package/templates/commands/orc-plan.md +22 -0
  228. package/templates/commands/orc-poly.md +21 -0
  229. package/templates/commands/orc-pr-driver.md +30 -0
  230. package/templates/commands/orc-pr-setup.md +31 -0
  231. package/templates/commands/orc-quick.md +33 -0
  232. package/templates/commands/orc-retro.md +17 -0
  233. package/templates/commands/orc-route.md +41 -0
  234. package/templates/commands/orc-ultra.md +17 -0
  235. package/templates/commands/orc-verify.md +11 -0
  236. package/templates/commands/orc-wiki.md +42 -0
  237. package/templates/commands/orc.md +16 -0
  238. package/templates/hooks/orc-effort-guard.js +178 -0
  239. package/templates/hooks/orc-statusline.js +305 -0
  240. package/templates/hooks/orc-trace.js +471 -0
  241. package/templates/hooks/orc-update-lib.js +125 -0
  242. package/templates/skills/_shared/README.md +50 -0
  243. package/templates/skills/_shared/detecting-artifacts.md +90 -0
  244. package/templates/skills/_shared/drift-recovery.md +98 -0
  245. package/templates/skills/_shared/extra-dispatch.md +1051 -0
  246. package/templates/skills/_shared/fable5-override.md +56 -0
  247. package/templates/skills/_shared/fallback-handoff.md +42 -0
  248. package/templates/skills/_shared/gh-stack-commands.md +65 -0
  249. package/templates/skills/_shared/gotchas.md +177 -0
  250. package/templates/skills/_shared/interview.md +144 -0
  251. package/templates/skills/_shared/lane-suspend.md +82 -0
  252. package/templates/skills/_shared/opus5-only.md +131 -0
  253. package/templates/skills/_shared/pr-templates.md +106 -0
  254. package/templates/skills/_shared/read-ladder.md +54 -0
  255. package/templates/skills/_shared/return-validation.md +145 -0
  256. package/templates/skills/_shared/smoke-gate.md +28 -0
  257. package/templates/skills/_shared/stack-plan.md +135 -0
  258. package/templates/skills/_shared/untrusted-input.md +63 -0
  259. package/templates/skills/context-combiner/SKILL.md +187 -0
  260. package/templates/skills/context-combiner/schemas/combined-report.md +78 -0
  261. package/templates/skills/context-combiner/schemas/combined-requirement-spec.md +87 -0
  262. package/templates/skills/orc/README.md +150 -0
  263. package/templates/skills/orc/SKILL.md +526 -0
  264. package/templates/skills/orc/config.md +389 -0
  265. package/templates/skills/orc/examples/full-run-mock.md +73 -0
  266. package/templates/skills/orc/references/analyst-gates.md +124 -0
  267. package/templates/skills/orc/references/effort-and-mode.md +224 -0
  268. package/templates/skills/orc/references/house-rules.md +20 -0
  269. package/templates/skills/orc/references/intake.md +120 -0
  270. package/templates/skills/orc/references/log-protocol.md +39 -0
  271. package/templates/skills/orc/references/pattern-gate.md +89 -0
  272. package/templates/skills/orc/references/plan-handoff.md +84 -0
  273. package/templates/skills/orc/references/preflight-report.md +220 -0
  274. package/templates/skills/orc/references/security-checklist.md +39 -0
  275. package/templates/skills/orc/references/stop-and-resume.md +160 -0
  276. package/templates/skills/orc/references/trace-protocol.md +314 -0
  277. package/templates/skills/orc/references/ultra-mode.md +123 -0
  278. package/templates/skills/orc/references/wave-grouping.md +121 -0
  279. package/templates/skills/orc/references/wiki-consult.md +177 -0
  280. package/templates/skills/orc/schemas/checkpoint.md +122 -0
  281. package/templates/skills/orc/schemas/intent-spec.md +42 -0
  282. package/templates/skills/orc/schemas/planning-output.md +279 -0
  283. package/templates/skills/orc/subskills/orc-checkpoint/SKILL.md +55 -0
  284. package/templates/skills/orc/subskills/orc-execution/SKILL.md +72 -0
  285. package/templates/skills/orc/subskills/orc-execution/core.md +151 -0
  286. package/templates/skills/orc/subskills/orc-execution/subagent.md +13 -0
  287. package/templates/skills/orc/subskills/orc-planner/SKILL.md +264 -0
  288. package/templates/skills/orc/subskills/orc-planner-mini/SKILL.md +121 -0
  289. package/templates/skills/orc/subskills/orc-pr/SKILL.md +51 -0
  290. package/templates/skills/orc/subskills/orc-pr/pr.md +22 -0
  291. package/templates/skills/orc/subskills/orc-pr/stack-gate.md +108 -0
  292. package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +76 -0
  293. package/templates/skills/orc/subskills/orc-review-verify/core.md +135 -0
  294. package/templates/skills/orc/subskills/orc-review-verify/subagent.md +7 -0
  295. package/templates/skills/orc/subskills/orc-testgen/SKILL.md +45 -0
  296. package/templates/skills/orc/subskills/orc-testgen/core.md +59 -0
  297. package/templates/skills/orc/subskills/orc-testgen/subagent.md +7 -0
  298. package/templates/skills/orc-advisor/SKILL.md +60 -0
  299. package/templates/skills/orc-aftermath/SKILL.md +136 -0
  300. package/templates/skills/orc-aftermath/references/report.md +95 -0
  301. package/templates/skills/orc-analyze/SKILL.md +220 -0
  302. package/templates/skills/orc-analyze/examples/analyze-mock.md +42 -0
  303. package/templates/skills/orc-analyze/references/branching.md +51 -0
  304. package/templates/skills/orc-analyze/references/deep-mode.md +27 -0
  305. package/templates/skills/orc-analyze/references/thin-input.md +77 -0
  306. package/templates/skills/orc-analyze/schemas/report-audit.md +83 -0
  307. package/templates/skills/orc-analyze/schemas/report-prose.md +63 -0
  308. package/templates/skills/orc-analyze/schemas/report-requirement.md +78 -0
  309. package/templates/skills/orc-analyze/schemas/requirement-spec.md +77 -0
  310. package/templates/skills/orc-analyze-mini/SKILL.md +112 -0
  311. package/templates/skills/orc-analyze-mini/examples/quick-analysis-mock.md +31 -0
  312. package/templates/skills/orc-boundary/SKILL.md +208 -0
  313. package/templates/skills/orc-boundary/references/card.md +78 -0
  314. package/templates/skills/orc-boundary/references/gate.md +113 -0
  315. package/templates/skills/orc-brainstorm/SKILL.md +339 -0
  316. package/templates/skills/orc-brainstorm/references/brainstorm-doc.md +133 -0
  317. package/templates/skills/orc-brainstorm/references/lenses.md +152 -0
  318. package/templates/skills/orc-budget/SKILL.md +225 -0
  319. package/templates/skills/orc-budget/references/corpus.md +87 -0
  320. package/templates/skills/orc-challenge/README.md +142 -0
  321. package/templates/skills/orc-challenge/SKILL.md +255 -0
  322. package/templates/skills/orc-challenge/examples/code-module.md +110 -0
  323. package/templates/skills/orc-challenge/examples/council-full-roster.md +273 -0
  324. package/templates/skills/orc-challenge/examples/tsd-two-iterations.md +213 -0
  325. package/templates/skills/orc-challenge/references/conservation.md +107 -0
  326. package/templates/skills/orc-challenge/references/council.md +315 -0
  327. package/templates/skills/orc-challenge/references/cycle-state.md +185 -0
  328. package/templates/skills/orc-challenge/references/dimensions.md +121 -0
  329. package/templates/skills/orc-challenge/references/fix-brief.md +130 -0
  330. package/templates/skills/orc-challenge/references/intake.md +171 -0
  331. package/templates/skills/orc-challenge/references/kinds.md +44 -0
  332. package/templates/skills/orc-challenge/references/plain-english.md +98 -0
  333. package/templates/skills/orc-challenge/references/rubric.md +109 -0
  334. package/templates/skills/orc-challenge/references/sealed-slice.md +97 -0
  335. package/templates/skills/orc-challenge/references/verdict-doc.md +154 -0
  336. package/templates/skills/orc-claude/SKILL.md +199 -0
  337. package/templates/skills/orc-claude/examples/claude-run-mock.md +65 -0
  338. package/templates/skills/orc-claude/references/refresh.md +76 -0
  339. package/templates/skills/orc-claude/references/template.md +109 -0
  340. package/templates/skills/orc-diy/README.md +142 -0
  341. package/templates/skills/orc-diy/SKILL.md +70 -0
  342. package/templates/skills/orc-diy/references/blocks/analyze.md +24 -0
  343. package/templates/skills/orc-diy/references/blocks/execution.md +42 -0
  344. package/templates/skills/orc-diy/references/blocks/extra.md +55 -0
  345. package/templates/skills/orc-diy/references/blocks/header.md +55 -0
  346. package/templates/skills/orc-diy/references/blocks/mock-example.md +22 -0
  347. package/templates/skills/orc-diy/references/blocks/pattern.md +18 -0
  348. package/templates/skills/orc-diy/references/blocks/planning.md +34 -0
  349. package/templates/skills/orc-diy/references/blocks/review.md +18 -0
  350. package/templates/skills/orc-diy/references/blocks/scoring.md +16 -0
  351. package/templates/skills/orc-diy/references/blocks/security.md +25 -0
  352. package/templates/skills/orc-diy/references/blocks/ship.md +25 -0
  353. package/templates/skills/orc-diy/references/blocks/summary.md +18 -0
  354. package/templates/skills/orc-diy/references/blocks/testgen.md +17 -0
  355. package/templates/skills/orc-diy/references/blocks/trace.md +28 -0
  356. package/templates/skills/orc-diy/references/blocks/verify.md +25 -0
  357. package/templates/skills/orc-diy/references/blocks/wiki.md +26 -0
  358. package/templates/skills/orc-diy/references/compile.md +59 -0
  359. package/templates/skills/orc-diy/references/flow-schema.md +100 -0
  360. package/templates/skills/orc-diy/references/locked-blocks.md +37 -0
  361. package/templates/skills/orc-doc/README.md +229 -0
  362. package/templates/skills/orc-doc/SKILL.md +444 -0
  363. package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +325 -0
  364. package/templates/skills/orc-doc/references/chunking.md +527 -0
  365. package/templates/skills/orc-doc/references/gates.md +311 -0
  366. package/templates/skills/orc-doc/references/generation-rules.md +122 -0
  367. package/templates/skills/orc-doc/references/house-rules.md +170 -0
  368. package/templates/skills/orc-doc/references/import-targets.md +40 -0
  369. package/templates/skills/orc-doc/references/plain-language.md +66 -0
  370. package/templates/skills/orc-doc/references/portable-markdown.md +74 -0
  371. package/templates/skills/orc-doc/references/resume-protocol.md +228 -0
  372. package/templates/skills/orc-doc/references/templates/collaboration.md +118 -0
  373. package/templates/skills/orc-doc/references/templates/prd.md +133 -0
  374. package/templates/skills/orc-doc/references/templates/report.md +102 -0
  375. package/templates/skills/orc-doc/references/templates/tsd.md +122 -0
  376. package/templates/skills/orc-doc/references/templates/workflow.md +112 -0
  377. package/templates/skills/orc-explain/SKILL.md +57 -0
  378. package/templates/skills/orc-export/SKILL.md +154 -0
  379. package/templates/skills/orc-fast/SKILL.md +188 -0
  380. package/templates/skills/orc-grill/SKILL.md +207 -0
  381. package/templates/skills/orc-grill/references/grill-doc.md +105 -0
  382. package/templates/skills/orc-handoff/SKILL.md +204 -0
  383. package/templates/skills/orc-handoff/references/handoff-log.md +67 -0
  384. package/templates/skills/orc-handoff/references/surfaces.md +88 -0
  385. package/templates/skills/orc-judge/SKILL.md +82 -0
  386. package/templates/skills/orc-learn/SKILL.md +156 -0
  387. package/templates/skills/orc-learn/examples/learn-run-mock.md +61 -0
  388. package/templates/skills/orc-learn/references/deepen.md +70 -0
  389. package/templates/skills/orc-learn/references/refresh.md +65 -0
  390. package/templates/skills/orc-learn/references/template-knowledge.md +83 -0
  391. package/templates/skills/orc-learn/references/template-learning.md +67 -0
  392. package/templates/skills/orc-mini/SKILL.md +226 -0
  393. package/templates/skills/orc-mini/examples/mini-run-mock.md +50 -0
  394. package/templates/skills/orc-pact/SKILL.md +218 -0
  395. package/templates/skills/orc-pact/references/gate.md +70 -0
  396. package/templates/skills/orc-pact/references/ledger.md +99 -0
  397. package/templates/skills/orc-pattern/SKILL.md +124 -0
  398. package/templates/skills/orc-pattern/references/INDEX.md +73 -0
  399. package/templates/skills/orc-pattern/references/be-django.md +80 -0
  400. package/templates/skills/orc-pattern/references/be-express.md +82 -0
  401. package/templates/skills/orc-pattern/references/be-fastapi.md +107 -0
  402. package/templates/skills/orc-pattern/references/be-go.md +96 -0
  403. package/templates/skills/orc-pattern/references/be-nestjs.md +86 -0
  404. package/templates/skills/orc-pattern/references/be-postgres.md +98 -0
  405. package/templates/skills/orc-pattern/references/fe-a11y.md +36 -0
  406. package/templates/skills/orc-pattern/references/fe-angular.md +87 -0
  407. package/templates/skills/orc-pattern/references/fe-nextjs.md +65 -0
  408. package/templates/skills/orc-pattern/references/fe-perf.md +39 -0
  409. package/templates/skills/orc-pattern/references/fe-react.md +83 -0
  410. package/templates/skills/orc-pattern/references/fe-vue.md +75 -0
  411. package/templates/skills/orc-pattern/schemas/pattern-doc.md +62 -0
  412. package/templates/skills/orc-poly/SKILL.md +216 -0
  413. package/templates/skills/orc-poly/examples/poly-run-mock.md +51 -0
  414. package/templates/skills/orc-poly/references/gather.md +70 -0
  415. package/templates/skills/orc-poly/references/poly-spec.md +84 -0
  416. package/templates/skills/orc-pr-driver/README.md +349 -0
  417. package/templates/skills/orc-pr-driver/SKILL.md +167 -0
  418. package/templates/skills/orc-pr-driver/references/conflict-playbook.md +78 -0
  419. package/templates/skills/orc-pr-driver/references/green-gate.md +105 -0
  420. package/templates/skills/orc-pr-driver/references/orc-run-split.md +99 -0
  421. package/templates/skills/orc-pr-setup/README.md +436 -0
  422. package/templates/skills/orc-pr-setup/SKILL.md +184 -0
  423. package/templates/skills/orc-pr-setup/references/certainty-gate.md +66 -0
  424. package/templates/skills/orc-pr-setup/references/layer-taxonomy.md +67 -0
  425. package/templates/skills/orc-quick/README.md +423 -0
  426. package/templates/skills/orc-quick/SKILL.md +306 -0
  427. package/templates/skills/orc-quick/references/context-doc.md +114 -0
  428. package/templates/skills/orc-quick/references/dispatch-gate.md +163 -0
  429. package/templates/skills/orc-quick/references/gh-mode.md +127 -0
  430. package/templates/skills/orc-retro/SKILL.md +222 -0
  431. package/templates/skills/orc-retro/examples/retro-mock.md +171 -0
  432. package/templates/skills/orc-route/SKILL.md +165 -0
  433. package/templates/skills/orc-verify/SKILL.md +86 -0
  434. package/templates/skills/orc-verify/examples/verify-mock.md +33 -0
  435. package/templates/skills/orc-wiki/README.md +325 -0
  436. package/templates/skills/orc-wiki/SKILL.md +322 -0
  437. package/templates/skills/orc-wiki/examples/wiki-run-mock.md +37 -0
  438. package/templates/skills/orc-wiki/references/claude-md-injection.md +61 -0
  439. package/templates/skills/orc-wiki/references/crosslink-compile.md +39 -0
  440. package/templates/skills/orc-wiki/references/crosslink-kinds.md +57 -0
  441. package/templates/skills/orc-wiki/references/crosslink.md +284 -0
  442. package/templates/skills/orc-wiki/references/extra.md +79 -0
  443. package/templates/skills/orc-wiki/references/integrity-check.md +86 -0
  444. package/templates/skills/orc-wiki/references/orientation.md +51 -0
  445. package/templates/skills/orc-wiki/references/partial-refresh.md +203 -0
  446. package/templates/skills/orc-wiki/references/pattern-prewarm.md +19 -0
  447. package/templates/skills/orc-wiki/references/staleness.md +288 -0
  448. package/templates/skills/orc-wiki/schemas/crosslink-tag.md +166 -0
  449. package/templates/skills/orc-wiki/schemas/wiki-doc.md +120 -0
@@ -0,0 +1,225 @@
1
+ ---
2
+ name: orc-budget
3
+ description: >
4
+ What a run will cost, in the unit YOU are billed in. Use for "/orc-budget",
5
+ "what will this plan cost", "which lane is cheaper here", "how much did that run
6
+ burn", "will this hit my limit". Given a PLAN — not a sentence — it forecasts a
7
+ token vector (fresh input, cache write, cache read, output kept separate) per
8
+ scoring band, then renders it four ways: tokens, dollars from a dated price
9
+ table, percent of your 5-hour session window, and context-window risk per task.
10
+ Every number is a range with a sample count, joined from Claude Code's own usage
11
+ transcripts and ORC's traces. It never blocks a run and never invents a figure.
12
+ ---
13
+
14
+ # ORC-BUDGET
15
+
16
+ The lane that **measures** — forwards.
17
+
18
+ Account-level burn tracking is solved: `/usage`, cc-budget, eight commercial
19
+ dashboards. What none of them can answer is the only question that changes a
20
+ decision: **given THIS plan — 14 tasks, 4 waves, top score 78 — what will it burn,
21
+ and what does each lane burn instead?**
22
+
23
+ **The one-sentence contract: a forecast is a RANGE WITH A SAMPLE COUNT, never one
24
+ number, and never a figure ORC did not measure.**
25
+
26
+ ## Tokens are the unit of truth. Everything else is derived.
27
+
28
+ The core object is a **token vector**, never a scalar. Four kinds, because they
29
+ price and behave completely differently:
30
+
31
+ | Kind | Typical share | Relative price | Why it must stay separate |
32
+ |---|---|---|---|
33
+ | `input` | small | 1× | fresh, uncached prompt |
34
+ | `cache_write` | medium | ~1.25× | writing the cache — a real cost |
35
+ | `cache_read` | **usually the largest** | ~0.1× | nearly free, and it dominates the raw count |
36
+ | `output` | small | ~5× | the most expensive tokens in the run |
37
+
38
+ A forecast of "407k tokens" hides that ~80% of it is cache reads costing a tenth
39
+ of list. A forecast of "$7.02" hides that a Max user does not pay it. **So the CLI
40
+ computes the vector once and renders it four ways.** Never a blended token count as
41
+ the headline; `cache_read` is always separable.
42
+
43
+ Plus one non-token line, because it bills separately and is in the data:
44
+ `server_tool_use` → web search and web fetch requests.
45
+
46
+ ## Four views of the same vector (`budget_units`, default `auto`)
47
+
48
+ | View | Unit | Who it is for |
49
+ |---|---|---|
50
+ | **tokens** | in / cache-write / cache-read / out, per band | everyone — always shown |
51
+ | **usd** | dollars from a dated table | API-billed, enterprise |
52
+ | **quota** | % of the 5-hour window, % of the weekly limit | **Pro / Max — most users** |
53
+ | **context** | peak prompt per dispatch vs its window | shown when a task is at risk |
54
+
55
+ **A dollar figure is the wrong headline for most Claude Code users.** On Pro or Max
56
+ you do not pay per token — you burn a 5-hour session window and a weekly ceiling.
57
+ "$7.02" means nothing to that user; "18% of your 5-hour window" means everything.
58
+ `budget_units: auto` picks from `budget_plan`; `--as tokens|usd|quota|context|all`
59
+ overrides.
60
+
61
+ ## Context pressure — a forecast output nobody else has
62
+
63
+ A run does not only cost money. It can hit **compaction**, which silently degrades
64
+ quality and is invisible in every spend tool. ORC can forecast it because ORC
65
+ composes the slice, and the corpus records the **peak prompt** of every past
66
+ dispatch. A task forecast above 90% of its model's window is reported before the
67
+ wave, not after the damage — with three options: split the task, drop a doc nobody
68
+ uses from the slice (`orc wiki usage`), or raise the band so a larger-window model
69
+ takes it.
70
+
71
+ ## Where the numbers come from — and the join is the moat
72
+
73
+ ```
74
+ transcript → isSidechain block, model, effort, 4 token counts, peak, timestamp
75
+ ORC trace → DISPATCH line: task, score, band, expect=<model>/<effort>,
76
+ the wiki: continuation, RETURN with actual_model
77
+ join key → the run's time window + sidechain grouping + model match
78
+ ```
79
+
80
+ Claude Code writes a JSONL transcript per session under
81
+ `~/.claude/projects/<slug>/`. That gives the **cost**. ORC's own traces give the
82
+ **meaning** — which task, which band, which model was expected, whether it was
83
+ requeued. **Neither is enough alone, and nobody else has the right-hand column.**
84
+ Details and honesty rules: `references/corpus.md`.
85
+
86
+ ## Honesty rules — all six, always
87
+
88
+ 1. **No transcripts?** Forecast in **tokens only** from ORC trace metadata and
89
+ print *"dollars and quota unavailable: no local usage data"*. Never invent a
90
+ price.
91
+ 2. **`unattributed` is ALWAYS printed**, including when zero. A sidechain block that
92
+ could not be joined to a task counts into it and is never silently dropped.
93
+ 3. **Cache reads get their own p50/p90**, not a share of a blended number. They are
94
+ the most variable component.
95
+ 4. **No dollar figure without a dated price table** (`budget_price_table`; default
96
+ the shipped one). Older than 90 days → a staleness warning beside every figure.
97
+ **No quota figure without a known plan** — `budget_plan` is asked ONCE and
98
+ stored, because a wrong guess rendered as a percentage is worse than no
99
+ percentage.
100
+ 5. **A band below `budget_min_samples` (default 5) is printed as low-confidence.**
101
+ The top of the range is soft and the output says so.
102
+
103
+ 6. **A foreign dispatch is priced from its OWN dated table, or not at all**
104
+ (v0.50.0). A task can execute on a non-Claude worker
105
+ (`_shared/extra-dispatch.md`); its four token kinds arrive the same way and
106
+ are never blended, but an Anthropic rate applied to somebody else's bill is
107
+ fiction — so `bin/pricing.json`'s `providers` block is the only source, and
108
+ **every `models` map in it ships EMPTY on purpose**. Several of these vendors
109
+ price by peak window or by tier, one sells a subscription rather than tokens,
110
+ and one is a passthrough with a surcharge; a shipped figure wrong by 2x is
111
+ worse than none, because a wrong figure gets believed. `orc extra rates`
112
+ lists the pairs your traces actually used and prints the JSON to paste.
113
+ Until then: **`usd` reads as an em dash, never zero and never an estimate.**
114
+
115
+ Two further foreign-only distinctions, and collapsing either is a wrong
116
+ number rather than a rounder one:
117
+
118
+ - **`usage: null` is not `{0,0,0,0}`.** Engine `cli` frequently reports no
119
+ token counts. Null means *unknown*; four zeros would mean *free*. Carry the
120
+ denominator (how many dispatches the vector came from) into every total.
121
+ - **`cache_write: 0` on engine `api` IS a measurement.** An
122
+ OpenAI-compatible endpoint caches implicitly and has no write charge to
123
+ report. That zero is true and must not be smoothed into an average.
124
+
125
+ `orc extra stats --json` computes all of this per profile per band. Render
126
+ it; do not recompute it.
127
+
128
+ ## It refuses a sentence
129
+
130
+ `orc budget forecast` takes a **plan file**. Forecasting from a request in words is
131
+ guessing, and a guess that looks computed is worse than no answer — the same reason
132
+ `/orc-route` is plan-only. No `- id:` task blocks → exit 3 with the reason and a
133
+ pointer to `/orc-plan`.
134
+
135
+ **With no history at all:**
136
+
137
+ ```
138
+ BUDGET · no forecast
139
+ 0 joinable dispatches in .claude/orc/logs/ and no usable transcripts.
140
+ I will not invent numbers. Run /orc or /orc-mini once, then ask again.
141
+ A floor from the public price table only: orc budget forecast --naive
142
+ ```
143
+
144
+ ---
145
+
146
+ ## Phases
147
+
148
+ ```
149
+ U0 preflight (silent) orc budget rates --json (lazily calibrates on a miss)
150
+ U1 input a plan file · a run slug · "just the rates"
151
+ U2 forecast / actual the CLI computes; this lane RENDERS and explains
152
+ U3 decide ONE question: which lane · split a task · proceed
153
+ U4 record one end-of-run trace packet
154
+ ```
155
+
156
+ **U2 does no arithmetic.** `orc budget forecast|actual|rates` are the only engine —
157
+ this skill never re-derives a band, a price, a percentile or a total. Same rule as
158
+ the wiki tier and the DIY stepper: a second idea of the number is drift no lint
159
+ could see.
160
+
161
+ **U0 opens the run properly.** Write `log_dir/.current` =
162
+ `run-budget-<slug>-<DDMMYY>-<HHMMSS>.txt` AND `touch the trace file` of that name
163
+ in the SAME step. Both, or neither. A lane the protocol declares must be a lane
164
+ something OPENS, or every counting tool reports it as a permanent zero.
165
+
166
+ **U1 asks `budget_plan` ONCE** if it is `auto`, as a single line, and stores it:
167
+
168
+ ```
169
+ Which plan are you on? It changes the primary unit, and I will not guess.
170
+ 1 Max 20x 2 Max 5x 3 Pro 4 API (billed per token) 5 Skip — tokens only
171
+ ```
172
+
173
+ **U3 is a real question, not a summary.** The forecast exists to change a decision:
174
+
175
+ ```
176
+ 1 Proceed on /orc 1.23M raw · 564k weighted · 18% of a window
177
+ 2 Run /orc-mini instead 0.41M raw · 188k weighted · 6% (no review/verify phase)
178
+ 3 Split T12 it forecasts 189k of a 200k window — likely to compact
179
+ 4 Your own — re-plan smaller, or just show me the numbers again
180
+ ```
181
+
182
+ ## Where this shows up in `/orc`
183
+
184
+ - **Phase 2 intake** — the forecast at the batch-pause confirmation, so the pause
185
+ schedule doubles as a budget checkpoint.
186
+ - **Every pause** — spend so far vs forecast to here, in the primary unit.
187
+ - **`/orc-route`** — a cost column per lane, so routing stops being qualitative.
188
+ - **Ship** — actual vs forecast, fed to `/orc-retro`.
189
+ - **Context risk** — a task above 90% of its window is reported to the planner
190
+ BEFORE the wave.
191
+
192
+ **It never blocks a run.** Advisory always. The one hard stop in this area is the
193
+ existing `run_budget_dispatches` gate, which counts dispatches, not tokens, and is
194
+ not part of this lane.
195
+
196
+ ## Behavior trace (always on)
197
+
198
+ Follow `../orc/references/trace-protocol.md`. Lane name `budget`.
199
+ **Single-dispatch lane: exactly ONE end-of-run packet** to
200
+ `orc-trace-writer-haiku-4-5` after U4 and BEFORE `.current` is deleted. It carries
201
+ `run_meta`, the events (probe, forecast, the units rendered) and the U3 answer as
202
+ `decisions`. A run that ends with
203
+ `zero new trace lines is a protocol violation`.
204
+
205
+ Zero new agents. There is nothing to dispatch: the whole forecast is deterministic.
206
+
207
+ ## How this lane fails — and the rule that prevents each
208
+
209
+ | Failure | Prevention |
210
+ |---|---|
211
+ | One confident number | A range with a sample count, always |
212
+ | A blended token total as the headline | Four kinds, always separable |
213
+ | A dollar figure for a Max user | `budget_units: auto` off `budget_plan` |
214
+ | A price from an undated table | Dated table, 90-day staleness warning |
215
+ | A quota percent from a guessed plan | Asked once, stored, never inferred |
216
+ | Tokens silently dropped from the total | `unattributed` always printed |
217
+ | A forecast from a sentence | Plan-only, exit 3 with the reason |
218
+ | It blocks a run | Advisory always |
219
+ | The skill recomputes a band | The CLI is the only engine |
220
+
221
+ ## Rules this lane always keeps
222
+
223
+ Never one number · never a blended headline · never an invented price · never a
224
+ guessed plan · never drop `unattributed` · never forecast from prose · never block ·
225
+ never compute what the CLI computes.
@@ -0,0 +1,87 @@
1
+ # Reference — the corpus, the join, and what may be claimed from it
2
+
3
+ Loaded at U2 when a number needs explaining. Nothing here is computed by the
4
+ skill — `orc budget calibrate` owns all of it. This file exists so a user can be
5
+ told WHY a number is what it is, and where it stops being trustworthy.
6
+
7
+ ## The two halves
8
+
9
+ **Half one — the cost.** Claude Code writes a JSONL transcript per session at
10
+ `~/.claude/projects/<project-slug>/*.jsonl`, one line per message. Every assistant
11
+ line carries:
12
+
13
+ ```json
14
+ "usage": { "input_tokens": 2, "cache_creation_input_tokens": 44439,
15
+ "cache_read_input_tokens": 18432, "output_tokens": 582,
16
+ "server_tool_use": { "web_search_requests": 0, "web_fetch_requests": 0 } }
17
+ ```
18
+
19
+ and the LINE carries `model`, `timestamp`, `cwd`, `sessionId` and — the field that
20
+ makes this work — **`isSidechain`**, which is how a subagent dispatch is told apart
21
+ from the main thread.
22
+
23
+ **Half two — the meaning.** ORC's own trace: the `DISPATCH` line's task, the
24
+ `SCORE` line's band and facet vector, `expect=<model>/<effort>`, the `wiki:`
25
+ continuation, `RETURN`'s `actual_model`, `OUTCOME`'s retries and requeues.
26
+
27
+ ## The join
28
+
29
+ 1. Group contiguous `isSidechain` lines in one session on one model into **one
30
+ dispatch**. A gap over 20 minutes starts a new group.
31
+ 2. For each trace, take the run's own time window from its first and last
32
+ timestamped lines.
33
+ 3. Match each `DISPATCH` line to the nearest unclaimed group in that window whose
34
+ model equals the dispatch's expected model.
35
+ 4. Anything left over goes to **`unattributed`**.
36
+
37
+ **Timestamps come from two clocks and both are honoured as written:** a trace line
38
+ carries LOCAL wall clock, a transcript line carries ISO UTC. Both resolve to the
39
+ same instant on the same machine. A join that silently treated one as the other
40
+ would be off by the timezone offset and quietly attribute nothing.
41
+
42
+ ## What `unattributed` really means
43
+
44
+ It is not an error and it is not waste. Common, legitimate causes:
45
+
46
+ - the main thread's own tokens (never a sidechain, never joined to a task)
47
+ - a dispatch from a lane that writes no trace (`/orc-retro`, `/orc-explain`)
48
+ - an ad-hoc read-only recon dispatch (`/orc-quick`, `/orc-brainstorm`,
49
+ `/orc-boundary`) — deliberately unpinned, so the hook writes no `SPAWN`
50
+ - a session where `.current` was lost mid-run
51
+
52
+ **It is always printed anyway.** A total that quietly excludes tokens somebody paid
53
+ for is the one number in this lane that must never be silently wrong.
54
+
55
+ ## What may be claimed, and what may not
56
+
57
+ | May be claimed | May NOT be claimed |
58
+ |---|---|
59
+ | "This band cost this much, over N samples" | "This run will cost exactly X" |
60
+ | "Cache reads were 74% of raw tokens" | "You will be charged $X" — unless `budget_plan: api` |
61
+ | "This task's peak prompt was 189k of 200k" | "This task will compact" — it is a forecast |
62
+ | "2 bands have fewer than 5 samples" | Filling a thin band from the band next door |
63
+ | "Weighted 564k / raw 1.23M" | One of the two on its own |
64
+
65
+ **Why report both weighted and raw:** raw is what fills a context window and a rate
66
+ limit; weighted (cache reads at 0.1×) is what fills an invoice. They move
67
+ differently, and a single number hides whichever one is about to bite.
68
+
69
+ ## The price table
70
+
71
+ `bin/pricing.json`, or whatever `budget_price_table` points at. Four rates per
72
+ model — never one, for the same reason the vector has four components. Dated:
73
+ `as_of`, and older than 90 days puts a staleness warning next to every dollar
74
+ figure. **Never patch a rate to make a forecast look right.**
75
+
76
+ The `plans` block holds WEIGHTED-token capacities for the quota view. They
77
+ approximate a published allowance; they are not a metered balance. The renderer says
78
+ so, and that honesty is why the quota view is usable at all.
79
+
80
+ ## Feeding `/orc-retro`
81
+
82
+ `orc budget actual <run-slug>` emits per-band forecast-vs-actual with a diff
83
+ percent. `/orc-retro` already calibrates the score→model table from process signals
84
+ (retries, requeues, downgrades); this adds the cost signal, so a band can be judged
85
+ on what it COST as well as on how smoothly it ran. A band that always lands inside
86
+ p90 is calibrated; one that lands at +151% twice has a facet problem, not a price
87
+ problem.
@@ -0,0 +1,142 @@
1
+ # Build your own `/orc-challenge` cycle
2
+
3
+ This is the maintainer's guide to the lane. If you just want to use it, run
4
+ `/orc-challenge` and answer the seven intake questions.
5
+
6
+ ## The one design decision everything else follows from
7
+
8
+ **The judge and the fixer must never share a context.**
9
+
10
+ Everything unusual about this lane is downstream of that one sentence:
11
+
12
+ - there is no in-session repair loop, because a session that wrote the fix would
13
+ grade its own homework
14
+ - the judge's dispatch slice is paths and ids only, because a summary of what
15
+ changed is written by the party with an interest in passing
16
+ - PASS is computed by the CLI, because a judge that CAN pass something can be
17
+ talked into passing something
18
+ - the stop is the deliverable, not an interruption
19
+
20
+ If you are tempted to add a `challenge_same_session` escape hatch: that config
21
+ key is how the premise dies. It is deliberately not there.
22
+
23
+ ## The shape of one iteration
24
+
25
+ ```
26
+ C2 lint (free) → C3 the council → C4 judge → C5 record (the CLI decides)
27
+ (parallel, <=3) ├── PASS → C7 final report
28
+ └── FAIL → C6 advise → C8 STOP
29
+ ```
30
+
31
+ One iteration is C2 → C8. The user then fixes in a **different session** and
32
+ comes back, and the whole thing runs again with the carried findings.
33
+
34
+ ## The eight agents, and why each is pinned where it is
35
+
36
+ | Agent | Effort | Why that effort |
37
+ |---|---|---|
38
+ | `orc-challenge-judge-opus-5-high` | high | D2 is the only dimension no computer can reach, and it is the expensive one |
39
+ | `orc-challenge-advisor-opus-5-med` | medium | grouping twelve findings into three causes is pattern work, not deep reasoning |
40
+ | `orc-challenge-reader-opus-5-low` | **low, on purpose** | a harder-thinking reader reasons AROUND the gaps D4 exists to find. A stronger configuration is a WORSE instrument |
41
+ | `orc-challenge-contrarian-opus-5-high` | high | a shallow contrarian returns the three surface complaints the free lint already caught |
42
+ | `orc-challenge-outsider-opus-5-low` | **low, on purpose** | a harder-thinking outsider reasons its way AROUND an unexplained acronym and reports the document is fine |
43
+ | `orc-challenge-executor-opus-5-med` | medium | pattern work against a concrete artifact — the same class as the advisor |
44
+ | `orc-challenge-principles-opus-5-high` | high | rebuilding a problem statement from the ground up is the deepest reasoning in the lane |
45
+ | `orc-challenge-expansionist-opus-5-med` | medium | pattern work again, pointed at upside instead of at defect |
46
+
47
+ All eight are `claude-opus-5`, so **`opus5_only` is a no-op for this lane** —
48
+ zero new agent pairs, no `LEGACY_KEYS` entry, no rename churn. The lane is
49
+ unaffected, not exempt.
50
+
51
+ **Effort here is a MEASUREMENT choice, not a cost choice.** That is why there is
52
+ no model or effort config key: a key that lets `outsider: low` be tuned is a key
53
+ that lets the instrument be broken.
54
+
55
+ ## The council (v0.49.1)
56
+
57
+ Five of those eight are new, and the design is in `references/council.md`. Three
58
+ sentences carry it:
59
+
60
+ - **A lens raises; only the judge resolves.**
61
+ - **ORC proposes the council; the user picks it.** `--council` has no default and
62
+ `init` refuses by name — **a lane that picks its own council has broken this
63
+ contract.**
64
+ - **Two lenses never touch the pass gate.** The expansionist returns
65
+ `opportunity`, the first-principles thinker returns `premise`; neither has a
66
+ severity, and forcing either to have one would make it lie.
67
+
68
+ The gate that makes five extra reviewers safe is `council_coverage_pct`, derived
69
+ by `orc challenge record` from `iteration-NN/council/*.json` on disk — **not from
70
+ the judge's account of them.** The judge cannot shrink the set by omission.
71
+
72
+ They are pinned and dispatched BY NAME for one reason beyond the trace hook: **a
73
+ verdict must be attributable.** `/orc-retro` can then mine downgrade behaviour on
74
+ judging runs like any other lane.
75
+
76
+ ## Adding a lens
77
+
78
+ 1. `references/council.md` — the roster row, what it is for, how it fails, and
79
+ why its effort is what it is.
80
+ 2. `bin/cli.js` — `CHALLENGE_LENSES` and `CHALLENGE_LENS_META`. Pick a prefix
81
+ nothing else uses; prefixes are the raiser's signature and `record` gates on
82
+ them.
83
+ 3. The agent file, named in `bin/verify-package.js`, with a `MODEL-MAPPING.md`
84
+ row that states the reason for the effort.
85
+ 4. A golden test comparing 1 and 2. The roster is documented drift the token
86
+ lint cannot see, because it is a list, not a token.
87
+
88
+ Decide its CLASS first. If it cannot honestly carry a `serves`, it is not a
89
+ finding lens and it must never enter `findings[]`.
90
+
91
+ ## Adding a dimension
92
+
93
+ 1. `references/dimensions.md` — the definition, the evidence a finding must
94
+ carry, and which agent produces it.
95
+ 2. `bin/cli.js` — `CHALLENGE_DIMS` and the `--dimensions` validator.
96
+ 3. `references/kinds.md` — whether any kind selects it by default.
97
+ 4. A golden test comparing 1 and 2. The enum is documented drift the token lint
98
+ cannot see, because it is a list, not a token.
99
+
100
+ ## Adding a lint check
101
+
102
+ 1. `bin/cli.js` — the check itself, in `challengeLint`. Emit `L-###` with a
103
+ dimension and a line number.
104
+ 2. `references/plain-english.md` — the row in the table, and the word list if it
105
+ has one.
106
+ 3. A fixture in `test/`.
107
+
108
+ Keep both honesty rules intact: it is a signal, not a verdict, and it is
109
+ heuristic. A lint that starts blocking is a lint that starts being argued with.
110
+
111
+ ## Adding an artifact kind
112
+
113
+ `references/kinds.md` and `CHALLENGE_KINDS` in `bin/cli.js`. A kind is a
114
+ PROPOSAL of a dimension set and a template hint — never a silent application of
115
+ one.
116
+
117
+ ## What this lane must never grow
118
+
119
+ - **an in-session fix.** See above.
120
+ - **a hard loop cap.** Each turn is a separate human sitting down to work.
121
+ `stalled` measures instead, and offers three real options.
122
+ - **a model or effort config key.** That is the pinned agents' job, and the
123
+ efforts are measurements.
124
+ - **a `challenge_council` config key.** A global default roster would silently
125
+ answer the one question the council exists to ask.
126
+ - **a `block` mode on any council output.** Opportunities and premises never
127
+ gate; the finding lenses gate through the EXISTING severity bar and nothing
128
+ else.
129
+ - **auto-severity from corroboration.** Two lenses agreeing is a signal, and
130
+ churn is a signal, not a verdict.
131
+ - **a `block` mode on `challenge_gate`.** The `/orc-pact` precedent: the payoff
132
+ is knowing, not gating.
133
+ - **a second definition of "a plan", "a state", or "fresh".** If a state exists,
134
+ the CLI computes it and everything else renders it.
135
+
136
+ ## Reading order for a new maintainer
137
+
138
+ `references/intake.md` (it defines what every later file grades against) →
139
+ `council.md` → `sealed-slice.md` → `rubric.md` → `conservation.md` →
140
+ `cycle-state.md` → `fix-brief.md`. Then `examples/tsd-two-iterations.md` for the
141
+ whole thing end to end, and `examples/council-full-roster.md` for a run where
142
+ the first-principles thinker lands a premise challenge and the goal moves.