@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,284 @@
1
+ # Reference — Cross-Repo Wiki Crosslink (federation at the boundary)
2
+
3
+ Lets one repo's wiki reference *another repo's* wiki at integration boundaries
4
+ (BE↔FE, BE→gRPC service, …) so executors build against real cross-repo contracts
5
+ instead of guessing. Crosslink is a **subsystem of orc-wiki** — no slash command,
6
+ no standalone runtime role. It federates on the *boundary surface*, not the whole
7
+ wiki. Shapes: `../schemas/crosslink-tag.md`. Kinds: `crosslink-kinds.md`.
8
+
9
+ ## Load-bearing invariant: advisory, never blocking
10
+
11
+ You cannot control another team's repo — its wiki version, scan freshness, or
12
+ whether it adopted crosslink. So **every** failure mode (missing repo, no wiki,
13
+ old schema, drift, breaking change) degrades to a *warning + reduced context*,
14
+ never a gate. Cross-repo output is always labeled "hints, not verified".
15
+
16
+ ## Hard boundary: read foreign WIKI only, never foreign SOURCE, never WRITE
17
+
18
+ The entire foreign footprint is read-only on a handful of the linked repo's
19
+ files, resolved from its `repo_path` (repo root):
20
+
21
+ - `<repo_path>/wiki/crosslink/**` — per-point tag files (the surface)
22
+ - `<repo_path>/wiki/orc-reference-api-surface.md` — coarse fallback for v1 repos
23
+ - `<repo_path>/.claude/orc/wiki-meta.json` — its freshness manifest + provider registry
24
+ - `<repo_path>/.claude/orc-crosslink.config.yaml` — bulk-add peek only
25
+ - read-only git queries in `<repo_path>` (`git rev-list --count`, `git diff
26
+ --name-only`) — wiki tiers are commit-distance computed, not mtime-derivable
27
+
28
+ Never read the linked repo's *source*, never write anything in it. The only
29
+ writes are inside THIS repo: `.claude/orc/crosslink/needs.json`,
30
+ `.claude/orc/crosslink/cache/**`, and this repo's own `wiki/crosslink/**`.
31
+
32
+ **Exactly TWO sanctioned exceptions to never-write-foreign — both file writes
33
+ only, NEVER a commit, NEVER a push, never any other peer path:**
34
+
35
+ 1. **The orc-poly handoff plan** — orc-poly writes each peer repo's plan file
36
+ into that repo at its Phase 5 (the orc-poly skill owns that rule).
37
+ 2. **The ATLAS + the CLAUDE.md pointer block (v0.33.0)** — after generating the
38
+ local atlas, the session writes the SAME `wiki/crosslink/atlas.md` into each
39
+ linked repo, and `/orc-wiki crosslink compile` additionally updates each
40
+ linked repo's CLAUDE.md pointer block (in-place block update, user content
41
+ byte-preserved). Any peer-write failure (missing path, permissions, repo
42
+ gone) WARNS and continues — advisory, never blocking.
43
+
44
+ Everything else in a peer stays untouchable, and even these two never run
45
+ `git add`/`git commit`/`git push` in the peer.
46
+
47
+ ## Two surfaces, one direction rule
48
+
49
+ - **Provided (inbound)** — what a repo exposes (gRPC handlers, routers). Read by
50
+ whoever *calls* it.
51
+ - **Consumed (outbound)** — what a repo reaches for (its client calls). Its edges.
52
+
53
+ Direction decides **which side runs drift: you only drift-check what you
54
+ consume.** An edge `from: self to: z via: grpc` means self consumes z → watch z's
55
+ tags. `from: fe to: self via: api-client` means self is the provider → no drift
56
+ on our side (we publish; they watch us).
57
+
58
+ ## The config (CLI-composed, skill-read)
59
+
60
+ `.claude/orc-crosslink.config.yaml` is written ONLY by the `orc crosslink` CLI
61
+ (the DIY pattern — human configs live directly under `.claude/`). orc-wiki only
62
+ READS it. Nodes + a directed edge list; `self` is node 1:
63
+
64
+ ```yaml
65
+ version: 1
66
+ self: service-x-be
67
+ nodes:
68
+ - name: service-z-be
69
+ repo_path: ../service-z # repo ROOT — wiki/, wiki-meta, config, .git derive from it
70
+ kinds: [grpc, repository]
71
+ links:
72
+ - from: service-x-be to: service-z-be via: grpc # we consume z
73
+ ```
74
+
75
+ `links` is an edge list (not `linked_to` per node) because one pair can have
76
+ edges in both directions/kinds (x→z gRPC AND z→x webhook).
77
+
78
+ ---
79
+
80
+ ## Provider emission (this repo publishes its surface — ALWAYS ON, per scan-task)
81
+
82
+ Publish is **not** a Phase-3 add-on and has **no enable switch** (v0.24.0). It is
83
+ a per-scan-task byproduct of reading the code, the same pattern registration
84
+ follows — so it can never be skipped by a run that pauses (every 5 tasks, by
85
+ design) or by an incremental refresh with no drift.
86
+
87
+ Each scan agent, having already read the area's files to write the `Contracts &
88
+ shapes` rows, returns a REQUIRED `crosslink_tags` field alongside its `doc_body`
89
+ (schemas/wiki-doc.md): either **one tag body per OUTWARD boundary point** it
90
+ found (routes, gRPC handlers, produced events — pulled from source, NOT from the
91
+ doc prose, which is what kills the "thin docs starve the publish" failure), or
92
+ the token **`none` + a one-line reason**. A return missing `crosslink_tags`
93
+ entirely is MALFORMED → requeue.
94
+
95
+ The orchestrator then, in the SAME pass:
96
+
97
+ 1. Writes the doc to `wiki/` AND each tag to `wiki/crosslink/<kind>/<slug>.md`
98
+ (schema §1; slug rule is Windows-safe + reversible).
99
+ 2. Runs `orc wiki sync` — derives `wiki-meta.json`'s `crosslink_provided` array
100
+ from the tag files just written (schema §2). This registry — NOT
101
+ `wiki/INDEX.md` or `docs` — is where tags live, so the human index and
102
+ `pages` count stay clean. Never hand-maintain the array. Sync's boundary
103
+ detector flags a documented boundary with zero tags (`--check` exit 1).
104
+ 3. Traces the scan-task's `DISPATCH`/`VERIFY` with a `tags:N` (or `tags:none`)
105
+ count so the boundary is visibly accumulating.
106
+
107
+ So the boundary accumulates from the FIRST scan-task, however the run ends — a
108
+ paused run has a live partial boundary matching its live partial docs.
109
+ `crosslink_tags: none` is an auditable claim, never silence; a zero-tag
110
+ completion additionally states "crosslink: no outward boundary ({reason})" in
111
+ the final report.
112
+
113
+ ## Preservation — replace per-point, never bulk-delete
114
+
115
+ A refresh (including full regenerate) NEVER clears `wiki/crosslink/` first; each
116
+ tag is overwritten per-point as its owning area re-scans. A tag whose boundary
117
+ genuinely disappeared is retired ONLY by the **dead-tag sweep** (staleness.md,
118
+ beside the dead-doc sweep): a tag whose `anchor` file no longer exists, or whose
119
+ re-scanned area returned `crosslink_tags` without it → offer archive/delete per
120
+ tag, never silent, never automatic. A whole-surface vanish trips the `orc wiki
121
+ sync` N→0 tripwire (loud warning + `--check` exit 1) — a regenerate can no
122
+ longer wipe the boundary the way it once did.
123
+
124
+ ## Legacy backfill — `/orc-wiki crosslink` (CROSSLINK-ONLY, SKILL.md Phase 3c)
125
+
126
+ For wikis whose docs predate v0.24.0 (docs exist, `wiki/crosslink/` absent), the
127
+ boundary is already on disk in the evidence-anchored `Contracts & shapes` rows,
128
+ so recovering it needs no repo scan: read the rows, open ONLY the files they
129
+ anchor, emit the tags, `orc wiki sync` to index. On a ≥v0.24.0 wiki, missing
130
+ tags are NOT a backfill case — the sync boundary guard fired and names the fix.
131
+ **Never answer "no crosslink tags" with a re-scan.** When the rows are genuinely
132
+ too thin to tag, SAY so and recommend an incremental refresh of just those areas
133
+ (an honest cost, stated as such) — the one case where a refresh IS the answer.
134
+
135
+ ---
136
+
137
+ ## Consumer discovery (this repo resolves what it needs — Phase 3 add-on)
138
+
139
+ Also at scan/refresh, when `orc-crosslink.config.yaml` exists:
140
+
141
+ 1. Read the config → linked nodes + `repo_path`s + edges.
142
+ 2. Walk THIS repo's code; at each call site whose shape matches an edge's
143
+ `via: <kind>` toward a linked node, resolve that node's tag file at
144
+ `<repo_path>/wiki/crosslink/<kind>/<slug>.md`.
145
+ 3. Record the dependency in `.claude/orc/crosslink/needs.json` (schema §3) — the
146
+ drift baseline. The human never hand-lists tags; discovery fills them.
147
+ 4. Sync a snapshot into `.claude/orc/crosslink/cache/<node>/…` (schema §4),
148
+ stamped `synced_at` + provider `content_hash` + provider tier +
149
+ provider `scan_commit`.
150
+ 5. Compute drift on everything already in `needs.json` (below) → **warn only**.
151
+
152
+ Discovery runs only the **consume** side of edges. Provider-only edges
153
+ (`from: fe to: self`) create no needs here.
154
+
155
+ **So every report is direction-scoped.** A linked repo's tags/freshness matter
156
+ ONLY on edges where we CALL them. On an inbound-only edge we read nothing from
157
+ that repo, so "no crosslink tags" there is both irrelevant and unfixable — a
158
+ pure consumer (a frontend `api-client`) has no API of its own and will never
159
+ grow tags. `orc crosslink list`/`status` therefore report inbound-only nodes as
160
+ "inbound only (they call us)" and never send anyone to publish a boundary that
161
+ legitimately does not exist. **The graph is drawn in the CONSUMER**: the repo
162
+ that calls is the one that needs the config, the edge, and the resolved cache.
163
+
164
+ ---
165
+
166
+ ## ATLAS — the federation super-context (`wiki/crosslink/atlas.md`, v0.33.0)
167
+
168
+ ONE federation-scoped document, present in EACH linked repo at
169
+ `wiki/crosslink/atlas.md`. Content is **repo-agnostic** — the same document
170
+ serves every node — with a header recording `generated_from` (which repo built
171
+ it), the `generated` timestamp, and per-peer peek freshness. Sections:
172
+
173
+ - **Federation map** — every known node + the `links[]` edges (including
174
+ TRANSITIVE nodes learned from peer atlases), with relation kinds. This is how
175
+ a repo discovers a repo it never linked directly.
176
+ - **Per-node profile** — what each repo provides, what it needs/consumes from
177
+ whom (from boundary rows + peer atlas), and **peek hints**: which of that
178
+ repo's wiki docs answer which questions (so a consumer peeks ONE doc, not a
179
+ wiki).
180
+ - **Freshness ledger** — per-peek age. Freshness on READ =
181
+ `min(own wiki tier, oldest peek age)` — computed on read, NEVER stored as a
182
+ status (the constellation-wide rule).
183
+
184
+ **Generation + propagation (the sanctioned write — exception #2 above):**
185
+
186
+ - Generated at: the end of every orc-wiki scan/refresh (Phase 3, and the delta
187
+ refresh's derived-regenerate step); during CROSSLINK resolve in build lanes
188
+ when the atlas is missing/stale (a cheap regenerate from `needs.json` +
189
+ `cache/` — never a scan); and by `/orc-wiki crosslink compile`.
190
+ - After writing the LOCAL atlas, the session writes the SAME file into each
191
+ linked repo's `wiki/crosslink/atlas.md` (repo paths from the config's
192
+ `links[]`/nodes). File write ONLY — never commit, never push, never any
193
+ other peer path. Any peer-write failure WARNS and continues.
194
+ - **Newest-wins on read:** if a peer session regenerated its copy later, the
195
+ local consumer trusts the newer `generated` timestamp when peeking.
196
+ - `orc wiki sync` treats `atlas.md` as a DERIVED crosslink artifact — never an
197
+ unregistered doc, never counted in `pages`, never bulk-deleted by a refresh
198
+ (same preservation rule as the tags).
199
+
200
+ **Consumption:** the `wiki-consult.md` CROSSLINK step reads the atlas FIRST,
201
+ then makes targeted peer-wiki peeks the atlas' peek hints point at. orc-poly's
202
+ context gathering reads it, and its slug resolution lists transitive nodes
203
+ discovered via the atlas (paste-a-path fallback unchanged).
204
+
205
+ ---
206
+
207
+ ## Freshness — two orthogonal signals, computed on read
208
+
209
+ A cross-ref is trustworthy only if BOTH hold; the weakest link governs.
210
+ `effective = min(Signal-A, Signal-B)`.
211
+
212
+ - **Signal A — provider wiki tier.** Does the provider's wiki match its code?
213
+ Computed by staleness.md's existing rule — **git commit distance**
214
+ (`git rev-list --count <scan_commit>..HEAD` run read-only in `<repo_path>`),
215
+ NOT days. Use the standard default edges (`wiki_fresh_max` 10 / `wiki_aging_max`
216
+ 30); do NOT read the provider's `orc.config.yaml` for custom thresholds (their
217
+ tuning is their business; defaults keep the compute self-contained). When the
218
+ provider isn't checked out or git fails there, fall back to `source_tier`
219
+ stamped in the cache at sync time, labeled "as of last sync".
220
+ - **Signal B — snapshot age.** How long since we synced? This is the ONLY
221
+ day-based tier in the constellation (there is no shared commit axis between two
222
+ repos): `days = today − synced_at`, compared against `crosslink_fresh_days`
223
+ (default 10) and `crosslink_aging_days` (default 15). ≤ fresh → FRESH,
224
+ ≤ aging → AGING, else STALE.
225
+
226
+ Never store the effective tier — the cache stamp is a fallback INPUT, the tier is
227
+ always recomputed on read. Inject the linked surface labeled with `effective` +
228
+ precedence rank.
229
+
230
+ ## Drift (per-point, warn only)
231
+
232
+ Per-point tags → per-endpoint drift. Compare cached `source_content_hash` vs the
233
+ provider's current tag `content_hash`:
234
+
235
+ - changed → **contract drifted** → warn ("`grpc:billing.v1.CreateInvoice` changed
236
+ under you since last sync")
237
+ - tag file gone → **breaking change** (a tag in `needs.json`) → **warn only**
238
+ (never blocks — advisory invariant)
239
+ - unchanged → clean
240
+
241
+ Topology-drift bonus (free): if `needs.json`/config says we consume z over a
242
+ kind but z's own `orc-crosslink.config.yaml` declares no matching provider edge,
243
+ note it — warn only.
244
+
245
+ ## Degradation ladder (every rung continues)
246
+
247
+ | Provider state | What you get | Warn |
248
+ |---|---|---|
249
+ | v2 wiki + crosslink tags | per-point tags → precise drift | — |
250
+ | v2 wiki, boundary documented but tags unpublished (legacy pre-v0.24.0, or a fired sync guard) | api-surface prose → coarse hints, no per-point drift | "boundary documented, tags unpublished — `orc wiki sync --check` there names it; `/orc-wiki crosslink` backfills from the docs, no re-scan" |
251
+ | v2 wiki, no boundary at all | nothing to resolve (they expose no API) | — (valid; not a fixable gap) |
252
+ | v1 wiki | api-surface only → coarse hints, no per-point drift | "older schema — coarse" |
253
+ | wiki UNREGISTERED (docs, no manifest) | edge inert until registered — **but nothing needs scanning** | "run `orc wiki sync` there — instant, no re-scan" |
254
+ | manifest CORRUPT (unparseable) | edge inert until rebuilt | "run `orc wiki sync` there to rebuild it" |
255
+ | no wiki | edge inert until provider scanned | "run `/orc-wiki` there" |
256
+ | path missing | pending edge, resolves when path appears | "path not found — pending" |
257
+
258
+ Never collapse UNREGISTERED into "no wiki": a repo whose docs are complete but
259
+ unindexed looks identical to an unscanned one from the manifest alone, and
260
+ telling that team to scan sends them to re-buy a wiki they already own. `orc
261
+ crosslink` distinguishes the two by looking for docs under `<repo_path>/wiki/`
262
+ before it concludes anything from a missing manifest.
263
+
264
+ Version skew is expected: a crosslink to a v1/tagless repo gets richer for free
265
+ the day that repo re-scans with crosslink. No cross-team coordination needed.
266
+
267
+ ## Run-time injection (how the lanes benefit)
268
+
269
+ orc / orc-fast / orc-mini inject the linked surface into a task's slice ONLY when
270
+ that task touches a boundary — same mechanism as the `pattern` slice. The
271
+ orchestrator reads `.claude/orc/crosslink/needs.json`, and for a task whose
272
+ declared files include a call site with a matching need, prepends the cached tag
273
+ contract (from `crosslink/cache/`) to the slice, labeled with `effective` tier +
274
+ "cross-repo hints, not verified". No executor return contract changes — crosslink
275
+ is advisory, so there is nothing to attest. A task with no boundary gets nothing.
276
+
277
+ ## Precedence
278
+
279
+ ```
280
+ local code > local fresh wiki > cross-repo fresh wiki (hints)
281
+ > cross-repo stale wiki (weak hints) > model priors
282
+ ```
283
+
284
+ Cross-repo can never outrank local hints — we cannot verify foreign code.
@@ -0,0 +1,79 @@
1
+ # Routing a scan-task off Claude — the two POSITIONS
2
+
3
+ Load this at the scan phase, once, when `extra_enabled` is true. Canonical
4
+ cross-lane prose: `../../_shared/extra-dispatch.md`.
5
+
6
+ ## The row was DEAD until v0.55.0
7
+
8
+ `/orc-wiki` was declared as routing foreign and asked for a role named `scanner`
9
+ in `config.extra_roles` — a spelling that key **refuses by name**, alongside
10
+ `wiki-scanner`, which it also does not have. So the lane could never route
11
+ however it was configured, and `orc extra lanes` printed
12
+ `/orc-wiki → claude` forever with a reason that read like a user's choice.
13
+
14
+ It is a **POSITION** now, not a role name and not a band. Two of them, one per
15
+ tier:
16
+
17
+ | slot | the Claude agent it displaces |
18
+ |---|---|
19
+ | `wiki-scanner-deep` | `orc-wiki-scanner-opus-4-8-high` |
20
+ | `wiki-scanner-light` | `orc-wiki-scanner-sonnet-5-high` |
21
+
22
+ Both collapse onto `orc-wiki-scanner-opus-5-med` while `opus5_only` is on, which
23
+ is why this adds **no agent and no pair**. Two slots and one Opus 5 agent is not
24
+ a contradiction: a slot names the POSITION, not the model.
25
+
26
+ ```
27
+ orc extra role set wiki-scanner-light ds/deepseek-chat
28
+ orc extra resolve --slot wiki-scanner-light --json # 0 = extra · 1 = claude
29
+ ```
30
+
31
+ **No row on a slot means Claude, and that is an answer rather than a gap.**
32
+
33
+ ## The tier is picked first, and its target is printed with it
34
+
35
+ Resolve the tier (`wiki_scan_tier`, `references/partial-refresh.md`), then ask
36
+ the resolver for **that tier's** slot. The resolved tier already prints; now
37
+ print its target on the same block — a cheaper model is never a quiet
38
+ substitution, and neither is a different company's:
39
+
40
+ ```
41
+ scan-task 3/7 tier LIGHT (small delta, no new surface)
42
+ -> deepseek/deepseek-chat via `ds` (displaces orc-wiki-scanner-sonnet-5-high)
43
+ ```
44
+
45
+ `orc wiki plan` names every scan-task that would run off Claude **before any of
46
+ it is paid for**, and **free repairs still come first**: sync → orientation →
47
+ crosslink backfill → and only then a paid refresh. A free repair is never
48
+ skipped because a cheap model is available.
49
+
50
+ ## Dispatch, validate, recover
51
+
52
+ ```
53
+ orc extra dispatch --task <slice.json> --json
54
+ ```
55
+
56
+ The slice carries `slot: "wiki-scanner-deep"` or `"wiki-scanner-light"` and
57
+ **no `score`** — this lane has none, and both fields together is refused by
58
+ name. Everything else about the slice is identical to what the pinned Claude
59
+ scanner would receive, including **the kind catalog**
60
+ (`references/crosslink-kinds.md`): an agent never shown it invents synonym kinds,
61
+ which are permanent duplicates, and that is true of a foreign agent too.
62
+
63
+ Validate the return with `../../_shared/return-validation.md` **§2b, not §2** — a
64
+ foreign worker reports no `actual_model` and that must never be faked. What it
65
+ says it read is a CLAIM: the doc body it returns is still anchored, and an
66
+ unanchored claim is still omitted rather than guessed.
67
+
68
+ On a failure, run **`orc extra reconcile <task_id>` FIRST** — free, zero tokens,
69
+ and it is what stops the fallback from re-doing work the worktree already
70
+ contains. Then `extra_on_failure` decides: `fallback` re-dispatches to **that
71
+ tier's pinned Claude agent, by name**, announced, and the scan continues;
72
+ `stop` stops.
73
+
74
+ ## What never routes
75
+
76
+ `orc wiki sync` **never** routes foreign. Registration is 100% derived from doc
77
+ headers by the CLI — there is no model in it to replace. The same is true of
78
+ `orc wiki plan`, the delta probe, `orc wiki status` and the crosslink registry
79
+ walk: they compute, they do not produce.
@@ -0,0 +1,86 @@
1
+ # Reference — Scan-End Integrity Self-Check (anti-drift gate)
2
+
3
+ Runs at the END of every scan/refresh (full, incremental, selective), AFTER
4
+ all docs are written and AFTER the closing `orc wiki sync` — it VALIDATES the
5
+ derived registration rather than racing it. The orchestrator runs it itself —
6
+ it is checklist work (file existence + cross-referencing), not scanning, so it
7
+ needs no agent. Any failed item is FIXED before the run is declared done; if a
8
+ fix needs a re-scan, that re-scan rides the current run's consent (no new
9
+ warning).
10
+
11
+ When logging is on, emit ONE trace line per item:
12
+ `WIKI-CHECK <item> ✅ PASS` or `WIKI-CHECK <item> ⛔ FAIL <what>` — and after
13
+ fixes a final `WIKI-CHECK all ✅`.
14
+
15
+ ## Items 1, 2, 5 and 7 — now structural
16
+
17
+ index-sync, registry-sync, counts-match and crosslink-sync used to compare four
18
+ hand-maintained artifacts against each other. Since `orc wiki sync` DERIVES
19
+ `wiki/INDEX.md` and `.claude/orc/wiki-meta.json` — the `docs` registry with each
20
+ doc's `covers` + `covered_files`, the `pages` count, and the
21
+ `crosslink_provided` index of `wiki/crosslink/` — from the one source those
22
+ artifacts were supposed to agree with (the doc headers), they cannot disagree
23
+ unless registration was never run. So the four collapse into one command:
24
+
25
+ ```bash
26
+ orc wiki sync --check # exit 0 = registration matches the docs on disk
27
+ ```
28
+
29
+ Exit 0 → emit `WIKI-CHECK registration ✅ PASS`. Non-zero → sync was skipped or
30
+ a doc changed after it; run `orc wiki sync` and re-check. Never fix these by
31
+ hand-editing INDEX.md or the manifest: that re-creates the very drift the
32
+ derivation removes. Only the manifest's `commands` key is hand-maintained, and
33
+ only per staleness.md.
34
+
35
+ ## The checklist
36
+
37
+ 1. **covers-resolve** — every doc's `covers` globs match ≥ 1 real file. Zero
38
+ matches → route into the dead-doc sweep (staleness.md), never leave a dead
39
+ doc indexed as live.
40
+ 2. **coverage-report** — union of all docs' `covers` vs the repo's source
41
+ tree: print coverage % and the top uncovered directories. Informational
42
+ (feeds the coverage-gap sweep) — uncovered dirs are REPORTED with a
43
+ proposed-area suggestion, never auto-scanned.
44
+ 3. **claudemd-match** — the CLAUDE.md pointer block's doc count + "Last
45
+ updated" match the manifest. (The manifest's own `pages` is derived, so it
46
+ cannot drift; the pointer block is hand-injected, so it can.)
47
+ 4. **schema-upgrade-note** — list docs whose headers are still v1 (no
48
+ `wiki_schema: 2`: no `keywords`, a single `covered_hash` instead of per-file
49
+ `covered_files`). Derivation keeps them usable and indexed, so this is a
50
+ NOTE for lazy upgrade on the next refresh, never a failure — the one thing
51
+ the derived registration can't tell you, since a v1 entry looks merely
52
+ sparse rather than wrong.
53
+ 5. **anchor-spot-check** — for each doc written THIS run, pick 2 evidence
54
+ anchors from its contract sections and confirm the cited files exist
55
+ (existence only — cheap). A missing file = the agent cited something it
56
+ didn't read → re-queue that doc's scan.
57
+ 6. **crosslink-anchors** (UNCONDITIONAL as of v0.24.0 — this is the guard that
58
+ catches "boundary exists but no tags", the exact silent-zero the old
59
+ "only when this repo published a boundary this run" clause allowed). Trigger:
60
+ if ANY doc written this run reported boundaries (`crosslink_tags` ≠ `none`)
61
+ OR carries a non-empty `## Contracts & shapes` table, then `wiki/crosslink/`
62
+ MUST exist and every reported tag must be on disk AND registered in
63
+ `crosslink_provided` — else FAIL and fix before the run is declared done (the
64
+ fix is publishing the tags, NOT a re-scan). Each `crosslink_provided` entry's
65
+ `anchor` file must also exist (an anchor pointing at a deleted file is real
66
+ drift no derivation can see). A ZERO-tag completion is allowed ONLY when the
67
+ final report carries the explicit line
68
+ "crosslink: no outward boundary ({reason})" — a bare zero-tag finish FAILS.
69
+ Emit `WIKI-CHECK crosslink …` when logging. Consume-side needs/cache stay
70
+ advisory and are NOT gated (a stale cache warns, never fails).
71
+ 7. **orientation-check** (v0.33.0) — `wiki/orc-orientation.md` exists (it is a
72
+ derived assemble-step output, so a scan/refresh that ends without one
73
+ skipped a step), every `Reading order` pointer resolves to a REGISTERED doc,
74
+ and one spot-checked `Journeys` anchor's file exists. Neighbors section
75
+ present only when crosslink cache/atlas exists; otherwise the explicit
76
+ "no outward crosslink configured" line. A failed item is fixed by
77
+ re-deriving the orientation doc (free) — never a re-scan.
78
+
79
+ ## Why it exists
80
+
81
+ A wiki that disagrees with itself cannot be a source of truth. Deriving the
82
+ index and manifest from the docs removes one whole class of that disagreement
83
+ by construction; this gate covers what derivation cannot see — claims pointing
84
+ at files that don't exist, docs covering nothing, and the hand-injected
85
+ CLAUDE.md block — so internal consistency is a shipped property of every run,
86
+ not a hope.
@@ -0,0 +1,51 @@
1
+ # Reference — The Orientation & Journey Doc (`wiki/orc-orientation.md`, v0.33.0)
2
+
3
+ The wiki's front door: how a fresh session (or a human) self-orients in this
4
+ repo in one read. **DERIVED at Phase 3 (assemble) from the already-written
5
+ docs + the architecture overview — never a new scan area**, so it costs one
6
+ assemble-time write. Consumers read it FIRST (`wiki-consult.md`), then dive
7
+ into the docs it points at.
8
+
9
+ ## Sections (in order)
10
+
11
+ 1. **`Repo identity`** — what the repo is, the stack, the entry points — each
12
+ claim anchored to a real file (evidence-anchored v2 rule applies here as
13
+ everywhere: unanchored = omitted, never guessed).
14
+ 2. **`Reading order`** — ordered pointers into the other wiki docs, one line
15
+ of WHY per hop ("start at orc-architecture-overview for the map → then
16
+ orc-feature-orders because most requests land there → …").
17
+ 3. **`Journeys`** — 2–4 traced end-to-end flows (a request in, a job run, a
18
+ deploy), each step anchored `file:line`. A journey step that cannot be
19
+ anchored to a file a scan actually covered is OMITTED, never guessed.
20
+ 4. **`Neighbors`** *(conditional)* — present ONLY when crosslink is configured
21
+ AND the resolved cache / ATLAS exists: one paragraph per linked repo (what
22
+ it provides us, what we consume from it), sourced from
23
+ `.claude/orc/crosslink/cache/` + `wiki/crosslink/atlas.md`. No crosslink →
24
+ the section is omitted with the explicit style line
25
+ `Neighbors: none — no outward crosslink configured.` (never silent).
26
+
27
+ ## Rules
28
+
29
+ - **Registered like any doc:** standard wiki-doc header (schemas/wiki-doc.md —
30
+ `doc_type: reference`, `area: orientation`) → `orc wiki sync` registers it;
31
+ freshness computed on read, existing tiers, NO new config keys. `covers` lists the entry-point
32
+ source files its Repo identity anchors — **plus every source file the docs it
33
+ summarizes cover** (the union of their `covers`). Its CONTENT derives from
34
+ those docs, so anchoring staleness only to `src/app.js` + `package.json` let
35
+ it read CLEAN in the same impact table where three docs it points at were
36
+ TOUCHED, while its Journeys described a handler that had changed. This is the
37
+ doc every consuming lane reads FIRST, so it is the highest-leverage stale doc
38
+ in the wiki — it needs a machine backstop, not only an obligation.
39
+ - **`derived_from` (v0.34.5):** the header also records
40
+ `derived_from: {<doc file>: <content_hash>}` for every doc it summarizes. A
41
+ hash that no longer matches means orientation is stale even when no source
42
+ file moved (e.g. a doc was rewritten from the same code) — the Phase 3
43
+ integrity check reads it.
44
+ - **Regenerated (free, derived) whenever any doc it points to is refreshed** —
45
+ including the delta refresh (staleness.md mode 1) and after an atlas
46
+ regeneration. Regeneration is an assemble step, never a scan.
47
+ - **Consumption:** `wiki-consult.md` reads orientation FIRST, then dives into
48
+ the referenced docs. orc-learn's topic picker may offer the Journeys as
49
+ learnable topics.
50
+ - **Integrity:** the Phase 3 self-check verifies the Reading-order pointers
51
+ resolve to registered docs and spot-checks one Journey anchor.