@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,291 @@
1
+ "use strict";
2
+ /* fixtures/knowledge.js — canned data for `orc ui --fixtures`.
3
+ Wiki status, plan, debt, usage, impact, patterns and gotchas — carrying a
4
+ STALE tier, a STRUCTURAL blind spot and a `used 0/20` row on purpose.
5
+
6
+ THE RULE FOR EVERY FILE IN HERE: carry ONE OF EVERY STATE, including the
7
+ ugly ones. You cannot DESIGN a STALE chip on a fresh wiki, and a state
8
+ with no fixture is a state nobody has ever looked at. A per-state count
9
+ test asserts this, so a new state cannot ship without one.
10
+
11
+ Shapes MUST match what `bin/cli.js --json` really emits — a drifted
12
+ fixture is worse than no fixture. */
13
+
14
+ const { PROJECT } = require("./shell.js");
15
+
16
+ const wiki = {
17
+ state: "registered",
18
+ docs: 14,
19
+ tier: "STALE",
20
+ distance: 47,
21
+ anchor: "9f2c41ab8de0",
22
+ last_scan: "2026-05-02",
23
+ reasons: ["worst doc orc-feature-billing.md is 47 commits behind on its own covered files"],
24
+ blind: 2,
25
+ edges: { freshMax: 10, agingMax: 30 },
26
+ crosslink_tags: 6,
27
+ // v0.49.1 — `--json is not a summary`. Everything below was ALREADY printed by
28
+ // the terminal branch and thrown away by `--json`, which is why the panel
29
+ // could not be as detailed as the terminal no matter how it was written.
30
+ counts: { FRESH: 6, AGING: 5, STALE: 2, unknown: 1 },
31
+ // The doc actually pinning the tier, BY NAME. A hash is not a thing anybody
32
+ // can go and refresh.
33
+ worst: { file: "wiki/orc-feature-billing.md", distance: 47, anchor: "9f2c41ab8de0" },
34
+ per_doc: [
35
+ { file: "wiki/orc-orientation.md", title: "Orientation", tier: "FRESH", distance: 2, anchor: "aa11bb22", scanned_commit: "aa11bb22", doc_type: "reference", covers: ["README.md"], covered_files: 1, crosslink_tags: 0, used: 20, used_of: 20, last_used: "2026-08-10", retire_hint: false },
36
+ { file: "wiki/orc-feature-billing.md", title: "Billing", tier: "STALE", distance: 47, anchor: "9f2c41ab", scanned_commit: "9f2c41ab", doc_type: "feature", covers: ["src/billing/"], covered_files: 23, crosslink_tags: 4, used: 12, used_of: 20, last_used: "2026-08-09", retire_hint: false },
37
+ { file: "wiki/orc-feature-auth.md", title: "Auth", tier: "AGING", distance: 22, anchor: "3c4d5e6f", scanned_commit: "3c4d5e6f", doc_type: "feature", covers: ["src/auth/"], covered_files: 11, crosslink_tags: 2, used: 6, used_of: 20, last_used: "2026-08-01", retire_hint: false },
38
+ // Zero-use KEEPS ITS SLOT with a retire hint, and it is never retired for
39
+ // you. `used: null` on the next row is NOT zero-use — unknown must never be
40
+ // reported as dead.
41
+ { file: "wiki/orc-feature-admin-export.md", title: "Admin export", tier: "AGING", distance: 18, anchor: "7a8b9c0d", scanned_commit: "7a8b9c0d", doc_type: "feature", covers: ["src/admin/"], covered_files: 4, crosslink_tags: 0, used: 0, used_of: 20, last_used: null, retire_hint: true },
42
+ { file: "wiki/orc-reference-http.md", title: "HTTP surface", tier: "unknown", distance: null, anchor: null, scanned_commit: null, doc_type: "reference", covers: [], covered_files: 0, crosslink_tags: 0, used: null, used_of: null, last_used: null, retire_hint: false },
43
+ ],
44
+ // THE FILES, not the number `2`. A count tells a user nothing they can act on.
45
+ blind_spot: ["src/notifications/dispatcher.ts", "src/notifications/templates.ts"],
46
+ orientation: { present: true, file: "wiki/orc-orientation.md", scanned_commit: "aa11bb22" },
47
+ crosslink: { provided: 6, boundary_rows: 9, state: "PUBLISHED" },
48
+ free_repairs: [
49
+ { id: "crosslink", cost: "free", cmd: "/orc-wiki crosslink", what: "publish boundary tags from already-anchored doc rows" },
50
+ ],
51
+ };
52
+
53
+ /* `orc wiki docs --json`. The order is the CLI's — THE PANEL NEVER INVENTS A
54
+ RANK. Every ugly state is here on purpose: a STALE doc, an unmeasurable one,
55
+ a zero-use retire candidate, and a doc with no crosslink tags. */
56
+ const wikiDocs = {
57
+ ok: true,
58
+ state: "registered",
59
+ tier: "STALE",
60
+ edges: { freshMax: 10, agingMax: 30 },
61
+ docs: wiki.per_doc,
62
+ counts: wiki.counts,
63
+ worst: wiki.worst,
64
+ free_repairs: wiki.free_repairs,
65
+ };
66
+
67
+ /* One doc, with and without its body. `--body` is opt-in: prose is returned only
68
+ on an explicit request, exactly one artifact at a time. */
69
+ const wikiShow = {
70
+ ok: true,
71
+ doc: "wiki/orc-feature-billing.md",
72
+ path: PROJECT + "/wiki/orc-feature-billing.md",
73
+ ...wiki.per_doc[1],
74
+ tags: [
75
+ { tag: "http:POST /v1/invoices", kind: "http", anchor: "src/billing/invoice.ts:88" },
76
+ { tag: "events:invoice.settled", kind: "events", anchor: "src/billing/emit.ts:14" },
77
+ ],
78
+ free_repairs: [],
79
+ body: "---\nwiki_schema: 2\ndoc_type: feature\n---\n\n# Billing\n\n## TL;DR\n\n- Invoices are created, taxed, then settled by the worker.\n\n## Contracts & shapes\n\n| Surface | Shape |\n|---|---|\n| `POST /v1/invoices` | `{ merchant_id, lines[] }` |\n",
80
+ };
81
+
82
+ /* `orc wiki coverage --json`. A REPORT and never a gate: no threshold, no config
83
+ key, nothing branches on it. The uncovered set is collapsed to DIRECTORIES and
84
+ ranked by file count, because "240 files, all in vendor/" and "12 files, all
85
+ in src/payments/" are opposite situations. */
86
+ const wikiCoverage = {
87
+ ok: true,
88
+ tracked: 412,
89
+ covered: 251,
90
+ uncovered: 161,
91
+ coverage_pct: 61,
92
+ docs: 14,
93
+ uncovered_dirs: [
94
+ { dir: "vendor/stripe-sdk", files: 118, newest_commit: "a1b2c3d 2026-02-11", sample: ["vendor/stripe-sdk/index.js"] },
95
+ { dir: "src/notifications", files: 22, newest_commit: "9f2c41a 2026-08-08", sample: ["src/notifications/dispatcher.ts", "src/notifications/templates.ts"] },
96
+ { dir: "scripts", files: 13, newest_commit: "77aa11b 2026-06-30", sample: ["scripts/seed.js"] },
97
+ { dir: "src/admin/legacy", files: 8, newest_commit: "0c0c0c0 2025-11-04", sample: ["src/admin/legacy/report.ts"] },
98
+ ],
99
+ honesty: "coverage is a report, not a target — there is no threshold and nothing branches on it",
100
+ };
101
+
102
+ /* A FULLY-COVERED repo, so 100% is designable too — and a wiki that is not
103
+ registered at all, which is the state `orc doctor` now warns about. */
104
+ const wikiCoverageFull = { ...wikiCoverage, covered: 412, uncovered: 0, coverage_pct: 100, uncovered_dirs: [] };
105
+ const wikiUnregistered = { state: "unregistered", docs: 9, tier: null, distance: null, anchor: null, last_scan: null, reasons: [], blind: 0, edges: { freshMax: 10, agingMax: 30 } };
106
+
107
+ /* `orc pattern show --json`. TWO of them: one with a real header, and one with
108
+ NO header at all — which says so in one line and NEVER derives a date from the
109
+ file's mtime. */
110
+ const patternShow = {
111
+ react: {
112
+ ok: true,
113
+ lang: "react",
114
+ path: PROJECT + "/.claude/orc/patterns/react-pattern.md",
115
+ headered: true,
116
+ codified_at: "09-08-2026",
117
+ source_commit: "9f2c41ab8de0",
118
+ playbook: "react",
119
+ headings: ["Component shape", "State", "Data fetching", "Testing", "CONVENTIONS the project already keeps", "INVARIANTS that are kept regardless"],
120
+ conventions: 14,
121
+ invariants: 6,
122
+ conflicts: [
123
+ "CONFLICT — the project puts hooks in the component file; the playbook wants them in hooks/. Project wins.",
124
+ "CONFLICT — the project disables the exhaustive-deps lint rule; the invariant keeps it, because a stale closure is a correctness bug.",
125
+ ],
126
+ bytes: 9140,
127
+ lines: 212,
128
+ mtime_ms: Date.now() - 2 * 24 * 60 * 60 * 1000,
129
+ body: "# React — project pattern\n\n## Component shape\n\nFunction components, named export, props typed inline.\n",
130
+ },
131
+ express: {
132
+ ok: true,
133
+ lang: "express",
134
+ path: PROJECT + "/.claude/orc/patterns/express-pattern.md",
135
+ headered: false,
136
+ codified_at: null,
137
+ source_commit: null,
138
+ playbook: null,
139
+ headings: ["Routing", "Error handling", "Testing"],
140
+ conventions: 8,
141
+ invariants: 4,
142
+ conflicts: [],
143
+ bytes: 4210,
144
+ lines: 96,
145
+ mtime_ms: Date.now() - 61 * 24 * 60 * 60 * 1000,
146
+ header_note: "this pattern file carries no parseable header — reported as it is on disk; a codified-at date is never derived from the file's mtime",
147
+ body: "# Express — project pattern\n\n## Routing\n\nOne router per resource.\n",
148
+ },
149
+ };
150
+
151
+ /* The archive, and the prune PREVIEW. A COUNT IS NOT CONSENT, so the preview
152
+ NAMES every entry it would move. */
153
+ const gotchasArchived = {
154
+ ok: true,
155
+ file: PROJECT + "/.claude/orc/gotchas-archive.md",
156
+ archived: true,
157
+ count: 2,
158
+ gotchas: [
159
+ { id: "G-000", area: "build", kind: "repair", hits: 1, last_seen: "02-01-2026", trigger: "the old webpack config needed a polyfill for crypto", fields: {} },
160
+ { id: "G-004", area: "react", kind: "drift", hits: 0, last_seen: "11-03-2026", trigger: "class components had to be wrapped for the router", fields: {} },
161
+ ],
162
+ };
163
+
164
+ const gotchaPrunePreview = {
165
+ ok: true,
166
+ dry_run: true,
167
+ file: PROJECT + "/.claude/orc/gotchas.md",
168
+ count: 3,
169
+ gotchas_max: 2,
170
+ would_archive: [
171
+ { id: "G-003", area: "build", kind: "verify", hits: 0, last_seen: "14-06-2026", trigger: "`npm run build` needs NODE_OPTIONS=--max-old-space-size=4096 on CI", why: "rank 1 of the low-value tail — 0 hit(s), last seen 14-06-2026" },
172
+ ],
173
+ archive: PROJECT + "/.claude/orc/gotchas-archive.md",
174
+ honesty: "eviction is an ARCHIVE, never a delete — a gotcha that stopped being true is yours to remove",
175
+ };
176
+
177
+ const wikiPlan = {
178
+ ok: true,
179
+ registered: 14,
180
+ pending: 4,
181
+ deep: 2,
182
+ light: 2,
183
+ usage_window: 20,
184
+ usage_runs_scanned: 20,
185
+ estimate: { tokens: { input: 21000, cache_write: 96000, cache_read: 168000, output: 50000 }, usd: 0.94, weighted: 133800 },
186
+ estimate_unavailable: null,
187
+ freshness: { tier: "FRESH", distance: 6, edges: { freshMax: 10, agingMax: 30 } },
188
+ scan_tier_mode: "ladder",
189
+ free_repairs: [
190
+ { id: "orientation", cost: "free", cmd: "/orc-wiki refresh wiki/orc-orientation.md", what: "regenerate the derived orientation doc (read first by every consumer)" },
191
+ ],
192
+ rows: [
193
+ { doc: "wiki/orc-feature-refunds.md", state: "STRUCTURAL", delta: 0, delta_files: [], gone: ["api/refunds/window.ts"], used: 17, used_of: 20, last_used: "2026-08-10", tier: "deep", agent: "orc-wiki-scanner-opus-4-8-high", tier_rule: "structural", tier_why: "STRUCTURAL — a covered file is gone; a targeted refresh cannot re-anchor blind", new_surface: false, estimate: { p50: { input: 8000, cache_write: 40000, cache_read: 69000, output: 21000 }, p90: { input: 11000, cache_write: 58000, cache_read: 99000, output: 30000 }, samples: 7 }, usd: 0.42, retire_hint: false },
194
+ { doc: "wiki/orc-feature-payments.md", state: "TOUCHED", delta: 6, delta_files: ["src/payments/ledger.ts", "src/payments/idempotency.ts"], gone: [], used: 14, used_of: 20, last_used: "2026-08-09", tier: "deep", agent: "orc-wiki-scanner-opus-4-8-high", tier_rule: "wide-delta", tier_why: "covered files touched >= wiki_tier_deep_files", new_surface: false, estimate: { p50: { input: 7000, cache_write: 36000, cache_read: 62000, output: 19000 }, p90: { input: 10000, cache_write: 51000, cache_read: 88000, output: 27000 }, samples: 7 }, usd: 0.38, retire_hint: false },
195
+ { doc: "wiki/orc-reference-config.md", state: "TOUCHED", delta: 1, delta_files: ["src/config/index.ts"], gone: [], used: 2, used_of: 20, last_used: "2026-07-25", tier: "light", agent: "orc-wiki-scanner-sonnet-5-high", tier_rule: "small-delta", tier_why: "small delta, no new surface", new_surface: false, estimate: { p50: { input: 3000, cache_write: 11000, cache_read: 17000, output: 4000 }, p90: { input: 4000, cache_write: 16000, cache_read: 25000, output: 6000 }, samples: 4 }, usd: 0.06, retire_hint: false },
196
+ // The zero-use retire candidate. It KEEPS ITS SLOT and renders muted with a
197
+ // hint — filtering it out would make "unused" and "does not exist" identical.
198
+ { doc: "wiki/orc-feature-admin-export.md", state: "TOUCHED", delta: 3, delta_files: ["src/admin/export.ts"], gone: [], used: 0, used_of: 20, last_used: null, tier: "light", agent: "orc-wiki-scanner-sonnet-5-high", tier_rule: "small-delta", tier_why: "small delta, no new surface", new_surface: false, estimate: { p50: { input: 3000, cache_write: 9000, cache_read: 20000, output: 6000 }, p90: { input: 4000, cache_write: 13000, cache_read: 29000, output: 9000 }, samples: 4 }, usd: 0.08, retire_hint: true },
199
+ ],
200
+ };
201
+
202
+ const wikiDebt = {
203
+ ok: true,
204
+ project: "shopcart",
205
+ pending: 4,
206
+ deep: 2,
207
+ tokens: { input: 21000, cache_write: 96000, cache_read: 168000, output: 50000 },
208
+ usd: 0.94,
209
+ oldest_commits_behind: 11,
210
+ tier: "FRESH",
211
+ edges: { freshMax: 10, agingMax: 30 },
212
+ docs: [
213
+ { doc: "wiki/orc-feature-refunds.md", state: "STRUCTURAL", tier: "deep", used: 17 },
214
+ { doc: "wiki/orc-feature-payments.md", state: "TOUCHED", tier: "deep", used: 14 },
215
+ { doc: "wiki/orc-reference-config.md", state: "TOUCHED", tier: "light", used: 2 },
216
+ { doc: "wiki/orc-feature-admin-export.md", state: "TOUCHED", tier: "light", used: 0 },
217
+ ],
218
+ };
219
+
220
+ const wikiUsage = {
221
+ ok: true,
222
+ file: PROJECT + "/.claude/orc/wiki-usage.json",
223
+ window_runs: 20,
224
+ runs_scanned: 20,
225
+ rebuilt_at: "10-08-2026 09:41:02",
226
+ registered: 14,
227
+ in_active_use: 8,
228
+ never_used: 2,
229
+ rows: [
230
+ { doc: "wiki/orc-orientation.md", used: 20, of: 20, last_used: "2026-08-10" },
231
+ { doc: "wiki/orc-feature-refunds.md", used: 17, of: 20, last_used: "2026-08-10" },
232
+ { doc: "wiki/orc-feature-payments.md", used: 14, of: 20, last_used: "2026-08-09" },
233
+ { doc: "wiki/orc-reference-http.md", used: 9, of: 20, last_used: "2026-08-06" },
234
+ { doc: "wiki/orc-reference-config.md", used: 2, of: 20, last_used: "2026-07-25" },
235
+ { doc: "wiki/orc-feature-admin-export.md", used: 0, of: 20, last_used: null },
236
+ { doc: "wiki/orc-reference-legacy-cron.md", used: 0, of: 20, last_used: null },
237
+ ],
238
+ };
239
+
240
+ const patterns = {
241
+ lang: null,
242
+ cached: true,
243
+ unknown_language: false,
244
+ patterns_dir: PROJECT + "/.claude/orc/patterns",
245
+ patterns: [
246
+ { lang: "react", path: PROJECT + "/.claude/orc/patterns/react-pattern.md", mtime_ms: Date.now() - 2 * 24 * 60 * 60 * 1000 },
247
+ { lang: "express", path: PROJECT + "/.claude/orc/patterns/express-pattern.md", mtime_ms: Date.now() - 61 * 24 * 60 * 60 * 1000 },
248
+ ],
249
+ known_languages: ["react", "vue", "express", "nestjs", "django", "rails", "spring", "dotnet"],
250
+ };
251
+
252
+ const gotchas = {
253
+ file: PROJECT + "/.claude/orc/gotchas.md",
254
+ count: 3,
255
+ // v0.49.1: the cap is what makes the count mean anything, and only `prune`
256
+ // used to print it — so "11 of 40" was not renderable from this payload.
257
+ gotchas_max: 40,
258
+ archive: PROJECT + "/.claude/orc/gotchas-archive.md",
259
+ // `fields` was ALWAYS emitted and the panel rendered six columns and threw the
260
+ // rest away. Symptom, fix and why are the half a person actually needs.
261
+ gotchas: [
262
+ { id: "G-001", area: "express", kind: "repair", hits: 7, last_seen: "05-08-2026", trigger: "Jest suite hangs unless the server handle is closed in afterAll", fields: { trigger: "Jest suite hangs unless the server handle is closed in afterAll", symptom: "`npm test` never exits; CI times out at 10 minutes", fix: "close the http server in afterAll and await it", why: "supertest keeps the listener open, and Jest waits for the handle", first_seen: "14-05-2026", hits: "7", last_seen: "05-08-2026" } },
263
+ { id: "G-002", area: "react", kind: "review", hits: 2, last_seen: "22-07-2026", trigger: "Date pickers must use the tz-aware helper, never new Date(string)", fields: { trigger: "Date pickers must use the tz-aware helper, never new Date(string)", symptom: "bookings land one day early for users west of UTC", fix: "use parseInZone from src/time/zone.ts", why: "new Date(string) parses as UTC and then renders local", first_seen: "02-06-2026", hits: "2", last_seen: "22-07-2026" } },
264
+ { id: "G-003", area: "build", kind: "verify", hits: 0, last_seen: "14-06-2026", trigger: "`npm run build` needs NODE_OPTIONS=--max-old-space-size=4096 on CI", fields: { trigger: "`npm run build` needs NODE_OPTIONS=--max-old-space-size=4096 on CI", symptom: "the CI build is OOM-killed with no error line", fix: "set NODE_OPTIONS in the workflow, not in package.json", why: "the runner has less memory than a dev laptop", first_seen: "14-06-2026", hits: "0", last_seen: "14-06-2026" } },
265
+ ],
266
+ };
267
+
268
+ // STALE, so the Flow panel's gated state is designable.
269
+
270
+ const wikiImpact = {
271
+ ok: true,
272
+ scan_commit: "9f2c41ab8de0aa17",
273
+ changed_files: 61,
274
+ docs: [
275
+ { file: "wiki/orc-feature-billing.md", state: "TOUCHED", hits: ["src/billing/invoice.ts", "src/billing/tax.ts"], gone: [] },
276
+ { file: "wiki/orc-feature-auth.md", state: "STRUCTURAL", hits: [], gone: ["src/auth/legacy-session.ts"] },
277
+ { file: "wiki/orc-reference-http.md", state: "CLEAN", hits: [], gone: [] },
278
+ { file: "wiki/orc-architecture-overview.md", state: "CLEAN", hits: [], gone: [] },
279
+ ],
280
+ blind_spot: ["src/notifications/dispatcher.ts", "src/notifications/templates.ts"],
281
+ registered: 14,
282
+ touched: 1,
283
+ structural: 1,
284
+ affected_pct: 14,
285
+ threshold: 30,
286
+ freshness: { tier: "STALE", distance: 47, aging_max: 30 },
287
+ recommendation: "FULL",
288
+ reasons: ["STRUCTURAL change (gone anchors / blind spot)", "worst doc 47 commits behind on its own covered files > wiki_aging_max 30"],
289
+ };
290
+
291
+ module.exports = { wiki, wikiDocs, wikiShow, wikiCoverage, wikiCoverageFull, wikiUnregistered, wikiPlan, wikiDebt, wikiUsage, patterns, patternShow, gotchas, gotchasArchived, gotchaPrunePreview, wikiImpact };
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /* fixtures/maintenance.js — canned data for `orc ui --fixtures`.
3
+ The export state and the mocked-example listing.
4
+
5
+ THE RULE FOR EVERY FILE IN HERE: carry ONE OF EVERY STATE, including the
6
+ ugly ones. You cannot DESIGN a STALE chip on a fresh wiki, and a state
7
+ with no fixture is a state nobody has ever looked at. A per-state count
8
+ test asserts this, so a new state cannot ship without one.
9
+
10
+ Shapes MUST match what `bin/cli.js --json` really emits — a drifted
11
+ fixture is worse than no fixture. */
12
+
13
+ const { PROJECT } = require("./shell.js");
14
+
15
+ const exportState = {
16
+ ok: false,
17
+ out: PROJECT + "/AGENTS.md",
18
+ exists: true,
19
+ source_commit: "c273793aa1b4",
20
+ sources: 17,
21
+ drifted: ["PACT.md", "wiki/orc-feature-payments.md", ".claude/orc/patterns/ts-pattern.md"],
22
+ removed: [],
23
+ stale: true,
24
+ };
25
+
26
+ /* ============================================================ v0.47.0 ====== */
27
+ /* /orc-challenge. ONE OF EVERY STATE, including the ugly ones — you cannot
28
+ design a TAMPERED chip on a healthy cycle, a MISSING-REVISION candidate list
29
+ on a cycle whose revision is right where it should be, or a `NOT-CHECKED`
30
+ dimension chip on a cycle that has a template. test/webui.test.js asserts one
31
+ fixture per state, so a new state cannot ship without one. */
32
+
33
+ const mocks = {
34
+ root: PROJECT + "/mock-examples",
35
+ total: 2,
36
+ mocks: [
37
+ { slug: "merchant-notifications", dir: PROJECT + "/mock-examples/merchant-notifications", mtime_ms: Date.now() - 40 * 60 * 1000, has_readme: true },
38
+ { slug: "invoice-pdf-export", dir: PROJECT + "/mock-examples/invoice-pdf-export", mtime_ms: Date.now() - 5 * 24 * 60 * 60 * 1000, has_readme: false },
39
+ ],
40
+ };
41
+
42
+ module.exports = { exportState, mocks };
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ /* fixtures/mockrun.js — canned data for `orc ui --fixtures`.
3
+ One rendered walkthrough document.
4
+
5
+ THE RULE FOR EVERY FILE IN HERE: carry ONE OF EVERY STATE, including the
6
+ ugly ones. You cannot DESIGN a STALE chip on a fresh wiki, and a state
7
+ with no fixture is a state nobody has ever looked at. A per-state count
8
+ test asserts this, so a new state cannot ship without one.
9
+
10
+ Shapes MUST match what `bin/cli.js --json` really emits — a drifted
11
+ fixture is worse than no fixture. */
12
+
13
+ const { PROJECT } = require("./shell.js");
14
+
15
+ const mockDetail = {
16
+ root: PROJECT + "/mock-examples",
17
+ slug: "merchant-notifications",
18
+ found: true,
19
+ dir: PROJECT + "/mock-examples/merchant-notifications",
20
+ mtime_ms: Date.now() - 40 * 60 * 1000,
21
+ readme:
22
+ "# Mocked example — merchant notifications\n\n" +
23
+ "A runnable slice of the change with the payment gateway stubbed out.\n\n" +
24
+ "## Run it\n\n```\nnode run.js\n```\n\n" +
25
+ "## What is mocked\n\n- the gateway webhook signature check\n- the SMTP transport (writes to `out/`)\n",
26
+ readme_path: PROJECT + "/mock-examples/merchant-notifications/EXAMPLE.md",
27
+ files: [
28
+ { path: "EXAMPLE.md", size: 412 },
29
+ { path: "run.js", size: 1830 },
30
+ { path: "fixtures/webhook.json", size: 604 },
31
+ { path: "mocks/gateway.js", size: 921 },
32
+ ],
33
+ truncated: false,
34
+ };
35
+
36
+ module.exports = { mockDetail };
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ /* fixtures/pact.js — canned data for `orc ui --fixtures`.
3
+ The invariant ledger, carrying one of each state — BROKEN, DRIFTED,
4
+ UNCHECKABLE, HOLDING.
5
+
6
+ THE RULE FOR EVERY FILE IN HERE: carry ONE OF EVERY STATE, including the
7
+ ugly ones. You cannot DESIGN a STALE chip on a fresh wiki, and a state
8
+ with no fixture is a state nobody has ever looked at. A per-state count
9
+ test asserts this, so a new state cannot ship without one.
10
+
11
+ Shapes MUST match what `bin/cli.js --json` really emits — a drifted
12
+ fixture is worse than no fixture. */
13
+
14
+ const { PROJECT } = require("./shell.js");
15
+
16
+ const pact = {
17
+ ok: true,
18
+ ledger: PROJECT + "/.claude/orc/pact/ledger.json",
19
+ doc: PROJECT + "/PACT.md",
20
+ doc_exists: true,
21
+ entries: 5,
22
+ retired: 1,
23
+ counts: { HOLDING: 2, DRIFTED: 1, UNCHECKABLE: 1, BROKEN: 1 },
24
+ line: "pact: 2 holding · 1 drifted · 1 uncheckable · 1 BROKEN",
25
+ rows: [
26
+ {
27
+ id: "PACT-014",
28
+ statement: "A payment is never written to the ledger twice for one idempotency key.",
29
+ origin: { lane: "orc-grill", run: "run-grill-checkout-100826-141130", kind: "constraint" },
30
+ anchors: ["src/payments/ledger.ts:88", "src/payments/idempotency.ts"],
31
+ check: { kind: "test", ref: "npm test -- idempotency" },
32
+ verified_commit: "8a62b4f1c9",
33
+ confidence: "high",
34
+ last_check: { status: "fail", commit: "8a62b4f1c9", at: "09-08-2026 11:20:04", ref: "npm test -- idempotency" },
35
+ // A real-looking failure, not a placeholder: the panel has to lay out a
36
+ // multi-line check output that does not fit its card.
37
+ history: [
38
+ { at: "09-08-2026 11:20:04", status: "fail", commit: "8a62b4f1c9" },
39
+ { at: "02-08-2026 09:14:51", status: "pass", commit: "c273793aa1" },
40
+ ],
41
+ retired: false,
42
+ state: "BROKEN",
43
+ why: "check failed at 8a62b4f1 (09-08-2026 11:20:04)",
44
+ distance: 3,
45
+ },
46
+ {
47
+ id: "PACT-002",
48
+ statement: "Refund windows are configured, never hardcoded.",
49
+ origin: { lane: "orc-brainstorm", run: "run-brainstorm-refunds-010826-101010", kind: "constraint" },
50
+ anchors: ["src/billing/refund.ts"],
51
+ check: { kind: "grep", ref: "REFUND_WINDOW_DAYS" },
52
+ verified_commit: "c273793aa1",
53
+ confidence: "medium",
54
+ last_check: { status: "pass", commit: "c273793aa1", at: "01-08-2026 10:11:02", ref: "REFUND_WINDOW_DAYS" },
55
+ history: [{ at: "01-08-2026 10:11:02", status: "pass", commit: "c273793aa1" }],
56
+ retired: false,
57
+ state: "DRIFTED",
58
+ why: "6 commits since c273793a touched 1 anchored file",
59
+ distance: 6,
60
+ },
61
+ {
62
+ id: "PACT-007",
63
+ statement: "The admin export never contains a raw email address.",
64
+ origin: { lane: "user", run: null, kind: "constraint" },
65
+ anchors: ["src/admin/export.ts"],
66
+ check: { kind: "manual", ref: null },
67
+ verified_commit: "783f6971aa",
68
+ confidence: "low",
69
+ last_check: null,
70
+ history: [],
71
+ retired: false,
72
+ state: "UNCHECKABLE",
73
+ // The long day count: an UNCHECKABLE promise nobody has looked at for
74
+ // months is the case this state exists to make visible.
75
+ why: "no cheap check exists — this promise is held by review, not by a runner",
76
+ distance: null,
77
+ },
78
+ {
79
+ id: "PACT-001",
80
+ statement: "Every outbound webhook is signed with the tenant's current secret.",
81
+ origin: { lane: "orc", run: "run-orc-webhooks-120726-084500", kind: "constraint" },
82
+ anchors: ["src/webhooks/sign.ts:40"],
83
+ check: { kind: "command", ref: "npm run test:webhooks" },
84
+ verified_commit: "e9dad01bb2",
85
+ confidence: "high",
86
+ last_check: { status: "pass", commit: "e9dad01bb2", at: "05-08-2026 16:02:11", ref: "npm run test:webhooks" },
87
+ history: [{ at: "05-08-2026 16:02:11", status: "pass", commit: "e9dad01bb2" }],
88
+ retired: false,
89
+ state: "HOLDING",
90
+ why: "verified at e9dad01b; no commit since has touched its anchors",
91
+ distance: 0,
92
+ },
93
+ {
94
+ id: "PACT-009",
95
+ statement: "Session cookies are always SameSite=Lax.",
96
+ origin: { lane: "orc-grill", run: "run-grill-auth-200626-113000", kind: "constraint" },
97
+ anchors: ["src/auth/session.ts"],
98
+ check: { kind: "grep", ref: "SameSite=Lax" },
99
+ verified_commit: "cc4778e0aa",
100
+ confidence: "high",
101
+ last_check: { status: "pass", commit: "cc4778e0aa", at: "21-06-2026 09:00:00", ref: "SameSite=Lax" },
102
+ history: [{ at: "21-06-2026 09:00:00", status: "pass", commit: "cc4778e0aa" }],
103
+ retired: false,
104
+ state: "HOLDING",
105
+ why: "verified at cc4778e0; no commit since has touched its anchors",
106
+ distance: 0,
107
+ },
108
+ ],
109
+ };
110
+
111
+ module.exports = { pact };
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /* fixtures/runs.js — canned data for `orc ui --fixtures`.
3
+ A run list with a `waiting` card, run detail, and aftermath grades including
4
+ TOO_RECENT (which keeps its slot — it is an answer, not a gap).
5
+
6
+ THE RULE FOR EVERY FILE IN HERE: carry ONE OF EVERY STATE, including the
7
+ ugly ones. You cannot DESIGN a STALE chip on a fresh wiki, and a state
8
+ with no fixture is a state nobody has ever looked at. A per-state count
9
+ test asserts this, so a new state cannot ship without one.
10
+
11
+ Shapes MUST match what `bin/cli.js --json` really emits — a drifted
12
+ fixture is worse than no fixture. */
13
+
14
+ const { PROJECT } = require("./shell.js");
15
+
16
+ const runs = {
17
+ run_dir: PROJECT + "/.claude/orc/run",
18
+ total: 8,
19
+ shown: 8,
20
+ runs: [
21
+ { slug: "merchant-notifications", status: "waiting", lane: "/orc", phase: "execution", wave: "wave 2 of 4", updated_ms: Date.now() - 40 * 60 * 1000, closed: null },
22
+ { slug: "refund-webhook-retry", status: "waiting", lane: "/orc-mini", phase: "review", wave: "", updated_ms: Date.now() - 26 * 60 * 60 * 1000, closed: null },
23
+ // The state that BROKE the Overview card (v0.49.2): a slug long enough to
24
+ // wrap, in a column that was 88px wide. You cannot design a collision you
25
+ // cannot look at.
26
+ { slug: "remittance-recipient-tsd-v2-170826", status: "waiting", lane: "/orc-doc", phase: "write", wave: "wave 1 of 3", updated_ms: Date.now() - 4 * 60 * 60 * 1000, closed: null },
27
+ { slug: "payout-ledger-backfill", status: "waiting", lane: "/orc", phase: "review", wave: "wave 3 of 3", updated_ms: Date.now() - 9 * 24 * 60 * 60 * 1000, closed: null },
28
+ // CLOSED — a human said they were finished with it, and the reason rides
29
+ // along forever.
30
+ {
31
+ slug: "legacy-import-spike",
32
+ status: "closed",
33
+ lane: "/orc-mini",
34
+ phase: "planning",
35
+ wave: "",
36
+ updated_ms: Date.now() - 21 * 24 * 60 * 60 * 1000,
37
+ closed: { at: "02-08-2026 11:40:12", reason: "spike answered the question; no build wanted", resume_file: "RESUME.closed.md" },
38
+ },
39
+ { slug: "settings-page-a11y", status: "done", lane: "/orc-quick", phase: "", wave: "", updated_ms: Date.now() - 3 * 60 * 60 * 1000, closed: null },
40
+ { slug: "invoice-pdf-export", status: "done", lane: "/orc-ultra", phase: "", wave: "", updated_ms: Date.now() - 5 * 24 * 60 * 60 * 1000, closed: null },
41
+ { slug: "abandoned-spike", status: "empty", lane: "", phase: "", wave: "", updated_ms: Date.now() - 11 * 24 * 60 * 60 * 1000, closed: null },
42
+ ],
43
+ };
44
+
45
+ const runDetail = {
46
+ slug: "merchant-notifications",
47
+ dir: PROJECT + "/.claude/orc/run/merchant-notifications",
48
+ status: "waiting",
49
+ updated_ms: Date.now() - 40 * 60 * 1000,
50
+ stands: { lane: "/orc", phase: "execution", wave: "wave 2 of 4" },
51
+ resume:
52
+ "# RESUME — merchant-notifications\n\n" +
53
+ "Where it stands: /orc · phase execution · wave 2 of 4\n\n" +
54
+ "Paste this into a fresh Claude Code session to pick the run back up:\n\n" +
55
+ "> Resume the ORC run `merchant-notifications`. Read\n" +
56
+ "> `.claude/orc/run/merchant-notifications/checkpoint.json` and continue from wave 3.\n",
57
+ state_of_play:
58
+ "# State of play\n\n" +
59
+ "Waves 1-2 done (6 tasks). Wave 3 holds the notification templates and is\n" +
60
+ "blocked on the frozen copy deck. Smoke gate GREEN at the wave-2 boundary.\n",
61
+ checkpoint: { phase: "execution", wave: 2, updated_at: "2026-08-08T10:14:02Z", trace_path: ".claude/orc/logs/run-orc-merchant-notifications-080826-094501.txt" },
62
+ files: ["RESUME.md", "checkpoint.json", "state-of-play.md"],
63
+ closed: null,
64
+ };
65
+
66
+ // The other side of the same detail route: a run somebody closed. The panel
67
+ // shows Reopen here, and the reason it was closed with.
68
+ const runDetailClosed = {
69
+ slug: "legacy-import-spike",
70
+ dir: PROJECT + "/.claude/orc/run/legacy-import-spike",
71
+ status: "closed",
72
+ updated_ms: Date.now() - 21 * 24 * 60 * 60 * 1000,
73
+ stands: { lane: "/orc-mini", phase: "planning", wave: "" },
74
+ resume:
75
+ "# RESUME — legacy-import-spike\n\n" +
76
+ "Where it stands: /orc-mini · phase planning\n",
77
+ state_of_play: null,
78
+ checkpoint: null,
79
+ files: ["RESUME.closed.md", "closed.json"],
80
+ closed: { at: "02-08-2026 11:40:12", reason: "spike answered the question; no build wanted", resume_file: "RESUME.closed.md" },
81
+ };
82
+
83
+ const aftermath = {
84
+ ok: true,
85
+ window_days: 30,
86
+ log_dir: PROJECT + "/.claude/orc/logs",
87
+ counts: { HELD: 1, CHURN: 1, REVERTED: 1, TOO_RECENT: 1 },
88
+ runs: [
89
+ {
90
+ slug: "store-credit",
91
+ lane: "orc",
92
+ age_days: 18,
93
+ commits: 3,
94
+ files: 9,
95
+ grade: "CHURN",
96
+ strength: 2,
97
+ signals: [
98
+ { kind: "churn", strength: 2, detail: "3 shipped files rewritten within 30 days", files: ["src/payments/ledger.ts", "src/payments/credit.ts", "src/api/refunds.ts"] },
99
+ { kind: "promise-broken", strength: 3, detail: "1 promise anchored in this change is BROKEN", ids: ["PACT-014"] },
100
+ ],
101
+ note: "signals, not a verdict: why a file changed again is not knowable from git.",
102
+ },
103
+ { slug: "admin-export", lane: "orc", age_days: 24, commits: 2, files: 4, grade: "HELD", strength: 0, signals: [], note: "no churn signal in the window. That is not proof it worked — only that nothing came back." },
104
+ { slug: "webhook-retry", lane: "mini", age_days: 12, commits: 1, files: 2, grade: "REVERTED", strength: 3, signals: [{ kind: "revert", strength: 3, detail: 'a1b2c3d Revert "webhook retry backoff"' }], note: "signals, not a verdict: why a file changed again is not knowable from git." },
105
+ { slug: "copy-tweak", lane: "mini", age_days: 2, grade: "TOO_RECENT", strength: 0, signals: [], note: "younger than 7 days — too recent to grade. That is an answer, not a gap." },
106
+ ],
107
+ };
108
+
109
+ module.exports = { runs, runDetail, runDetailClosed, aftermath };