@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,3277 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Contract drift lint. The integrity guard (verify-package.js) checks file
5
+ * COUNTS; this checks CONTRACT CONSISTENCY across ORC's by-design maintenance
6
+ * drift: shared return/slice contracts are duplicated across many payload
7
+ * files, and a partial edit ships a forked contract the orchestrator will
8
+ * reject at runtime.
9
+ *
10
+ * Data-driven: each contract = a fixed-string token + the EXACT set of files
11
+ * under templates/ expected to carry it. Fails loudly when a token is missing
12
+ * from an expected file (a drift copy was skipped) OR appears in an unexpected
13
+ * file (a new copy was added without registering it here).
14
+ *
15
+ * RULE: any commit that adds/removes a contract copy updates the table below
16
+ * IN THE SAME COMMIT. Runs with `npm run verify` and on prepack.
17
+ */
18
+ const fs = require("fs");
19
+ const path = require("path");
20
+
21
+ const ROOT = path.join(__dirname, "..", "templates");
22
+
23
+ // token: fixed string (no regex). files: paths relative to templates/, sorted.
24
+ const CONTRACTS = [
25
+ {
26
+ name: "actual_model / actual_effort return (claimed-vs-actual model check)",
27
+ token: "actual_model",
28
+ files: [
29
+ "agents/MODEL-MAPPING.md",
30
+ "agents/orc-advisor-fable-5.md",
31
+ "agents/orc-advisor-opus-5-xhigh.md",
32
+ "agents/orc-analyst-fable-5.md",
33
+ "agents/orc-analyze-mini-opus-5-med.md",
34
+ "agents/orc-analyze-mini-sonnet-5-high.md",
35
+ "agents/orc-challenge-advisor-opus-5-med.md",
36
+ "agents/orc-challenge-contrarian-opus-5-high.md",
37
+ "agents/orc-challenge-executor-opus-5-med.md",
38
+ "agents/orc-challenge-expansionist-opus-5-med.md",
39
+ "agents/orc-challenge-judge-opus-5-high.md",
40
+ "agents/orc-challenge-outsider-opus-5-low.md",
41
+ "agents/orc-challenge-principles-opus-5-high.md",
42
+ "agents/orc-challenge-reader-opus-5-low.md",
43
+ "agents/orc-claude-writer-opus-4-8-high.md",
44
+ "agents/orc-claude-writer-opus-5-med.md",
45
+ "agents/orc-context-combiner-opus-5-high.md",
46
+ "agents/orc-doc-checker-opus-5-low.md",
47
+ "agents/orc-doc-writer-opus-5-med.md",
48
+ "agents/orc-executor-haiku-4-5.md",
49
+ "agents/orc-executor-opus-4-7-high.md",
50
+ "agents/orc-executor-opus-4-7-med.md",
51
+ "agents/orc-executor-opus-4-8-high.md",
52
+ "agents/orc-executor-opus-5-high.md",
53
+ "agents/orc-executor-opus-5-low.md",
54
+ "agents/orc-executor-opus-5-med.md",
55
+ "agents/orc-executor-sonnet-4-6-high.md",
56
+ "agents/orc-executor-sonnet-4-6-med.md",
57
+ "agents/orc-executor-sonnet-5-high.md",
58
+ "agents/orc-judge-fable-5.md",
59
+ "agents/orc-judge-opus-5-xhigh.md",
60
+ "agents/orc-learn-writer-opus-5-low.md",
61
+ "agents/orc-pattern-codifier-opus-5-med.md",
62
+ "agents/orc-pattern-codifier-sonnet-5-high.md",
63
+ "agents/orc-planner-fable-5.md",
64
+ "agents/orc-planner-mini-opus-5-med.md",
65
+ "agents/orc-planner-mini-sonnet-5-high.md",
66
+ "agents/orc-planner-opus-5-med.md",
67
+ "agents/orc-retro-opus-5-med.md",
68
+ "agents/orc-retro-sonnet-5-high.md",
69
+ "agents/orc-reviewer-fable-5.md",
70
+ "agents/orc-reviewer-opus-5-med.md",
71
+ "agents/orc-scout-opus-5-low.md",
72
+ "agents/orc-scout-sonnet-4-6-high.md",
73
+ "agents/orc-system-analyst-opus-5-high.md",
74
+ "agents/orc-test-author-opus-5-med.md",
75
+ "agents/orc-trace-writer-haiku-4-5.md",
76
+ "agents/orc-verifier-opus-5-med.md",
77
+ "agents/orc-wiki-scanner-opus-4-8-high.md",
78
+ "agents/orc-wiki-scanner-opus-5-med.md",
79
+ "agents/orc-wiki-scanner-sonnet-5-high.md",
80
+ "hooks/orc-trace.js",
81
+ "skills/_shared/extra-dispatch.md",
82
+ "skills/_shared/return-validation.md",
83
+ "skills/orc-advisor/SKILL.md",
84
+ "skills/orc-analyze-mini/SKILL.md",
85
+ "skills/orc-boundary/SKILL.md",
86
+ "skills/orc-boundary/references/gate.md",
87
+ "skills/orc-brainstorm/SKILL.md",
88
+ "skills/orc-budget/SKILL.md",
89
+ "skills/orc-budget/references/corpus.md",
90
+ "skills/orc-challenge/SKILL.md",
91
+ "skills/orc-challenge/references/council.md",
92
+ "skills/orc-claude/SKILL.md",
93
+ "skills/orc-claude/examples/claude-run-mock.md",
94
+ "skills/orc-diy/references/blocks/trace.md",
95
+ "skills/orc-doc/SKILL.md",
96
+ "skills/orc-doc/examples/orc-doc-prd-run.md",
97
+ "skills/orc-fast/SKILL.md",
98
+ "skills/orc-grill/SKILL.md",
99
+ "skills/orc-judge/SKILL.md",
100
+ "skills/orc-learn/SKILL.md",
101
+ "skills/orc-learn/examples/learn-run-mock.md",
102
+ "skills/orc-mini/SKILL.md",
103
+ "skills/orc-mini/examples/mini-run-mock.md",
104
+ "skills/orc-quick/SKILL.md",
105
+ "skills/orc-quick/references/dispatch-gate.md",
106
+ "skills/orc-retro/SKILL.md",
107
+ "skills/orc-retro/examples/retro-mock.md",
108
+ "skills/orc-wiki/SKILL.md",
109
+ "skills/orc-wiki/references/extra.md",
110
+ "skills/orc/README.md",
111
+ "skills/orc/SKILL.md",
112
+ "skills/orc/references/trace-protocol.md",
113
+ "skills/orc/schemas/checkpoint.md",
114
+ "skills/orc/subskills/orc-execution/SKILL.md",
115
+ "skills/orc/subskills/orc-execution/core.md",
116
+ "skills/orc/subskills/orc-planner-mini/SKILL.md",
117
+ "skills/orc/subskills/orc-review-verify/SKILL.md",
118
+ "skills/orc/subskills/orc-review-verify/core.md",
119
+ "skills/orc/subskills/orc-testgen/core.md",
120
+ ],
121
+ },
122
+ {
123
+ name: "pattern invariants_checked attestation (executor return)",
124
+ token: "invariants_checked",
125
+ files: [
126
+ "agents/orc-executor-haiku-4-5.md",
127
+ "agents/orc-executor-opus-4-7-high.md",
128
+ "agents/orc-executor-opus-4-7-med.md",
129
+ "agents/orc-executor-opus-4-8-high.md",
130
+ "agents/orc-executor-opus-5-high.md",
131
+ "agents/orc-executor-opus-5-low.md",
132
+ "agents/orc-executor-opus-5-med.md",
133
+ "agents/orc-executor-sonnet-4-6-high.md",
134
+ "agents/orc-executor-sonnet-4-6-med.md",
135
+ "agents/orc-executor-sonnet-5-high.md",
136
+ "skills/_shared/return-validation.md",
137
+ "skills/orc-fast/SKILL.md",
138
+ "skills/orc-quick/SKILL.md",
139
+ "skills/orc/README.md",
140
+ "skills/orc/SKILL.md",
141
+ "skills/orc/references/pattern-gate.md",
142
+ "skills/orc/subskills/orc-execution/SKILL.md",
143
+ "skills/orc/subskills/orc-execution/core.md",
144
+ ],
145
+ },
146
+ {
147
+ name: "house_rules standing card (slice injection)",
148
+ token: "house_rules",
149
+ files: [
150
+ "agents/orc-executor-haiku-4-5.md",
151
+ "agents/orc-executor-opus-4-7-high.md",
152
+ "agents/orc-executor-opus-4-7-med.md",
153
+ "agents/orc-executor-opus-4-8-high.md",
154
+ "agents/orc-executor-opus-5-high.md",
155
+ "agents/orc-executor-opus-5-low.md",
156
+ "agents/orc-executor-opus-5-med.md",
157
+ "agents/orc-executor-sonnet-4-6-high.md",
158
+ "agents/orc-executor-sonnet-4-6-med.md",
159
+ "agents/orc-executor-sonnet-5-high.md",
160
+ "skills/_shared/extra-dispatch.md",
161
+ "skills/orc-fast/SKILL.md",
162
+ "skills/orc-mini/SKILL.md",
163
+ "skills/orc-quick/SKILL.md",
164
+ "skills/orc/SKILL.md",
165
+ "skills/orc/references/house-rules.md",
166
+ "skills/orc/subskills/orc-execution/SKILL.md",
167
+ "skills/orc/subskills/orc-execution/core.md",
168
+ ],
169
+ },
170
+ {
171
+ name: "validation_gate[] flow (codify -> slice -> review -> verify)",
172
+ token: "validation_gate",
173
+ files: [
174
+ "agents/orc-executor-haiku-4-5.md",
175
+ "agents/orc-executor-opus-4-7-high.md",
176
+ "agents/orc-executor-opus-4-7-med.md",
177
+ "agents/orc-executor-opus-4-8-high.md",
178
+ "agents/orc-executor-opus-5-high.md",
179
+ "agents/orc-executor-opus-5-low.md",
180
+ "agents/orc-executor-opus-5-med.md",
181
+ "agents/orc-executor-sonnet-4-6-high.md",
182
+ "agents/orc-executor-sonnet-4-6-med.md",
183
+ "agents/orc-executor-sonnet-5-high.md",
184
+ "agents/orc-pattern-codifier-opus-5-med.md",
185
+ "agents/orc-pattern-codifier-sonnet-5-high.md",
186
+ "agents/orc-reviewer-fable-5.md",
187
+ "agents/orc-reviewer-opus-5-med.md",
188
+ "agents/orc-verifier-opus-5-med.md",
189
+ "skills/orc-pattern/SKILL.md",
190
+ "skills/orc-pattern/schemas/pattern-doc.md",
191
+ "skills/orc/SKILL.md",
192
+ "skills/orc/references/pattern-gate.md",
193
+ "skills/orc/subskills/orc-execution/SKILL.md",
194
+ "skills/orc/subskills/orc-execution/core.md",
195
+ "skills/orc/subskills/orc-review-verify/SKILL.md",
196
+ "skills/orc/subskills/orc-review-verify/core.md",
197
+ ],
198
+ },
199
+ {
200
+ name: "executor evidence contract (v0.7.0 — verbatim build/test proof)",
201
+ token: "no_runner_detected",
202
+ files: [
203
+ "agents/orc-executor-haiku-4-5.md",
204
+ "agents/orc-executor-opus-4-7-high.md",
205
+ "agents/orc-executor-opus-4-7-med.md",
206
+ "agents/orc-executor-opus-4-8-high.md",
207
+ "agents/orc-executor-opus-5-high.md",
208
+ "agents/orc-executor-opus-5-low.md",
209
+ "agents/orc-executor-opus-5-med.md",
210
+ "agents/orc-executor-sonnet-4-6-high.md",
211
+ "agents/orc-executor-sonnet-4-6-med.md",
212
+ "agents/orc-executor-sonnet-5-high.md",
213
+ "skills/_shared/return-validation.md",
214
+ "skills/orc/SKILL.md",
215
+ "skills/orc/subskills/orc-execution/SKILL.md",
216
+ "skills/orc/subskills/orc-execution/core.md",
217
+ ],
218
+ },
219
+ {
220
+ name: "executor unmet[] honest-status contract (v0.7.0)",
221
+ token: "unmet[]",
222
+ files: [
223
+ // v0.40.0: a verifier unmet[] the same run CLOSED is a recordable gotcha.
224
+ "skills/_shared/extra-dispatch.md",
225
+ "skills/_shared/gotchas.md",
226
+ "agents/orc-executor-haiku-4-5.md",
227
+ "agents/orc-executor-opus-4-7-high.md",
228
+ "agents/orc-executor-opus-4-7-med.md",
229
+ "agents/orc-executor-opus-4-8-high.md",
230
+ "agents/orc-executor-opus-5-high.md",
231
+ "agents/orc-executor-opus-5-low.md",
232
+ "agents/orc-executor-opus-5-med.md",
233
+ "agents/orc-executor-sonnet-4-6-high.md",
234
+ "agents/orc-executor-sonnet-4-6-med.md",
235
+ "agents/orc-executor-sonnet-5-high.md",
236
+ "skills/_shared/return-validation.md",
237
+ "skills/orc-fast/SKILL.md",
238
+ "skills/orc-mini/SKILL.md",
239
+ "skills/orc-mini/examples/mini-run-mock.md",
240
+ "skills/orc-quick/SKILL.md",
241
+ "skills/orc/README.md",
242
+ "skills/orc/SKILL.md",
243
+ "skills/orc/examples/full-run-mock.md",
244
+ "skills/orc/subskills/orc-execution/SKILL.md",
245
+ "skills/orc/subskills/orc-execution/core.md",
246
+ ],
247
+ },
248
+ {
249
+ name: "planner grounding attestation (v0.7.0 — disposition: exists|new)",
250
+ token: "disposition",
251
+ files: [
252
+ "agents/orc-planner-fable-5.md",
253
+ "agents/orc-planner-mini-opus-5-med.md",
254
+ "agents/orc-planner-mini-sonnet-5-high.md",
255
+ "agents/orc-planner-opus-5-med.md",
256
+ "commands/orc-explain.md",
257
+ "skills/orc-challenge/examples/council-full-roster.md",
258
+ "skills/orc-challenge/references/conservation.md",
259
+ "skills/orc-challenge/references/council.md",
260
+ "skills/orc-challenge/references/cycle-state.md",
261
+ "skills/orc-challenge/references/verdict-doc.md",
262
+ "skills/orc-diy/references/blocks/execution.md",
263
+ "skills/orc-diy/references/flow-schema.md",
264
+ "skills/orc-explain/SKILL.md",
265
+ "skills/orc-mini/SKILL.md",
266
+ "skills/orc/SKILL.md",
267
+ "skills/orc/config.md",
268
+ "skills/orc/references/analyst-gates.md",
269
+ "skills/orc/references/plan-handoff.md",
270
+ "skills/orc/references/preflight-report.md",
271
+ "skills/orc/schemas/planning-output.md",
272
+ "skills/orc/subskills/orc-planner-mini/SKILL.md",
273
+ "skills/orc/subskills/orc-planner/SKILL.md",
274
+ ],
275
+ },
276
+ {
277
+ name: "findings evidence-or-advisory rule (v0.7.0 — unanchored => AUTO-P3)",
278
+ token: "AUTO-P3",
279
+ files: [
280
+ "agents/orc-reviewer-fable-5.md",
281
+ "agents/orc-reviewer-opus-5-med.md",
282
+ "agents/orc-verifier-opus-5-med.md",
283
+ "skills/orc/subskills/orc-review-verify/SKILL.md",
284
+ "skills/orc/subskills/orc-review-verify/core.md",
285
+ "skills/orc-verify/SKILL.md",
286
+ ],
287
+ },
288
+ {
289
+ name: "P0-P3 severity enum (findings shape)",
290
+ token: "P0|P1|P2|P3",
291
+ files: [
292
+ "agents/orc-reviewer-fable-5.md",
293
+ "agents/orc-reviewer-opus-5-med.md",
294
+ "agents/orc-verifier-opus-5-med.md",
295
+ "skills/orc-quick/SKILL.md",
296
+ "skills/orc/subskills/orc-review-verify/SKILL.md",
297
+ "skills/orc/subskills/orc-review-verify/core.md",
298
+ ],
299
+ },
300
+ {
301
+ // v0.50.0 — the EXTRA trace verb. The wording is composed by
302
+ // `orc extra dispatch` and copied VERBATIM by the lane (the
303
+ // `orc challenge record` precedent), so the two halves live in two files
304
+ // and a rename on either side has to fail loudly.
305
+ name: "EXTRA trace verb — substitution continuation (v0.50.0)",
306
+ token: "EXTRA substitution",
307
+ binFiles: ["bin/cli.js"],
308
+ files: ["skills/orc/references/trace-protocol.md"],
309
+ },
310
+ {
311
+ // The additive tail on SCORE and DISPATCH. One token, two sides: the
312
+ // payload documents it, the CLI composes the profile half of it.
313
+ name: "foreign dispatch tail — via=extra:<profile> (v0.50.0)",
314
+ token: "via=extra:",
315
+ files: [
316
+ "hooks/orc-trace.js",
317
+ "skills/_shared/extra-dispatch.md",
318
+ "skills/orc/SKILL.md",
319
+ "skills/orc/references/trace-protocol.md",
320
+ ],
321
+ },
322
+ // ── v0.55.0 — ROLE SLOTS. The non-scored half of routing ────────────────
323
+ {
324
+ // The command family that holds the six POSITIONS. It is named in every
325
+ // lane spine that has one, because a lane that says it routes foreign and
326
+ // cannot say HOW is the dead `/orc-wiki` row all over again.
327
+ name: "the POSITIONS are held by one command family (v0.55.0)",
328
+ token: "orc extra role",
329
+ binFiles: ["bin/cli.js"],
330
+ files: [
331
+ "skills/_shared/extra-dispatch.md",
332
+ "skills/orc-diy/references/blocks/extra.md",
333
+ "skills/orc-doc/SKILL.md",
334
+ "skills/orc-fast/SKILL.md",
335
+ "skills/orc-quick/references/dispatch-gate.md",
336
+ "skills/orc-quick/SKILL.md",
337
+ "skills/orc-wiki/SKILL.md",
338
+ "skills/orc-wiki/references/extra.md",
339
+ ],
340
+ },
341
+ {
342
+ // The trace band spelling for a position. The field NAME is unchanged, so
343
+ // the parser and the dedupe are untouched — but a rename of the PREFIX
344
+ // would silently split every slot dispatch out of `orc extra stats`.
345
+ name: "a slot dispatch's band is `slot:<slot>` (v0.55.0)",
346
+ token: "slot:<slot>",
347
+ binFiles: ["bin/cli.js"],
348
+ files: ["skills/_shared/extra-dispatch.md", "skills/orc/references/trace-protocol.md"],
349
+ },
350
+ // ── v0.54.0 — RECOVERY. A failure is a POSITION, not a blank page ────────
351
+ {
352
+ // The sixth member of the family. It is what stops a fallback from landing
353
+ // a fresh executor on a file a dead worker already half-wrote.
354
+ name: "a resume CONTINUES; it never re-does what is already on disk (v0.54.0)",
355
+ token: "a lane that re-does work the worktree already contains",
356
+ files: ["skills/_shared/extra-dispatch.md"],
357
+ },
358
+ {
359
+ // The free, zero-token read that decides which recovery is even correct. It
360
+ // is named in the preflight report too, because the orphan line the report
361
+ // renders is the command's own output.
362
+ name: "reconcile runs BEFORE the fallback, and it is free (v0.54.0)",
363
+ token: "orc extra reconcile",
364
+ binFiles: ["bin/cli.js"],
365
+ files: [
366
+ "skills/_shared/extra-dispatch.md",
367
+ "skills/_shared/return-validation.md",
368
+ "skills/orc-diy/references/blocks/extra.md",
369
+ "skills/orc-fast/SKILL.md",
370
+ "skills/orc-mini/SKILL.md",
371
+ // v0.55.0 — /orc-wiki can finally route, so it finally owes the rule.
372
+ "skills/orc-wiki/references/extra.md",
373
+ "skills/orc/SKILL.md",
374
+ "skills/orc/references/preflight-report.md",
375
+ ],
376
+ },
377
+ {
378
+ // The CLI composes the continuation slice. A lane that wrote its own resume
379
+ // wording would produce a second wording for the same facts.
380
+ name: "the resume slice is CLI-composed (v0.54.0)",
381
+ token: "orc extra resume-slice",
382
+ binFiles: ["bin/cli.js"],
383
+ files: ["skills/_shared/extra-dispatch.md"],
384
+ },
385
+ {
386
+ // WHERE the position lives. Renamed on either side and the lint fails — the
387
+ // `extra-spend.jsonl` precedent, for the same reason: a path a lane cannot
388
+ // find is a recovery that cannot happen.
389
+ name: "the journal is the CLI's, and it lives at ONE path (v0.54.0)",
390
+ token: ".claude/orc/extra-journal/",
391
+ binFiles: ["bin/cli.js"],
392
+ files: ["skills/_shared/extra-dispatch.md"],
393
+ },
394
+ {
395
+ // The field a resumed return owes. Absent on a resume slice is MALFORMED,
396
+ // and `restarted` on a non-empty preexisting[] is a finding — both are
397
+ // useless if the two copies of the field name drift.
398
+ name: "a resumed return owes `resume_state` (v0.54.0)",
399
+ token: "resume_state",
400
+ files: ["skills/_shared/extra-dispatch.md", "skills/_shared/return-validation.md"],
401
+ },
402
+ {
403
+ // A gap that is not reported reads as a capability. The validator has to be
404
+ // able to tell `streamed-opaque` evidence from per-turn evidence, and it can
405
+ // only do that if the field is spelled the same in all three places.
406
+ name: "journal fidelity is DECLARED and never rendered stronger (v0.54.0)",
407
+ token: "journal_fidelity",
408
+ binFiles: ["bin/cli.js"],
409
+ files: ["skills/_shared/extra-dispatch.md", "skills/_shared/return-validation.md"],
410
+ },
411
+ {
412
+ // Three readers parse the EXTRA verbs, so a resume that leaves no line
413
+ // cannot be counted by any of them.
414
+ name: "the resume trace verb, composed once (v0.54.0)",
415
+ token: "EXTRA resume",
416
+ binFiles: ["bin/cli.js"],
417
+ files: ["skills/_shared/extra-dispatch.md", "skills/orc/references/trace-protocol.md"],
418
+ },
419
+ {
420
+ // Whose fault it was. It is not decoration — a `network` verdict HOLDS the
421
+ // wave, so the word has to mean the same thing on both sides.
422
+ name: "attribution decides the recovery, and `network` HOLDS (v0.54.0)",
423
+ token: "fallback_would_also_fail",
424
+ binFiles: ["bin/cli.js"],
425
+ files: ["skills/_shared/extra-dispatch.md"],
426
+ },
427
+ {
428
+ // v0.52.0 (D6) — WHICH LANES ROUTE FOREIGN. The table was prose in one
429
+ // markdown file and nothing computed it, so the routing table could say
430
+ // `[40,55) → opencode/big-pickle` without ever saying that `/orc-fast`
431
+ // resolves a BAND rather than a score. `EXTRA_LANE_SHAPES` in bin/cli.js is
432
+ // the machine-readable copy; a golden test in test/cli/extra-routing.test.js
433
+ // compares the two lists in BOTH directions (the DIY_STEPS → stitch-order
434
+ // precedent), so a lane added to one and not the other fails.
435
+ name: "the lane table is CODE, not only prose (v0.52.0)",
436
+ token: "Which lanes route foreign",
437
+ binFiles: ["bin/cli.js"],
438
+ files: ["skills/_shared/extra-dispatch.md"],
439
+ },
440
+ {
441
+ // The rule a fixed-executor lane resolves with. Registered because
442
+ // `/orc-doc` was DECLARED as routing foreign while being absent from the
443
+ // rule's own list, so the lane had no defined way to resolve a band at all.
444
+ name: "a fixed lane resolves BOTH EDGES of its agent's band (v0.50.0, extended v0.52.0)",
445
+ token: "Resolve BOTH EDGES",
446
+ binFiles: ["bin/cli.js"],
447
+ files: ["skills/_shared/extra-dispatch.md"],
448
+ },
449
+ {
450
+ // The foreign return's downgrade check. `actual_model` cannot exist for a
451
+ // worker with no injected model-id line, so this is what replaces it — and
452
+ // it must never quietly become a synonym for a clean check.
453
+ name: "foreign return — SUBSTITUTION check replaces the downgrade check (v0.50.0)",
454
+ token: "SUBSTITUTION",
455
+ files: [
456
+ "skills/_shared/extra-dispatch.md",
457
+ "skills/_shared/return-validation.md",
458
+ "skills/orc-doc/SKILL.md",
459
+ "skills/orc-mini/SKILL.md",
460
+ "skills/orc-retro/SKILL.md",
461
+ "skills/orc/SKILL.md",
462
+ ],
463
+ },
464
+ {
465
+ // v0.34.1: binFiles pins it to the CLI registry too — the key was
466
+ // documented, read, and linted here while `orc config` had never heard of
467
+ // it (a phantom key nothing could set).
468
+ name: "retro delivery target (v0.8.1 — PR/issue to retro_repo, channel-gated)",
469
+ token: "retro_repo",
470
+ binFiles: ["bin/cli.js"],
471
+ files: [
472
+ "commands/orc-retro.md",
473
+ "skills/orc/config.md",
474
+ "skills/orc-retro/SKILL.md",
475
+ "skills/orc-retro/examples/retro-mock.md",
476
+ ],
477
+ },
478
+ {
479
+ name: "analyst absence attestation (v0.9.0 — searched: notes on missing/buildable)",
480
+ token: "searched:",
481
+ files: [
482
+ "agents/orc-analyst-fable-5.md",
483
+ "agents/orc-analyze-mini-opus-5-med.md",
484
+ "agents/orc-analyze-mini-sonnet-5-high.md",
485
+ "agents/orc-system-analyst-opus-5-high.md",
486
+ // v0.39.0: the read ladder's anti-chain rule ends in a `searched:` return,
487
+ // so a rename of the attestation field has to reach it too.
488
+ "skills/_shared/read-ladder.md",
489
+ "skills/orc-analyze-mini/SKILL.md",
490
+ "skills/orc-analyze/SKILL.md",
491
+ "skills/orc-analyze/references/deep-mode.md",
492
+ "skills/orc-analyze/schemas/report-audit.md",
493
+ "skills/orc-analyze/schemas/report-prose.md",
494
+ "skills/orc-analyze/schemas/report-requirement.md",
495
+ "skills/orc-analyze/schemas/requirement-spec.md",
496
+ ],
497
+ },
498
+ {
499
+ name: "spec staleness stamp (v0.9.0 — git_head recorded at analysis time)",
500
+ token: "git_head",
501
+ files: [
502
+ "agents/orc-analyst-fable-5.md",
503
+ "agents/orc-analyze-mini-opus-5-med.md",
504
+ "agents/orc-analyze-mini-sonnet-5-high.md",
505
+ "agents/orc-planner-fable-5.md",
506
+ "agents/orc-planner-opus-5-med.md",
507
+ "agents/orc-system-analyst-opus-5-high.md",
508
+ "skills/orc-analyze-mini/SKILL.md",
509
+ "skills/orc-analyze/SKILL.md",
510
+ "skills/orc-analyze/schemas/requirement-spec.md",
511
+ "skills/orc-mini/SKILL.md",
512
+ "skills/orc-poly/references/poly-spec.md",
513
+ "skills/orc/SKILL.md",
514
+ "skills/orc/references/analyst-gates.md",
515
+ "skills/orc/references/plan-handoff.md",
516
+ "skills/orc/schemas/planning-output.md",
517
+ "skills/orc/subskills/orc-planner/SKILL.md",
518
+ ],
519
+ },
520
+ {
521
+ // NOTE — the token is a BARE ENGLISH WORD, so this row is a token->file-set
522
+ // map and not only a concept. v0.54.0 added a second, unrelated meaning: an
523
+ // ORPHANED FOREIGN DISPATCH, whose lowercase literals (`orphans[]`, the
524
+ // `EXTRA orphan` trace verb, `extra-orphan-dispatch`) cannot be spelled any
525
+ // other way. Those three files are registered here so the lint stays green;
526
+ // the row's real job — a PLAN file that drops the coverage-gate word — is
527
+ // unaffected, because that is caught by `missing`, not by `unregistered`.
528
+ name: "plan coverage gate (v0.9.0 — orphan requirement = malformed plan)",
529
+ token: "orphan",
530
+ files: [
531
+ "agents/orc-planner-fable-5.md",
532
+ "agents/orc-planner-mini-opus-5-med.md",
533
+ "agents/orc-planner-mini-sonnet-5-high.md",
534
+ "agents/orc-planner-opus-5-med.md",
535
+ "commands/orc-plan.md",
536
+ "skills/_shared/extra-dispatch.md",
537
+ "skills/orc-mini/SKILL.md",
538
+ "skills/orc-retro/SKILL.md",
539
+ "skills/orc/SKILL.md",
540
+ "skills/orc/references/analyst-gates.md",
541
+ "skills/orc/references/plan-handoff.md",
542
+ "skills/orc/references/preflight-report.md",
543
+ "skills/orc/references/trace-protocol.md",
544
+ "skills/orc/schemas/planning-output.md",
545
+ "skills/orc/subskills/orc-planner-mini/SKILL.md",
546
+ "skills/orc/subskills/orc-planner/SKILL.md",
547
+ ],
548
+ },
549
+ {
550
+ name: "spec invariants last-mile wiring (v0.9.0 — task field -> slice constraints[])",
551
+ token: "spec_invariants",
552
+ files: [
553
+ "skills/orc-doc/SKILL.md",
554
+ "agents/orc-planner-fable-5.md",
555
+ "agents/orc-planner-mini-opus-5-med.md",
556
+ "agents/orc-planner-mini-sonnet-5-high.md",
557
+ "agents/orc-planner-opus-5-med.md",
558
+ "commands/orc-pact.md",
559
+ "skills/_shared/interview.md",
560
+ "skills/_shared/lane-suspend.md",
561
+ "skills/orc-brainstorm/SKILL.md",
562
+ "skills/orc-brainstorm/references/brainstorm-doc.md",
563
+ "skills/orc-doc/references/gates.md",
564
+ "skills/orc-grill/SKILL.md",
565
+ "skills/orc-grill/references/grill-doc.md",
566
+ "skills/orc-mini/SKILL.md",
567
+ "skills/orc-pact/SKILL.md",
568
+ "skills/orc-pact/references/gate.md",
569
+ "skills/orc-pact/references/ledger.md",
570
+ "skills/orc/SKILL.md",
571
+ "skills/orc/references/analyst-gates.md",
572
+ "skills/orc/references/preflight-report.md",
573
+ "skills/orc/schemas/planning-output.md",
574
+ "skills/orc/subskills/orc-execution/core.md",
575
+ "skills/orc/subskills/orc-planner-mini/SKILL.md",
576
+ "skills/orc/subskills/orc-planner/SKILL.md",
577
+ ],
578
+ },
579
+ {
580
+ name: "GATE trace verb (v0.9.0 — deterministic exit-gate pass/bounce lines)",
581
+ token: "`GATE",
582
+ files: [
583
+ "agents/orc-retro-opus-5-med.md",
584
+ "agents/orc-retro-sonnet-5-high.md",
585
+ "skills/orc-analyze-mini/SKILL.md",
586
+ "skills/orc-analyze/SKILL.md",
587
+ "skills/orc-diy/references/blocks/trace.md",
588
+ "skills/orc-fast/SKILL.md",
589
+ "skills/orc-mini/SKILL.md",
590
+ "skills/orc-poly/SKILL.md",
591
+ "skills/orc-poly/examples/poly-run-mock.md",
592
+ "skills/orc-quick/SKILL.md",
593
+ "skills/orc-retro/SKILL.md",
594
+ "skills/orc/SKILL.md",
595
+ "skills/orc/references/analyst-gates.md",
596
+ "skills/orc/references/effort-and-mode.md",
597
+ "skills/orc/references/plan-handoff.md",
598
+ "skills/orc/references/stop-and-resume.md",
599
+ "skills/orc/references/trace-protocol.md",
600
+ "skills/orc/references/ultra-mode.md",
601
+ "skills/orc-pr-driver/SKILL.md",
602
+ "skills/orc-pr-setup/SKILL.md",
603
+ "skills/orc/subskills/orc-pr/stack-gate.md",
604
+ // v0.42.0: the run_budget_dispatches gate — a forecast over budget STOPS
605
+ // before wave 1 with the batch pause`s discipline, and says so in the trace.
606
+ "skills/orc/config.md",
607
+ "skills/orc/references/preflight-report.md",
608
+ ],
609
+ },
610
+ {
611
+ name: "ultra lane trigger (v0.10.0 — /orc-ultra forces ultra_mode run-scoped)",
612
+ token: "ultra_mode",
613
+ files: [
614
+ "commands/orc-ultra.md",
615
+ "skills/orc/SKILL.md",
616
+ "skills/orc/references/trace-protocol.md",
617
+ "skills/orc/references/ultra-mode.md",
618
+ "skills/orc/schemas/checkpoint.md",
619
+ ],
620
+ },
621
+ {
622
+ name: "ultra advisor brief handoff (v0.10.0 — brief_path return -> slice injection)",
623
+ token: "brief_path",
624
+ files: [
625
+ "agents/orc-advisor-fable-5.md",
626
+ "agents/orc-advisor-opus-5-xhigh.md",
627
+ "skills/orc-advisor/SKILL.md",
628
+ "skills/orc/references/ultra-mode.md",
629
+ "skills/orc/schemas/checkpoint.md",
630
+ ],
631
+ },
632
+ {
633
+ name: "ultra verdict discipline (v0.10.0 — blocking needs anchor + failure_consequence)",
634
+ token: "failure_consequence",
635
+ files: [
636
+ "agents/orc-judge-fable-5.md",
637
+ "agents/orc-judge-opus-5-xhigh.md",
638
+ "skills/orc-judge/SKILL.md",
639
+ "skills/orc/references/ultra-mode.md",
640
+ ],
641
+ },
642
+ {
643
+ // The v0.19.0 fix for "the trace only got one line": every trace-owning
644
+ // lane states the running-record cadence + this self-check inline, so a
645
+ // lane cannot quietly treat the trace as an end-of-run summary. v0.32.0
646
+ // moved the PEN to orc-trace-writer-haiku-4-5, so the writer's own
647
+ // self-check carries the token too — the cadence is now a dispatch
648
+ // obligation, not a memory one.
649
+ name: "behavior-trace write cadence (v0.19.0 — append per event, never batched at the end)",
650
+ token: "zero new trace lines is a protocol violation",
651
+ files: [
652
+ "agents/orc-trace-writer-haiku-4-5.md",
653
+ "skills/orc-aftermath/SKILL.md",
654
+ "skills/orc-analyze/SKILL.md",
655
+ "skills/orc-boundary/SKILL.md",
656
+ "skills/orc-brainstorm/SKILL.md",
657
+ "skills/orc-budget/SKILL.md",
658
+ "skills/orc-claude/SKILL.md",
659
+ "skills/orc-diy/references/blocks/trace.md",
660
+ "skills/orc-doc/SKILL.md",
661
+ "skills/orc-export/SKILL.md",
662
+ "skills/orc-fast/SKILL.md",
663
+ "skills/orc-grill/SKILL.md",
664
+ "skills/orc-handoff/SKILL.md",
665
+ "skills/orc-learn/SKILL.md",
666
+ "skills/orc-mini/SKILL.md",
667
+ "skills/orc-pact/SKILL.md",
668
+ "skills/orc-poly/SKILL.md",
669
+ "skills/orc-pr-driver/SKILL.md",
670
+ "skills/orc-pr-setup/SKILL.md",
671
+ "skills/orc-quick/SKILL.md",
672
+ "skills/orc-route/SKILL.md",
673
+ "skills/orc-verify/SKILL.md",
674
+ "skills/orc-wiki/SKILL.md",
675
+ "skills/orc/SKILL.md",
676
+ "skills/orc/references/trace-protocol.md",
677
+ ],
678
+ },
679
+ {
680
+ // v0.34.2: the pointer alone was never enough. `traceStats` cannot tell a
681
+ // pointer written two seconds ago (file not created yet) from a dangling
682
+ // one, so every lane's own run-start step split its run across two files —
683
+ // 9 orphan traces across 15 evals, the largest defect family in the corpus.
684
+ // Creating the file in the SAME step makes the hook's existence check true
685
+ // by construction. Pinned to every lane that writes a pointer, so the next
686
+ // lane added cannot quietly omit it (the hook fix is independent, on
687
+ // purpose — neither half relies on the other).
688
+ name: "trace file created with the pointer (v0.34.2 — kills the .current clobber)",
689
+ token: "touch the trace file",
690
+ files: [
691
+ "skills/_shared/lane-suspend.md",
692
+ "skills/orc-aftermath/SKILL.md",
693
+ "skills/orc-analyze-mini/SKILL.md",
694
+ "skills/orc-analyze/SKILL.md",
695
+ "skills/orc-boundary/SKILL.md",
696
+ "skills/orc-brainstorm/SKILL.md",
697
+ "skills/orc-budget/SKILL.md",
698
+ "skills/orc-challenge/SKILL.md",
699
+ "skills/orc-challenge/references/intake.md",
700
+ "skills/orc-claude/SKILL.md",
701
+ "skills/orc-diy/references/blocks/trace.md",
702
+ "skills/orc-doc/SKILL.md",
703
+ "skills/orc-export/SKILL.md",
704
+ "skills/orc-fast/SKILL.md",
705
+ "skills/orc-grill/SKILL.md",
706
+ "skills/orc-handoff/SKILL.md",
707
+ "skills/orc-learn/SKILL.md",
708
+ "skills/orc-mini/SKILL.md",
709
+ "skills/orc-pact/SKILL.md",
710
+ "skills/orc-pattern/SKILL.md",
711
+ "skills/orc-poly/SKILL.md",
712
+ "skills/orc-pr-driver/SKILL.md",
713
+ "skills/orc-pr-setup/SKILL.md",
714
+ "skills/orc-quick/SKILL.md",
715
+ "skills/orc-route/SKILL.md",
716
+ "skills/orc-verify/SKILL.md",
717
+ "skills/orc-wiki/SKILL.md",
718
+ "skills/orc/SKILL.md",
719
+ "skills/orc/references/plan-handoff.md",
720
+ "skills/orc/references/trace-protocol.md",
721
+ "skills/orc/subskills/orc-planner/SKILL.md",
722
+ ],
723
+ },
724
+ {
725
+ name: "behavior-trace run pointer (every ORC entry point writes .current)",
726
+ token: ".current",
727
+ files: [
728
+ "agents/orc-trace-writer-haiku-4-5.md",
729
+ "hooks/orc-trace.js",
730
+ "skills/_shared/lane-suspend.md",
731
+ "skills/context-combiner/SKILL.md",
732
+ "skills/orc-aftermath/SKILL.md",
733
+ "skills/orc-analyze-mini/SKILL.md",
734
+ "skills/orc-analyze/SKILL.md",
735
+ "skills/orc-boundary/SKILL.md",
736
+ "skills/orc-brainstorm/SKILL.md",
737
+ "skills/orc-budget/SKILL.md",
738
+ "skills/orc-budget/references/corpus.md",
739
+ "skills/orc-challenge/SKILL.md",
740
+ "skills/orc-challenge/examples/tsd-two-iterations.md",
741
+ "skills/orc-challenge/references/fix-brief.md",
742
+ "skills/orc-challenge/references/intake.md",
743
+ "skills/orc-claude/SKILL.md",
744
+ "skills/orc-diy/references/blocks/trace.md",
745
+ "skills/orc-doc/SKILL.md",
746
+ "skills/orc-doc/examples/orc-doc-prd-run.md",
747
+ "skills/orc-export/SKILL.md",
748
+ "skills/orc-fast/SKILL.md",
749
+ "skills/orc-grill/SKILL.md",
750
+ "skills/orc-handoff/SKILL.md",
751
+ "skills/orc-learn/SKILL.md",
752
+ "skills/orc-mini/SKILL.md",
753
+ "skills/orc-pact/SKILL.md",
754
+ "skills/orc-pattern/SKILL.md",
755
+ "skills/orc-poly/SKILL.md",
756
+ "skills/orc-pr-driver/SKILL.md",
757
+ "skills/orc-pr-setup/SKILL.md",
758
+ "skills/orc-quick/SKILL.md",
759
+ "skills/orc-route/SKILL.md",
760
+ "skills/orc-verify/SKILL.md",
761
+ "skills/orc-wiki/SKILL.md",
762
+ "skills/orc/SKILL.md",
763
+ "skills/orc/references/plan-handoff.md",
764
+ "skills/orc/references/stop-and-resume.md",
765
+ "skills/orc/references/trace-protocol.md",
766
+ "skills/orc/subskills/orc-planner/SKILL.md",
767
+ ],
768
+ },
769
+ {
770
+ // v0.32.0: narration is DISPATCHED, not remembered. The pen moved from the
771
+ // orchestrator's memory to a pinned Haiku writer dispatched at every phase
772
+ // close. Pinned to the canonical protocol + the three build-lane spines +
773
+ // orc-wiki's (the multi-dispatch lane) + the roster. Single-dispatch lanes
774
+ // (orc-claude/plan/analyze/pattern/verify/learn/poly/combiner) inherit the
775
+ // one-packet obligation from trace-protocol.md's canonical section, so they
776
+ // are DELIBERATELY not in this set — do not add them.
777
+ name: "trace narration writer (v0.32.0 — every phase close dispatches the writer)",
778
+ token: "orc-trace-writer-haiku-4-5",
779
+ files: [
780
+ "agents/MODEL-MAPPING.md",
781
+ "agents/orc-trace-writer-haiku-4-5.md",
782
+ "hooks/orc-trace.js",
783
+ "skills/_shared/fable5-override.md",
784
+ "skills/_shared/opus5-only.md",
785
+ "skills/orc-aftermath/SKILL.md",
786
+ "skills/orc-boundary/SKILL.md",
787
+ "skills/orc-boundary/references/gate.md",
788
+ "skills/orc-brainstorm/SKILL.md",
789
+ "skills/orc-budget/SKILL.md",
790
+ "skills/orc-diy/references/blocks/trace.md",
791
+ "skills/orc-export/SKILL.md",
792
+ "skills/orc-fast/SKILL.md",
793
+ "skills/orc-grill/SKILL.md",
794
+ "skills/orc-handoff/SKILL.md",
795
+ "skills/orc-mini/SKILL.md",
796
+ "skills/orc-pact/SKILL.md",
797
+ "skills/orc-pact/references/gate.md",
798
+ "skills/orc-quick/SKILL.md",
799
+ "skills/orc-route/SKILL.md",
800
+ "skills/orc-wiki/SKILL.md",
801
+ "skills/orc/SKILL.md",
802
+ "skills/orc/references/trace-protocol.md",
803
+ ],
804
+ },
805
+ {
806
+ // v0.32.0: the hook's zero-model-dependence phase segmentation. Producer
807
+ // (the hook) and both consumers (retro skill + its miner) must agree on the
808
+ // verb and its role families.
809
+ name: "deterministic phase inference (v0.32.0 — hook-emitted PHASE-EDGE)",
810
+ token: "PHASE-EDGE",
811
+ files: [
812
+ "agents/orc-retro-opus-5-med.md",
813
+ "agents/orc-retro-sonnet-5-high.md",
814
+ "hooks/orc-trace.js",
815
+ "skills/orc-retro/SKILL.md",
816
+ "skills/orc/SKILL.md",
817
+ "skills/orc/config.md",
818
+ "skills/orc/references/trace-protocol.md",
819
+ // v0.42.0: the combiner is segmented as its own PHASE-EDGE family INSIDE the
820
+ // analyze trace — the reason it needs no lane of its own.
821
+ "skills/context-combiner/SKILL.md",
822
+ ],
823
+ },
824
+ {
825
+ // v0.32.0: the rich run filename. The hook documents it (and bootstraps the
826
+ // generic name the writer renames); the protocol defines the grammar; retro
827
+ // aggregates per lane straight from it.
828
+ name: "rich trace filename (v0.32.0 — run-<lane>-<slug>-<DDMMYY>-<HHMMSS>.txt)",
829
+ token: "run-<lane>-<slug>-",
830
+ files: [
831
+ "agents/orc-retro-opus-5-med.md",
832
+ "agents/orc-retro-sonnet-5-high.md",
833
+ "agents/orc-trace-writer-haiku-4-5.md",
834
+ "hooks/orc-trace.js",
835
+ "skills/orc-retro/SKILL.md",
836
+ "skills/orc/references/trace-protocol.md",
837
+ "skills/orc/schemas/checkpoint.md",
838
+ ],
839
+ },
840
+ {
841
+ name: "wiki registration writer (v0.18.0 — manifest+INDEX derived by the CLI, never hand-written)",
842
+ token: "orc wiki sync",
843
+ binFiles: ["bin/cli.js"],
844
+ files: [
845
+ "agents/orc-wiki-scanner-opus-4-8-high.md",
846
+ "agents/orc-wiki-scanner-opus-5-med.md",
847
+ "agents/orc-wiki-scanner-sonnet-5-high.md",
848
+ "commands/orc-export.md",
849
+ "commands/orc-wiki.md",
850
+ "hooks/orc-statusline.js",
851
+ "skills/orc-export/SKILL.md",
852
+ "skills/orc-pact/SKILL.md",
853
+ "skills/orc-wiki/README.md",
854
+ "skills/orc-wiki/SKILL.md",
855
+ "skills/orc-wiki/references/extra.md",
856
+ "skills/orc-wiki/references/crosslink.md",
857
+ "skills/orc-wiki/references/integrity-check.md",
858
+ "skills/orc-wiki/references/orientation.md",
859
+ "skills/orc-wiki/references/partial-refresh.md",
860
+ "skills/orc-wiki/references/staleness.md",
861
+ "skills/orc-wiki/schemas/crosslink-tag.md",
862
+ "skills/orc-wiki/schemas/wiki-doc.md",
863
+ ],
864
+ },
865
+ {
866
+ name: "wiki CROSSLINK-ONLY branch (v0.18.0 — publish tags from existing docs; never a re-scan)",
867
+ token: "CROSSLINK-ONLY",
868
+ files: [
869
+ "commands/orc-wiki.md",
870
+ "skills/orc-wiki/README.md",
871
+ "skills/orc-wiki/SKILL.md",
872
+ "skills/orc-wiki/references/crosslink.md",
873
+ ],
874
+ },
875
+ {
876
+ name: "wiki UNREGISTERED state (v0.18.0 — docs without a manifest ≠ no wiki; sync, never re-scan)",
877
+ token: "UNREGISTERED",
878
+ files: [
879
+ "hooks/orc-statusline.js",
880
+ "skills/orc-wiki/README.md",
881
+ "skills/orc-wiki/SKILL.md",
882
+ "skills/orc-wiki/references/crosslink.md",
883
+ "skills/orc-wiki/references/partial-refresh.md",
884
+ "skills/orc-wiki/references/staleness.md",
885
+ ],
886
+ },
887
+ {
888
+ name: "wiki freshness manifest (v0.11.0 — written ONLY by `orc wiki sync`, computed on read)",
889
+ token: "wiki-meta.json",
890
+ binFiles: ["bin/cli.js"],
891
+ files: [
892
+ "hooks/orc-statusline.js",
893
+ "skills/_shared/detecting-artifacts.md",
894
+ "skills/orc-challenge/references/cycle-state.md",
895
+ "skills/orc-fast/SKILL.md",
896
+ "skills/orc-learn/SKILL.md",
897
+ "skills/orc-mini/SKILL.md",
898
+ "skills/orc-pact/SKILL.md",
899
+ "skills/orc-poly/SKILL.md",
900
+ "skills/orc-poly/examples/poly-run-mock.md",
901
+ "skills/orc-quick/SKILL.md",
902
+ "skills/orc-wiki/README.md",
903
+ "skills/orc-wiki/SKILL.md",
904
+ "skills/orc-wiki/references/crosslink.md",
905
+ "skills/orc-wiki/references/integrity-check.md",
906
+ "skills/orc-wiki/references/partial-refresh.md",
907
+ "skills/orc-wiki/references/staleness.md",
908
+ "skills/orc-wiki/schemas/crosslink-tag.md",
909
+ "skills/orc/SKILL.md",
910
+ "skills/orc/config.md",
911
+ "skills/orc/references/wiki-consult.md",
912
+ ],
913
+ },
914
+ {
915
+ // v0.25.0: existence detection is a shared contract so a generated wiki /
916
+ // pattern is never missed by an ad-hoc find/glob against the hidden .claude
917
+ // dir. Canonical prose: skills/_shared/detecting-artifacts.md; the
918
+ // deterministic probes are `orc wiki status` + `orc pattern status` in
919
+ // bin/cli.js (CLI half — documented drift the lint's templates/ root can't
920
+ // see). Token = the pointer every knowledge-gated consumer carries.
921
+ name: "artifact existence probe (v0.25.0 — deterministic CLI, never ad-hoc find)",
922
+ token: "detecting-artifacts.md",
923
+ files: [
924
+ "skills/_shared/README.md",
925
+ "skills/_shared/gotchas.md",
926
+ "skills/_shared/interview.md",
927
+ "skills/_shared/read-ladder.md",
928
+ "skills/orc-boundary/SKILL.md",
929
+ "skills/orc-boundary/references/card.md",
930
+ "skills/orc-brainstorm/SKILL.md",
931
+ "skills/orc-brainstorm/references/lenses.md",
932
+ "skills/orc-challenge/SKILL.md",
933
+ "skills/orc-challenge/examples/code-module.md",
934
+ "skills/orc-challenge/references/cycle-state.md",
935
+ "skills/orc-challenge/references/kinds.md",
936
+ "skills/orc-diy/references/flow-schema.md",
937
+ "skills/orc-doc/SKILL.md",
938
+ "skills/orc-fast/SKILL.md",
939
+ "skills/orc-grill/SKILL.md",
940
+ "skills/orc-handoff/SKILL.md",
941
+ "skills/orc-mini/SKILL.md",
942
+ "skills/orc-pact/SKILL.md",
943
+ "skills/orc-poly/SKILL.md",
944
+ "skills/orc-quick/SKILL.md",
945
+ "skills/orc-route/SKILL.md",
946
+ "skills/orc-verify/SKILL.md",
947
+ "skills/orc-wiki/references/partial-refresh.md",
948
+ "skills/orc-wiki/references/staleness.md",
949
+ "skills/orc/references/pattern-gate.md",
950
+ "skills/orc/references/wiki-consult.md",
951
+ ],
952
+ },
953
+ {
954
+ // v0.42.0: the interview mechanic (design tree → frontier → rounds →
955
+ // confirmation gate) is shared prose, not one lane's trick — /orc-grill
956
+ // runs it end to end and intake.md borrows its round format. Canonical
957
+ // copy: skills/_shared/interview.md. Token = the pointer every consumer
958
+ // carries, so a lane cannot fork its own divergent interview.
959
+ name: "the interview primitive (v0.42.0 — frontier rounds, facts vs decisions)",
960
+ token: "_shared/interview.md",
961
+ files: [
962
+ "commands/orc-grill.md",
963
+ "skills/_shared/README.md",
964
+ "skills/_shared/interview.md",
965
+ "skills/_shared/lane-suspend.md",
966
+ "skills/orc-boundary/SKILL.md",
967
+ "skills/orc-brainstorm/SKILL.md",
968
+ "skills/orc-challenge/SKILL.md",
969
+ "skills/orc-challenge/references/council.md",
970
+ "skills/orc-challenge/references/intake.md",
971
+ "skills/orc-doc/SKILL.md",
972
+ "skills/orc-doc/references/gates.md",
973
+ "skills/orc-grill/SKILL.md",
974
+ "skills/orc-pact/SKILL.md",
975
+ "skills/orc/references/intake.md",
976
+ ],
977
+ },
978
+ {
979
+ // The one rule that makes an interview load-bearing rather than a good
980
+ // conversation: a settled decision must come from the human. Pinned
981
+ // verbatim so no lane can soften it into "assume a sensible default".
982
+ name: "interview decisions belong to the user (v0.42.0)",
983
+ token: "a lane that answers its own interview question",
984
+ files: [
985
+ "skills/_shared/extra-dispatch.md",
986
+ "skills/_shared/interview.md",
987
+ "skills/orc-brainstorm/SKILL.md",
988
+ "skills/orc-challenge/SKILL.md",
989
+ "skills/orc-challenge/references/council.md",
990
+ "skills/orc-doc/SKILL.md",
991
+ "skills/orc-grill/SKILL.md",
992
+ ],
993
+ },
994
+ {
995
+ // v0.45.0: the DIVERGENT mirror of the rule above. Generating options is
996
+ // ORC's job; choosing between them is the user's. Registered as its own
997
+ // token, and deliberately pinned to interview.md as well, so the pair stays
998
+ // a pair — a brainstorm that starts picking and a grill that starts
999
+ // answering are the same drift seen from two sides.
1000
+ name: "generated options belong to the user (v0.45.0 — the divergent mirror)",
1001
+ token: "a lane that picks its own favourite",
1002
+ files: [
1003
+ "skills/_shared/extra-dispatch.md",
1004
+ "skills/_shared/interview.md",
1005
+ "skills/orc-brainstorm/SKILL.md",
1006
+ "skills/orc-challenge/SKILL.md",
1007
+ "skills/orc-challenge/references/council.md",
1008
+ ],
1009
+ },
1010
+ {
1011
+ // v0.47.0: the THIRD member of the pair above. Same split every time — facts
1012
+ // and findings are ORC's, the work and the decision are the user's — but here
1013
+ // it is the WORK that must stay the user's: a session that just wrote the fix
1014
+ // will grade its own homework, and it will always pass. The separation is not
1015
+ // friction; it is the measuring instrument.
1016
+ name: "the grader never repairs (v0.47.0 — /orc-challenge)",
1017
+ token: "a lane that fixes what it judged",
1018
+ files: [
1019
+ "skills/_shared/extra-dispatch.md",
1020
+ "skills/_shared/interview.md",
1021
+ "skills/orc-challenge/SKILL.md",
1022
+ "skills/orc-challenge/references/council.md",
1023
+ "skills/orc-doc/SKILL.md",
1024
+ ],
1025
+ },
1026
+ {
1027
+ // The same contract applied to the PURPOSE of the review rather than to a
1028
+ // design question. A finding is only a finding relative to a goal, and a
1029
+ // DEFENSIBLE finding about the wrong thing is worse than an obviously wrong
1030
+ // one — the user burns three iterations on what did not matter. Mirrored in
1031
+ // bin/cli.js, where `--goal` has no default and `init` refuses by name.
1032
+ name: "the review's goal is the user's to state (v0.47.0 — /orc-challenge intake)",
1033
+ token: "a lane that guesses the user's goal",
1034
+ files: [
1035
+ "skills/_shared/interview.md",
1036
+ "skills/orc-challenge/SKILL.md",
1037
+ "skills/orc-challenge/references/intake.md",
1038
+ ],
1039
+ binFiles: ["bin/cli.js"],
1040
+ },
1041
+ {
1042
+ // The frozen goal is a PATH in every dispatch, never prose — which is the
1043
+ // whole reason it is written to disk at intake instead of being retyped into
1044
+ // each slice. `goals.md` is also a filename the CLI owns.
1045
+ name: "the frozen goal file (v0.47.0 — /orc-challenge)",
1046
+ token: "goals.md",
1047
+ files: [
1048
+ "agents/orc-challenge-advisor-opus-5-med.md",
1049
+ "agents/orc-challenge-contrarian-opus-5-high.md",
1050
+ "agents/orc-challenge-executor-opus-5-med.md",
1051
+ "agents/orc-challenge-expansionist-opus-5-med.md",
1052
+ "agents/orc-challenge-judge-opus-5-high.md",
1053
+ "agents/orc-challenge-principles-opus-5-high.md",
1054
+ "skills/orc-challenge/SKILL.md",
1055
+ "skills/orc-challenge/examples/council-full-roster.md",
1056
+ "skills/orc-challenge/examples/tsd-two-iterations.md",
1057
+ "skills/orc-challenge/references/council.md",
1058
+ "skills/orc-challenge/references/cycle-state.md",
1059
+ "skills/orc-challenge/references/dimensions.md",
1060
+ "skills/orc-challenge/references/fix-brief.md",
1061
+ "skills/orc-challenge/references/intake.md",
1062
+ "skills/orc-challenge/references/sealed-slice.md",
1063
+ ],
1064
+ binFiles: ["bin/cli.js"],
1065
+ },
1066
+ {
1067
+ // A fix is a CLAIM; a verdict is EVIDENCE. The moment the judge is handed a
1068
+ // summary of what changed, it is grading the summary — written by the party
1069
+ // with an interest in passing.
1070
+ name: "the sealed judge slice (v0.47.0 — paths and ids only)",
1071
+ token: "judge slice is SEALED",
1072
+ files: [
1073
+ "skills/orc-challenge/SKILL.md",
1074
+ "skills/orc-challenge/references/council.md",
1075
+ "skills/orc-challenge/references/sealed-slice.md",
1076
+ ],
1077
+ },
1078
+ {
1079
+ // v0.49.1: the FOURTH member of the interview family. Same split every time
1080
+ // — the facts are ORC's, the decision is the user's — but this one is about
1081
+ // WHO REVIEWS. A council chosen by ORC is ORC deciding which kinds of
1082
+ // criticism the user is allowed to hear, which is a bigger decision than any
1083
+ // single finding in the run. Mirrored in bin/cli.js, where `--council` has
1084
+ // no default and `init` refuses by name.
1085
+ // v0.49.1. The rule NO OTHER LINT CAN ENFORCE, which is exactly why it is
1086
+ // written down in three places and tested per read: a field the human path
1087
+ // prints and the JSON omits is drift, and both halves live in ONE function,
1088
+ // so nothing structural can ever notice the gap.
1089
+ name: "a read hands back the whole computed object (v0.49.1)",
1090
+ token: "--json is not a summary",
1091
+ files: [
1092
+ "skills/_shared/detecting-artifacts.md",
1093
+ "skills/orc-doc/references/house-rules.md",
1094
+ ],
1095
+ binFiles: ["bin/cli.js"],
1096
+ },
1097
+ {
1098
+ name: "the council is the user's to pick (v0.49.1 — /orc-challenge)",
1099
+ token: "a lane that picks its own council",
1100
+ files: [
1101
+ "skills/_shared/extra-dispatch.md",
1102
+ "skills/_shared/interview.md",
1103
+ "skills/orc-challenge/README.md",
1104
+ "skills/orc-challenge/SKILL.md",
1105
+ "skills/orc-challenge/examples/council-full-roster.md",
1106
+ "skills/orc-challenge/references/council.md",
1107
+ "skills/orc-challenge/references/intake.md",
1108
+ ],
1109
+ binFiles: ["bin/cli.js"],
1110
+ },
1111
+ {
1112
+ // The rule that makes five extra reviewers SAFE. A lens may only ever add a
1113
+ // candidate; the judge is the only role that assigns an outcome, and it is
1114
+ // the instrument `orc challenge record` validates against. Without this, the
1115
+ // council is five more opinions with no arbiter and the ledger stops meaning
1116
+ // anything.
1117
+ name: "a lens raises, the judge resolves (v0.49.1 — the council)",
1118
+ token: "A lens raises; only the judge resolves",
1119
+ files: [
1120
+ "agents/orc-challenge-contrarian-opus-5-high.md",
1121
+ "agents/orc-challenge-executor-opus-5-med.md",
1122
+ "skills/orc-challenge/README.md",
1123
+ "skills/orc-challenge/SKILL.md",
1124
+ "skills/orc-challenge/references/conservation.md",
1125
+ "skills/orc-challenge/references/council.md",
1126
+ ],
1127
+ },
1128
+ {
1129
+ // The council's canonical prose has ONE copy. The spine keeps the token and
1130
+ // a pointer; every lens agent points at it too, so a maintainer editing one
1131
+ // agent cannot invent a second idea of what the council is.
1132
+ name: "the council's canonical prose (v0.49.1)",
1133
+ token: "council.md",
1134
+ files: [
1135
+ "agents/orc-challenge-contrarian-opus-5-high.md",
1136
+ "agents/orc-challenge-executor-opus-5-med.md",
1137
+ "agents/orc-challenge-expansionist-opus-5-med.md",
1138
+ "agents/orc-challenge-outsider-opus-5-low.md",
1139
+ "agents/orc-challenge-principles-opus-5-high.md",
1140
+ "skills/orc-challenge/README.md",
1141
+ "skills/orc-challenge/SKILL.md",
1142
+ "skills/orc-challenge/references/dimensions.md",
1143
+ "skills/orc-challenge/references/intake.md",
1144
+ "skills/orc-challenge/references/sealed-slice.md",
1145
+ ],
1146
+ },
1147
+ {
1148
+ // conservation.md applied to INPUT. The obvious failure of adding five
1149
+ // reviewers is that the judge quietly ignores four of them and the run looks
1150
+ // identical while costing five times more — so the id set is derived by the
1151
+ // CLI from the reports on disk, never from the judge's account of them.
1152
+ name: "council conservation (v0.49.1 — conservation of input)",
1153
+ token: "council_coverage_pct",
1154
+ files: [
1155
+ "skills/orc-challenge/README.md",
1156
+ "skills/orc-challenge/SKILL.md",
1157
+ "skills/orc-challenge/references/conservation.md",
1158
+ "skills/orc-challenge/references/council.md",
1159
+ "skills/orc-challenge/references/cycle-state.md",
1160
+ "skills/orc-challenge/references/verdict-doc.md",
1161
+ ],
1162
+ binFiles: ["bin/cli.js"],
1163
+ },
1164
+ {
1165
+ // Rule 2. A judge that CAN pass something can be talked into passing
1166
+ // something; a judge that can only find, or fail to find, cannot.
1167
+ name: "PASS is the CLI's, never the judge's (v0.47.0)",
1168
+ token: "PASS is computed, never declared",
1169
+ files: [
1170
+ "skills/orc-doc/references/gates.md",
1171
+ "skills/orc-challenge/SKILL.md",
1172
+ "skills/orc-challenge/references/rubric.md",
1173
+ ],
1174
+ binFiles: ["bin/cli.js"],
1175
+ },
1176
+ {
1177
+ // The cycle folder. Project root, one folder per slug ever, never staged —
1178
+ // and never inside .claude/, because the review trail is a deliverable the
1179
+ // user may want in a pull request.
1180
+ name: "the challenge cycle folder (v0.47.0)",
1181
+ token: "orc/orc-challenge/",
1182
+ files: [
1183
+ "agents/orc-challenge-judge-opus-5-high.md",
1184
+ "skills/orc-challenge/examples/code-module.md",
1185
+ "skills/orc-challenge/examples/council-full-roster.md",
1186
+ "skills/orc-challenge/examples/tsd-two-iterations.md",
1187
+ "skills/orc-challenge/references/council.md",
1188
+ "skills/orc-challenge/references/fix-brief.md",
1189
+ "skills/orc-challenge/references/intake.md",
1190
+ "skills/orc-challenge/references/sealed-slice.md",
1191
+ "skills/orc-challenge/references/verdict-doc.md",
1192
+ "skills/orc-export/SKILL.md",
1193
+ ],
1194
+ binFiles: ["bin/cli.js"],
1195
+ },
1196
+ {
1197
+ name: "the paste-into-a-fresh-session brief (v0.47.0)",
1198
+ token: "fix-brief-",
1199
+ files: [
1200
+ "skills/orc-challenge/SKILL.md",
1201
+ "skills/orc-challenge/examples/tsd-two-iterations.md",
1202
+ "skills/orc-challenge/references/fix-brief.md",
1203
+ "skills/orc-challenge/references/intake.md",
1204
+ ],
1205
+ binFiles: ["bin/cli.js"],
1206
+ },
1207
+ {
1208
+ // The block that stops the resumed session asking where the fix went. That
1209
+ // is a fact the cycle already owns, and asking for it is rule 0's failure
1210
+ // mode in miniature.
1211
+ name: "the declared revision location (v0.47.0)",
1212
+ token: "Where to put the revised version",
1213
+ files: [
1214
+ "skills/orc-challenge/references/fix-brief.md",
1215
+ "skills/orc-challenge/references/intake.md",
1216
+ ],
1217
+ binFiles: ["bin/cli.js"],
1218
+ },
1219
+ {
1220
+ // It LISTS, it does not adopt: a judge pointed at the wrong file produces a
1221
+ // page of confident, useless findings.
1222
+ name: "the missing-revision state (v0.47.0)",
1223
+ token: "MISSING-REVISION",
1224
+ files: [
1225
+ "skills/orc-challenge/references/cycle-state.md",
1226
+ "skills/orc-challenge/references/fix-brief.md",
1227
+ ],
1228
+ binFiles: ["bin/cli.js"],
1229
+ },
1230
+ {
1231
+ // THE LEDGER, and `orc challenge` is its only writer — the same rule
1232
+ // wiki-meta.json lives under.
1233
+ name: "the challenge ledger (v0.47.0 — CLI-only writer)",
1234
+ token: "challenge.json",
1235
+ files: ["skills/orc-challenge/references/cycle-state.md"],
1236
+ binFiles: ["bin/cli.js"],
1237
+ },
1238
+ {
1239
+ // The trace verb, pinned the way `CROSSLINK` is. The CLI assembles the line
1240
+ // (`record` returns it as `trace_line`), so a second wording anywhere would
1241
+ // be a second count of the same iteration.
1242
+ name: "the CHALLENGE trace verb (v0.47.0)",
1243
+ token: "CHALLENGE iter=",
1244
+ files: [
1245
+ "skills/orc-challenge/SKILL.md",
1246
+ "skills/orc-challenge/examples/council-full-roster.md",
1247
+ "skills/orc-challenge/examples/tsd-two-iterations.md",
1248
+ "skills/orc-challenge/references/council.md",
1249
+ "skills/orc/references/trace-protocol.md",
1250
+ ],
1251
+ binFiles: ["bin/cli.js"],
1252
+ },
1253
+ {
1254
+ // v0.45.0: the SUSPEND contract — leave mid-run, let another lane settle one
1255
+ // thing, come back and finish. The opposite shape to FALLBACK-FROM, which
1256
+ // leaves and does not return. Canonical prose: _shared/lane-suspend.md.
1257
+ name: "lane suspend/resume canonical pointer (v0.45.0 — _shared/lane-suspend.md)",
1258
+ token: "_shared/lane-suspend.md",
1259
+ files: [
1260
+ "skills/_shared/README.md",
1261
+ "skills/_shared/lane-suspend.md",
1262
+ "skills/orc-brainstorm/SKILL.md",
1263
+ "skills/orc-challenge/references/intake.md",
1264
+ "skills/orc-doc/SKILL.md",
1265
+ "skills/orc-doc/references/gates.md",
1266
+ "skills/orc-grill/SKILL.md",
1267
+ "skills/orc/references/trace-protocol.md",
1268
+ ],
1269
+ },
1270
+ {
1271
+ // v0.45.0: the marker itself. Both halves of a suspend must agree on it, and
1272
+ // the receiving lane's extra exit exists ONLY under it.
1273
+ name: "suspend marker (v0.45.0 — RETURN-TO, the sender finishes the run)",
1274
+ token: "RETURN-TO",
1275
+ files: [
1276
+ "commands/orc-brainstorm.md",
1277
+ "skills/_shared/README.md",
1278
+ "skills/_shared/lane-suspend.md",
1279
+ "skills/orc-brainstorm/SKILL.md",
1280
+ "skills/orc-challenge/references/intake.md",
1281
+ "skills/orc-doc/SKILL.md",
1282
+ "skills/orc-doc/references/gates.md",
1283
+ "skills/orc-grill/SKILL.md",
1284
+ "skills/orc/references/trace-protocol.md",
1285
+ ],
1286
+ },
1287
+ {
1288
+ // v0.45.0: the brainstorm deliverable's location. Project root, one .md per
1289
+ // slug ever, never staged — same discipline as orc-quick/ and orc-grill/.
1290
+ name: "brainstorm deliverable location (v0.45.0 — orc/brainstorming-session/<slug>/)",
1291
+ token: "orc/brainstorming-session/",
1292
+ files: [
1293
+ "commands/orc-brainstorm.md",
1294
+ "skills/orc-brainstorm/SKILL.md",
1295
+ "skills/orc-brainstorm/references/brainstorm-doc.md",
1296
+ "skills/orc-pact/SKILL.md",
1297
+ ],
1298
+ },
1299
+ {
1300
+ // v0.45.0: the open slot. The entire value of a brainstorm is the idea ORC
1301
+ // did not think of; a closed menu is a survey. Pinned verbatim because it is
1302
+ // exactly the kind of rule a later edit "tidies" into a trailing sentence.
1303
+ name: "the open slot (v0.45.0 — every menu ends with the user's own words)",
1304
+ token: "ends with a slot for the user's own words",
1305
+ files: [
1306
+ "skills/orc-brainstorm/SKILL.md",
1307
+ "commands/orc-brainstorm.md",
1308
+ ],
1309
+ },
1310
+ {
1311
+ // v0.42.0: the analyst gate mirrors the planner’s plannable floor. Both
1312
+ // sentences must stay literally identical wherever they are stated, or a
1313
+ // lane quietly widens its own entry criteria and thin input walks back in.
1314
+ name: "analyzable floor (v0.42.0 — the analyst’s mirror of plannable)",
1315
+ token: "analyzable ⇔ the input names",
1316
+ files: [
1317
+ "skills/orc-analyze/SKILL.md",
1318
+ "skills/orc-analyze/references/thin-input.md",
1319
+ "skills/orc-grill/SKILL.md",
1320
+ // v0.45.0: brainstorm's exit 2 reuses the SAME sentence — a second
1321
+ // definition of "analyzable" is drift the lint cannot see.
1322
+ "skills/orc-brainstorm/SKILL.md",
1323
+ ],
1324
+ },
1325
+ {
1326
+ // v0.42.0: the resume pointer. ORC writes it at every stop and DELETES it at
1327
+ // FINISH, so the file existing IS the "this run is unfinished" flag — there
1328
+ // is no second consumed/not-consumed record to drift. `orc resume` and
1329
+ // `orc run list` both read it, hence the bin mirror: a rename on either
1330
+ // side breaks discovery for every paused run on disk.
1331
+ name: "resume pointer file (v0.42.0 — written at every stop, deleted at FINISH)",
1332
+ token: "RESUME.md",
1333
+ binFiles: ["bin/cli.js"],
1334
+ files: [
1335
+ "skills/orc-challenge/SKILL.md",
1336
+ "skills/orc-challenge/examples/tsd-two-iterations.md",
1337
+ "skills/orc-challenge/references/fix-brief.md",
1338
+ "skills/orc-doc/SKILL.md",
1339
+ "skills/orc-doc/examples/orc-doc-prd-run.md",
1340
+ "skills/orc-doc/references/gates.md",
1341
+ "skills/orc-doc/references/resume-protocol.md",
1342
+ "skills/orc/SKILL.md",
1343
+ "skills/orc/references/stop-and-resume.md",
1344
+ "skills/orc-doc/README.md",
1345
+ "skills/orc-doc/references/chunking.md",
1346
+ // v0.49.5 — the lane's own blurb now promises the hand-back by name.
1347
+ "commands/orc-doc.md",
1348
+ ],
1349
+ },
1350
+ {
1351
+ // v0.42.0: the one deterministic summary line `orc stats` reads. Pinned to
1352
+ // the protocol (where every trace-owning lane picks the obligation up), the
1353
+ // orc spine Phase 8 (where it is emitted), and the CLI that parses it.
1354
+ name: "STATS trace line (v0.42.0 — the line orc stats reads)",
1355
+ token: "STATS lane=",
1356
+ binFiles: ["bin/cli.js"],
1357
+ files: [
1358
+ "skills/orc/SKILL.md",
1359
+ "skills/orc/references/trace-protocol.md",
1360
+ ],
1361
+ },
1362
+ {
1363
+ name: "wiki freshness tier enum (v0.11.0 — FRESH/AGING/STALE, computed on read)",
1364
+ token: "AGING",
1365
+ files: [
1366
+ "hooks/orc-statusline.js",
1367
+ "skills/_shared/gotchas.md",
1368
+ "skills/_shared/interview.md",
1369
+ "skills/orc-fast/SKILL.md",
1370
+ "skills/orc-learn/SKILL.md",
1371
+ "skills/orc-learn/references/refresh.md",
1372
+ "skills/orc-mini/SKILL.md",
1373
+ "skills/orc-poly/SKILL.md",
1374
+ "skills/orc-poly/examples/poly-run-mock.md",
1375
+ "skills/orc-poly/references/gather.md",
1376
+ "skills/orc-route/SKILL.md",
1377
+ "skills/orc-wiki/SKILL.md",
1378
+ "skills/orc-wiki/references/crosslink.md",
1379
+ "skills/orc-wiki/references/partial-refresh.md",
1380
+ "skills/orc-wiki/references/staleness.md",
1381
+ "skills/orc/SKILL.md",
1382
+ "skills/orc/config.md",
1383
+ "skills/orc/references/wiki-consult.md",
1384
+ ],
1385
+ },
1386
+ {
1387
+ name: "post-ship wiki refresh ask (v0.11.0 — BIG-run trigger, full+ultra lanes)",
1388
+ token: "wiki_refresh_ask",
1389
+ files: [
1390
+ "skills/orc/SKILL.md",
1391
+ "skills/orc/config.md",
1392
+ "skills/orc-wiki/references/staleness.md",
1393
+ ],
1394
+ },
1395
+ {
1396
+ name: "fast->mini fallback handoff (v0.11.0 — orc-fast never stops the chat)",
1397
+ token: "FALLBACK-FROM",
1398
+ files: [
1399
+ "skills/_shared/fallback-handoff.md",
1400
+ "skills/orc-fast/SKILL.md",
1401
+ "skills/orc-mini/SKILL.md",
1402
+ // v0.45.0: lane-suspend.md defines itself AGAINST this contract — leaving
1403
+ // and returning vs leaving for good. Naming the sibling is the point.
1404
+ "skills/_shared/lane-suspend.md",
1405
+ ],
1406
+ },
1407
+ {
1408
+ name: "orc-claude generated-file meta header (v0.13.0 — version/date/budget/fingerprints)",
1409
+ token: "orc-claude:meta",
1410
+ files: [
1411
+ "skills/orc-claude/SKILL.md",
1412
+ "skills/orc-claude/examples/claude-run-mock.md",
1413
+ "skills/orc-claude/references/refresh.md",
1414
+ "skills/orc-claude/references/template.md",
1415
+ ],
1416
+ },
1417
+ {
1418
+ name: "orc-claude section fence grammar (v0.13.0 — surgical section-scoped refresh)",
1419
+ token: "orc-claude:section",
1420
+ files: [
1421
+ "skills/orc-claude/SKILL.md",
1422
+ "skills/orc-claude/references/refresh.md",
1423
+ "skills/orc-claude/references/template.md",
1424
+ ],
1425
+ },
1426
+ {
1427
+ name: "wiki pointer-block marker (owned by orc-wiki; orc-claude byte-preserves it)",
1428
+ token: "ORC-WIKI:START",
1429
+ files: [
1430
+ "agents/orc-claude-writer-opus-4-8-high.md",
1431
+ "agents/orc-claude-writer-opus-5-med.md",
1432
+ "skills/orc-claude/SKILL.md",
1433
+ "skills/orc-claude/references/refresh.md",
1434
+ "skills/orc-wiki/references/claude-md-injection.md",
1435
+ ],
1436
+ },
1437
+ {
1438
+ name: "combiner conservation gate (v0.12.0 — coverage must be 100 before handoff)",
1439
+ token: "coverage_pct",
1440
+ files: [
1441
+ "agents/orc-context-combiner-opus-5-high.md",
1442
+ "skills/context-combiner/SKILL.md",
1443
+ "skills/context-combiner/schemas/combined-report.md",
1444
+ "skills/context-combiner/schemas/combined-requirement-spec.md",
1445
+ "skills/orc-analyze/references/branching.md",
1446
+ "skills/orc-challenge/README.md",
1447
+ "skills/orc-challenge/SKILL.md",
1448
+ "skills/orc-challenge/references/conservation.md",
1449
+ "skills/orc-challenge/references/council.md",
1450
+ "skills/orc-challenge/references/cycle-state.md",
1451
+ "skills/orc-challenge/references/verdict-doc.md",
1452
+ "skills/orc/SKILL.md",
1453
+ "skills/orc/references/analyst-gates.md",
1454
+ ],
1455
+ },
1456
+ {
1457
+ name: "combiner overlap taxonomy (v0.12.0 — partial overlaps split, never collapsed)",
1458
+ token: "PARTIAL-OVERLAP",
1459
+ files: [
1460
+ "agents/orc-context-combiner-opus-5-high.md",
1461
+ "skills/context-combiner/SKILL.md",
1462
+ "skills/context-combiner/schemas/combined-report.md",
1463
+ ],
1464
+ },
1465
+ {
1466
+ name: "combiner eager decision checkpoint (v0.12.0 — verdicts survive compaction)",
1467
+ token: "combine-decisions.md",
1468
+ files: [
1469
+ "agents/orc-context-combiner-opus-5-high.md",
1470
+ "skills/context-combiner/SKILL.md",
1471
+ "skills/context-combiner/schemas/combined-report.md",
1472
+ ],
1473
+ },
1474
+ {
1475
+ name: "wiki per-file hash map (v0.15.0 — doc header + manifest docs registry)",
1476
+ token: "covered_files",
1477
+ files: [
1478
+ "agents/orc-learn-writer-opus-5-low.md",
1479
+ "agents/orc-wiki-scanner-opus-4-8-high.md",
1480
+ "agents/orc-wiki-scanner-opus-5-med.md",
1481
+ "agents/orc-wiki-scanner-sonnet-5-high.md",
1482
+ "skills/orc-learn/references/refresh.md",
1483
+ "skills/orc-learn/references/template-knowledge.md",
1484
+ "skills/orc-wiki/SKILL.md",
1485
+ "skills/orc-wiki/references/integrity-check.md",
1486
+ "skills/orc-wiki/references/staleness.md",
1487
+ "skills/orc-wiki/schemas/wiki-doc.md",
1488
+ ],
1489
+ },
1490
+ {
1491
+ name: "wiki doc schema version marker (v0.15.0 — v1 docs upgrade lazily)",
1492
+ token: "wiki_schema",
1493
+ files: [
1494
+ "skills/orc-wiki/SKILL.md",
1495
+ "skills/orc-wiki/schemas/wiki-doc.md",
1496
+ "skills/orc-wiki/references/integrity-check.md",
1497
+ "skills/orc-wiki/references/staleness.md",
1498
+ ],
1499
+ },
1500
+ {
1501
+ name: "wiki scan-end integrity gate trace verb (v0.15.0)",
1502
+ token: "WIKI-CHECK",
1503
+ files: [
1504
+ "skills/orc-wiki/SKILL.md",
1505
+ "skills/orc-wiki/references/integrity-check.md",
1506
+ ],
1507
+ },
1508
+ {
1509
+ name: "wiki-consult grounding trace verb (v0.17.3 — every lane that grounds in the wiki)",
1510
+ token: "WIKI-CONSULT",
1511
+ files: [
1512
+ "skills/orc-fast/SKILL.md",
1513
+ "skills/orc-learn/SKILL.md",
1514
+ "skills/orc-learn/examples/learn-run-mock.md",
1515
+ "skills/orc-mini/SKILL.md",
1516
+ "skills/orc-poly/SKILL.md",
1517
+ "skills/orc-poly/examples/poly-run-mock.md",
1518
+ "skills/orc-quick/SKILL.md",
1519
+ "skills/orc/SKILL.md",
1520
+ "skills/orc/references/trace-protocol.md",
1521
+ "skills/orc/references/wiki-consult.md",
1522
+ ],
1523
+ },
1524
+ {
1525
+ // v0.28.0: full orc now surfaces cross-repo peer-knowledge state (the
1526
+ // consult-point report + a CROSSLINK trace verb) so a user can tell whether
1527
+ // peer contracts were injected. Token = the trace verb, pinned to the spine
1528
+ // + the closed verb table + the canonical consult mechanism.
1529
+ name: "crosslink trace verb + run-time report (v0.28.0 — peer-knowledge visibility)",
1530
+ token: "`CROSSLINK ",
1531
+ files: [
1532
+ "skills/orc/SKILL.md",
1533
+ "skills/orc/references/trace-protocol.md",
1534
+ "skills/orc/references/wiki-consult.md",
1535
+ ],
1536
+ },
1537
+ {
1538
+ // v0.30.0: the Fable 5 role override. The shared paragraph is canonical
1539
+ // under _shared/; the lint pins its pointer into every lane that honors it.
1540
+ // The config keys themselves are pinned by the config-key coverage lint.
1541
+ name: "fable5 role override (v0.30.0 — hard-gated role→fable-5 dispatch)",
1542
+ token: "fable5-override.md",
1543
+ files: [
1544
+ "skills/_shared/README.md",
1545
+ "skills/_shared/fable5-override.md",
1546
+ "skills/_shared/opus5-only.md",
1547
+ "skills/orc/SKILL.md",
1548
+ "skills/orc/config.md",
1549
+ "skills/orc/references/ultra-mode.md",
1550
+ ],
1551
+ },
1552
+ {
1553
+ // v0.36.0: the Opus-5-only dispatch mode. Widened from v0.35.0's
1554
+ // executor-table-only key, so the pointer has to reach every lane with a
1555
+ // fixed-role dispatch — not just the ones that score.
1556
+ name: "opus5-only dispatch mode (v0.36.0 — forcing role→opus-5 dispatch)",
1557
+ token: "opus5-only.md",
1558
+ files: [
1559
+ "agents/MODEL-MAPPING.md",
1560
+ "skills/_shared/README.md",
1561
+ "skills/_shared/drift-recovery.md",
1562
+ "skills/_shared/fable5-override.md",
1563
+ "skills/_shared/opus5-only.md",
1564
+ "skills/orc-analyze/references/deep-mode.md",
1565
+ "skills/orc-claude/SKILL.md",
1566
+ "skills/orc-fast/SKILL.md",
1567
+ "skills/orc-mini/SKILL.md",
1568
+ "skills/orc-pattern/SKILL.md",
1569
+ "skills/orc-quick/SKILL.md",
1570
+ "skills/orc-retro/SKILL.md",
1571
+ "skills/orc-wiki/SKILL.md",
1572
+ "skills/orc-wiki/references/partial-refresh.md",
1573
+ "skills/orc-wiki/references/pattern-prewarm.md",
1574
+ "skills/orc/SKILL.md",
1575
+ "skills/orc/config.md",
1576
+ "skills/orc/references/analyst-gates.md",
1577
+ "skills/orc/references/pattern-gate.md",
1578
+ "skills/orc/references/ultra-mode.md",
1579
+ ],
1580
+ },
1581
+ {
1582
+ // The config key itself mirrors bin/cli.js's CONFIG_META entry — a rename on
1583
+ // either side is a silent revert of the user's setting, so pin both.
1584
+ name: "opus5_only config key (v0.36.0 — CLI ↔ payload mirror)",
1585
+ token: "opus5_only",
1586
+ binFiles: ["bin/cli.js"],
1587
+ files: [
1588
+ "agents/MODEL-MAPPING.md",
1589
+ "agents/orc-analyze-mini-opus-5-med.md",
1590
+ "agents/orc-claude-writer-opus-5-med.md",
1591
+ "agents/orc-pattern-codifier-opus-5-med.md",
1592
+ "agents/orc-planner-mini-opus-5-med.md",
1593
+ "agents/orc-retro-opus-5-med.md",
1594
+ "agents/orc-scout-opus-5-low.md",
1595
+ "agents/orc-wiki-scanner-opus-5-med.md",
1596
+ "agents/orc-wiki-scanner-sonnet-5-high.md",
1597
+ "commands/orc-pattern.md",
1598
+ "skills/_shared/drift-recovery.md",
1599
+ "skills/_shared/extra-dispatch.md",
1600
+ "skills/_shared/fable5-override.md",
1601
+ "skills/_shared/opus5-only.md",
1602
+ "skills/orc-analyze/references/deep-mode.md",
1603
+ "skills/orc-challenge/README.md",
1604
+ "skills/orc-challenge/SKILL.md",
1605
+ "skills/orc-challenge/references/council.md",
1606
+ "skills/orc-challenge/references/intake.md",
1607
+ "skills/orc-claude/SKILL.md",
1608
+ "skills/orc-diy/README.md",
1609
+ "skills/orc-diy/references/blocks/extra.md",
1610
+ "skills/orc-doc/README.md",
1611
+ "skills/orc-fast/SKILL.md",
1612
+ "skills/orc-mini/SKILL.md",
1613
+ "skills/orc-pattern/SKILL.md",
1614
+ "skills/orc-quick/README.md",
1615
+ "skills/orc-quick/SKILL.md",
1616
+ "skills/orc-quick/references/dispatch-gate.md",
1617
+ "skills/orc-retro/SKILL.md",
1618
+ "skills/orc-wiki/SKILL.md",
1619
+ "skills/orc-wiki/references/extra.md",
1620
+ "skills/orc-wiki/references/partial-refresh.md",
1621
+ "skills/orc-wiki/references/pattern-prewarm.md",
1622
+ "skills/orc/SKILL.md",
1623
+ "skills/orc/config.md",
1624
+ "skills/orc/references/analyst-gates.md",
1625
+ "skills/orc/references/effort-and-mode.md",
1626
+ "skills/orc/references/pattern-gate.md",
1627
+ "skills/orc/references/preflight-report.md",
1628
+ "skills/orc/references/trace-protocol.md",
1629
+ "skills/orc/references/ultra-mode.md",
1630
+ ],
1631
+ },
1632
+ {
1633
+ name: "CONFIG trace verb (v0.30.0 — Phase 1 resolved-config runtime proof)",
1634
+ token: "`CONFIG ",
1635
+ files: [
1636
+ "skills/orc/SKILL.md",
1637
+ "skills/orc/references/trace-protocol.md",
1638
+ ],
1639
+ },
1640
+ {
1641
+ // v0.31.0: the plan-handoff entry contract. Recognising a plan INPUT (vs a
1642
+ // request) and re-grounding/re-scoring it in the executing session is pinned
1643
+ // to the reference + the two triggers (spine Phase 0, intake) + the command.
1644
+ name: "plan-handoff entry contract (v0.31.0 — execute a plan from another session)",
1645
+ token: "plan-handoff.md",
1646
+ files: [
1647
+ "commands/orc.md",
1648
+ "skills/orc/SKILL.md",
1649
+ "skills/orc/references/intake.md",
1650
+ "skills/orc/references/plan-handoff.md",
1651
+ "skills/orc/schemas/planning-output.md",
1652
+ // v0.42.0: /orc-route REUSES this file`s plan-input definition rather than
1653
+ // writing a second one — a second definition of `what counts as a plan` is
1654
+ // drift the lint cannot see.
1655
+ "commands/orc-route.md",
1656
+ "skills/orc-route/SKILL.md",
1657
+ ],
1658
+ },
1659
+ {
1660
+ // v0.31.0: the scoring revamp. The planner emits per-task `facets` (facts);
1661
+ // the orchestrator computes the score arithmetically and re-validates them.
1662
+ // The facet block is copied across the schema, the formula, the spine, the
1663
+ // trace verb, and all three planner agents — pin them together.
1664
+ name: "facet-scored rubric (v0.31.0 — planner-emitted facets, orchestrator arithmetic)",
1665
+ token: "facets",
1666
+ files: [
1667
+ "agents/orc-planner-fable-5.md",
1668
+ "agents/orc-planner-mini-opus-5-med.md",
1669
+ "agents/orc-planner-mini-sonnet-5-high.md",
1670
+ "agents/orc-planner-opus-5-med.md",
1671
+ "agents/orc-retro-opus-5-med.md",
1672
+ "agents/orc-retro-sonnet-5-high.md",
1673
+ "skills/orc-mini/SKILL.md",
1674
+ "skills/orc-retro/SKILL.md",
1675
+ "skills/orc/README.md",
1676
+ "skills/orc/SKILL.md",
1677
+ "skills/orc/config.md",
1678
+ "skills/orc/examples/full-run-mock.md",
1679
+ "skills/orc/references/analyst-gates.md",
1680
+ "skills/orc/references/effort-and-mode.md",
1681
+ "skills/orc/references/plan-handoff.md",
1682
+ "skills/orc/references/trace-protocol.md",
1683
+ "skills/orc/references/wave-grouping.md",
1684
+ "skills/orc/schemas/planning-output.md",
1685
+ "skills/orc/subskills/orc-planner-mini/SKILL.md",
1686
+ "skills/orc/subskills/orc-planner/SKILL.md",
1687
+ "commands/orc-route.md",
1688
+ "skills/orc-route/SKILL.md",
1689
+ "skills/orc/references/preflight-report.md",
1690
+ ],
1691
+ },
1692
+ {
1693
+ // v0.31.0: HEAD-at-plan-time staleness stamp — the plan-handoff entry
1694
+ // contract's mirror of the requirement-spec's git_head.
1695
+ name: "plan staleness stamp (v0.31.0 — plan_head drives the plan-handoff grounding re-check)",
1696
+ token: "plan_head",
1697
+ files: [
1698
+ "agents/orc-planner-fable-5.md",
1699
+ "agents/orc-planner-mini-opus-5-med.md",
1700
+ "agents/orc-planner-mini-sonnet-5-high.md",
1701
+ "agents/orc-planner-opus-5-med.md",
1702
+ "skills/orc/SKILL.md",
1703
+ "skills/orc/references/intake.md",
1704
+ "skills/orc/references/plan-handoff.md",
1705
+ "skills/orc/schemas/planning-output.md",
1706
+ "skills/orc/subskills/orc-planner-mini/SKILL.md",
1707
+ "skills/orc/subskills/orc-planner/SKILL.md",
1708
+ ],
1709
+ },
1710
+ {
1711
+ name: "wiki cross-cutting reference maps (v0.15.0 — consumers pull by name)",
1712
+ token: "orc-reference-api-surface",
1713
+ files: [
1714
+ "skills/orc/SKILL.md",
1715
+ "skills/orc/references/wiki-consult.md",
1716
+ "skills/orc-fast/SKILL.md",
1717
+ "skills/orc-mini/SKILL.md",
1718
+ "skills/orc-wiki/SKILL.md",
1719
+ "skills/orc-wiki/references/crosslink.md",
1720
+ "skills/orc-wiki/references/staleness.md",
1721
+ ],
1722
+ },
1723
+ {
1724
+ name: "wiki precedence rule (v0.15.0 — code > fresh wiki > stale wiki > priors)",
1725
+ token: "code > fresh wiki",
1726
+ files: [
1727
+ // v0.39.0: both new contracts defer to the precedence rule — the ladder
1728
+ // never overrides it, and untrusted-input extends it across a repo boundary.
1729
+ "skills/_shared/read-ladder.md",
1730
+ "skills/_shared/untrusted-input.md",
1731
+ "skills/orc-fast/SKILL.md",
1732
+ "skills/orc-learn/SKILL.md",
1733
+ "skills/orc-learn/references/deepen.md",
1734
+ "skills/orc-mini/SKILL.md",
1735
+ "skills/orc-poly/SKILL.md",
1736
+ "skills/orc-quick/SKILL.md",
1737
+ "skills/orc-wiki/README.md",
1738
+ "skills/orc-wiki/SKILL.md",
1739
+ "skills/orc-wiki/references/claude-md-injection.md",
1740
+ "skills/orc-wiki/references/staleness.md",
1741
+ "skills/orc/SKILL.md",
1742
+ "skills/orc/references/wiki-consult.md",
1743
+ // v0.41.0: the `wiki` slice field states the precedence to the executor.
1744
+ "skills/orc/subskills/orc-execution/core.md",
1745
+ ],
1746
+ },
1747
+ {
1748
+ name: "orc-diy gate lock (v0.16.0 — CLI-written; stub/guard/statusline all read it)",
1749
+ token: "flow.lock.json",
1750
+ binFiles: ["bin/cli.js"],
1751
+ files: [
1752
+ "hooks/orc-effort-guard.js",
1753
+ "hooks/orc-statusline.js",
1754
+ "skills/_shared/extra-dispatch.md",
1755
+ "skills/_shared/opus5-only.md",
1756
+ "skills/orc-diy/README.md",
1757
+ "skills/orc-diy/SKILL.md",
1758
+ "skills/orc-diy/references/compile.md",
1759
+ "skills/orc-diy/references/flow-schema.md",
1760
+ ],
1761
+ },
1762
+ {
1763
+ name: "orc-diy compiled artifact path (v0.16.0 — build output, never hand-edited)",
1764
+ token: "FLOW-COMPILED.md",
1765
+ binFiles: ["bin/cli.js"],
1766
+ files: [
1767
+ "commands/orc-diy.md",
1768
+ "hooks/orc-statusline.js",
1769
+ "skills/orc-diy/README.md",
1770
+ "skills/orc-diy/SKILL.md",
1771
+ "skills/orc-diy/references/compile.md",
1772
+ "skills/orc-diy/references/flow-schema.md",
1773
+ ],
1774
+ },
1775
+ {
1776
+ name: "orc-diy flow config file (v0.16.0 — written ONLY by the `orc diy` CLI)",
1777
+ token: "orc-diy.config.yaml",
1778
+ binFiles: ["bin/cli.js"],
1779
+ files: [
1780
+ "skills/orc/config.md",
1781
+ "hooks/orc-statusline.js",
1782
+ "skills/orc-diy/README.md",
1783
+ "skills/orc-diy/SKILL.md",
1784
+ "skills/orc-diy/references/compile.md",
1785
+ "skills/orc-diy/references/flow-schema.md",
1786
+ ],
1787
+ },
1788
+ {
1789
+ // The marker grammar's OTHER half is the compiler in bin/cli.js
1790
+ // (diyApplyVariants) — outside templates/, so this lint can't see it.
1791
+ // Changing the marker syntax means changing cli.js in the same commit.
1792
+ name: "orc-diy variant marker grammar (v0.16.0 — blocks stitched by the CLI compiler)",
1793
+ token: "diy:when",
1794
+ files: [
1795
+ "skills/orc-diy/references/blocks/analyze.md",
1796
+ "skills/orc-diy/references/blocks/execution.md",
1797
+ "skills/orc-diy/references/blocks/extra.md",
1798
+ "skills/orc-diy/references/blocks/header.md",
1799
+ "skills/orc-diy/references/blocks/mock-example.md",
1800
+ "skills/orc-diy/references/blocks/pattern.md",
1801
+ "skills/orc-diy/references/blocks/planning.md",
1802
+ "skills/orc-diy/references/blocks/review.md",
1803
+ "skills/orc-diy/references/blocks/scoring.md",
1804
+ "skills/orc-diy/references/blocks/security.md",
1805
+ "skills/orc-diy/references/blocks/ship.md",
1806
+ "skills/orc-diy/references/blocks/summary.md",
1807
+ "skills/orc-diy/references/blocks/testgen.md",
1808
+ "skills/orc-diy/references/blocks/verify.md",
1809
+ "skills/orc-diy/references/blocks/wiki.md",
1810
+ "skills/orc-diy/references/compile.md",
1811
+ ],
1812
+ },
1813
+ {
1814
+ // The CLI half (bin/cli.js `orc crosslink` composer) is documented drift —
1815
+ // the lint's ROOT is templates/ and cannot see cli.js (like the DIY compiler).
1816
+ name: "crosslink CLI config file (v0.17.0 — written ONLY by `orc crosslink`, skill-read)",
1817
+ token: "orc-crosslink.config.yaml",
1818
+ binFiles: ["bin/cli.js"],
1819
+ files: [
1820
+ "skills/orc-poly/SKILL.md",
1821
+ "skills/orc-wiki/README.md",
1822
+ "skills/orc-wiki/SKILL.md",
1823
+ "skills/orc-wiki/references/claude-md-injection.md",
1824
+ "skills/orc-wiki/references/crosslink-compile.md",
1825
+ "skills/orc-wiki/references/crosslink.md",
1826
+ "skills/orc-wiki/schemas/crosslink-tag.md",
1827
+ "skills/orc/references/wiki-consult.md",
1828
+ ],
1829
+ },
1830
+ {
1831
+ name: "crosslink consumer needs baseline (v0.17.0 — machine-authored drift baseline + run-time inject)",
1832
+ token: "crosslink/needs.json",
1833
+ files: [
1834
+ "skills/orc-fast/SKILL.md",
1835
+ "skills/orc-mini/SKILL.md",
1836
+ "skills/orc-wiki/README.md",
1837
+ "skills/orc-wiki/SKILL.md",
1838
+ "skills/orc-wiki/references/crosslink-compile.md",
1839
+ "skills/orc-wiki/references/crosslink.md",
1840
+ "skills/orc-wiki/schemas/crosslink-tag.md",
1841
+ "skills/orc/SKILL.md",
1842
+ "skills/orc/references/wiki-consult.md",
1843
+ "skills/orc/subskills/orc-execution/SKILL.md",
1844
+ "skills/orc/subskills/orc-execution/core.md",
1845
+ ],
1846
+ },
1847
+ {
1848
+ name: "crosslink consumer cache dir (v0.17.0 — gitignored snapshot mirror)",
1849
+ token: "crosslink/cache/",
1850
+ binFiles: ["bin/cli.js"],
1851
+ files: [
1852
+ "skills/orc-wiki/README.md",
1853
+ "skills/orc-wiki/SKILL.md",
1854
+ "skills/orc-wiki/references/crosslink.md",
1855
+ "skills/orc-wiki/references/orientation.md",
1856
+ "skills/orc-wiki/references/staleness.md",
1857
+ "skills/orc-wiki/schemas/crosslink-tag.md",
1858
+ "skills/orc/references/wiki-consult.md",
1859
+ "skills/orc/subskills/orc-execution/SKILL.md",
1860
+ ],
1861
+ },
1862
+ {
1863
+ name: "crosslink provider tag dir (v0.17.0 — per-point boundary tags, project-root wiki/)",
1864
+ token: "wiki/crosslink/",
1865
+ binFiles: ["bin/cli.js"],
1866
+ files: [
1867
+ "commands/orc-wiki.md",
1868
+ "skills/orc-boundary/references/card.md",
1869
+ "skills/orc-poly/SKILL.md",
1870
+ "skills/orc-poly/references/gather.md",
1871
+ "skills/orc-wiki/README.md",
1872
+ "skills/orc-wiki/SKILL.md",
1873
+ "skills/orc-wiki/references/claude-md-injection.md",
1874
+ "skills/orc-wiki/references/crosslink-compile.md",
1875
+ "skills/orc-wiki/references/crosslink.md",
1876
+ "skills/orc-wiki/references/integrity-check.md",
1877
+ "skills/orc-wiki/references/orientation.md",
1878
+ "skills/orc-wiki/references/partial-refresh.md",
1879
+ "skills/orc-wiki/references/staleness.md",
1880
+ "skills/orc-wiki/schemas/crosslink-tag.md",
1881
+ "skills/orc/references/wiki-consult.md",
1882
+ ],
1883
+ },
1884
+ {
1885
+ name: "crosslink provider registry (v0.17.0 — wiki-meta sibling, integrity-gated)",
1886
+ token: "crosslink_provided",
1887
+ binFiles: ["bin/cli.js"],
1888
+ files: [
1889
+ "agents/orc-wiki-scanner-opus-4-8-high.md",
1890
+ "agents/orc-wiki-scanner-opus-5-med.md",
1891
+ "agents/orc-wiki-scanner-sonnet-5-high.md",
1892
+ "skills/orc-wiki/README.md",
1893
+ "skills/orc-wiki/SKILL.md",
1894
+ "skills/orc-wiki/references/crosslink.md",
1895
+ "skills/orc-wiki/references/integrity-check.md",
1896
+ "skills/orc-wiki/schemas/crosslink-tag.md",
1897
+ ],
1898
+ },
1899
+ {
1900
+ // The CLI half (bin/cli.js `countBoundaryRows` boundary detector + the
1901
+ // sync boundary/N→0 guards) is documented drift — the lint's ROOT is
1902
+ // templates/ and cannot see cli.js.
1903
+ name: "crosslink per-scan-task emission (v0.24.0 — always-on; scan agent returns crosslink_tags | none)",
1904
+ token: "crosslink_tags",
1905
+ files: [
1906
+ "agents/orc-wiki-scanner-opus-4-8-high.md",
1907
+ "agents/orc-wiki-scanner-opus-5-med.md",
1908
+ "agents/orc-wiki-scanner-sonnet-5-high.md",
1909
+ "skills/orc-wiki/SKILL.md",
1910
+ "skills/orc-wiki/references/crosslink.md",
1911
+ "skills/orc-wiki/references/integrity-check.md",
1912
+ "skills/orc-wiki/references/staleness.md",
1913
+ "skills/orc-wiki/schemas/crosslink-tag.md",
1914
+ "skills/orc-wiki/schemas/wiki-doc.md",
1915
+ ],
1916
+ },
1917
+ {
1918
+ // v0.26.0: the manual-QA deliverables are pinned to a visible project-root
1919
+ // folder (EVAL-REPORT F1/F2 fix). Registering the location sentence keeps
1920
+ // the pin from drifting across the contract copy (core.md), its mirrors
1921
+ // (testgen SKILL.md, the agent), and the two caller lanes + their docs.
1922
+ name: "testgen output location (v0.26.0 — pinned to test-generator/<change-slug>/ at project root)",
1923
+ token: "test-generator/",
1924
+ files: [
1925
+ "agents/orc-test-author-opus-5-med.md",
1926
+ "skills/orc-mini/SKILL.md",
1927
+ "skills/orc-mini/examples/mini-run-mock.md",
1928
+ "skills/orc-quick/references/context-doc.md",
1929
+ "skills/orc/README.md",
1930
+ "skills/orc/SKILL.md",
1931
+ "skills/orc/config.md",
1932
+ "skills/orc/schemas/planning-output.md",
1933
+ "skills/orc/subskills/orc-testgen/SKILL.md",
1934
+ "skills/orc/subskills/orc-testgen/core.md",
1935
+ "skills/_shared/stack-plan.md",
1936
+ "skills/orc/subskills/orc-pr/stack-gate.md",
1937
+ // v0.42.0: named as a sibling project-root deliverable, so the grill doc lands
1938
+ // in the same visible place and not inside .claude/.
1939
+ "skills/orc-grill/references/grill-doc.md",
1940
+ ],
1941
+ },
1942
+ {
1943
+ // Both keys also register in bin/cli.js's CONFIG_META (documented drift).
1944
+ name: "crosslink snapshot-age config keys (v0.17.0 — Signal-B day tiers)",
1945
+ token: "crosslink_fresh_days",
1946
+ binFiles: ["bin/cli.js"],
1947
+ files: [
1948
+ "skills/orc-wiki/references/crosslink.md",
1949
+ "skills/orc-wiki/references/staleness.md",
1950
+ "skills/orc-wiki/schemas/crosslink-tag.md",
1951
+ "skills/orc/config.md",
1952
+ ],
1953
+ },
1954
+ {
1955
+ // v0.27.0: the orc-poly handoff spec marker. orc-poly writes poly-spec.md
1956
+ // with this first-line marker; the shared planner self-activates poly-repo
1957
+ // split mode on it. Changing the marker means changing the skill, the
1958
+ // planner, and both commands in the same commit.
1959
+ name: "orc-poly handoff marker (v0.27.0 — planner splits per-repo on `orc-poly:spec`)",
1960
+ token: "orc-poly:spec",
1961
+ files: [
1962
+ "agents/orc-planner-fable-5.md",
1963
+ "agents/orc-planner-opus-5-med.md",
1964
+ "commands/orc-plan.md",
1965
+ "commands/orc-poly.md",
1966
+ "skills/orc/SKILL.md",
1967
+ "skills/orc/references/plan-handoff.md",
1968
+ "skills/orc/subskills/orc-planner/SKILL.md",
1969
+ "skills/orc-poly/SKILL.md",
1970
+ "skills/orc-poly/references/poly-spec.md",
1971
+ "skills/orc-poly/examples/poly-run-mock.md",
1972
+ ],
1973
+ },
1974
+ {
1975
+ name: "orc-poly output dir (v0.27.0 — source-of-truth docs + per-repo plans)",
1976
+ token: "poly-repo-implementation/",
1977
+ files: [
1978
+ "agents/orc-planner-fable-5.md",
1979
+ "agents/orc-planner-opus-5-med.md",
1980
+ "commands/orc-poly.md",
1981
+ "skills/_shared/stack-plan.md",
1982
+ "skills/orc-doc/references/gates.md",
1983
+ "skills/orc-pact/SKILL.md",
1984
+ "skills/orc-poly/SKILL.md",
1985
+ "skills/orc-poly/examples/poly-run-mock.md",
1986
+ "skills/orc-poly/references/poly-spec.md",
1987
+ "skills/orc/subskills/orc-planner/SKILL.md",
1988
+ ],
1989
+ },
1990
+ {
1991
+ name: "orc-poly frozen boundary (v0.27.0 — every per-repo plan pins interface-contract.md)",
1992
+ token: "interface-contract.md",
1993
+ files: [
1994
+ "agents/orc-planner-fable-5.md",
1995
+ "agents/orc-planner-opus-5-med.md",
1996
+ "commands/orc-plan.md",
1997
+ "commands/orc-poly.md",
1998
+ "skills/orc-pact/SKILL.md",
1999
+ "skills/orc-poly/SKILL.md",
2000
+ "skills/orc-poly/examples/poly-run-mock.md",
2001
+ "skills/orc-poly/references/gather.md",
2002
+ "skills/orc-poly/references/poly-spec.md",
2003
+ "skills/orc/subskills/orc-planner/SKILL.md",
2004
+ ],
2005
+ },
2006
+ {
2007
+ // v0.33.0: the commit-scoped delta probe — the DEFAULT refresh path. The
2008
+ // probe itself lives in bin/cli.js (exit 0/1/2/3 contract).
2009
+ name: "wiki delta probe (v0.33.0 — `orc wiki impact` drives the default refresh)",
2010
+ token: "orc wiki impact",
2011
+ binFiles: ["bin/cli.js"],
2012
+ files: [
2013
+ "skills/orc-wiki/SKILL.md",
2014
+ "skills/orc-wiki/references/partial-refresh.md",
2015
+ "skills/orc-wiki/references/staleness.md",
2016
+ "skills/orc/config.md",
2017
+ ],
2018
+ },
2019
+ {
2020
+ // v0.33.0: the federation atlas. The derived-artifact handling (never a
2021
+ // registered doc, never bulk-deleted) is mirrored in bin/cli.js.
2022
+ name: "crosslink ATLAS (v0.33.0 — wiki/crosslink/atlas.md, sanctioned peer file write)",
2023
+ token: "atlas.md",
2024
+ binFiles: ["bin/cli.js"],
2025
+ files: [
2026
+ "commands/orc-wiki.md",
2027
+ "skills/orc-poly/SKILL.md",
2028
+ "skills/orc-poly/references/gather.md",
2029
+ "skills/orc-wiki/README.md",
2030
+ "skills/orc-wiki/SKILL.md",
2031
+ "skills/orc-wiki/references/claude-md-injection.md",
2032
+ "skills/orc-wiki/references/crosslink-compile.md",
2033
+ "skills/orc-wiki/references/crosslink.md",
2034
+ "skills/orc-wiki/references/orientation.md",
2035
+ "skills/orc-wiki/references/staleness.md",
2036
+ "skills/orc/references/wiki-consult.md",
2037
+ ],
2038
+ },
2039
+ {
2040
+ // v0.33.0: the one-shot crosslink+atlas+injection entry branch.
2041
+ name: "crosslink compile branch (v0.33.0 — /orc-wiki crosslink compile, one-shot)",
2042
+ token: "crosslink compile",
2043
+ files: [
2044
+ "commands/orc-wiki.md",
2045
+ "skills/orc-wiki/README.md",
2046
+ "skills/orc-wiki/SKILL.md",
2047
+ "skills/orc-wiki/references/claude-md-injection.md",
2048
+ "skills/orc-wiki/references/crosslink-compile.md",
2049
+ "skills/orc-wiki/references/crosslink.md",
2050
+ ],
2051
+ },
2052
+ {
2053
+ // v0.33.0: the wiki's front door — derived at assemble, consumed first.
2054
+ // bin/cli.js notes it registers via its header like any doc.
2055
+ name: "wiki orientation doc (v0.33.0 — wiki/orc-orientation.md, derived + read-first)",
2056
+ token: "orc-orientation.md",
2057
+ binFiles: ["bin/cli.js"],
2058
+ files: [
2059
+ "skills/orc-explain/SKILL.md",
2060
+ "skills/orc-export/SKILL.md",
2061
+ "skills/orc-wiki/SKILL.md",
2062
+ "skills/orc-wiki/references/claude-md-injection.md",
2063
+ "skills/orc-wiki/references/integrity-check.md",
2064
+ "skills/orc-wiki/references/orientation.md",
2065
+ "skills/orc-wiki/references/partial-refresh.md",
2066
+ "skills/orc/references/wiki-consult.md",
2067
+ ],
2068
+ },
2069
+ {
2070
+ // v0.33.0: the mock-example deliverable folder — visible at project root,
2071
+ // NEVER committed (ship excludes it from staging; no .gitignore edit).
2072
+ // bin/cli.js excludes it from the impact blind-spot sweep.
2073
+ name: "mock-example deliverable (v0.33.0 — mock-examples/<slug>/, never committed)",
2074
+ token: "mock-examples/",
2075
+ binFiles: ["bin/cli.js"],
2076
+ files: [
2077
+ "skills/_shared/drift-recovery.md",
2078
+ "skills/orc-diy/references/blocks/mock-example.md",
2079
+ "skills/orc-diy/references/flow-schema.md",
2080
+ "skills/orc-fast/SKILL.md",
2081
+ "skills/orc-mini/SKILL.md",
2082
+ "skills/orc/SKILL.md",
2083
+ "skills/orc/config.md",
2084
+ "skills/orc/subskills/orc-pr/stack-gate.md",
2085
+ // v0.42.0: the interview names the mock-example phase as the instrument for a
2086
+ // question talking cannot settle (`how should this feel?`).
2087
+ "skills/_shared/interview.md",
2088
+ "skills/orc-grill/SKILL.md",
2089
+ "skills/orc-grill/references/grill-doc.md",
2090
+ // v0.45.0: brainstorm names the same instrument for the same class of
2091
+ // question — "how should it feel" is not settled by generating options
2092
+ // either.
2093
+ "skills/orc-brainstorm/SKILL.md",
2094
+ "skills/orc-brainstorm/references/brainstorm-doc.md",
2095
+ ],
2096
+ },
2097
+ {
2098
+ // v0.33.0: the drift-recovery canonical (sibling of fallback-handoff).
2099
+ name: "drift-recovery canonical pointer (v0.33.0 — _shared/drift-recovery.md)",
2100
+ token: "drift-recovery.md",
2101
+ files: [
2102
+ "skills/_shared/README.md",
2103
+ "skills/orc-diy/references/blocks/mock-example.md",
2104
+ "skills/orc-doc/SKILL.md",
2105
+ "skills/orc-doc/references/chunking.md",
2106
+ "skills/orc-fast/SKILL.md",
2107
+ "skills/orc-mini/SKILL.md",
2108
+ "skills/orc/SKILL.md",
2109
+ "skills/orc/config.md",
2110
+ "skills/orc/references/trace-protocol.md",
2111
+ "skills/orc/references/ultra-mode.md",
2112
+ "skills/orc/references/wave-grouping.md",
2113
+ ],
2114
+ },
2115
+ {
2116
+ // v0.33.0: the drift handoff block (writer: the lane; readers: analyze-mini
2117
+ // gap analysis + mini planner patch plan).
2118
+ name: "drift handoff block (v0.33.0 — DRIFT-FROM, cap 2 recovery loops)",
2119
+ token: "DRIFT-FROM",
2120
+ files: [
2121
+ // v0.40.0: a resolved DRIFT-FROM round is one of the four record triggers.
2122
+ "skills/_shared/gotchas.md",
2123
+ "skills/_shared/drift-recovery.md",
2124
+ "skills/orc-diy/references/blocks/mock-example.md",
2125
+ "skills/orc-fast/SKILL.md",
2126
+ "skills/orc-mini/SKILL.md",
2127
+ "skills/orc/SKILL.md",
2128
+ "skills/orc/config.md",
2129
+ "skills/_shared/README.md",
2130
+ ],
2131
+ },
2132
+ {
2133
+ // v0.33.0: TDD-anchored planning — the plan-time acceptance-test contract.
2134
+ name: "TDD plan anchor (v0.33.0 — tdd_spec at plan time; v0.41.0 — scoped by disposition, paired TDD task)",
2135
+ token: "tdd_spec",
2136
+ files: [
2137
+ // v0.40.0: a tdd_spec test driven red -> green is the primary record trigger.
2138
+ "skills/_shared/extra-dispatch.md",
2139
+ "skills/_shared/gotchas.md",
2140
+ "agents/orc-executor-haiku-4-5.md",
2141
+ "agents/orc-executor-opus-4-7-high.md",
2142
+ "agents/orc-executor-opus-4-7-med.md",
2143
+ "agents/orc-executor-opus-4-8-high.md",
2144
+ "agents/orc-executor-opus-5-high.md",
2145
+ "agents/orc-executor-opus-5-low.md",
2146
+ "agents/orc-executor-opus-5-med.md",
2147
+ "agents/orc-executor-sonnet-4-6-high.md",
2148
+ "agents/orc-executor-sonnet-4-6-med.md",
2149
+ "agents/orc-executor-sonnet-5-high.md",
2150
+ "agents/orc-planner-fable-5.md",
2151
+ "agents/orc-planner-mini-opus-5-med.md",
2152
+ "agents/orc-planner-mini-sonnet-5-high.md",
2153
+ "agents/orc-planner-opus-5-med.md",
2154
+ "skills/_shared/return-validation.md",
2155
+ "skills/orc-diy/references/blocks/execution.md",
2156
+ "skills/orc-diy/references/blocks/planning.md",
2157
+ "skills/orc-diy/references/flow-schema.md",
2158
+ "skills/orc-mini/SKILL.md",
2159
+ "skills/orc/SKILL.md",
2160
+ "skills/orc/config.md",
2161
+ "skills/orc/references/analyst-gates.md",
2162
+ "skills/orc/references/preflight-report.md",
2163
+ "skills/orc/references/wave-grouping.md",
2164
+ "skills/orc/schemas/planning-output.md",
2165
+ "skills/orc/subskills/orc-execution/SKILL.md",
2166
+ "skills/orc/subskills/orc-execution/core.md",
2167
+ "skills/orc/subskills/orc-planner-mini/SKILL.md",
2168
+ "skills/orc/subskills/orc-planner/SKILL.md",
2169
+ ],
2170
+ },
2171
+ {
2172
+ // v0.33.0: the TDD repair-loop cap — config key mirrored in bin/cli.js.
2173
+ name: "TDD repair cap (v0.33.0 — tdd_loop_max, STOP + honest red report on cap)",
2174
+ token: "tdd_loop_max",
2175
+ binFiles: ["bin/cli.js"],
2176
+ files: [
2177
+ "agents/orc-executor-haiku-4-5.md",
2178
+ "agents/orc-executor-opus-4-7-high.md",
2179
+ "agents/orc-executor-opus-4-7-med.md",
2180
+ "agents/orc-executor-opus-4-8-high.md",
2181
+ "agents/orc-executor-opus-5-high.md",
2182
+ "agents/orc-executor-opus-5-low.md",
2183
+ "agents/orc-executor-opus-5-med.md",
2184
+ "agents/orc-executor-sonnet-4-6-high.md",
2185
+ "agents/orc-executor-sonnet-4-6-med.md",
2186
+ "agents/orc-executor-sonnet-5-high.md",
2187
+ "agents/orc-verifier-opus-5-med.md",
2188
+ "skills/_shared/return-validation.md",
2189
+ "skills/orc-diy/references/blocks/execution.md",
2190
+ "skills/orc-diy/references/blocks/verify.md",
2191
+ "skills/orc-mini/SKILL.md",
2192
+ "skills/orc/SKILL.md",
2193
+ "skills/orc/config.md",
2194
+ "skills/orc/references/trace-protocol.md",
2195
+ "skills/orc/subskills/orc-execution/SKILL.md",
2196
+ "skills/orc/subskills/orc-execution/core.md",
2197
+ "skills/orc/subskills/orc-review-verify/SKILL.md",
2198
+ "skills/orc/subskills/orc-review-verify/core.md",
2199
+ ],
2200
+ },
2201
+ {
2202
+ // v0.33.0: the executor TDD attestation (green needs quoted evidence).
2203
+ name: "TDD executor attestation (v0.33.0 — tdd_state green|red on tdd_spec slices)",
2204
+ token: "tdd_state",
2205
+ files: [
2206
+ "agents/orc-executor-haiku-4-5.md",
2207
+ "agents/orc-executor-opus-4-7-high.md",
2208
+ "agents/orc-executor-opus-4-7-med.md",
2209
+ "agents/orc-executor-opus-4-8-high.md",
2210
+ "agents/orc-executor-opus-5-high.md",
2211
+ "agents/orc-executor-opus-5-low.md",
2212
+ "agents/orc-executor-opus-5-med.md",
2213
+ "agents/orc-executor-sonnet-4-6-high.md",
2214
+ "agents/orc-executor-sonnet-4-6-med.md",
2215
+ "agents/orc-executor-sonnet-5-high.md",
2216
+ "skills/_shared/return-validation.md",
2217
+ "skills/orc-diy/references/blocks/execution.md",
2218
+ "skills/orc/subskills/orc-execution/SKILL.md",
2219
+ "skills/orc/subskills/orc-execution/core.md",
2220
+ ],
2221
+ },
2222
+ {
2223
+ // v0.33.0: the verify-slot TDD gate input (Phase 6 half 1).
2224
+ name: "TDD verify-gate slice (v0.33.0 — tdd_suite[] in the verifier slot)",
2225
+ token: "tdd_suite",
2226
+ files: [
2227
+ "agents/orc-verifier-opus-5-med.md",
2228
+ "skills/orc-diy/references/blocks/verify.md",
2229
+ "skills/orc/subskills/orc-review-verify/SKILL.md",
2230
+ "skills/orc/subskills/orc-review-verify/core.md",
2231
+ ],
2232
+ },
2233
+ {
2234
+ // v0.33.0: the TDD trace verbs (closed-set additions; TDD-GREEN rides the
2235
+ // same rows).
2236
+ name: "TDD trace verbs (v0.33.0 — TDD-RED/TDD-GREEN per iteration)",
2237
+ token: "TDD-RED",
2238
+ files: [
2239
+ "skills/orc-diy/references/blocks/execution.md",
2240
+ "skills/orc-mini/SKILL.md",
2241
+ "skills/orc-retro/SKILL.md",
2242
+ "skills/orc/SKILL.md",
2243
+ "skills/orc/references/trace-protocol.md",
2244
+ ],
2245
+ },
2246
+ {
2247
+ // v0.33.0: mock_example config key (also in bin/cli.js CONFIG_META + the
2248
+ // DIY flow key).
2249
+ name: "mock-example gate key (v0.33.0 — mock_example ask|on|off)",
2250
+ token: "mock_example",
2251
+ binFiles: ["bin/cli.js"],
2252
+ files: [
2253
+ "skills/_shared/drift-recovery.md",
2254
+ "skills/orc-diy/references/blocks/mock-example.md",
2255
+ "skills/orc-diy/references/flow-schema.md",
2256
+ "skills/orc-fast/SKILL.md",
2257
+ "skills/orc-mini/SKILL.md",
2258
+ "skills/orc/SKILL.md",
2259
+ "skills/orc/config.md",
2260
+ "skills/orc/references/ultra-mode.md",
2261
+ // v0.42.0: the interview + the grill name mock_example as the INSTRUMENT for
2262
+ // a question conversation cannot settle — they never run it themselves.
2263
+ "skills/_shared/interview.md",
2264
+ "skills/orc-grill/SKILL.md",
2265
+ "skills/orc-grill/references/grill-doc.md",
2266
+ "skills/orc-brainstorm/SKILL.md",
2267
+ "skills/orc-brainstorm/references/brainstorm-doc.md",
2268
+ ],
2269
+ },
2270
+ {
2271
+ // v0.33.0: the delta→full recommendation threshold (config + CLI mirror).
2272
+ name: "delta full-refresh threshold (v0.33.0 — wiki_delta_full_threshold, default 30)",
2273
+ token: "wiki_delta_full_threshold",
2274
+ binFiles: ["bin/cli.js"],
2275
+ files: [
2276
+ "skills/orc-wiki/references/staleness.md",
2277
+ "skills/orc/config.md",
2278
+ ],
2279
+ },
2280
+ {
2281
+ // v0.34.1: run state moved OUT of the installer's blast radius
2282
+ // (.claude/skills/orc/run/ → .claude/orc/run/, config key run_dir). The
2283
+ // path is prose in six lanes; without this pin the next rename drifts and
2284
+ // half the lanes checkpoint somewhere the resume contract can't find.
2285
+ name: "run artifact root (v0.34.1 — .claude/orc/run/, survives orc update)",
2286
+ token: ".claude/orc/run",
2287
+ binFiles: ["bin/cli.js"],
2288
+ files: [
2289
+ "skills/_shared/fallback-handoff.md",
2290
+ "skills/_shared/stack-plan.md",
2291
+ "skills/orc-diy/references/blocks/header.md",
2292
+ "skills/orc-diy/references/locked-blocks.md",
2293
+ "skills/orc-export/SKILL.md",
2294
+ "skills/orc-fast/SKILL.md",
2295
+ "skills/orc-mini/SKILL.md",
2296
+ "skills/orc-quick/references/context-doc.md",
2297
+ "skills/orc-wiki/SKILL.md",
2298
+ "skills/orc/README.md",
2299
+ "skills/orc/SKILL.md",
2300
+ "skills/orc/config.md",
2301
+ "skills/orc/references/intake.md",
2302
+ "skills/orc/references/stop-and-resume.md",
2303
+ "skills/orc-doc/README.md",
2304
+ "skills/orc-doc/references/chunking.md",
2305
+ "skills/orc-doc/references/gates.md",
2306
+ "skills/orc-doc/references/resume-protocol.md",
2307
+ ],
2308
+ },
2309
+ // ── Stacked pull requests (v0.37.0) ──────────────────────────────────────
2310
+ {
2311
+ // The deliverable folder. Visible at the project root and COMMITTED (same
2312
+ // class as poly-repo-implementation/ and test-generator/) — never inside
2313
+ // .claude/, which the installer replaces. bin/cli.js owns the path too
2314
+ // (`orc pr stack template` writes it, `orc pr stack status` probes it), so a
2315
+ // rename on either side fails the lint.
2316
+ name: "stacked-PR deliverable folder (v0.37.0 — stacked-pr/<slug>/, committed)",
2317
+ token: "stacked-pr/",
2318
+ binFiles: ["bin/cli.js"],
2319
+ files: [
2320
+ "commands/orc-pr-driver.md",
2321
+ "commands/orc-pr-setup.md",
2322
+ "skills/_shared/stack-plan.md",
2323
+ "skills/orc-pr-driver/SKILL.md",
2324
+ "skills/orc-pr-setup/SKILL.md",
2325
+ "skills/orc/SKILL.md",
2326
+ "skills/orc/subskills/orc-pr/SKILL.md",
2327
+ "skills/orc/subskills/orc-pr/stack-gate.md",
2328
+ "skills/orc-pr-driver/README.md",
2329
+ "skills/orc-pr-setup/README.md",
2330
+ ],
2331
+ },
2332
+ {
2333
+ // The plan file IS the contract between the planner lane and the driver
2334
+ // lane — and it is equally the contract with a HAND-FILLED plan (the CLI
2335
+ // skeleton path), which is why the filename is pinned on both sides.
2336
+ name: "stack plan contract file (v0.37.0 — stack-plan.md, planner ↔ driver ↔ CLI)",
2337
+ token: "stack-plan.md",
2338
+ binFiles: ["bin/cli.js"],
2339
+ files: [
2340
+ "commands/orc-pr-driver.md",
2341
+ "commands/orc-pr-setup.md",
2342
+ "skills/_shared/README.md",
2343
+ "skills/_shared/gh-stack-commands.md",
2344
+ "skills/_shared/stack-plan.md",
2345
+ "skills/orc-challenge/references/kinds.md",
2346
+ "skills/orc-pr-driver/README.md",
2347
+ "skills/orc-pr-driver/SKILL.md",
2348
+ "skills/orc-pr-driver/references/orc-run-split.md",
2349
+ "skills/orc-pr-setup/README.md",
2350
+ "skills/orc-pr-setup/SKILL.md",
2351
+ "skills/orc/SKILL.md",
2352
+ "skills/orc/subskills/orc-pr/stack-gate.md",
2353
+ ],
2354
+ },
2355
+ {
2356
+ // The handoff block — third member of the family (FALLBACK-FROM,
2357
+ // DRIFT-FROM, STACK-FROM). Written by ORC's ship gate or by orc-pr-setup,
2358
+ // read by the next lane; a forked shape strands a run mid-handoff.
2359
+ name: "STACK-FROM handoff block (v0.37.0 — ship gate / planner → driver)",
2360
+ token: "STACK-FROM",
2361
+ files: [
2362
+ "commands/orc-pr-driver.md",
2363
+ "skills/_shared/stack-plan.md",
2364
+ "skills/orc-pr-driver/SKILL.md",
2365
+ "skills/orc-pr-setup/SKILL.md",
2366
+ "skills/orc/SKILL.md",
2367
+ "skills/orc/subskills/orc-pr/SKILL.md",
2368
+ "skills/orc/subskills/orc-pr/stack-gate.md",
2369
+ "skills/_shared/README.md",
2370
+ ],
2371
+ },
2372
+ {
2373
+ // The deterministic existence probe (exit 0 READY / 1 absent-or-unfilled),
2374
+ // same convention as `orc pattern status <lang>` and `orc diy status`. The
2375
+ // probe lives in bin/cli.js; every consumer must name it, never an ad-hoc
2376
+ // find — stacked-pr/ is a normal visible folder, but an UNFILLED plan is
2377
+ // indistinguishable from a ready one without the probe.
2378
+ name: "stack plan probe (v0.37.0 — `orc pr stack status`, exit-code contract)",
2379
+ token: "orc pr stack status",
2380
+ binFiles: ["bin/cli.js"],
2381
+ files: [
2382
+ "commands/orc-pr-driver.md",
2383
+ "skills/_shared/stack-plan.md",
2384
+ "skills/orc-pr-driver/SKILL.md",
2385
+ "skills/orc-pr-driver/README.md",
2386
+ "skills/orc-pr-setup/README.md",
2387
+ ],
2388
+ },
2389
+ {
2390
+ // Canonical cross-lane prose (sibling of drift-recovery.md /
2391
+ // fallback-handoff.md): WHERE a PR body comes from. Shared by the ship gate
2392
+ // and both stacked-PR lanes — never forked back into a spine.
2393
+ name: "PR-template resolution canonical pointer (v0.37.0 — _shared/pr-templates.md)",
2394
+ token: "pr-templates.md",
2395
+ files: [
2396
+ "skills/orc-pr-driver/SKILL.md",
2397
+ "skills/orc-pr-setup/SKILL.md",
2398
+ "skills/orc/SKILL.md",
2399
+ "skills/orc/subskills/orc-pr/SKILL.md",
2400
+ "skills/orc/subskills/orc-pr/stack-gate.md",
2401
+ "skills/orc-pr-driver/README.md",
2402
+ "skills/orc-pr-setup/README.md",
2403
+ "skills/_shared/README.md",
2404
+ ],
2405
+ },
2406
+ {
2407
+ // Canonical cross-lane prose: the `gh stack` command surface. Stacked PRs
2408
+ // are a GitHub PUBLIC PREVIEW, so a breaking rename must be a ONE-FILE fix
2409
+ // — that is the whole reason this pointer is pinned instead of copied.
2410
+ name: "gh stack command surface canonical pointer (v0.37.0 — _shared/gh-stack-commands.md)",
2411
+ token: "gh-stack-commands.md",
2412
+ files: [
2413
+ "skills/orc-pr-driver/SKILL.md",
2414
+ "skills/orc-pr-driver/references/conflict-playbook.md",
2415
+ "skills/orc-pr-setup/SKILL.md",
2416
+ "skills/orc/subskills/orc-pr/stack-gate.md",
2417
+ "skills/orc-pr-driver/README.md",
2418
+ "skills/orc-pr-setup/README.md",
2419
+ "skills/_shared/README.md",
2420
+ ],
2421
+ },
2422
+ // ── v0.39.0 — read discipline + instructional trust ─────────────────────
2423
+ {
2424
+ name: "read ladder (escalating read discipline for read-heavy roles)",
2425
+ token: "read-ladder.md",
2426
+ files: [
2427
+ "agents/orc-executor-haiku-4-5.md",
2428
+ "agents/orc-executor-opus-4-7-high.md",
2429
+ "agents/orc-executor-opus-4-7-med.md",
2430
+ "agents/orc-executor-opus-4-8-high.md",
2431
+ "agents/orc-executor-opus-5-high.md",
2432
+ "agents/orc-executor-opus-5-low.md",
2433
+ "agents/orc-executor-opus-5-med.md",
2434
+ "agents/orc-executor-sonnet-4-6-high.md",
2435
+ "agents/orc-executor-sonnet-4-6-med.md",
2436
+ "agents/orc-executor-sonnet-5-high.md",
2437
+ "skills/_shared/README.md",
2438
+ "skills/_shared/interview.md",
2439
+ "skills/_shared/read-ladder.md",
2440
+ "skills/orc-analyze-mini/SKILL.md",
2441
+ "skills/orc-analyze/SKILL.md",
2442
+ "skills/orc-boundary/SKILL.md",
2443
+ "skills/orc-fast/SKILL.md",
2444
+ "skills/orc-quick/references/dispatch-gate.md",
2445
+ "skills/orc-wiki/SKILL.md",
2446
+ "skills/orc/SKILL.md",
2447
+ "skills/orc/references/wiki-consult.md",
2448
+ "skills/orc/subskills/orc-execution/core.md",
2449
+ ],
2450
+ },
2451
+ {
2452
+ name: "foreign input is evidence, never instruction",
2453
+ token: "untrusted-input.md",
2454
+ files: [
2455
+ "agents/orc-doc-writer-opus-5-med.md",
2456
+ "skills/_shared/README.md",
2457
+ "skills/_shared/extra-dispatch.md",
2458
+ "skills/_shared/untrusted-input.md",
2459
+ "skills/orc-analyze/SKILL.md",
2460
+ "skills/orc-boundary/SKILL.md",
2461
+ "skills/orc-brainstorm/SKILL.md",
2462
+ "skills/orc-brainstorm/references/lenses.md",
2463
+ "skills/orc-challenge/SKILL.md",
2464
+ "skills/orc-doc/SKILL.md",
2465
+ "skills/orc-doc/references/gates.md",
2466
+ "skills/orc-export/SKILL.md",
2467
+ "skills/orc-pact/SKILL.md",
2468
+ "skills/orc-poly/SKILL.md",
2469
+ "skills/orc-quick/references/gh-mode.md",
2470
+ "skills/orc-wiki/SKILL.md",
2471
+ "skills/orc/references/wiki-consult.md",
2472
+ ],
2473
+ },
2474
+ // ── v0.40.0 — gotchas (repair memory) ───────────────────────────────────
2475
+ {
2476
+ name: "gotchas artifact location (repair memory)",
2477
+ token: ".claude/orc/gotchas.md",
2478
+ files: [
2479
+ "skills/_shared/README.md",
2480
+ "skills/_shared/gotchas.md",
2481
+ "skills/orc-diy/references/blocks/execution.md",
2482
+ "skills/orc-fast/SKILL.md",
2483
+ "skills/orc-mini/SKILL.md",
2484
+ "skills/orc-retro/SKILL.md",
2485
+ "skills/orc/SKILL.md",
2486
+ "skills/orc/config.md",
2487
+ "skills/orc/references/preflight-report.md",
2488
+ ],
2489
+ binFiles: ["bin/cli.js"],
2490
+ },
2491
+ {
2492
+ name: "gotcha_recorded return field (repair-loop capture)",
2493
+ token: "gotcha_recorded",
2494
+ files: [
2495
+ "agents/orc-executor-haiku-4-5.md",
2496
+ "agents/orc-executor-opus-4-7-high.md",
2497
+ "agents/orc-executor-opus-4-7-med.md",
2498
+ "agents/orc-executor-opus-4-8-high.md",
2499
+ "agents/orc-executor-opus-5-high.md",
2500
+ "agents/orc-executor-opus-5-low.md",
2501
+ "agents/orc-executor-opus-5-med.md",
2502
+ "agents/orc-executor-sonnet-4-6-high.md",
2503
+ "agents/orc-executor-sonnet-4-6-med.md",
2504
+ "agents/orc-executor-sonnet-5-high.md",
2505
+ "agents/orc-reviewer-fable-5.md",
2506
+ "agents/orc-reviewer-opus-5-med.md",
2507
+ "agents/orc-verifier-opus-5-med.md",
2508
+ "skills/_shared/gotchas.md",
2509
+ "skills/_shared/return-validation.md",
2510
+ "skills/orc-diy/references/blocks/execution.md",
2511
+ "skills/orc-mini/SKILL.md",
2512
+ "skills/orc/SKILL.md",
2513
+ "skills/orc/subskills/orc-execution/core.md",
2514
+ "skills/orc/subskills/orc-review-verify/core.md",
2515
+ ],
2516
+ },
2517
+ {
2518
+ name: "pact ledger location (v0.46.0 — .claude/orc/pact/, states computed never stored)",
2519
+ token: ".claude/orc/pact/ledger.json",
2520
+ files: [
2521
+ "skills/orc-aftermath/SKILL.md",
2522
+ "skills/orc-pact/SKILL.md",
2523
+ "skills/orc-pact/references/ledger.md",
2524
+ ],
2525
+ binFiles: ["bin/cli.js"],
2526
+ },
2527
+ {
2528
+ name: "pact deliverable (v0.46.0 — PACT.md at the project ROOT, derived by `orc pact sync`)",
2529
+ token: "PACT.md",
2530
+ files: [
2531
+ "commands/orc-export.md",
2532
+ "commands/orc-pact.md",
2533
+ "skills/orc-boundary/SKILL.md",
2534
+ "skills/orc-export/SKILL.md",
2535
+ "skills/orc-pact/SKILL.md",
2536
+ "skills/orc-pact/references/ledger.md",
2537
+ ],
2538
+ binFiles: ["bin/cli.js"],
2539
+ },
2540
+ {
2541
+ name: "pact probe (v0.46.0 — exit-code contract, the only thing that computes a state)",
2542
+ token: "orc pact status",
2543
+ files: [
2544
+ "commands/orc-pact.md",
2545
+ "skills/orc-aftermath/SKILL.md",
2546
+ "skills/orc-pact/SKILL.md",
2547
+ "skills/orc-pact/references/gate.md",
2548
+ "skills/orc/SKILL.md",
2549
+ "skills/orc/references/preflight-report.md",
2550
+ ],
2551
+ binFiles: ["bin/cli.js"],
2552
+ },
2553
+ {
2554
+ name: "boundary card dir (v0.46.0 — per AREA, consulted in O(1))",
2555
+ token: ".claude/orc/boundary/",
2556
+ files: [
2557
+ "skills/orc-boundary/SKILL.md",
2558
+ "skills/orc-boundary/references/card.md",
2559
+ "skills/orc-boundary/references/gate.md",
2560
+ "skills/orc-export/SKILL.md",
2561
+ ],
2562
+ binFiles: ["bin/cli.js"],
2563
+ },
2564
+ {
2565
+ name: "boundary probe (v0.46.0 — exit-code contract; the skill never computes a verdict)",
2566
+ token: "orc boundary status",
2567
+ files: [
2568
+ "commands/orc-boundary.md",
2569
+ "skills/orc-boundary/SKILL.md",
2570
+ "skills/orc-boundary/references/card.md",
2571
+ "skills/orc-boundary/references/gate.md",
2572
+ "skills/orc/SKILL.md",
2573
+ "skills/orc/references/preflight-report.md",
2574
+ ],
2575
+ binFiles: ["bin/cli.js"],
2576
+ },
2577
+ {
2578
+ name: "handoff surface map (v0.46.0 — orc-handoff/surfaces.md at the project ROOT)",
2579
+ token: "orc-handoff/surfaces.md",
2580
+ files: [
2581
+ "commands/orc-handoff.md",
2582
+ "skills/orc-handoff/SKILL.md",
2583
+ "skills/orc-handoff/references/surfaces.md",
2584
+ ],
2585
+ binFiles: ["bin/cli.js"],
2586
+ },
2587
+ {
2588
+ name: "handoff single writer (v0.46.0 — the lane and the panel share ONE write path)",
2589
+ token: "orc handoff set",
2590
+ files: [
2591
+ "commands/orc-handoff.md",
2592
+ "skills/orc-handoff/SKILL.md",
2593
+ "skills/orc-handoff/references/surfaces.md",
2594
+ ],
2595
+ binFiles: ["bin/cli.js"],
2596
+ },
2597
+ {
2598
+ name: "budget plan key (v0.46.0 — asked once, stored; never a guessed quota percentage)",
2599
+ token: "budget_plan",
2600
+ files: [
2601
+ "skills/orc-budget/SKILL.md",
2602
+ "skills/orc-budget/references/corpus.md",
2603
+ ],
2604
+ binFiles: ["bin/cli.js"],
2605
+ },
2606
+ {
2607
+ name: "budget forecast is PLAN-ONLY (v0.46.0 — a forecast from prose is a guess that looks computed)",
2608
+ token: "orc budget forecast",
2609
+ files: [
2610
+ "skills/orc-budget/SKILL.md",
2611
+ "skills/orc-route/SKILL.md",
2612
+ ],
2613
+ binFiles: ["bin/cli.js"],
2614
+ },
2615
+ {
2616
+ name: "aftermath output dir (v0.46.0 — orc-aftermath/<period>/, report-only)",
2617
+ token: "orc-aftermath/",
2618
+ files: [
2619
+ "commands/orc-aftermath.md",
2620
+ "skills/orc-aftermath/SKILL.md",
2621
+ "skills/orc-aftermath/references/report.md",
2622
+ ],
2623
+ binFiles: ["bin/cli.js"],
2624
+ },
2625
+ {
2626
+ name: "export derived marker (v0.46.0 — fingerprinted, --checkable, never hand-written)",
2627
+ token: "orc-export:derived",
2628
+ files: [
2629
+ "skills/orc-export/SKILL.md",
2630
+ ],
2631
+ binFiles: ["bin/cli.js"],
2632
+ },
2633
+ {
2634
+ name: "wiki work list (v0.46.0 — ranked + priced; the skill renders, never computes)",
2635
+ token: "orc wiki plan",
2636
+ files: [
2637
+ "skills/orc-wiki/SKILL.md",
2638
+ "skills/orc-wiki/references/extra.md",
2639
+ "skills/orc-wiki/references/partial-refresh.md",
2640
+ ],
2641
+ binFiles: ["bin/cli.js"],
2642
+ },
2643
+ {
2644
+ name: "wiki usage file (v0.46.0 — from TRACES, its own file, NEVER wiki-meta.json)",
2645
+ token: "wiki-usage.json",
2646
+ files: [
2647
+ "skills/orc-wiki/SKILL.md",
2648
+ "skills/orc-wiki/references/partial-refresh.md",
2649
+ ],
2650
+ binFiles: ["bin/cli.js"],
2651
+ },
2652
+ {
2653
+ name: "wiki light scanner (v0.46.0 — the tier ladder's cheap half, dispatched BY NAME)",
2654
+ token: "orc-wiki-scanner-sonnet-5-high",
2655
+ files: [
2656
+ "agents/MODEL-MAPPING.md",
2657
+ "agents/orc-wiki-scanner-sonnet-5-high.md",
2658
+ "skills/_shared/opus5-only.md",
2659
+ // v0.55.0 — the slot table names the agent `wiki-scanner-light` displaces.
2660
+ "skills/_shared/extra-dispatch.md",
2661
+ "skills/orc-wiki/SKILL.md",
2662
+ "skills/orc-wiki/references/extra.md",
2663
+ "skills/orc-wiki/references/partial-refresh.md",
2664
+ ],
2665
+ binFiles: ["bin/cli.js"],
2666
+ },
2667
+ {
2668
+ name: "wiki scan tier mode (v0.46.0 — ladder | always_deep; the tier is never silent)",
2669
+ token: "wiki_scan_tier",
2670
+ files: [
2671
+ "skills/orc-wiki/SKILL.md",
2672
+ "skills/orc-wiki/references/extra.md",
2673
+ "skills/orc-wiki/references/partial-refresh.md",
2674
+ ],
2675
+ binFiles: ["bin/cli.js"],
2676
+ },
2677
+ // ── v0.48.0 — /orc-doc ────────────────────────────────────────────────────
2678
+ // The two headline contracts, registered as a PAIR because they fail together:
2679
+ // a lane that reads the body has no reason to freeze the context, and a lane
2680
+ // that re-interviews has already lost the reason not to read the body.
2681
+ {
2682
+ name: "the orchestrator never reads the document body (v0.48.0 — /orc-doc)",
2683
+ token: "a lane that reads its own document",
2684
+ files: [
2685
+ "skills/_shared/extra-dispatch.md",
2686
+ "skills/orc-challenge/references/council.md",
2687
+ "skills/orc-doc/SKILL.md",
2688
+ "skills/orc-doc/references/chunking.md",
2689
+ ],
2690
+ },
2691
+ {
2692
+ name: "the context is gathered once and FROZEN (v0.48.0 — /orc-doc)",
2693
+ token: "a lane that re-asks a frozen question",
2694
+ files: [
2695
+ "skills/orc-doc/SKILL.md",
2696
+ "skills/orc-doc/references/resume-protocol.md",
2697
+ ],
2698
+ },
2699
+ {
2700
+ name: "orc-doc output dir (v0.48.0 — project root, never .claude/)",
2701
+ token: "orc/orc-doc/",
2702
+ files: [
2703
+ "skills/orc-doc/references/chunking.md",
2704
+ "skills/orc-doc/references/gates.md",
2705
+ "skills/orc-doc/references/resume-protocol.md",
2706
+ "skills/orc-doc/README.md",
2707
+ ],
2708
+ binFiles: ["bin/cli.js"],
2709
+ },
2710
+ // ── v0.48.1 — the score, the finish line, the memory ──────────────────────
2711
+ {
2712
+ // The pipeline stops being something the orchestrator REMEMBERS. Same shape
2713
+ // as the Flow stepper: the CLI computes the next legal action, the skill
2714
+ // renders it. A session that improvises the order is the exact drift this
2715
+ // command exists to prevent.
2716
+ name: "the CLI computes the next action, the skill renders it (v0.48.1)",
2717
+ token: "orc doc next",
2718
+ files: [
2719
+ "skills/orc-doc/SKILL.md",
2720
+ "skills/orc-doc/references/chunking.md",
2721
+ "skills/orc-doc/references/resume-protocol.md",
2722
+ "skills/orc-doc/references/gates.md",
2723
+ "skills/orc-doc/README.md",
2724
+ ],
2725
+ binFiles: ["bin/cli.js"],
2726
+ },
2727
+ {
2728
+ // Shipping is RECORDED as a decision (/orc-pact) and the resulting state is
2729
+ // COMPUTED, never stored (/orc-challenge). `shipped-drifted` names the
2730
+ // sections that moved — coverage-relative, the computeWikiFreshness lesson.
2731
+ name: "delivery is recorded, its state is computed (v0.48.1 — shipped-drifted)",
2732
+ token: "shipped-drifted",
2733
+ files: [
2734
+ "skills/orc-doc/SKILL.md",
2735
+ "skills/orc-doc/references/gates.md",
2736
+ "skills/orc-doc/references/chunking.md",
2737
+ ],
2738
+ binFiles: ["bin/cli.js"],
2739
+ },
2740
+ {
2741
+ // The call site is the contract. A skill that forgets to log at D1 leaves
2742
+ // the journal permanently empty, and an empty journal is indistinguishable
2743
+ // from a document nobody ever asked for anything on.
2744
+ name: "the request is recorded VERBATIM at D1 (v0.48.1 — orc doc log)",
2745
+ token: "orc doc log",
2746
+ files: [
2747
+ "skills/orc-doc/SKILL.md",
2748
+ "skills/orc-doc/references/gates.md",
2749
+ "skills/orc-doc/references/resume-protocol.md",
2750
+ "skills/orc-doc/references/portable-markdown.md",
2751
+ "skills/orc-doc/references/chunking.md",
2752
+ // v0.49.2 — both new rule pages send what they catch to the SAME place.
2753
+ "skills/orc-doc/references/house-rules.md",
2754
+ "skills/orc-doc/references/generation-rules.md",
2755
+ ],
2756
+ binFiles: ["bin/cli.js"],
2757
+ },
2758
+ {
2759
+ // The fourth member of the family, with `reads its own document` and
2760
+ // `re-asks a frozen question`. A cycle nobody logged renders AS A GAP —
2761
+ // never a plausible reconstruction from file mtimes. The /orc-pact
2762
+ // UNCHECKABLE rule: not knowing is an answer, and faking it teaches people
2763
+ // to distrust the rows that are real.
2764
+ name: "the journal never invents an entry (v0.48.1 — /orc-doc)",
2765
+ token: "a lane that invents a journal entry",
2766
+ files: [
2767
+ "skills/orc-doc/SKILL.md",
2768
+ "skills/orc-doc/references/resume-protocol.md",
2769
+ ],
2770
+ },
2771
+ {
2772
+ // `orc doc read` prints prose, so the rule table has to say out loud that
2773
+ // the orchestrator is not the one who runs it — otherwise it reads as a
2774
+ // hole in hard rule 0. It is a command for the human, like
2775
+ // `orc challenge report`.
2776
+ name: "orc doc read is for the HUMAN (v0.48.1 — rule 0 is not softened)",
2777
+ token: "The orchestrator never runs `orc doc read`",
2778
+ files: [
2779
+ "skills/orc-doc/SKILL.md",
2780
+ "skills/orc-doc/references/chunking.md",
2781
+ ],
2782
+ },
2783
+ // ── v0.49.0 — the document is a FOLDER, the file is a build artifact ──────
2784
+ {
2785
+ // The inversion this release exists to end: `.work/` was scratch and
2786
+ // `document.md` was truth, so every later change was extract → edit →
2787
+ // splice through the 10,000-line file. Naming the folder in every consumer
2788
+ // is what stops a spine quietly going back to the monolith.
2789
+ name: "sections/ is the source of truth (v0.49.0 — /orc-doc)",
2790
+ token: "sections/",
2791
+ files: [
2792
+ "skills/orc-doc/SKILL.md",
2793
+ "skills/orc-doc/README.md",
2794
+ "skills/orc-doc/references/chunking.md",
2795
+ "skills/orc-doc/references/gates.md",
2796
+ "skills/orc-doc/references/resume-protocol.md",
2797
+ "agents/orc-doc-checker-opus-5-low.md",
2798
+ "agents/orc-doc-writer-opus-5-med.md",
2799
+ "commands/orc-doc.md",
2800
+ "skills/orc-doc/references/portable-markdown.md",
2801
+ "skills/orc-doc/examples/orc-doc-prd-run.md",
2802
+ // v0.49.2 — the doc lane's DISPATCH tail names the section FILE, which is
2803
+ // the only thing that makes `orc doc cost` per-section honest.
2804
+ "skills/orc/references/trace-protocol.md",
2805
+ ],
2806
+ binFiles: ["bin/cli.js"],
2807
+ },
2808
+ {
2809
+ // `document.md` is REBUILT, never edited in place. The command name is a
2810
+ // single token the lint can see, and it is mirrored in the CLI.
2811
+ name: "document.md is a build artifact (v0.49.0 — orc doc compile)",
2812
+ token: "orc doc compile",
2813
+ files: [
2814
+ "skills/orc-doc/SKILL.md",
2815
+ "skills/orc-doc/README.md",
2816
+ "skills/orc-doc/references/chunking.md",
2817
+ "skills/orc-doc/references/resume-protocol.md",
2818
+ "commands/orc-doc.md",
2819
+ "skills/orc-doc/references/gates.md",
2820
+ "skills/orc-doc/references/portable-markdown.md",
2821
+ "skills/orc-doc/examples/orc-doc-prd-run.md",
2822
+ ],
2823
+ binFiles: ["bin/cli.js"],
2824
+ },
2825
+ {
2826
+ // ONE FILE PER SECTION. Before v0.49.0 a two-section slice wrote one file
2827
+ // named after the first, while compile looked one up per outline id — so
2828
+ // the second section's file never existed. A live bug, fixed by
2829
+ // construction, and the sentence is what keeps it fixed.
2830
+ name: "one file per section (v0.49.0 — the D-3 regression guard)",
2831
+ token: "one file per section",
2832
+ files: [
2833
+ "skills/orc-doc/SKILL.md",
2834
+ "skills/orc-doc/references/chunking.md",
2835
+ "agents/orc-doc-writer-opus-5-med.md",
2836
+ // The boundary sentence restates it: a house rule can never relax it.
2837
+ "skills/orc-doc/references/house-rules.md",
2838
+ ],
2839
+ },
2840
+ {
2841
+ // The deliverable is only what the reader came for. ORC's uncertainty is
2842
+ // still recorded — in gaps.md and the journal — just not in the document.
2843
+ name: "the deliverable carries content only (v0.49.0 — /orc-doc)",
2844
+ token: "carries content only",
2845
+ files: [
2846
+ "skills/orc-doc/SKILL.md",
2847
+ "skills/orc-doc/README.md",
2848
+ "skills/orc-doc/references/chunking.md",
2849
+ "skills/orc-doc/references/plain-language.md",
2850
+ "skills/orc-doc/references/portable-markdown.md",
2851
+ "agents/orc-doc-writer-opus-5-med.md",
2852
+ "agents/orc-doc-checker-opus-5-low.md",
2853
+ "commands/orc-doc.md",
2854
+ "skills/orc-doc/references/resume-protocol.md",
2855
+ "skills/orc-doc/references/templates/collaboration.md",
2856
+ "skills/orc-doc/references/templates/prd.md",
2857
+ "skills/orc-doc/references/templates/report.md",
2858
+ "skills/orc-doc/references/templates/tsd.md",
2859
+ "skills/orc-doc/references/templates/workflow.md",
2860
+ "skills/orc-doc/examples/orc-doc-prd-run.md",
2861
+ ],
2862
+ },
2863
+ {
2864
+ // A wave boundary is a real STOP, not a loop iteration. Treat it as a loop
2865
+ // and a usage-limit kill between waves leaves nothing that says where it
2866
+ // stopped — which is exactly what happened before this release.
2867
+ name: "every wave is a stop (v0.49.0 — /orc-doc)",
2868
+ token: "Every wave is a stop",
2869
+ files: [
2870
+ "skills/orc-doc/SKILL.md",
2871
+ "skills/orc-doc/README.md",
2872
+ "commands/orc-doc.md",
2873
+ ],
2874
+ },
2875
+ {
2876
+ // Asked ONCE and stored, never decided per wave by the orchestrator — that
2877
+ // is remembered-not-dispatched protocol, the failure this repo has already
2878
+ // paid for twice.
2879
+ name: "partial writing is a stored mode, not a per-wave choice (v0.49.0)",
2880
+ token: "doc_write_mode",
2881
+ files: [
2882
+ "skills/orc-doc/SKILL.md",
2883
+ "skills/orc-doc/README.md",
2884
+ "skills/orc-doc/references/chunking.md",
2885
+ "skills/orc-doc/examples/orc-doc-prd-run.md",
2886
+ ],
2887
+ binFiles: ["bin/cli.js"],
2888
+ },
2889
+ // ── v0.49.2 — house rules, the generation rules, the template lock, the
2890
+ // forecast, the cost report and the revision anchor ───────────
2891
+ {
2892
+ // The project's OWN standing instructions ride at the TOP of every slice,
2893
+ // above ORC's own. A rule the writer reads third is a rule the writer
2894
+ // weighs third, and the whole point of a P0 is that it is not weighed.
2895
+ name: "house rules ride first in every dispatched slice (v0.49.2)",
2896
+ token: "house rules are read first",
2897
+ files: [
2898
+ "skills/orc-doc/SKILL.md",
2899
+ "skills/orc-doc/references/house-rules.md",
2900
+ "skills/orc-doc/references/chunking.md",
2901
+ ],
2902
+ binFiles: ["bin/cli.js"],
2903
+ },
2904
+ {
2905
+ // A SUPPLIED template is a cage, not a floor. `--template` set the outline
2906
+ // and then nothing stopped a writer adding a heading it never had.
2907
+ name: "a supplied template is a P0 cage (v0.49.2)",
2908
+ token: "a lane that writes outside its template",
2909
+ files: [
2910
+ "skills/orc-doc/SKILL.md",
2911
+ "skills/orc-doc/references/gates.md",
2912
+ "skills/orc-doc/references/generation-rules.md",
2913
+ ],
2914
+ },
2915
+ {
2916
+ // A revision round that names a rule but not a PLACE cannot be followed in
2917
+ // `sections/`, which is where the user is actually reading. The numbers are
2918
+ // part-local because the part file is what the writer opens.
2919
+ name: "an edit round names the file and the part-local line (v0.49.2)",
2920
+ token: "sections/<id>.md \u00b7 line",
2921
+ files: [
2922
+ "skills/orc-doc/SKILL.md",
2923
+ "skills/orc-doc/references/chunking.md",
2924
+ ],
2925
+ },
2926
+ {
2927
+ // The project ledger. Outside templates/, so `orc update` never clobbers it.
2928
+ // v0.49.5 — it is a PLAIN TEXT config now, and the file extension IS the
2929
+ // change: a `.json` row store and a `.md` a human edits are not the same
2930
+ // artifact, so the token moves with it.
2931
+ name: "the house-rule ledger's file (v0.49.2, text config in v0.49.5)",
2932
+ token: "doc-house-rules.md",
2933
+ files: [
2934
+ "skills/orc-doc/references/house-rules.md",
2935
+ // v0.49.5 — a config a human is told to open in their editor has to be
2936
+ // named where they are told to open it.
2937
+ "skills/orc-doc/SKILL.md",
2938
+ "skills/orc-doc/README.md",
2939
+ "commands/orc-doc.md",
2940
+ ],
2941
+ binFiles: ["bin/cli.js"],
2942
+ },
2943
+ {
2944
+ name: "the run map, once, before the first paid wave (v0.49.2)",
2945
+ token: "orc doc forecast",
2946
+ files: [
2947
+ "skills/orc-doc/SKILL.md",
2948
+ "skills/orc-doc/references/gates.md",
2949
+ "skills/orc-doc/README.md",
2950
+ ],
2951
+ binFiles: ["bin/cli.js"],
2952
+ },
2953
+ {
2954
+ name: "what a document cost, across every session it spanned (v0.49.2)",
2955
+ token: "orc doc cost",
2956
+ files: [
2957
+ "skills/orc-doc/SKILL.md",
2958
+ "skills/orc-doc/references/chunking.md",
2959
+ // The DISPATCH tail that makes per-section attribution honest is defined
2960
+ // there, so the command's name has to move with it.
2961
+ "skills/orc/references/trace-protocol.md",
2962
+ "skills/orc-doc/README.md",
2963
+ "commands/orc-doc.md",
2964
+ ],
2965
+ binFiles: ["bin/cli.js"],
2966
+ },
2967
+ {
2968
+ // A run the user abandoned kept a RESUME.md forever, so it was waiting
2969
+ // forever — and that is what blocked the upgrade preview with no way out.
2970
+ name: "a run the human is finished with (v0.49.2)",
2971
+ token: "orc run close",
2972
+ files: [],
2973
+ binFiles: ["bin/cli.js"],
2974
+ },
2975
+ {
2976
+ name: "the local-reference switch (v0.49.2)",
2977
+ token: "doc_local_refs",
2978
+ files: [
2979
+ "skills/orc-doc/references/generation-rules.md",
2980
+ "skills/orc-doc/SKILL.md",
2981
+ "skills/orc-doc/README.md",
2982
+ ],
2983
+ binFiles: ["bin/cli.js"],
2984
+ },
2985
+ ];
2986
+
2987
+ // Spine size budgets (v0.19.0). These SKILL.md files are ALWAYS loaded when
2988
+ // their skill runs — every line here is paid on every run, and oversized
2989
+ // spines are what make the model drift from the contract lines buried inside
2990
+ // them. Detail belongs in load-on-demand references/ (free until the phase
2991
+ // fires). A new feature that would blow a budget lands as a reference + a
2992
+ // pointer, not as spine prose. Raising a budget is a deliberate, reviewed act.
2993
+ const BUDGETS = [
2994
+ // v0.28.0: deliberate raise 335→350 — the run-integrity work adds inline
2995
+ // trace imperatives to every phase body (fix for SPAWN/RETURN-only traces),
2996
+ // the deterministic wave-stop gate, and the always-on wiki/pattern/crosslink
2997
+ // visibility reports.
2998
+ // v0.30.0: deliberate raise 350→360 — the scoring revamp adds the visible
2999
+ // `base+adjusters=final` demand + anti-inflation cite, the Fable 5 role-
3000
+ // override dispatch pointer, and the Phase-1 CONFIG runtime-proof trace line.
3001
+ // v0.31.0: deliberate raise 360→385 — the execution-integrity revamp wires
3002
+ // four of five parts into the spine: the Phase-0 plan-input trigger
3003
+ // (plan-handoff entry contract), waves-always-computed (Part C), the
3004
+ // facet-scored formula + fix-cycle scoring rule (Part D), and the Phase-1
3005
+ // open_questions relay + step-back valve (Part E). Detail lives in the
3006
+ // references; the spine keeps only triggers + contract tokens + pointers.
3007
+ // v0.32.0: deliberate raise 385→392 — the trace revamp replaces the v0.28.0
3008
+ // inline emit prose with the packet + writer-dispatch protocol (packet fields,
3009
+ // the pairing rule, the solo first/last packet). Net +7: the narration
3010
+ // contract is the one thing that must survive compaction in the spine itself,
3011
+ // and the packet SCHEMA + per-lane packet counts live in trace-protocol.md.
3012
+ // v0.33.0: deliberate raise 392→424 — the knowledge-deepening + verification
3013
+ // revamp adds three spine-level contracts that must survive compaction: the
3014
+ // TDD anchor (tdd_spec in the plan gate, Wave-0 red proof, the tdd_loop_max
3015
+ // repair loop, the two-half Phase 6), the mock-example phase (6.7) + its
3016
+ // never-staged ship rule, and the plan-gate tdd wording. Detail lives in
3017
+ // _shared/drift-recovery.md, planning-output.md, and orc-review-verify.
3018
+ // v0.37.0: deliberate raise 424→442 — the Phase 8 stacked-PR gate. It has to
3019
+ // sit in the spine because it is a SHIP-TIME decision the run must not forget
3020
+ // after compaction: the measured threshold, the ONE P0 question, its two
3021
+ // degrade-to-a-regular-PR prerequisites (ticket + template), and the handoff
3022
+ // to the two standalone lanes. The mechanism (measurement, template
3023
+ // resolution, the STACK-FROM block) lives in subskills/orc-pr/stack-gate.md
3024
+ // and _shared/{stack-plan,pr-templates}.md.
3025
+ // v0.39.0: deliberate raise 442→445 — hard rule 13, the read ladder. It has to
3026
+ // sit in the spine because the orchestrator BUILDS every slice: a discipline
3027
+ // named only in a reference the slice-builder never loads is not applied.
3028
+ // v0.40.0: deliberate raise 445→455 — the three gotcha touchpoints. All three
3029
+ // are decision points the spine owns and no reference can hold: the Phase-1
3030
+ // probe (before any reference loads), the slice-build injection rule (the
3031
+ // scope filter + cap 3 IS the anti-bloat guard), and the phase-close capture
3032
+ // (only the orchestrator may write the file). See _shared/gotchas.md.
3033
+ // v0.42.0: deliberate raise 455→462 — three spine facts the QoL release adds.
3034
+ // (1) The `forecast:` mandate: it fires between the Phase-1 exit gate and the
3035
+ // Phase-2 pause question, so a reference loaded at either end is loaded on the
3036
+ // wrong side of it; and run_budget_dispatches is a HARD STOP, which the spine
3037
+ // must own for the same reason the batch pause does. (2) The ultra lane names
3038
+ // its own trace lane (`run-ultra-…`) — an ultra run traced as `orc` is counted
3039
+ // as a plain /orc run forever. (3) Phase 8 now closes BOTH open-run markers —
3040
+ // .current and the run’s RESUME.md — and emits the one STATS line orc stats
3041
+ // reads; all three are run-end facts a reference loaded earlier cannot carry.
3042
+ // Mechanics live in references/{preflight-report,stop-and-resume,trace-protocol}.md.
3043
+ // v0.46.0: deliberate raise 462→490 — the six new lanes' CONSUMER seams. Every
3044
+ // one is a spine fact by the same test the earlier raises used: it happens at a
3045
+ // decision point the spine owns, before (or instead of) any reference load.
3046
+ // (1) The Phase-1 probe block — pact/boundary/wiki-debt/aftermath are read
3047
+ // alongside wiki/pattern/gotchas, and the "print each probe's own line VERBATIM"
3048
+ // rule is what stops a second wording of a number the CLI already computed.
3049
+ // (2) The Phase-1 PACT INJECTION: it fires between the exit gate and the
3050
+ // forecast, so a reference loaded at either end sits on the wrong side of it —
3051
+ // and it is the entire payoff of the pact lane. (3) The Phase-3 BOUNDARY gate:
3052
+ // it decides WHETHER a task is dispatched at all, which no reference loaded
3053
+ // after the wave can do, and the lift-one-task-not-the-wave rule is the part a
3054
+ // later reader would most plausibly get wrong. (4) The Phase-6 pact recheck,
3055
+ // whose "P1 finding, never an automatic abort" clause is a gate outcome.
3056
+ // (5) The Phase-8 handoff sentence — one line, and the only discovery path the
3057
+ // non-dev lane has. Mechanics live in orc-pact/references/gate.md,
3058
+ // orc-boundary/references/gate.md and references/preflight-report.md.
3059
+ // v0.47.0: deliberate raise 490→494 — the `challenge_gate` probe joins the
3060
+ // Phase-1 block above. It belongs in the spine for the same reason its four
3061
+ // neighbours do: it is read alongside them in one pass, its output is a CLI
3062
+ // line printed VERBATIM, and a reference loaded later would arrive after the
3063
+ // planner already committed to building from a document that has not passed
3064
+ // its own review. Four lines, one probe, no new mechanics.
3065
+ // v0.50.0: deliberate raise 494→528 — Extra's four SEAMS, and every one of them
3066
+ // is a decision the spine makes before (or instead of) loading a reference.
3067
+ // (1) The subsystem header: the gate, the pointer, and `ONE resolver, and it is
3068
+ // not you` — the rule a compacted orchestrator is most likely to lose, and the
3069
+ // one whose loss produces a dispatch that does not match what the user was told.
3070
+ // (2) The Phase-1 resolve+announce: it joins the probe block its five neighbours
3071
+ // already occupy, and its `extra:` line is P0 — a run that crosses the boundary
3072
+ // silently is the one failure this whole subsystem is shaped around, so it may
3073
+ // not depend on a reference having been loaded. (3) The Phase-2 cited-risk
3074
+ // HOLD-BACK: it changes WHETHER a task leaves Claude, which no reference loaded
3075
+ // after scoring can do — the /orc-boundary-gate precedent exactly. (4) The
3076
+ // Phase-3 transport switch (Bash, not the Task tool) plus §2b-instead-of-§2 on
3077
+ // the return: a foreign worker emits no SPAWN/RETURN, so if the spine forgets
3078
+ // the trace tail there is no record at all. Mechanics — the engine capability
3079
+ // table, the five exit codes, the fence asymmetry, the fallback procedure —
3080
+ // live in _shared/extra-dispatch.md, with the rendering rules in
3081
+ // references/{preflight-report,effort-and-mode}.md.
3082
+ { file: "skills/orc/SKILL.md", maxLines: 528 },
3083
+ // v0.33.0: deliberate raises 264→289 / 197→219 / 171→179 — orc-wiki gains the
3084
+ // crosslink-compile entry branch, the delta-refresh default (impact probe),
3085
+ // and the orientation/atlas assemble steps (detail in references/); mini
3086
+ // gains the one-question TDD policy + the mock-example phase; fast gains the
3087
+ // mock-example phase only. Mechanisms live in the shared/canonical refs.
3088
+ // v0.34.5: deliberate raise 289→290 — the scan agent is now dispatched BY
3089
+ // NAME (the pin is unenforceable otherwise, and an un-`orc`-named dispatch is
3090
+ // invisible to the trace hook) and the scan slice must carry the kind catalog
3091
+ // (an agent never shown it cannot "prefer an existing kind", and a synonym
3092
+ // kind is a PERMANENT duplicate). Both are dispatch-time facts; neither can
3093
+ // live in a reference loaded after the dispatch.
3094
+ // v0.39.0: deliberate raise 290→296 — hard rules 13 (read ladder) and 14
3095
+ // (a linked repo's wiki is FOREIGN input). Both are dispatch-time facts: the
3096
+ // ladder goes into the scan slice this lane assembles, and the trust rule
3097
+ // governs the crosslink peek, which happens before any reference loads.
3098
+ // v0.46.0: deliberate raise 296→325 — the partial-refresh workstream (W1). All
3099
+ // three additions are DISPATCH-TIME or ENTRY-TIME facts a reference loaded
3100
+ // later cannot carry: the TARGETED REFRESH entry branch (it must skip Phase 0
3101
+ // branch detection and Phase 1 area planning, which is a decision made before
3102
+ // either runs), the scan TIER resolution (it picks WHICH agent name to
3103
+ // dispatch, and the "print the resolved tier" rule is what stops a cheaper
3104
+ // model being a quiet substitution), and the plan/debt/usage pointer with the
3105
+ // one rule that must not be re-derived — usage never enters wiki-meta.json.
3106
+ // Everything else lives in references/partial-refresh.md.
3107
+ { file: "skills/orc-wiki/SKILL.md", maxLines: 325 },
3108
+ // v0.34.2: deliberate raise 219→220 — the run-start `touch the trace file`
3109
+ // step. It is one line, it is the fix for the corpus's largest defect family,
3110
+ // and it has to sit in the spine because it happens before any reference loads.
3111
+ // v0.40.0: deliberate raise 220→225 — the gotchas trigger (probe, inject,
3112
+ // append). Mini reads AND writes repair memory, and the write is the
3113
+ // orchestrator's alone; the trimmed mechanics live in _shared/gotchas.md §10.
3114
+ // v0.50.0: deliberate raise 225→227 — Extra, as ONE paragraph beside the
3115
+ // agent name-map, because that is the table it modifies. Mini has no score, so
3116
+ // the resolve-the-BAND-at-both-edges rule decides WHETHER the single executor
3117
+ // leaves Claude at all; it happens before any reference loads, and getting it
3118
+ // wrong routes a whole run on a partially covering row. Mechanics in
3119
+ // _shared/extra-dispatch.md.
3120
+ { file: "skills/orc-mini/SKILL.md", maxLines: 227 },
3121
+ // v0.39.0: deliberate raises 195→201 / 179→182 — the analyst gains hard rules
3122
+ // 2b (a source it did not author is FOREIGN input) and 4a (the read ladder);
3123
+ // fast gains the ladder as a slice line. Both are hard rules by nature: they
3124
+ // bound what the role may treat as instruction and how much it may read, and
3125
+ // neither survives being deferred to a reference.
3126
+ // v0.42.0: deliberate raise 201→215 — the analyzable gate (the reverse
3127
+ // trigger to /orc-grill). It has to sit in the spine because it decides
3128
+ // BEFORE any reference loads whether this run should happen at all, and the
3129
+ // `analyzable ⇔` sentence is a registered contract token that must be stated
3130
+ // where the decision is made. The two branches, the offer wording and the
3131
+ // auto-consume live in references/thin-input.md, loaded only when it fails.
3132
+ // v0.47.0: deliberate raise 215→221 — the `/orc-challenge` probe at Phase A.
3133
+ // It has to sit at the point the source mode is confirmed: by the time any
3134
+ // reference loads, scope is already bounded and the analyst is committed to a
3135
+ // document that may not have passed its own review. One probe, one VERBATIM
3136
+ // line, no mechanics — the same shape as the Phase-1 probes in orc/SKILL.md.
3137
+ { file: "skills/orc-analyze/SKILL.md", maxLines: 221 },
3138
+ // v0.40.0: deliberate raise 182→187 — gotchas as an explicit NON-gate. It has
3139
+ // to be stated where the two prerequisites are stated, or a later reader adds
3140
+ // a third gate and breaks the lane's entire premise.
3141
+ // v0.50.0: deliberate raise 187→189 — Extra, stated at the slice build beside
3142
+ // the pinned executor name, with the same both-edges band rule mini uses and
3143
+ // the explicit clause that Extra is ORTHOGONAL to the knowledge gate. That
3144
+ // clause is the one a later reader would most plausibly get wrong — this lane
3145
+ // is defined by having exactly two prerequisites, and a foreign executor is
3146
+ // not a third one. Mechanics in _shared/extra-dispatch.md.
3147
+ { file: "skills/orc-fast/SKILL.md", maxLines: 189 },
3148
+ ];
3149
+
3150
+ function walk(dir, out) {
3151
+ for (const e of fs.readdirSync(dir, { withFileTypes: true })) {
3152
+ const p = path.join(dir, e.name);
3153
+ if (e.isDirectory()) walk(p, out);
3154
+ else out.push(p);
3155
+ }
3156
+ return out;
3157
+ }
3158
+
3159
+ const allFiles = walk(ROOT, []).map((p) =>
3160
+ path.relative(ROOT, p).split(path.sep).join("/")
3161
+ );
3162
+
3163
+ const REPO_ROOT = path.join(__dirname, "..");
3164
+
3165
+ let failures = 0;
3166
+ for (const c of CONTRACTS) {
3167
+ const expected = new Set(c.files);
3168
+ const actual = new Set(
3169
+ allFiles.filter((rel) =>
3170
+ fs.readFileSync(path.join(ROOT, rel), "utf8").includes(c.token)
3171
+ )
3172
+ );
3173
+ const missing = c.files.filter((f) => !actual.has(f));
3174
+ const unregistered = [...actual].filter((f) => !expected.has(f)).sort();
3175
+ // B2: some contract tokens are ALSO mirrored into CLI code (bin/cli.js) —
3176
+ // config keys the CLI reads/writes, artifact filenames it owns, etc. Those
3177
+ // paths live OUTSIDE templates/ so the walk above can't see them; `binFiles`
3178
+ // pins the token into repo-root files as a presence-only assertion, so a
3179
+ // rename on the CLI side (or the skill side) fails the lint. No unregistered
3180
+ // scan for bin files — the CLI legitimately mentions many tokens in passing.
3181
+ const binMissing = (c.binFiles || []).filter((bf) => {
3182
+ try {
3183
+ return !fs.readFileSync(path.join(REPO_ROOT, bf), "utf8").includes(c.token);
3184
+ } catch (_) {
3185
+ return true;
3186
+ }
3187
+ });
3188
+ if (missing.length || unregistered.length || binMissing.length) {
3189
+ failures++;
3190
+ console.error(`\n❌ contract drift: ${c.name} (token: "${c.token}")`);
3191
+ for (const f of missing)
3192
+ console.error(` - MISSING from expected copy: templates/${f}`);
3193
+ for (const f of unregistered)
3194
+ console.error(
3195
+ ` - UNREGISTERED copy (add to bin/verify-contracts.js): templates/${f}`
3196
+ );
3197
+ for (const f of binMissing)
3198
+ console.error(` - MISSING from registered bin mirror: ${f}`);
3199
+ }
3200
+ }
3201
+
3202
+ for (const b of BUDGETS) {
3203
+ const p = path.join(ROOT, b.file);
3204
+ let lines;
3205
+ try {
3206
+ lines = fs.readFileSync(p, "utf8").split("\n").length;
3207
+ } catch (_) {
3208
+ failures++;
3209
+ console.error(`\n❌ spine budget: templates/${b.file} is missing.`);
3210
+ continue;
3211
+ }
3212
+ if (lines > b.maxLines) {
3213
+ failures++;
3214
+ console.error(
3215
+ `\n❌ spine budget exceeded: templates/${b.file} is ${lines} lines ` +
3216
+ `(budget ${b.maxLines}).\n Spines stay thin by design — move the ` +
3217
+ `new detail into a references/ file loaded at its phase, keep only ` +
3218
+ `the trigger + contract tokens + pointer in the spine.`
3219
+ );
3220
+ }
3221
+ }
3222
+
3223
+ // ── Config-key coverage (C.3) ──────────────────────────────────────────────
3224
+ // Every key in bin/cli.js's CONFIG_META must be referenced somewhere under
3225
+ // templates/skills/**, and every `config.<key>` a skill references must be a
3226
+ // real CLI key. Catches a decorative config key (nothing reads it) and a skill
3227
+ // referencing a key the CLI can't actually write.
3228
+ {
3229
+ const cliText = fs.readFileSync(path.join(REPO_ROOT, "bin", "cli.js"), "utf8");
3230
+ const block = cliText.match(/const CONFIG_META = \[([\s\S]*?)\n\];/);
3231
+ const cliKeys = block
3232
+ ? [...block[1].matchAll(/\{\s*key:\s*"([a-z0-9_]+)"/g)].map((m) => m[1])
3233
+ : [];
3234
+ const skillFiles = allFiles.filter((f) => f.startsWith("skills/"));
3235
+ const skillText = skillFiles
3236
+ .map((f) => fs.readFileSync(path.join(ROOT, f), "utf8"))
3237
+ .join("\n");
3238
+ const orphanKeys = cliKeys.filter(
3239
+ (k) => !new RegExp("\\b" + k + "\\b").test(skillText)
3240
+ );
3241
+ const EXT = new Set(["md", "yaml", "yml", "json", "js", "txt"]);
3242
+ const ALLOW = new Set(["rubric_bands_override"]); // hand-edit-only advanced key
3243
+ const referenced = new Set();
3244
+ for (const m of skillText.matchAll(/config\.([a-z][a-z0-9_]+)/g))
3245
+ referenced.add(m[1]);
3246
+ const unknownRefs = [...referenced].filter(
3247
+ (k) => !cliKeys.includes(k) && !EXT.has(k) && !ALLOW.has(k)
3248
+ );
3249
+ if (!cliKeys.length) {
3250
+ failures++;
3251
+ console.error("\n❌ config-key coverage: could not parse CONFIG_META from bin/cli.js.");
3252
+ }
3253
+ if (orphanKeys.length || unknownRefs.length) {
3254
+ failures++;
3255
+ console.error("\n❌ config-key coverage drift:");
3256
+ for (const k of orphanKeys)
3257
+ console.error(
3258
+ ` - CLI key "${k}" is never referenced under templates/skills/ (decorative — wire it or drop it)`
3259
+ );
3260
+ for (const k of unknownRefs)
3261
+ console.error(
3262
+ ` - templates reference config.${k} but no such CLI CONFIG_META key`
3263
+ );
3264
+ }
3265
+ }
3266
+
3267
+ if (failures) {
3268
+ console.error(
3269
+ `\n❌ ORC contract lint FAILED — ${failures} contract(s) drifted.` +
3270
+ `\nEvery shared contract must change in ALL its copies (and this table)` +
3271
+ `\nin the same commit. See CLAUDE.md "maintenance drift is by design".\n`
3272
+ );
3273
+ process.exit(1);
3274
+ }
3275
+ console.log(
3276
+ `✅ ORC contracts OK — ${CONTRACTS.length} contracts consistent across templates/.`
3277
+ );