repo-harness 0.24.2 → 0.25.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 (577) hide show
  1. package/AGENTS.md +11 -38
  2. package/CLAUDE.md +11 -37
  3. package/README.md +101 -57
  4. package/SKILL.md +4 -3
  5. package/agents/fleet/deep-worker.md +2 -2
  6. package/agents/fleet/fast-worker.md +2 -2
  7. package/agents/fleet/gatekeeper.md +2 -0
  8. package/agents/fleet/known-gaps.md +29 -0
  9. package/agents/fleet/orchestrator.md +35 -0
  10. package/assets/AGENTS.md +4 -5
  11. package/assets/CLAUDE.md +4 -5
  12. package/assets/herdr/webhook-notify/herdr-plugin.toml +1 -1
  13. package/assets/herdr/webhook-notify/notify.mjs +59 -4
  14. package/assets/herdr/webhook-notify/pane-status.mjs +1 -1
  15. package/assets/reference-configs/agentic-development-flow.md +42 -22
  16. package/assets/reference-configs/design-options.md +11 -15
  17. package/assets/reference-configs/document-generation.md +10 -11
  18. package/assets/reference-configs/evaluator-rubric.md +1 -1
  19. package/assets/reference-configs/external-tooling.md +72 -12
  20. package/assets/reference-configs/global-working-rules.md +14 -4
  21. package/assets/reference-configs/harness-overview.md +98 -278
  22. package/assets/reference-configs/herdr-notify.md +19 -11
  23. package/assets/reference-configs/herdr-skill-context.md +61 -0
  24. package/assets/reference-configs/host-invariants.md +30 -2
  25. package/assets/skill-commands/manifest.json +99 -28
  26. package/assets/skill-commands/repo-harness-architecture/references/worker.md +13 -4
  27. package/assets/skill-commands/repo-harness-check/references/architecture-evidence.md +8 -0
  28. package/assets/skill-commands/repo-harness-check/references/create.md +5 -5
  29. package/assets/skill-commands/repo-harness-check/references/pr-verification.md +1 -7
  30. package/assets/skill-commands/repo-harness-ship/references/worker.md +45 -1
  31. package/assets/skill-version.json +2 -2
  32. package/assets/skills/repo-harness-archimap/SKILL.md +121 -0
  33. package/assets/skills/repo-harness-archimap/assets/template.html +241 -0
  34. package/assets/skills/repo-harness-archimap/references/boards.md +105 -0
  35. package/assets/skills/repo-harness-archimap/references/visual-language.md +99 -0
  36. package/assets/skills/repo-harness-archimap/scripts/measure.ts +484 -0
  37. package/assets/skills/repo-harness-chatgpt/references/bridge.md +28 -64
  38. package/assets/skills/repo-harness-chatgpt/references/continue.md +1 -1
  39. package/assets/skills/repo-harness-chatgpt/references/delegate.md +5 -5
  40. package/assets/skills/repo-harness-cross-review/references/generic-review.md +5 -2
  41. package/assets/skills/repo-harness-herdr-portal/references/spawn.md +7 -0
  42. package/assets/skills/repo-harness-issue-flow/SKILL.md +119 -0
  43. package/assets/skills/repo-harness-issue-flow/references/acceptor.md +133 -0
  44. package/assets/skills/repo-harness-issue-flow/references/board.md +240 -0
  45. package/assets/skills/repo-harness-issue-flow/references/orchestrator.md +265 -0
  46. package/assets/skills/repo-harness-issue-flow/references/templates.md +368 -0
  47. package/assets/skills/repo-harness-issue-flow/references/worker.md +219 -0
  48. package/assets/skills/repo-harness-product/SKILL.md +2 -2
  49. package/assets/skills/repo-harness-product/references/goal.md +7 -7
  50. package/assets/skills/repo-harness-product/references/prd.md +5 -7
  51. package/assets/skills/repo-harness-setup/references/init.md +0 -1
  52. package/assets/skills/repo-harness-setup/references/repair.md +1 -1
  53. package/assets/skills/repo-harness-test/references/authoring.md +1 -1
  54. package/assets/skills/repo-harness-test/references/refactor-evidence.md +1 -1
  55. package/assets/skills/repo-harness-test/references/running.md +1 -1
  56. package/assets/skills/repo-harness-test/references/verification-plan.md +3 -16
  57. package/assets/templates/design-brief.template.md +5 -5
  58. package/assets/templates/helpers/capability-resolver.ts +112 -40
  59. package/assets/templates/prd.template.md +1 -1
  60. package/assets/templates/root-context.md +41 -0
  61. package/assets/templates/runtime.gitignore +0 -8
  62. package/assets/tool-catalog.v1.json +50 -3
  63. package/assets/workflow-contract.v1.json +378 -166
  64. package/cordis.patch.yml +7 -0
  65. package/dist/dsh-plugin.js +399 -0
  66. package/dist/hook-entry.js +1457 -1711
  67. package/dist/oar-review-host.js +67 -28
  68. package/dist/operator-ui/assets/ArchitectureWorkspace-BrUOPtga.js +7 -0
  69. package/dist/operator-ui/assets/ArchitectureWorkspace-CeJeskZg.css +1 -0
  70. package/dist/operator-ui/assets/DocsPage-DV2HZUAM.js +33 -0
  71. package/dist/operator-ui/assets/abnfDiagram-VCTEODGH-Bjvx57sB.js +1 -0
  72. package/dist/operator-ui/assets/arc-Pry-7G1_.js +1 -0
  73. package/dist/operator-ui/assets/architecture-7GRP2DOG-DwBb_elr.js +1 -0
  74. package/dist/operator-ui/assets/architectureDiagram-5GKGNRK7-DI0vCG--.js +36 -0
  75. package/dist/operator-ui/assets/array-BifhSqXX.js +1 -0
  76. package/dist/operator-ui/assets/blockDiagram-I7D4REHJ-BZ_YUsUS.js +129 -0
  77. package/dist/operator-ui/assets/c4Diagram-7LVT6UL2-DH0Jtlli.js +38 -0
  78. package/dist/operator-ui/assets/channel-CM1VQx9C.js +1 -0
  79. package/dist/operator-ui/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  80. package/dist/operator-ui/assets/chunk-4HAMMTFA-tFJtpQE1.js +62 -0
  81. package/dist/operator-ui/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  82. package/dist/operator-ui/assets/chunk-75Z2AOVW-CIdpTPCg.js +2 -0
  83. package/dist/operator-ui/assets/chunk-DU6HZSFF-Bd07S2X4.js +127 -0
  84. package/dist/operator-ui/assets/chunk-F27PBJKO-DWRq64qg.js +1 -0
  85. package/dist/operator-ui/assets/chunk-FOHPRMQF-DzxwRta7.js +161 -0
  86. package/dist/operator-ui/assets/chunk-GMAD6QVW-Dl95AJFc.js +72 -0
  87. package/dist/operator-ui/assets/chunk-GVQU2GXP-C7OXmRjR.js +1 -0
  88. package/dist/operator-ui/assets/chunk-IMKFNOWR-QL5B_aOs.js +231 -0
  89. package/dist/operator-ui/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  90. package/dist/operator-ui/assets/chunk-L3NEJ4N5-ukfpnoE0.js +1 -0
  91. package/dist/operator-ui/assets/chunk-OSK3NFVY-CnHEPnkn.js +10 -0
  92. package/dist/operator-ui/assets/chunk-P2QGCYS3-BpS1hNgD.js +1 -0
  93. package/dist/operator-ui/assets/chunk-POPQ4Y6H-CMPd1nz4.js +1 -0
  94. package/dist/operator-ui/assets/chunk-PWAF6VOD-BX0WsbhE.js +1 -0
  95. package/dist/operator-ui/assets/chunk-SHT3W25Y-BNEtOwXv.js +168 -0
  96. package/dist/operator-ui/assets/chunk-SVP7TREG-Bxc3jiKi.js +88 -0
  97. package/dist/operator-ui/assets/chunk-TICWLB2K-DyFwShYo.js +206 -0
  98. package/dist/operator-ui/assets/chunk-XXDRQBXY-Bd3Sm03O.js +1 -0
  99. package/dist/operator-ui/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  100. package/dist/operator-ui/assets/classDiagram-ZZMXUADV-DbQjXAzM.js +1 -0
  101. package/dist/operator-ui/assets/classDiagram-v2-VYDZK3BY-DbQjXAzM.js +1 -0
  102. package/dist/operator-ui/assets/cose-bilkent-JH36ORCC-DcCrMHTN.js +1 -0
  103. package/dist/operator-ui/assets/cynefin-OW5HDTMX-B2H6A8Am.js +1 -0
  104. package/dist/operator-ui/assets/cynefinDiagram-5FMLGOSQ-nBu7H-dN.js +62 -0
  105. package/dist/operator-ui/assets/cytoscape.esm-ZKjJ8woK.js +321 -0
  106. package/dist/operator-ui/assets/dagre-C-rnJpZF.js +1 -0
  107. package/dist/operator-ui/assets/dagre-GXQ25YYZ-B2in2DwM.js +4 -0
  108. package/dist/operator-ui/assets/defaultLocale-BFoDCU3G.js +1 -0
  109. package/dist/operator-ui/assets/diagram-S7CK7UJ4-CVqDk_Fk.js +30 -0
  110. package/dist/operator-ui/assets/diagram-UQ7AKVKN-Bhe0hBRp.js +41 -0
  111. package/dist/operator-ui/assets/diagram-VSXAHHWV-DCmGVIr0.js +3 -0
  112. package/dist/operator-ui/assets/diagram-VX7I27RA-Bs6Vy86z.js +24 -0
  113. package/dist/operator-ui/assets/diagram-Z3DM3KII-DM7HmIub.js +24 -0
  114. package/dist/operator-ui/assets/dist-v5Q1xZ2K.js +1 -0
  115. package/dist/operator-ui/assets/ebnfDiagram-PWID7BFC-D2y4BOCF.js +1 -0
  116. package/dist/operator-ui/assets/erDiagram-RLTQ6QDP-SM1BNTfU.js +99 -0
  117. package/dist/operator-ui/assets/eventmodeling-NTZA5JFV-BE74fbWW.js +1 -0
  118. package/dist/operator-ui/assets/flowDiagram-HODETNUW-Bv9uAODR.js +1 -0
  119. package/dist/operator-ui/assets/ganttDiagram-EL5Y4UJY-B2P50qAo.js +292 -0
  120. package/dist/operator-ui/assets/gitGraph-4MIJSDKK-CAF_C8Dc.js +1 -0
  121. package/dist/operator-ui/assets/gitGraphDiagram-WWUBYQGX-SInZ4rJX.js +106 -0
  122. package/dist/operator-ui/assets/graphlib-DS17s2tU.js +1 -0
  123. package/dist/operator-ui/assets/index-CPqSvndN.css +2 -0
  124. package/dist/operator-ui/assets/index-f-CSZ52F.js +25 -0
  125. package/dist/operator-ui/assets/info-A6RAGUB7-Bllvf-34.js +1 -0
  126. package/dist/operator-ui/assets/infoDiagram-27XIBGKW-D8NT9zyX.js +2 -0
  127. package/dist/operator-ui/assets/init-C-OQMol4.js +1 -0
  128. package/dist/operator-ui/assets/ishikawaDiagram-5VMMS53U-CE8D2a4x.js +70 -0
  129. package/dist/operator-ui/assets/journeyDiagram-3NMN7TZE-M29lG_I4.js +139 -0
  130. package/dist/operator-ui/assets/kanban-definition-UXKFOSKX-uofpf--r.js +89 -0
  131. package/dist/operator-ui/assets/katex-ZlcWpGUi.js +257 -0
  132. package/dist/operator-ui/assets/line-O2iQnsVY.js +1 -0
  133. package/dist/operator-ui/assets/linear-CFt_L1U_.js +1 -0
  134. package/dist/operator-ui/assets/mermaid-parser.core-Z8f9As5u.js +7 -0
  135. package/dist/operator-ui/assets/mermaid.core-DlT9jDxk.js +44 -0
  136. package/dist/operator-ui/assets/mindmap-definition-YA3MSWOX-DF-U4w3y.js +96 -0
  137. package/dist/operator-ui/assets/ordinal-BDEzSJ7C.js +1 -0
  138. package/dist/operator-ui/assets/packet-AYTQ26CC-BxumXMQA.js +1 -0
  139. package/dist/operator-ui/assets/path-fybaL0A-.js +1 -0
  140. package/dist/operator-ui/assets/pegDiagram-XKGWAZYB-CEfYiEYk.js +1 -0
  141. package/dist/operator-ui/assets/pie-WAS4IAKB-dJWiJit9.js +1 -0
  142. package/dist/operator-ui/assets/pieDiagram-E7YTZNPT-DNUW3YgV.js +39 -0
  143. package/dist/operator-ui/assets/quadrantDiagram-AXDQQJYC-BywHKYmV.js +7 -0
  144. package/dist/operator-ui/assets/radar-RG4KPBEZ-DVXYXIk7.js +1 -0
  145. package/dist/operator-ui/assets/railroad-74A4TZTK-DUlxBsRj.js +1 -0
  146. package/dist/operator-ui/assets/railroad-abnf-HS5TGJTU-DNtifAEn.js +1 -0
  147. package/dist/operator-ui/assets/railroad-ebnf-LZEXJU2U-CYKwwuRu.js +1 -0
  148. package/dist/operator-ui/assets/railroad-peg-WCYAUIDC-DLC4ckY3.js +1 -0
  149. package/dist/operator-ui/assets/railroadDiagram-O6MQD6OU-BK5ZqcXN.js +1 -0
  150. package/dist/operator-ui/assets/requirementDiagram-BXWQKSXE-BPNZxdR4.js +84 -0
  151. package/dist/operator-ui/assets/rolldown-runtime-hePW80VL.js +1 -0
  152. package/dist/operator-ui/assets/rough.esm-Dy-Kn_BL.js +1 -0
  153. package/dist/operator-ui/assets/sankeyDiagram-P5KCCOFB-A3wO6K53.js +40 -0
  154. package/dist/operator-ui/assets/sequenceDiagram-WJ2MYXX4-DZH1qETK.js +162 -0
  155. package/dist/operator-ui/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  156. package/dist/operator-ui/assets/src-B-DeWB10.js +1 -0
  157. package/dist/operator-ui/assets/src-D6_zRfqR.js +1 -0
  158. package/dist/operator-ui/assets/stateDiagram-D77RDMKH-BAxdK688.js +1 -0
  159. package/dist/operator-ui/assets/stateDiagram-v2-MP3YSRHH-0zIAKCg6.js +1 -0
  160. package/dist/operator-ui/assets/swimlanes-42K2YHIH-CZCcKZu8.js +1 -0
  161. package/dist/operator-ui/assets/swimlanesDiagram-VR7AAH4N-Bkz-hKOF.js +8 -0
  162. package/dist/operator-ui/assets/timeline-definition-24CTP7MA-Bj5uQAgY.js +120 -0
  163. package/dist/operator-ui/assets/treeView-Q6P3EWNA-BEmjJl7z.js +1 -0
  164. package/dist/operator-ui/assets/treemap-WGGIJYW6-KNjDwrtc.js +1 -0
  165. package/dist/operator-ui/assets/value-DcGlvoTp.js +1 -0
  166. package/dist/operator-ui/assets/vennDiagram-4TSXK5OY-CQcrg6LI.js +34 -0
  167. package/dist/operator-ui/assets/wardley-WFR3VGLG-DchAOldS.js +1 -0
  168. package/dist/operator-ui/assets/wardleyDiagram-VM6X3IG4-BRXjrmTb.js +78 -0
  169. package/dist/operator-ui/assets/xychartDiagram-S5SC5T6Z-BHTOn-Ft.js +7 -0
  170. package/dist/operator-ui/index.html +4 -3
  171. package/dist/operator-ui/logos/README.md +7 -0
  172. package/dist/operator-ui/logos/repo-harness-carrot-mark-transparent.svg +1 -0
  173. package/dist/operator-ui/mascots/README.md +11 -0
  174. package/dist/operator-ui/mascots/buddy-alert.svg +1 -0
  175. package/dist/operator-ui/mascots/buddy-happy.svg +1 -0
  176. package/dist/operator-ui/mascots/buddy-party.svg +1 -0
  177. package/dist/operator-ui/mascots/buddy-reading.svg +1 -0
  178. package/dist/operator-ui/mascots/buddy-search.svg +1 -0
  179. package/dist/operator-ui/mascots/buddy-sleep.svg +1 -0
  180. package/dist/operator-ui/mascots/buddy-wrench.svg +1 -0
  181. package/dist/operator-ui/mascots/buddy.svg +1 -0
  182. package/dist/operator-ui/mascots/bug.svg +1 -0
  183. package/dist/operator-ui/mascots/cloud-off.svg +1 -0
  184. package/dist/operator-ui/mascots/donkey-bags.svg +1 -0
  185. package/dist/operator-ui/mascots/donkey-happy.svg +1 -0
  186. package/dist/operator-ui/mascots/donkey.svg +1 -0
  187. package/dist/operator-ui/mascots/hook-cap.svg +1 -0
  188. package/dist/operator-ui/mascots/hook-carrot.svg +1 -0
  189. package/dist/operator-ui/mascots/hook.svg +1 -0
  190. package/dist/operator-ui/mascots/terminal.svg +1 -0
  191. package/docs/images/archimap.png +0 -0
  192. package/docs/images/operator-console/bot-paths.png +0 -0
  193. package/docs/images/operator-console/docs-session-states.png +0 -0
  194. package/docs/images/operator-console/ia-sidebar.png +0 -0
  195. package/docs/repo-harness-chatgpt-browser-engine.md +2 -2
  196. package/interfaces/effective-state-v2.ts +1 -0
  197. package/interfaces/types.ts +1 -1
  198. package/package.json +36 -7
  199. package/scripts/AGENTS.md +3 -5
  200. package/scripts/CLAUDE.md +3 -5
  201. package/scripts/capability-config.ts +0 -19
  202. package/scripts/check-agent-tooling.sh +26 -8
  203. package/scripts/check-pi-package-smoke.ts +39 -0
  204. package/scripts/check-state-boundaries.ts +138 -37
  205. package/scripts/check-tarball-install-smoke.sh +20 -15
  206. package/scripts/contract-worktree-runtime.ts +30 -2
  207. package/scripts/contract-worktree.sh +142 -199
  208. package/scripts/create-project-dirs.sh +1 -41
  209. package/scripts/heartbeat-triage.sh +0 -46
  210. package/scripts/init-project.sh +2 -48
  211. package/scripts/inspect-project-state.ts +0 -29
  212. package/scripts/install-agent-fleet.sh +16 -10
  213. package/scripts/lib/ci-run-tests.sh +29 -1
  214. package/scripts/lib/project-init-lib.sh +98 -363
  215. package/scripts/lib/test-home-isolation.mjs +20 -4
  216. package/scripts/maintenance-triage.sh +52 -1
  217. package/scripts/project-test-capabilities.ts +167 -0
  218. package/scripts/recovery-view-cli.ts +3 -5
  219. package/scripts/report-ci.ts +130 -12
  220. package/scripts/run-harness-profile-benchmark.ts +4 -43
  221. package/scripts/run-skill-routing-eval.ts +54 -16
  222. package/scripts/select-ci-coverage.ts +18 -43
  223. package/scripts/ship-worktrees.sh +1 -20
  224. package/scripts/skill-surface-select.ts +2 -0
  225. package/scripts/sync-codex-installed-copies.sh +16 -1
  226. package/scripts/test-file-durations.json +0 -13
  227. package/scripts/workflow-contract.ts +4 -0
  228. package/src/cli/chatgpt-browser/file-policy.ts +14 -9
  229. package/src/cli/commands/adoption-plan.ts +17 -12
  230. package/src/cli/commands/architecture-configuration.ts +21 -20
  231. package/src/cli/commands/architecture-debt.ts +8 -1
  232. package/src/cli/commands/bots.ts +48 -0
  233. package/src/cli/commands/brain-root.ts +9 -8
  234. package/src/cli/commands/brain.ts +7 -146
  235. package/src/cli/commands/candidate-reconciliation.ts +1 -1
  236. package/src/cli/commands/capability-context.ts +0 -2
  237. package/src/cli/commands/doc-sessions.ts +107 -0
  238. package/src/cli/commands/doctor.ts +125 -7
  239. package/src/cli/commands/external-source.ts +1 -9
  240. package/src/cli/commands/fleet.ts +34 -7
  241. package/src/cli/commands/global-runtime.ts +113 -42
  242. package/src/cli/commands/herdr-skill-render.d.mts +1 -0
  243. package/src/cli/commands/herdr-skill-render.mjs +14 -0
  244. package/src/cli/commands/herdr-skill.ts +23 -12
  245. package/src/cli/commands/herdr.ts +5 -1
  246. package/src/cli/commands/init-hook.ts +21 -2
  247. package/src/cli/commands/init.ts +7 -19
  248. package/src/cli/commands/mcp.ts +208 -49
  249. package/src/cli/commands/operator.ts +25 -2
  250. package/src/cli/commands/publication.ts +35 -10
  251. package/src/cli/commands/retention.ts +0 -2
  252. package/src/cli/commands/review.ts +44 -3
  253. package/src/cli/commands/run.ts +1 -14
  254. package/src/cli/commands/setup-snapshot.ts +27 -5
  255. package/src/cli/commands/state.ts +11 -10
  256. package/src/cli/commands/tools.ts +1 -1
  257. package/src/cli/commands/upgrade-registered.ts +271 -0
  258. package/src/cli/commands/upgrade.ts +213 -20
  259. package/src/cli/commands/worktrees.ts +122 -0
  260. package/src/cli/hook/AGENTS.md +5 -6
  261. package/src/cli/hook/CLAUDE.md +5 -6
  262. package/src/cli/hook/agent-notice.ts +88 -12
  263. package/src/cli/hook/bridge-client.ts +128 -0
  264. package/src/cli/hook/event-telemetry.ts +182 -1
  265. package/src/cli/hook/handler-registry.ts +2 -2
  266. package/src/cli/hook/hook-protocol.ts +45 -0
  267. package/src/cli/hook/mutation-bash.ts +109 -28
  268. package/src/cli/hook/mutation-guard.ts +6 -1
  269. package/src/cli/hook/route-registry.ts +13 -5
  270. package/src/cli/hook/runtime.ts +6 -3
  271. package/src/cli/hook/session-context.ts +6 -83
  272. package/src/cli/hook/stop-handler.ts +6 -49
  273. package/src/cli/hook/subagent-context.ts +1 -1
  274. package/src/cli/index.ts +129 -69
  275. package/src/cli/installer/global-context.ts +1 -0
  276. package/src/cli/installer/install-profile.ts +206 -61
  277. package/src/cli/installer/managed-entries.ts +2 -2
  278. package/src/cli/installer/pi-package.ts +90 -0
  279. package/src/cli/installer/shared.ts +1 -1
  280. package/src/cli/installer/skill-projection.ts +7 -5
  281. package/src/cli/installer/uninstall.ts +62 -17
  282. package/src/cli/mcp/audit.ts +42 -0
  283. package/src/cli/mcp/auth.ts +3 -2
  284. package/src/cli/mcp/coding-workspaces.ts +17 -14
  285. package/src/cli/mcp/fleet-tools.ts +108 -12
  286. package/src/cli/mcp/general-repo-access/authority.ts +22 -0
  287. package/src/cli/mcp/general-repo-access.ts +3 -0
  288. package/src/cli/mcp/herdr-tools.ts +267 -0
  289. package/src/cli/mcp/instructions.ts +16 -4
  290. package/src/cli/mcp/oauth.ts +209 -90
  291. package/src/cli/mcp/policy.ts +43 -20
  292. package/src/cli/mcp/repo.ts +1 -1
  293. package/src/cli/mcp/review-publish-tool.ts +106 -0
  294. package/src/cli/mcp/server.ts +38 -26
  295. package/src/cli/mcp/setup-ownership.ts +2 -1
  296. package/src/cli/mcp/setup.ts +81 -65
  297. package/src/cli/mcp/state-tools.ts +20 -49
  298. package/src/cli/mcp/tools.ts +84 -286
  299. package/src/cli/mcp/transports/http.ts +55 -66
  300. package/src/cli/mcp/types.ts +8 -1
  301. package/src/cli/mcp/uninstall.ts +1 -1
  302. package/src/core/architecture/projection.ts +56 -0
  303. package/src/core/capabilities/registry.ts +0 -14
  304. package/src/core/capabilities/resolver.ts +0 -2
  305. package/src/core/decision/pane-status.d.mts +1 -1
  306. package/src/core/decision/pane-status.mjs +1 -1
  307. package/src/core/dev-activity/architecture.ts +24 -0
  308. package/src/core/dev-activity/brief.ts +15 -8
  309. package/src/core/dev-activity/decode.ts +19 -23
  310. package/src/core/dev-activity/projection.ts +24 -8
  311. package/src/core/dev-activity/types.ts +23 -5
  312. package/src/core/engineers/AGENTS.md +4 -6
  313. package/src/core/engineers/CLAUDE.md +4 -6
  314. package/src/core/engineers/scheduling.ts +2 -499
  315. package/src/core/evidence/required-check-evidence.ts +659 -0
  316. package/src/core/evidence/test-execution-evidence.ts +154 -0
  317. package/src/core/evidence/workflow-needs.ts +143 -0
  318. package/src/core/external-sources/binding.ts +0 -173
  319. package/src/core/operator/admitted-task-activity.ts +2 -2
  320. package/src/core/operator/agents-settings.ts +283 -0
  321. package/src/core/operator/architecture-map.ts +867 -0
  322. package/src/core/operator/bot-access.ts +467 -0
  323. package/src/core/operator/doc-citation.ts +105 -0
  324. package/src/core/operator/doc-session-agent-record.ts +26 -0
  325. package/src/core/operator/doc-session-changes.ts +191 -0
  326. package/src/core/operator/doc-session-events.ts +211 -0
  327. package/src/core/operator/doc-session-finalization-view.ts +44 -0
  328. package/src/core/operator/doc-session-finalize.ts +42 -0
  329. package/src/core/operator/doc-session-record.ts +58 -0
  330. package/src/core/operator/doc-session-views.ts +99 -0
  331. package/src/core/operator/docs-host-runtimes.ts +16 -0
  332. package/src/core/operator/docs.ts +139 -0
  333. package/src/core/operator/execution-state.ts +156 -0
  334. package/src/core/operator/fleet-snapshot.ts +4 -0
  335. package/src/core/operator/herdr-pin.ts +13 -0
  336. package/src/core/operator/notify-status.ts +128 -0
  337. package/src/core/operator/public-text.ts +24 -0
  338. package/src/core/operator/pull-request-files.ts +10 -0
  339. package/src/core/operator/runtime-status.ts +44 -78
  340. package/src/core/operator/task-activity.ts +6 -88
  341. package/src/core/operator/tests.ts +298 -0
  342. package/src/core/operator/worktree-cleanup-observation.ts +35 -0
  343. package/src/core/operator/worktree-cleanup-plan.ts +129 -0
  344. package/src/core/operator/worktree-cleanup.ts +86 -0
  345. package/src/core/operator/worktrees.ts +87 -0
  346. package/src/core/publication/acceptance-merge-policy.ts +196 -0
  347. package/src/core/publication/closing-references.ts +96 -0
  348. package/src/core/publication/generated-artifacts.ts +316 -0
  349. package/src/core/publication/merge-readiness.ts +295 -7
  350. package/src/core/publication/policy-path.ts +2 -0
  351. package/src/core/publication/required-check-coverage.ts +314 -0
  352. package/src/core/review/acceptance-receipt.ts +106 -14
  353. package/src/core/review/generic-review.ts +7 -2
  354. package/src/core/review/review-publish.ts +262 -0
  355. package/src/core/review/review-runtimes.ts +11 -0
  356. package/src/core/setup/cli-inventory.ts +463 -0
  357. package/src/core/setup/cli-seed.v1.json +538 -0
  358. package/src/core/setup/decode.ts +48 -10
  359. package/src/core/setup/hook-usage.ts +94 -0
  360. package/src/core/setup/projection.ts +24 -7
  361. package/src/core/setup/types.ts +48 -9
  362. package/src/core/skill-surface/catalog.ts +11 -6
  363. package/src/core/state/artifact-parsers.ts +0 -31
  364. package/src/core/state/coordination-identity.ts +4 -179
  365. package/src/core/state/project-continuation-envelope.ts +30 -26
  366. package/src/core/state/project-effective-state.ts +8 -95
  367. package/src/core/state/project-state-snapshot.ts +4 -16
  368. package/src/core/state/types.ts +28 -19
  369. package/src/core/tools/catalog.ts +29 -3
  370. package/src/dsh/bridge.ts +40 -0
  371. package/src/dsh/plugin.ts +262 -0
  372. package/src/effects/adoption/manifest-templates.ts +1 -1
  373. package/src/effects/adoption/standard-plan.ts +63 -222
  374. package/src/effects/architecture/capability-resolver.ts +1 -23
  375. package/src/effects/architecture/model-reader.ts +3 -3
  376. package/src/effects/artifact-retention.ts +19 -56
  377. package/src/effects/bot-registry.ts +185 -0
  378. package/src/effects/configuration/agents-configuration.ts +127 -0
  379. package/src/effects/configuration/global-configuration.ts +114 -8
  380. package/src/effects/dev-activity/collector.ts +94 -26
  381. package/src/effects/engineers/dependency-authority.ts +15 -8
  382. package/src/effects/evidence/recovery-materializer.ts +58 -141
  383. package/src/effects/external-sources/binding.ts +1 -8
  384. package/src/effects/external-sources/store.ts +2 -26
  385. package/src/effects/fleet/task-inbox.ts +1 -110
  386. package/src/effects/git/common-directory.ts +17 -7
  387. package/src/effects/git/managed-worktree.ts +33 -0
  388. package/src/effects/git/runner.ts +110 -0
  389. package/src/effects/git/worktree-processes.ts +72 -0
  390. package/src/effects/git/worktree-record.ts +71 -0
  391. package/src/effects/host-skill-roots.ts +8 -4
  392. package/src/effects/locking/exclusive-directory-lock.ts +46 -36
  393. package/src/effects/locking/runtime-transaction-lock.ts +123 -0
  394. package/src/effects/loop/state-input-collector.ts +0 -5
  395. package/src/effects/operator/admitted-task-activity.ts +5 -2
  396. package/src/effects/operator/agents-settings-route.ts +94 -0
  397. package/src/effects/operator/architecture-map-collector.ts +156 -0
  398. package/src/effects/operator/architecture-map-worker.ts +685 -0
  399. package/src/effects/operator/architecture.ts +1 -1
  400. package/src/effects/operator/bot-access.ts +311 -0
  401. package/src/effects/operator/cleanup-file-access.ts +140 -0
  402. package/src/effects/operator/doc-session-changes.ts +431 -0
  403. package/src/effects/operator/doc-session-events.ts +198 -0
  404. package/src/effects/operator/doc-session-finalization-view.ts +12 -0
  405. package/src/effects/operator/doc-session-finalize-github.ts +147 -0
  406. package/src/effects/operator/doc-session-finalize-scope.ts +39 -0
  407. package/src/effects/operator/doc-session-finalize.ts +404 -0
  408. package/src/effects/operator/doc-session-views.ts +131 -0
  409. package/src/effects/operator/doc-session.ts +277 -0
  410. package/src/effects/operator/docs-collector.ts +182 -0
  411. package/src/effects/operator/docs-reader.ts +470 -0
  412. package/src/effects/operator/execution-collector.ts +129 -0
  413. package/src/effects/operator/execution-state-worker.ts +23 -0
  414. package/src/effects/operator/execution-state.ts +74 -0
  415. package/src/effects/operator/herdr-runtime-transport.ts +13 -16
  416. package/src/effects/operator/notify-collector.ts +62 -0
  417. package/src/effects/operator/notify-status.ts +101 -87
  418. package/src/effects/operator/runtime-service.ts +9 -4
  419. package/src/effects/operator/runtime-source.ts +13 -27
  420. package/src/effects/operator/runtime-status.ts +40 -53
  421. package/src/effects/operator/server.ts +596 -44
  422. package/src/effects/operator/task-diff.ts +15 -10
  423. package/src/effects/operator/task-read-process.ts +20 -10
  424. package/src/effects/operator/tests-collector.ts +317 -0
  425. package/src/effects/operator/worktree-cleanup-archive.ts +229 -0
  426. package/src/effects/operator/worktree-cleanup-observation.ts +199 -0
  427. package/src/effects/operator/worktree-cleanup-plan.ts +204 -0
  428. package/src/effects/operator/worktree-cleanup-removal.ts +54 -0
  429. package/src/effects/operator/worktree-cleanup.ts +226 -0
  430. package/src/effects/operator/worktree-collector-worker.ts +98 -0
  431. package/src/effects/operator/worktree-collector.ts +81 -0
  432. package/src/effects/operator/worktree-orphans-worker.ts +95 -0
  433. package/src/effects/operator/write-audit.ts +183 -0
  434. package/src/effects/operator/write-channel.ts +172 -0
  435. package/src/effects/operator/write-run.ts +197 -0
  436. package/src/effects/path-identity.ts +8 -0
  437. package/src/effects/pi-agent-dir.ts +11 -0
  438. package/src/effects/pi-executable.ts +34 -0
  439. package/src/effects/process-group-registry.ts +1 -1
  440. package/src/effects/publication/generated-artifacts.ts +517 -0
  441. package/src/effects/publication/merge-executor.ts +540 -0
  442. package/src/effects/publication/merge-readiness.ts +964 -78
  443. package/src/effects/publication/test-execution-evidence.ts +205 -0
  444. package/src/effects/repo-harness-home.ts +8 -0
  445. package/src/effects/repo-registry.ts +186 -17
  446. package/src/effects/review/acceptance-receipt.ts +140 -6
  447. package/src/effects/review/diff-fingerprint.ts +9 -7
  448. package/src/effects/review/docs-host-isolation.ts +312 -0
  449. package/src/effects/review/docs-host-proxy.ts +162 -0
  450. package/src/effects/review/generic-review.ts +100 -36
  451. package/src/effects/review/oar-review-host.ts +29 -15
  452. package/src/effects/review/pre-prompt-inbox-consumer.ts +3 -3
  453. package/src/effects/review/review-isolation.ts +87 -4
  454. package/src/effects/review/review-publish.ts +317 -0
  455. package/src/effects/runtime/helper-runner.ts +0 -1
  456. package/src/effects/runtime/protected-helper-platform.ts +8 -38
  457. package/src/effects/setup/agent-runtime-probe-child.ts +9 -0
  458. package/src/effects/setup/agent-runtime-probe.ts +116 -0
  459. package/src/effects/setup/cli-inventory.ts +456 -0
  460. package/src/effects/setup/collector.ts +63 -7
  461. package/src/effects/setup/hook-usage.ts +56 -0
  462. package/src/effects/setup/pi-capability-child.ts +9 -0
  463. package/src/effects/setup/pi-herdr-integration.ts +58 -0
  464. package/src/effects/state/coordination-worktree-topology.ts +443 -68
  465. package/src/effects/state/resolve-continuation-envelope.ts +2 -2
  466. package/src/effects/state/resolve-effective-state.ts +65 -98
  467. package/src/effects/state/worktree-trash.ts +157 -6
  468. package/src/effects/strategy/context.ts +2 -3
  469. package/src/effects/terminal/herdr-decision.ts +2 -2
  470. package/src/effects/terminal/herdr-notify-install.ts +88 -0
  471. package/src/effects/terminal/herdr-observation.ts +29 -24
  472. package/src/effects/terminal/native-task-session.ts +7 -5
  473. package/src/effects/terminal/task-role-profiles.ts +4 -1
  474. package/src/effects/terminal/task-runtime-observation.ts +16 -6
  475. package/src/effects/terminal/task-session.ts +84 -3
  476. package/src/effects/upgrade/legacy-inventory.ts +28 -2
  477. package/src/effects/upgrade/legacy-worktree-cleanup.ts +215 -0
  478. package/src/effects/upgrade/operator-decisions.ts +130 -0
  479. package/src/effects/upgrade/worktree-template-migration.ts +141 -0
  480. package/src/operator-web/App.tsx +196 -219
  481. package/src/operator-web/ArchitectureMap.tsx +462 -0
  482. package/src/operator-web/ArchitectureSequence.tsx +303 -0
  483. package/src/operator-web/ArchitectureTopology.tsx +219 -0
  484. package/src/operator-web/ArchitectureWorkspace.tsx +35 -4
  485. package/src/operator-web/Board.tsx +29 -13
  486. package/src/operator-web/BotsPage.tsx +380 -0
  487. package/src/operator-web/CliPage.tsx +113 -0
  488. package/src/operator-web/DocsMarkdown.tsx +182 -0
  489. package/src/operator-web/DocsPage.tsx +229 -0
  490. package/src/operator-web/Drawer.tsx +10 -4
  491. package/src/operator-web/Home.tsx +352 -0
  492. package/src/operator-web/ItemDrawer.tsx +63 -7
  493. package/src/operator-web/NavRail.tsx +394 -0
  494. package/src/operator-web/RepositoryWorkspace.tsx +3 -41
  495. package/src/operator-web/RuntimeBadges.tsx +5 -4
  496. package/src/operator-web/SettingsPage.tsx +250 -0
  497. package/src/operator-web/SetupPages.tsx +40 -7
  498. package/src/operator-web/TestsPage.tsx +258 -0
  499. package/src/operator-web/ToolsPage.tsx +26 -14
  500. package/src/operator-web/WorktreesPage.tsx +251 -0
  501. package/src/operator-web/app.css +172 -7
  502. package/src/operator-web/architecture-map-layers.ts +125 -0
  503. package/src/operator-web/architecture-map-layout.ts +173 -0
  504. package/src/operator-web/architecture-map-parts.tsx +236 -0
  505. package/src/operator-web/architecture-runtime.ts +43 -0
  506. package/src/operator-web/architecture-sequence-layout.ts +126 -0
  507. package/src/operator-web/architecture-topology-layout.ts +157 -0
  508. package/src/operator-web/bots.ts +90 -0
  509. package/src/operator-web/brand.tsx +22 -0
  510. package/src/operator-web/design-tokens.ts +58 -0
  511. package/src/operator-web/dev-activity.ts +28 -7
  512. package/src/operator-web/fixture.ts +3 -18
  513. package/src/operator-web/fixtures/architecture-map.json +18788 -0
  514. package/src/operator-web/fixtures/bots.ts +109 -0
  515. package/src/operator-web/fixtures/dev-activity.ts +49 -9
  516. package/src/operator-web/fixtures/docs.ts +131 -0
  517. package/src/operator-web/fixtures/index.ts +68 -4
  518. package/src/operator-web/fixtures/settings.ts +102 -0
  519. package/src/operator-web/fixtures/setup.ts +22 -9
  520. package/src/operator-web/fixtures/tests.ts +72 -0
  521. package/src/operator-web/fixtures/worktrees.ts +115 -0
  522. package/src/operator-web/i18n.ts +1386 -39
  523. package/src/operator-web/index.html +1 -1
  524. package/src/operator-web/labels.ts +7 -0
  525. package/src/operator-web/main.tsx +2 -0
  526. package/src/operator-web/repository-reads.ts +279 -0
  527. package/src/operator-web/settings.ts +270 -0
  528. package/src/operator-web/setup.ts +16 -9
  529. package/src/operator-web/task-location.ts +10 -15
  530. package/src/operator-web/types.ts +72 -3
  531. package/src/operator-web/ui.tsx +19 -2
  532. package/src/operator-web/workspace-location.ts +45 -13
  533. package/src/operator-web/worktrees.ts +245 -0
  534. package/src/pi/compat.ts +54 -0
  535. package/src/pi/extension.ts +139 -0
  536. package/src/pi/hook-bridge.ts +44 -0
  537. package/assets/reference-configs/development-protocol.md +0 -18
  538. package/assets/reference-configs/handoff-protocol.md +0 -8
  539. package/assets/reference-configs/sprint-contracts.md +0 -51
  540. package/assets/reference-configs/workflow-orchestration.md +0 -29
  541. package/assets/skills/repo-harness-product/references/sprint.md +0 -34
  542. package/assets/templates/contract.template.md +0 -173
  543. package/assets/templates/implementation-notes.template.md +0 -41
  544. package/assets/templates/plan.template.md +0 -87
  545. package/assets/templates/review.template.md +0 -98
  546. package/assets/templates/sprint.template.md +0 -76
  547. package/dist/operator-ui/assets/ArchitectureWorkspace-9kTFQyoX.js +0 -1
  548. package/dist/operator-ui/assets/index-BPO_QTWf.js +0 -18
  549. package/dist/operator-ui/assets/index-DDqPSgxK.css +0 -2
  550. package/docs/images/image.png +0 -0
  551. package/interfaces/effective-state-v1.ts +0 -1
  552. package/scripts/archive-workflow.sh +0 -851
  553. package/scripts/capture-plan.sh +0 -29
  554. package/scripts/check-task-sync.sh +0 -24
  555. package/scripts/check-task-workflow.sh +0 -25
  556. package/scripts/classify-historical-plans.ts +0 -254
  557. package/scripts/ensure-task-workflow.sh +0 -11
  558. package/scripts/migrate-verification-plan.ts +0 -221
  559. package/scripts/new-plan.sh +0 -193
  560. package/scripts/plan-to-todo.sh +0 -17
  561. package/scripts/refresh-current-status.sh +0 -552
  562. package/scripts/switch-plan.sh +0 -150
  563. package/scripts/verify-contract.sh +0 -40
  564. package/scripts/workstream-sync.sh +0 -300
  565. package/src/cli/installer/runtime-host-lock.ts +0 -66
  566. package/src/core/operator/task-history.ts +0 -56
  567. package/src/core/state/sprint-backlog-rows.ts +0 -154
  568. package/src/effects/operator/task-activity.ts +0 -45
  569. package/src/effects/operator/task-history.ts +0 -105
  570. package/src/effects/state/coordination-canonical-source.ts +0 -461
  571. package/src/operator-web/TaskEvidence.tsx +0 -95
  572. package/src/operator-web/TaskHistory.tsx +0 -51
  573. package/src/operator-web/favicon.svg +0 -6
  574. package/src/operator-web/marks.tsx +0 -41
  575. package/src/operator-web/task-activity.ts +0 -11
  576. package/src/operator-web/task-history.ts +0 -12
  577. /package/dist/operator-ui/{assets/favicon-TLXk-wak.svg → logos/repo-harness-carrot-mark.svg} +0 -0
package/AGENTS.md CHANGED
@@ -1,35 +1,19 @@
1
1
  # repo-harness
2
2
 
3
3
  ## Workflow
4
+ - Multi-agent work follows `repo-harness-issue-flow` (`assets/skills/repo-harness-issue-flow/SKILL.md`): roles, claims, handoff, dispatch, acceptance and merge.
5
+ - `docs/architecture/archimap.html` is the single architecture entry. It links each module to its archctx-projected capability doc in `docs/architecture/modules/`. Change boundaries only through `repo-harness-architecture`; do not hand-write other architecture docs.
6
+ - Keep four hard boundaries: main publication, deletion, credentials/permissions, and release/production operations.
7
+ - Only when the current task explicitly authorizes main publication, and `publication.acceptance_merge` is `on` in the policy on the PR base, is publication allowed; the skill defines who merges. Push/tag need task authorization. Deletion, credentials/permissions and release/production need user approval. An explicit no-merge instruction always wins.
8
+ - The diff's [Review by risk](docs/reference-configs/agentic-development-flow.md#review-by-risk) tier selects independent review; the skill defines the reviewers and their model families. Changing implementation and test assertions together does not raise the tier.
9
+ - Create task worktrees only at `/tmp/<repo>-wt-<slug>` (Windows: `os.tmpdir()`) with `repo-harness run contract-worktree start --issue <number>`, or `git worktree add` with that path. Never create one beside the main checkout (`../`). Commit or push before a reboot or a tmp cleanup. Closeout and sweep remove only merged, clean and unowned worktrees; to keep one, give it an unmerged commit, keep it dirty, or mark or lock it.
4
10
  - For non-trivial work, follow the global Progressive Due Diligence rule (P1 map, P2 trace, P3 decision) before design decisions or code edits.
5
11
  - Keep root CLAUDE.md and AGENTS.md as standalone regular files; repeat shared rules in both and keep host-specific guidance separate.
6
- - Read the current request and repo-local agent context, work on a branch, make bounded commits, verify once, then report the PR outcome.
12
+ - Read the current request and repo-local agent context, work on a branch, make bounded commits, verify once, then report the PR outcome. Finish the main task first. Fix a small problem found on the way directly; for a large problem, open a GitHub issue before you work on it.
7
13
  - Read `tasks/lessons.md` at session start and apply its active lessons. Current repo state and evidence override a lesson.
8
- - Finish the main task first. Fix a small problem found on the way directly. For a large problem, open a GitHub issue before you work on it.
9
- - Ordinary tasks use the PR description: goal, scope, changes, verification, risk and rollback. No mandatory plan/contract/review/notes chain; notes are only for non-obvious decisions.
10
- - Keep four hard boundaries: main publication, deletion, credentials/permissions, and release/production operations.
11
- - Only when the current task explicitly authorizes main publication may a model squash-merge after automated checks pass and GitHub has no outstanding change requests or unresolved review threads; an explicit no-merge instruction always wins. Push/tag still require task authorization; credentials/permissions, other deletion and release/production retain their separate approval boundaries. Record authorized publication, the provider-confirmed merge SHA and parent SHA, `git revert <squash-commit>`, and the daily report. Do not create rollback tags.
12
- - Default worktrees are at `/tmp/<repo>-wt-<slug>` (Windows: `os.tmpdir()`). Commit or push before a reboot or a tmp cleanup.
13
- - Closeout and sweep remove only merged, clean and unowned worktrees. To keep one, give it an unmerged commit, keep it dirty, or mark or lock it. Details: [agentic-development-flow](docs/reference-configs/agentic-development-flow.md).
14
- - Automatically delete only merged, clean worktrees/branches; ask the user for every other deletion. Credentials/permissions (including confirmation bypass) and release/production operations require user approval.
15
- - Select independent review by the diff's [Review by risk](docs/reference-configs/agentic-development-flow.md#review-by-risk) tier: none for low, one fresh-context review for medium, gatekeeper plus cross-model review for high; ordinary steps record diagnostics without approval loops.
16
- - When you delegate, investigate first, then split work by write ownership. Give each parallel writer its own worktree from a clean source. Implementation sub-agents edit only their scope. They do not run build, typecheck or tests. They commit early in their own worktree and return early. In a shared checkout they do not commit; the parent commits. Evidence roles run the named check that is their task and do not commit. The parent agent owns task management, conflict resolution, build, typecheck, tests and integration. After integration, the parent removes each sub-agent worktree and branch whose commits are in the task branch and whose checkout is clean. It also removes the intermediate build output and temporary files that the work created. Other deletion still needs the user.
17
- - Model division and cross-model dispatch/review follow [Herdr Dispatch](docs/reference-configs/herdr-notify.md#herdr-dispatch).
14
+ - Ordinary tasks use the PR description: goal, scope, changes, verification, risk and rollback. No plan, contract, review, notes or approval artifact is mandatory. Record a one-time decision in the issue.
18
15
  - GitHub operations (PRs, reviews, merges, labels, releases, comments) go only through the gh/git CLI or the GitHub API. Never use simulated browser clicks on github.com: the account can be banned.
19
- - When one PR changes both test assertions and implementation code, run one read-only review focused on tests bent to fit a bug (on-demand, not a restored gate; dispatch per the herdr guide).
20
- - `.archcontext/model/` owns architecture boundaries; read `docs/architecture/` on demand and update only real responsibility changes. Architecture diagnostics do not block work or author nested agent instructions.
21
- - When a branch changes a capability's responsibility, entrypoints, relations or flows, follow `repo-harness-architecture` (`assets/skill-commands/repo-harness-architecture/references/worker.md`). Handle architecture debt in the model and human prose. The archctx rolling writer publishes generated regions and the projection manifest; do not apply and commit them in a feature PR.
22
- - Preserve `agents/fleet/`, release checklists and downstream `assets/templates`. `.ai/harness/workflow-contract.json` is the opt-in marker. `assets/workflow-contract.v1.json` is the contract.
23
- - `_ops/` is ignored private operations state: never commit or agent-edit it. `_ref/` is an ignored reference cache; cite influential revisions. Follow deploy SQL policy, otherwise use ascending 4-digit files under `deploy/sql/`.
24
-
25
- ## GitHub Issue Claims
26
- - Before an agent starts work on a GitHub issue, read its current state, assignees and all comments through `gh` or the GitHub API. Use pagination for comments. Check existing work claims, linked PRs and handoff notes.
27
- - An active claim is an assignee other than the current task owner, an open PR that links the issue, or an active claim comment that no later status comment released. If another agent or person has an active claim, do not start duplicate work. Coordinate with that owner within the authorized task scope. Take over only after an explicit handoff or user instruction. Silence, an old timestamp or a disconnected session does not release a claim.
28
- - When taking an unclaimed issue or an approved handoff, post a claim comment before edits, tests or worker dispatch. Use `gh issue comment <issue-url> --body-file <file>`. This rule authorizes claim and status comments for an issue within the user's task scope. It grants no other GitHub write authority.
29
- - Start the comment with `repo-harness issue claim`. Include `Status: active`, the agent kind and unique session or task ID, the branch, the work scope and any prior claim comment URL for a handoff. Use this identity in later status comments. A shared GitHub login is not an agent identity. Do not include secrets or private host paths.
30
- - Read the issue comments again after posting. Confirm the published comment URL and body. If a competing claim appeared, stop duplicate work and resolve ownership before continuing. For simultaneous claims without an explicit assignment or handoff, the earliest GitHub comment wins; break timestamp ties by comment ID. These comments coordinate agents; they are not an atomic lock and do not replace canonical task claims or leases.
31
- - On resume, check the current claim before continuing. Reuse the same active claim instead of posting it again. If a read or post fails, or delivery is uncertain, stop and report the failure. Read back before retrying an uncertain post.
32
- - Post a status comment that links the claim when the work is blocked, ready for review, complete or released. Keep a blocked or review-pending claim active. Include the PR or result when available. Release ownership explicitly on cancellation or handoff. Do not close the issue unless the task authorizes closure.
16
+ - Preserve `agents/fleet/`, release checklists and downstream `assets/templates`. `.ai/harness/workflow-contract.json` is the opt-in marker. `assets/workflow-contract.v1.json` is the contract. `_ops/` is ignored private operations state: never commit or agent-edit it. `_ref/` is an ignored reference cache; cite influential revisions. Follow deploy SQL policy, otherwise use ascending 4-digit files under `deploy/sql/`.
33
17
 
34
18
  ## Code Optimization Principles
35
19
  - Identify observable conditions, controllable inputs, the invariant and the actual pressure point before changing structure.
@@ -45,6 +29,7 @@
45
29
  - For a bug fix, prefer a focused failing regression before the fix. Run only the reproducer during RED. Record a reproduction gap when the environment cannot produce it; ordinary tasks do not require RED artifacts.
46
30
  - A diff's size, a new test file, a new agent or a rebase does not by itself require a full run.
47
31
  - Use `bun run test:files <affected tests> --timeout 60000 --max-concurrency 1`; extend existing coverage before creating a new test file.
32
+ - Test budget per PR: added test lines divided by added product lines must not exceed 2:1, and the PR adds at most one test file. A PR that adds no product lines records the exception for any added test. Measure with `git diff --numstat main...HEAD -- tests` and `git diff --numstat main...HEAD -- src scripts`; above either cap, add a `Test budget exception` PR section with the counts and why an existing test cannot cover the behavior.
48
33
  - Select tests by observable risk and owning runtime boundary, including error/recovery paths when affected.
49
34
  - Mechanical prose changes need link/scope validation, not new product tests; do not test incidental formatting or that deleted files stay deleted.
50
35
  - Reviewers consume the recorded command, result, revision and environment; they do not rerun passing checks to claim ownership.
@@ -52,20 +37,10 @@
52
37
  - Run the full suite daily; a failure opens an automatic repair task and appears in the daily report.
53
38
  - Isolate mutable HOME, repositories and process state; use real synchronization signals and preserve complete failure output.
54
39
  - Report failed, timed-out, incomplete or omitted coverage explicitly; do not manufacture receipts, waiver files or pre-fix logs.
55
- - Never modify or delete test assertions just to make tests pass; justify every necessary test change item by item in the PR description.
40
+ - Never modify or delete test assertions just to make tests pass; justify every necessary test change item by item in the PR description. Remove a redundant test only when the PR names the retained test that covers the same behavior.
56
41
  - Before you write or change tests, load the `repo-harness-test` skill (`assets/skills/repo-harness-test/SKILL.md`).
57
42
  - When a local check and CI disagree, CI is the authority. Reproduce the failure with `bash scripts/check-ci.sh <lane>` before you change code; a global `repo-harness` or `repo-harness-hook` on `PATH` can hide a missing test setup.
58
43
 
59
- ## Handoff
60
- - Create a checkpoint only when context/session rollover or unresolved work needs it; ordinary completion stays in the PR description.
61
- - Read files named in the current request before recovery context.
62
- - Record the goal, branch/worktree/HEAD, decisions, touched files, verification results, blockers and one exact next command.
63
- - Keep temporary checkpoints under ignored `.ai/harness/handoff/`; historical snapshots are not current execution authority.
64
- - Include evidence paths and actual command outcomes; distinguish observed state from inference.
65
- - Never include secrets, tokens or real environment files in handoff text.
66
- - On resume, verify the live checkout and source artifacts before reusing a result; `tasks/current.md` is an optional local read model.
67
- - Preserve dirty work and other workers' edits; hand back an ownership conflict instead of discarding their changes.
68
-
69
44
  ## Writing
70
45
  - Write output text (docs, PR descriptions, commit messages, reports, research notes) in ASD-STE100 Simplified Technical English: short sentences, one idea per sentence, active voice, approved-dictionary words. Write Chinese output the same way.
71
46
  - Prefer high information density: evidence first, mechanisms and business effect explained, complex reasoning allowed, no explanatory repetition. Lead with the main finding, key number or key mechanism. State known facts and supported conclusions directly, without lead-ins such as "note that", "this shows to some extent" or "it must be stressed". Put the evidence grade in the wording, not in a separate caveat.
@@ -79,9 +54,7 @@
79
54
  - Avoid unnecessary secondary labels and descriptions. Let the layout do the explaining.
80
55
 
81
56
  ## Codex
82
- - Own backend implementation and testing; Claude owns frontend implementation and interaction, and the parent coordinates scope and integration.
83
57
  - User-level `~/.codex/hooks.json` hooks invoke `repo-harness-hook`; its typed route registry selects one in-process handler. Operator helpers run from the package through `repo-harness run <helper>`.
84
58
  - Use `~/.codex/skills` as the runtime skill source; `~/.agents/skills` is staging/cache only. Keep `think`, `hunt`, `check` and `health` updates verified before runtime use.
85
59
  - The Codex automation profile requires runtime-provided `health`, `check` and `mermaid`; do not vendor their bodies.
86
- - Treat auto-compact as a fallback; prepare ignored `.ai/harness/handoff/current.md` and `resume.md` when long-task rollover is needed.
87
60
  - Keep this file short; load [development flow](docs/reference-configs/agentic-development-flow.md) and [external tooling](docs/reference-configs/external-tooling.md) only when needed.
package/CLAUDE.md CHANGED
@@ -1,35 +1,19 @@
1
1
  # repo-harness
2
2
 
3
3
  ## Workflow
4
+ - Multi-agent work follows `repo-harness-issue-flow` (`assets/skills/repo-harness-issue-flow/SKILL.md`): roles, claims, handoff, dispatch, acceptance and merge.
5
+ - `docs/architecture/archimap.html` is the single architecture entry. It links each module to its archctx-projected capability doc in `docs/architecture/modules/`. Change boundaries only through `repo-harness-architecture`; do not hand-write other architecture docs.
6
+ - Keep four hard boundaries: main publication, deletion, credentials/permissions, and release/production operations.
7
+ - Only when the current task explicitly authorizes main publication, and `publication.acceptance_merge` is `on` in the policy on the PR base, is publication allowed; the skill defines who merges. Push/tag need task authorization. Deletion, credentials/permissions and release/production need user approval. An explicit no-merge instruction always wins.
8
+ - The diff's [Review by risk](docs/reference-configs/agentic-development-flow.md#review-by-risk) tier selects independent review; the skill defines the reviewers and their model families. Changing implementation and test assertions together does not raise the tier.
9
+ - Create task worktrees only at `/tmp/<repo>-wt-<slug>` (Windows: `os.tmpdir()`) with `repo-harness run contract-worktree start --issue <number>`, or `git worktree add` with that path. Never create one beside the main checkout (`../`). Commit or push before a reboot or a tmp cleanup. Closeout and sweep remove only merged, clean and unowned worktrees; to keep one, give it an unmerged commit, keep it dirty, or mark or lock it.
4
10
  - For non-trivial work, follow the global Progressive Due Diligence rule (P1 map, P2 trace, P3 decision) before design decisions or code edits.
5
11
  - Keep root CLAUDE.md and AGENTS.md as standalone regular files; repeat shared rules in both and keep host-specific guidance separate.
6
- - Read the current request and repo-local agent context, work on a branch, make bounded commits, verify once, then report the PR outcome.
12
+ - Read the current request and repo-local agent context, work on a branch, make bounded commits, verify once, then report the PR outcome. Finish the main task first. Fix a small problem found on the way directly; for a large problem, open a GitHub issue before you work on it.
7
13
  - Read `tasks/lessons.md` at session start and apply its active lessons. Current repo state and evidence override a lesson.
8
- - Finish the main task first. Fix a small problem found on the way directly. For a large problem, open a GitHub issue before you work on it.
9
- - Ordinary tasks use the PR description: goal, scope, changes, verification, risk and rollback. No mandatory plan/contract/review/notes chain; notes are only for non-obvious decisions.
10
- - Keep four hard boundaries: main publication, deletion, credentials/permissions, and release/production operations.
11
- - Only when the current task explicitly authorizes main publication may a model squash-merge after automated checks pass and GitHub has no outstanding change requests or unresolved review threads; an explicit no-merge instruction always wins. Push/tag still require task authorization; credentials/permissions, other deletion and release/production retain their separate approval boundaries. Record authorized publication, the provider-confirmed merge SHA and parent SHA, `git revert <squash-commit>`, and the daily report. Do not create rollback tags.
12
- - Default worktrees are at `/tmp/<repo>-wt-<slug>` (Windows: `os.tmpdir()`). Commit or push before a reboot or a tmp cleanup.
13
- - Closeout and sweep remove only merged, clean and unowned worktrees. To keep one, give it an unmerged commit, keep it dirty, or mark or lock it. Details: [agentic-development-flow](docs/reference-configs/agentic-development-flow.md).
14
- - Automatically delete only merged, clean worktrees/branches; ask the user for every other deletion. Credentials/permissions (including confirmation bypass) and release/production operations require user approval.
15
- - Select independent review by the diff's [Review by risk](docs/reference-configs/agentic-development-flow.md#review-by-risk) tier: none for low, one fresh-context review for medium, gatekeeper plus cross-model review for high; ordinary steps record diagnostics without approval loops.
16
- - When you delegate, investigate first, then split work by write ownership. Give each parallel writer its own worktree from a clean source. Implementation sub-agents edit only their scope. They do not run build, typecheck or tests. They commit early in their own worktree and return early. In a shared checkout they do not commit; the parent commits. Evidence roles run the named check that is their task and do not commit. The parent agent owns task management, conflict resolution, build, typecheck, tests and integration. After integration, the parent removes each sub-agent worktree and branch whose commits are in the task branch and whose checkout is clean. It also removes the intermediate build output and temporary files that the work created. Other deletion still needs the user.
17
- - Model division and cross-model dispatch/review follow [Herdr Dispatch](docs/reference-configs/herdr-notify.md#herdr-dispatch).
14
+ - Ordinary tasks use the PR description: goal, scope, changes, verification, risk and rollback. No plan, contract, review, notes or approval artifact is mandatory. Record a one-time decision in the issue.
18
15
  - GitHub operations (PRs, reviews, merges, labels, releases, comments) go only through the gh/git CLI or the GitHub API. Never use simulated browser clicks on github.com: the account can be banned.
19
- - When one PR changes both test assertions and implementation code, run one read-only review focused on tests bent to fit a bug (on-demand, not a restored gate; dispatch per the herdr guide).
20
- - `.archcontext/model/` owns architecture boundaries; read `docs/architecture/` on demand and update only real responsibility changes. Architecture diagnostics do not block work or author nested agent instructions.
21
- - When a branch changes a capability's responsibility, entrypoints, relations or flows, follow `repo-harness-architecture` (`assets/skill-commands/repo-harness-architecture/references/worker.md`). Handle architecture debt in the model and human prose. The archctx rolling writer publishes generated regions and the projection manifest; do not apply and commit them in a feature PR.
22
- - Preserve `agents/fleet/`, release checklists and downstream `assets/templates`. `.ai/harness/workflow-contract.json` is the opt-in marker. `assets/workflow-contract.v1.json` is the contract.
23
- - `_ops/` is ignored private operations state: never commit or agent-edit it. `_ref/` is an ignored reference cache; cite influential revisions. Follow deploy SQL policy, otherwise use ascending 4-digit files under `deploy/sql/`.
24
-
25
- ## GitHub Issue Claims
26
- - Before an agent starts work on a GitHub issue, read its current state, assignees and all comments through `gh` or the GitHub API. Use pagination for comments. Check existing work claims, linked PRs and handoff notes.
27
- - An active claim is an assignee other than the current task owner, an open PR that links the issue, or an active claim comment that no later status comment released. If another agent or person has an active claim, do not start duplicate work. Coordinate with that owner within the authorized task scope. Take over only after an explicit handoff or user instruction. Silence, an old timestamp or a disconnected session does not release a claim.
28
- - When taking an unclaimed issue or an approved handoff, post a claim comment before edits, tests or worker dispatch. Use `gh issue comment <issue-url> --body-file <file>`. This rule authorizes claim and status comments for an issue within the user's task scope. It grants no other GitHub write authority.
29
- - Start the comment with `repo-harness issue claim`. Include `Status: active`, the agent kind and unique session or task ID, the branch, the work scope and any prior claim comment URL for a handoff. Use this identity in later status comments. A shared GitHub login is not an agent identity. Do not include secrets or private host paths.
30
- - Read the issue comments again after posting. Confirm the published comment URL and body. If a competing claim appeared, stop duplicate work and resolve ownership before continuing. For simultaneous claims without an explicit assignment or handoff, the earliest GitHub comment wins; break timestamp ties by comment ID. These comments coordinate agents; they are not an atomic lock and do not replace canonical task claims or leases.
31
- - On resume, check the current claim before continuing. Reuse the same active claim instead of posting it again. If a read or post fails, or delivery is uncertain, stop and report the failure. Read back before retrying an uncertain post.
32
- - Post a status comment that links the claim when the work is blocked, ready for review, complete or released. Keep a blocked or review-pending claim active. Include the PR or result when available. Release ownership explicitly on cancellation or handoff. Do not close the issue unless the task authorizes closure.
16
+ - Preserve `agents/fleet/`, release checklists and downstream `assets/templates`. `.ai/harness/workflow-contract.json` is the opt-in marker. `assets/workflow-contract.v1.json` is the contract. `_ops/` is ignored private operations state: never commit or agent-edit it. `_ref/` is an ignored reference cache; cite influential revisions. Follow deploy SQL policy, otherwise use ascending 4-digit files under `deploy/sql/`.
33
17
 
34
18
  ## Code Optimization Principles
35
19
  - Identify observable conditions, controllable inputs, the invariant and the actual pressure point before changing structure.
@@ -45,6 +29,7 @@
45
29
  - For a bug fix, prefer a focused failing regression before the fix. Run only the reproducer during RED. Record a reproduction gap when the environment cannot produce it; ordinary tasks do not require RED artifacts.
46
30
  - A diff's size, a new test file, a new agent or a rebase does not by itself require a full run.
47
31
  - Use `bun run test:files <affected tests> --timeout 60000 --max-concurrency 1`; extend existing coverage before creating a new test file.
32
+ - Test budget per PR: added test lines divided by added product lines must not exceed 2:1, and the PR adds at most one test file. A PR that adds no product lines records the exception for any added test. Measure with `git diff --numstat main...HEAD -- tests` and `git diff --numstat main...HEAD -- src scripts`; above either cap, add a `Test budget exception` PR section with the counts and why an existing test cannot cover the behavior.
48
33
  - Select tests by observable risk and owning runtime boundary, including error/recovery paths when affected.
49
34
  - Mechanical prose changes need link/scope validation, not new product tests; do not test incidental formatting or that deleted files stay deleted.
50
35
  - Reviewers consume the recorded command, result, revision and environment; they do not rerun passing checks to claim ownership.
@@ -52,20 +37,10 @@
52
37
  - Run the full suite daily; a failure opens an automatic repair task and appears in the daily report.
53
38
  - Isolate mutable HOME, repositories and process state; use real synchronization signals and preserve complete failure output.
54
39
  - Report failed, timed-out, incomplete or omitted coverage explicitly; do not manufacture receipts, waiver files or pre-fix logs.
55
- - Never modify or delete test assertions just to make tests pass; justify every necessary test change item by item in the PR description.
40
+ - Never modify or delete test assertions just to make tests pass; justify every necessary test change item by item in the PR description. Remove a redundant test only when the PR names the retained test that covers the same behavior.
56
41
  - Before you write or change tests, load the `repo-harness-test` skill (`assets/skills/repo-harness-test/SKILL.md`).
57
42
  - When a local check and CI disagree, CI is the authority. Reproduce the failure with `bash scripts/check-ci.sh <lane>` before you change code; a global `repo-harness` or `repo-harness-hook` on `PATH` can hide a missing test setup.
58
43
 
59
- ## Handoff
60
- - Create a checkpoint only when context/session rollover or unresolved work needs it; ordinary completion stays in the PR description.
61
- - Read files named in the current request before recovery context.
62
- - Record the goal, branch/worktree/HEAD, decisions, touched files, verification results, blockers and one exact next command.
63
- - Keep temporary checkpoints under ignored `.ai/harness/handoff/`; historical snapshots are not current execution authority.
64
- - Include evidence paths and actual command outcomes; distinguish observed state from inference.
65
- - Never include secrets, tokens or real environment files in handoff text.
66
- - On resume, verify the live checkout and source artifacts before reusing a result; `tasks/current.md` is an optional local read model.
67
- - Preserve dirty work and other workers' edits; hand back an ownership conflict instead of discarding their changes.
68
-
69
44
  ## Writing
70
45
  - Write output text (docs, PR descriptions, commit messages, reports, research notes) in ASD-STE100 Simplified Technical English: short sentences, one idea per sentence, active voice, approved-dictionary words. Write Chinese output the same way.
71
46
  - Prefer high information density: evidence first, mechanisms and business effect explained, complex reasoning allowed, no explanatory repetition. Lead with the main finding, key number or key mechanism. State known facts and supported conclusions directly, without lead-ins such as "note that", "this shows to some extent" or "it must be stressed". Put the evidence grade in the wording, not in a separate caveat.
@@ -79,7 +54,6 @@
79
54
  - Avoid unnecessary secondary labels and descriptions. Let the layout do the explaining.
80
55
 
81
56
  ## Claude Code
82
- - Own frontend implementation and interaction; Codex owns backend implementation and testing, and the parent coordinates scope and integration.
83
57
  - Use Claude Code's available tools within granted permissions; changes to tool grants, hooks or confirmation bypass require approval of the exact change.
84
58
  - User-level `~/.claude/settings.json` hooks invoke `repo-harness-hook`; its typed route registry selects one in-process handler. Operator helpers run from the package through `repo-harness run <helper>`.
85
59
  - Write comments, commits and PR text from the final diff; comments explain non-obvious reasons, and PRs describe final behavior and material rationale.
package/README.md CHANGED
@@ -43,7 +43,7 @@ files let Claude and Codex resume work across sessions.
43
43
 
44
44
  ### 1. Install the CLI
45
45
 
46
- Prerequisites: a Git working tree, `bun`, and usable `herdr` >=0.9.3 for host readiness; macOS/Linux also require `bash`,
46
+ Prerequisites: a Git working tree, `bun`, and usable `herdr` >=0.9.5 for host readiness; macOS/Linux also require `bash`,
47
47
  while Windows requires Git for Windows (including its Bash and `usr/bin`
48
48
  tools). `jq` is optional. No Node.js required — the installer uses Bun >=
49
49
  1.4.0 as the runtime, installing or upgrading Bun first when needed.
@@ -79,6 +79,37 @@ endpoints. See [runtime cutover](https://github.com/Ancienttwo/repo-harness/blob
79
79
  repo-harness install
80
80
  ```
81
81
 
82
+ Pi is an optional host under the default `--target both`. When `pi` is on
83
+ PATH, install and update register the installed repo-harness directory with
84
+ `pi install <package-directory>`. An existing user package entry is retained.
85
+ Missing Pi skips this step. Preview with `repo-harness install --dry-run --json`.
86
+ The minimum Pi version is [MIN_PI_VERSION](src/pi/compat.ts); there is no upper bound.
87
+ `repo-harness setup check` and `repo-harness update --check` report the version,
88
+ path resolver capability, package entry and skill projection.
89
+
90
+ Catalog skills use `${PI_CODING_AGENT_DIR:-$HOME/.pi/agent}/skills` and the
91
+ same profile selection and ownership rules as the other hosts. Uninstall removes
92
+ only owned package entries and unchanged owned skills. Package commands use Pi's
93
+ CLI; repo-harness does not write Pi settings, credentials or trust files.
94
+ Pi covers session context, agent notices, edit/write, bash and Stop hooks.
95
+ It has no fleet roles or subagent hooks. PowerShell, `!`/`!!` user shell,
96
+ other extensions' file writes and third-party MCP writes are outside this coverage.
97
+
98
+ DSH (DeepSeek Harness) is a package host. repo-harness ships a Cordis plugin
99
+ and a bundle patch; DSH manages the installation. Load the plugin with
100
+ `dsh plugin add link:<repo-harness package directory>`, or with
101
+ `dsh plugin add repo-harness@<version>` after release. The plugin needs Bun on
102
+ `PATH`; it starts this package's `dist/hook-entry.js`. It maps native `write`,
103
+ `edit` and `bash` calls to the typed guards, delivers session context through
104
+ the first agent step, and records Stop at the turn boundary. It disables
105
+ itself in a repository without `.ai/harness/workflow-contract.json`. MCP
106
+ writes, `pwsh`, `!` user commands and writes from other plugins stay outside
107
+ this boundary. DSH already reads `AGENTS.md` and `~/.agents/skills`; the
108
+ plugin does not change those paths. `repo-harness doctor` and
109
+ `repo-harness setup check` report whether a DSH profile declares the bundle,
110
+ and list the external skills in the shared agents root. repo-harness does not
111
+ write the DSH profile.
112
+
82
113
  On Windows, keep Git for Windows on the install/update `PATH`. That explicit
83
114
  ceremony validates and pins `git.exe`, its matching `bash.exe`/`usr/bin`, and
84
115
  the install account's absolute `TEMP` directory plus native `System32` tools in the OS account's
@@ -109,7 +140,6 @@ or refreshed. It never creates an application stack; new projects and modules us
109
140
 
110
141
  ```bash
111
142
  repo-harness init
112
- bash scripts/check-task-workflow.sh
113
143
  bun test
114
144
  ```
115
145
 
@@ -124,11 +154,11 @@ decides what to schedule.
124
154
 
125
155
  Apply ends with `=== Migration Report ===`, naming where generated hook behavior
126
156
  comes from, the user-level `~/.claude/settings.json` and `~/.codex/hooks.json`
127
- adapter target, the repo-local surfaces created or refreshed, the
128
- `.ai/harness/scripts/*` helper runtime, and an `--- External Tooling ---`
129
- readiness block. Stable intent then lives in `docs/spec.md`, execution state in
130
- `plans/` and `tasks/`, resume state in `.ai/harness/handoff/`. If the dry run
131
- looks wrong, stop and read
157
+ adapter target, the repo-local surfaces created or refreshed, and an
158
+ `--- External Tooling ---` readiness block. Stable intent then lives in
159
+ `docs/spec.md` and `docs/prds/`, task state in the GitHub issue and PR,
160
+ resume state in `.ai/harness/handoff/`. If the dry run looks wrong, stop and
161
+ read
132
162
  [`hook-operations.md`](docs/reference-configs/hook-operations.md) first.
133
163
 
134
164
  ### Update and remove
@@ -138,6 +168,8 @@ repo-harness update # reconcile CLI, mandatory deps, profile tooling, a
138
168
  repo-harness update --check # read-only repair guidance, no writes
139
169
  repo-harness upgrade # check retired leftovers; no writes
140
170
  repo-harness upgrade --apply # back up and remove only proven owned leftovers
171
+ repo-harness upgrade decide --keep <path> # record an operator decision for a report-only project item
172
+ repo-harness upgrade --registered # preview project refresh for every registered repo; no writes
141
173
  repo-harness uninstall --dry-run # preview owned user configuration cleanup
142
174
  repo-harness uninstall # remove owned configuration; preserve user changes/history
143
175
  repo-harness mcp uninstall --dry-run # preview independent MCP setup cleanup
@@ -203,9 +235,9 @@ In an adopted repo, the surface area is intentionally small:
203
235
  | Surface | Purpose |
204
236
  | --- | --- |
205
237
  | `docs/spec.md` and `docs/reference-configs/` | Shared standards and stable product intent that every agent session can read. |
206
- | `plans/`, `plans/prds/`, and `plans/sprints/` | Optional planning context and historical work records. |
207
- | `tasks/contracts/`, `tasks/reviews/`, and `.ai/harness/checks/` | Existing closeout and recovery records retained during the lifecycle removal. |
208
- | `.ai/harness/handoff/` and `tasks/current.md` | Session journal and resumable status, derived from workflow artifacts instead of chat memory. |
238
+ | `docs/prds/` | Product intent and optional design briefs. |
239
+ | `tasks/lessons.md` | The one local lesson ledger. Task identity and history stay in the issue and PR. |
240
+ | `.ai/harness/handoff/` | Session journal and resumable status, derived from the issue, PR and repository state instead of chat memory. |
209
241
 
210
242
  ## Task Authority
211
243
 
@@ -227,7 +259,7 @@ callers while the contract lifecycle is removed.
227
259
 
228
260
  | | |
229
261
  | --- | --- |
230
- | **File-backed sessions** | Plans, contracts, checks, and handoffs live in the repo, so a new session resumes from artifacts instead of a chat thread |
262
+ | **File-backed sessions** | Issues, PRs, checks, and handoffs live in the repository, so a new session resumes from artifacts instead of a chat thread |
231
263
  | **Typed hook runtime** | 6 public routes (Claude 5, Codex 5), each bound to exactly one typed in-process handler, with fail-closed guards at the edit boundary |
232
264
  | **Issue → PR → Review** | One task authority with bounded changes, recorded verification and review evidence |
233
265
  | **Session handoff** | Record the issue, branch, evidence and next action so another agent can continue |
@@ -242,7 +274,7 @@ callers while the contract lifecycle is removed.
242
274
  typed hook handlers, the operator-helper asset, workflow contract, tests, and
243
275
  release gate.
244
276
  2. **Target repo contract**: `repo-harness init` or migration writes repo-local
245
- files such as `docs/spec.md`, `plans/`, `tasks/`, `.ai/context/`,
277
+ files such as `docs/spec.md`, `docs/prds/`, `tasks/lessons.md`, `.ai/context/`,
246
278
  `.ai/harness/`, helper scripts, and `.ai/hooks/`.
247
279
  3. **Host adapters**: user-level `~/.claude/settings.json` and
248
280
  `~/.codex/hooks.json` route Claude/Codex events into `repo-harness-hook`.
@@ -261,8 +293,7 @@ Handler details and policy modes:
261
293
  ## Task Workflow
262
294
 
263
295
  The GitHub issue and PR carry task identity, claims, status and dependencies.
264
- Optional plans explain the work. The retained contract closeout helpers serve
265
- old records until that lifecycle is retired.
296
+ There is no local plan, sprint, contract, review or notes artifact.
266
297
 
267
298
  ```mermaid
268
299
  flowchart TD
@@ -285,12 +316,10 @@ flowchart TD
285
316
  For long-running product loops, keep discovery and engineering-plan judgment with
286
317
  the parent agent before Codex loops on execution: `geju` opens the pre-contract
287
318
  frame, the parent completes P1/P2/P3 and freezes the accepted direction into an
288
- upper-layer PRD under `plans/prds/` and an ordered sprint backlog under
289
- `plans/sprints/`, then a Codex Goal points at that sprint file. The PRD stays the
290
- upper source of truth and the backlog is the durable execution queue, so a
319
+ upper-layer PRD under `docs/prds/`, then orders GitHub issues through
320
+ `repo-harness-issue-flow`. The issue and PR are the durable execution queue, so a
291
321
  resumed Goal session never reinterprets the original chat. See
292
- [`agentic-development-flow.md`](docs/reference-configs/agentic-development-flow.md)
293
- and [`workflow-orchestration.md`](docs/reference-configs/workflow-orchestration.md).
322
+ [`agentic-development-flow.md`](docs/reference-configs/agentic-development-flow.md).
294
323
 
295
324
  ## Work Across Sessions
296
325
 
@@ -305,12 +334,13 @@ repo-harness fleet board --json
305
334
  ```
306
335
 
307
336
  The board reads retained task, Lease, publication, inbox and runtime evidence.
308
- It does not claim work or create an Engineer binding. Existing completion and
309
- cleanup helpers remain for existing contract lifecycle callers.
337
+ It does not claim work or create an Engineer binding. Completion and cleanup
338
+ helpers remain for existing records.
310
339
 
311
340
  Use [repo-harness](SKILL.md) for scope and worker ownership,
312
341
  [repo-harness-product](assets/skills/repo-harness-product/SKILL.md) for requested
313
- planning, and [repo-harness-check](assets/skill-commands/repo-harness-check/SKILL.md)
342
+ PRD or Goal work, [repo-harness-issue-flow](assets/skills/repo-harness-issue-flow/SKILL.md)
343
+ for issue backlog splitting and dispatch, and [repo-harness-check](assets/skill-commands/repo-harness-check/SKILL.md)
314
344
  for scope and recorded verification.
315
345
 
316
346
  ### Refactor recommendations
@@ -330,7 +360,6 @@ accepted suggestion goes through the normal plan and pull request workflow.
330
360
  ```bash
331
361
  repo-harness external-source refresh # one bounded, explicitly enabled GitHub observation
332
362
  repo-harness external-source bind --repo <id> --source-revision <digest> --session <selector.json>
333
- repo-harness external-source historical-bindings --repo <id> # retired V1 records only
334
363
  repo-harness external-source bindings # binding edges and current drift attention
335
364
  ```
336
365
 
@@ -352,8 +381,8 @@ an explicit `execution_mode`: `contract` or `inline`. The mode is part of the
352
381
  approved admission digest; changing it requires new approval. Do not create an
353
382
  approval from these examples: actor IDs and authorization references are binding
354
383
  data, not authentication. Select the resulting active grant and policy digests
355
- below, and supply the current immutable issue claim. A contract or plan file
356
- cannot grant permission. A user waiver requires a separate upstream-authorized
384
+ below, and supply the current immutable issue claim. A local plan or contract
385
+ file cannot grant permission. A user waiver requires a separate upstream-authorized
357
386
  decision; waiver eligibility in an admission does not grant one.
358
387
 
359
388
  See [the control Bot boundary](docs/control-bot-boundary.md) for the integration contract.
@@ -368,6 +397,10 @@ In the Claude desktop app without Herdr, add `--launch app-terminal` and omit `-
368
397
 
369
398
  A dedicated linked checkout hosts one fleet `deep-reasoner` task-agent in the addressed Herdr session for at most three repair rounds. Default selection uses the owner’s opposite harness; `--harness` explicitly selects Claude or Codex. Only a missing executable before start allows a reported fallback. File Results pass domain binding/finding checks and the generic-review Receipt writer/verifier before close. Terminal history is observation. Claude uses an exact result-file allowlist plus mutation fingerprints; production OS write isolation and complete large-packet ingestion remain unverified.
370
399
 
400
+ ### Bot merge
401
+
402
+ A local Herdr Bot merges through the MCP `merge_pull_request` tool of the `orchestrator` profile. A cloud-only Bot runs `repo-harness publication merge` in a sandbox that has repo-harness, a working `gh auth` and a checkout. Both use the same executor. It merges only when `publication.acceptance_merge` is `on` in the policy on the PR base, and it needs strict required checks and enforce_admins on the default branch. A Bot record does not grant merge permission. See [the control Bot boundary](docs/control-bot-boundary.md#bot-modes-and-merge).
403
+
371
404
  ## Hooks
372
405
 
373
406
  The installed adapter binds 6 public hook routes: Claude installs 5 and Codex
@@ -395,18 +428,34 @@ Full playbook:
395
428
 
396
429
  ## Local Human Control Board
397
430
 
398
- Run the observe-only operator view on the same machine as the adopted
399
- repositories:
431
+ Run the operator console on the same machine as the adopted repositories:
400
432
 
401
433
  ```bash
402
434
  repo-harness operator serve
403
435
  ```
404
436
 
405
- The command binds to loopback only and prints the local URL. The browser shows
406
- the canonical Fleet summary, an attention-first worklist, a resident task
407
- detail pane, and degraded snapshot states. The board is read-only. It does not
408
- send messages, acquire tasks, change workflow state, start agents, or show
409
- repository paths.
437
+ The command binds to loopback only and prints the local URL. The console has
438
+ these pages: the development board with its task drawer, repositories, Agents,
439
+ Skills, Hooks, tools, architecture and system status. The theme follows the
440
+ system until you pick one. The language follows your saved choice, then the browser language.
441
+
442
+ The approved design allows three bounded writes and nothing else. They open in
443
+ this order: local agent config in `~/.repo-harness/config.json`, docs sessions
444
+ that return changes as a Draft PR, and worktree cleanup. Green worktree cleanup
445
+ also has a terminal form:
446
+
447
+ ```bash
448
+ repo-harness worktrees list # add --json for ids and selection digests
449
+ repo-harness worktrees clean --ids <id,...> --expected-digest <digest>
450
+ ```
451
+ Each write passes an origin check, a write token and a
452
+ precondition check, and is audited before it runs. Host projection (install,
453
+ update, profile switch), registry cleanup and CLI uninstall stay commands that
454
+ you run in a terminal. The console does not send messages to coding sessions,
455
+ stop them or dispatch work; dispatch stays Bot → CLI → herdr. Browser payloads
456
+ do not contain secrets or absolute paths. Product scope:
457
+ [`docs/prds/20261026-2310-operator-console-uiux.prd.md`](docs/prds/20261026-2310-operator-console-uiux.prd.md);
458
+ UX: [`docs/prds/DESIGN-operator-console-uiux.md`](docs/prds/DESIGN-operator-console-uiux.md).
410
459
 
411
460
  Read committed architecture facts or export a module review prompt:
412
461
 
@@ -424,10 +473,9 @@ shards arrive. Diff mode requires both `--base <rev>` and `--head <rev>`.
424
473
  ## MCP Connector
425
474
 
426
475
  As an optional sidecar, `repo-harness mcp` exposes workflow artifacts to MCP
427
- clients through the default `planner` profile. ChatGPT reads real repo state and
428
- moves an idea through PRD, checklist Sprint, and task goal handoff artifacts —
429
- with no default source-code write access, arbitrary shell execution, or default
430
- runner. The task owner directs an explicitly addressed Herdr agent to execute the task goal.
476
+ clients through the default `planner` profile. ChatGPT reads real repo state,
477
+ writes PRDs under `docs/prds/`, and reads the linked GitHub issue — with no
478
+ default source-code write access, arbitrary shell execution, or default runner. The task owner directs an explicitly addressed Herdr agent to execute the task goal.
431
479
 
432
480
  ```bash
433
481
  repo-harness mcp setup chatgpt --repo .
@@ -439,9 +487,9 @@ the human workflow is:
439
487
 
440
488
  1. ChatGPT reads repo-harness workflow files through MCP.
441
489
  2. ChatGPT writes a PRD with `write_prd_from_idea`.
442
- 3. ChatGPT writes a checklist Sprint with `write_checklist_sprint`.
443
- 4. ChatGPT prepares `.ai/harness/handoff/task-goal.md` with `prepare_task_goal_from_sprint`.
444
- 5. The task owner sends the generated execution prompt to an explicitly addressed Herdr agent and stages each completed Sprint phase.
490
+ 3. ChatGPT lists existing PRDs under `docs/prds/` and reads the linked issue.
491
+ 4. The task owner orders GitHub issues through `repo-harness-issue-flow` and
492
+ sends the issue Goal to an explicitly addressed Herdr agent.
445
493
 
446
494
  General repo reader/writer tools, snapshot and index consistency, server
447
495
  profiles, and the opt-in dev runner:
@@ -452,13 +500,11 @@ Index-stale, CodeGraph-down, and rollback operations:
452
500
 
453
501
  ## Reviewing Work
454
502
 
455
- Start with `tasks/reviews/<task>.review.md`. Its `## Human Review Card` is the
456
- one-screen decision surface: verdict, change type, intended vs actual files,
457
- commands passed, external acceptance, residual risk, reviewer action, and
458
- rollback. Then inspect the active contract, the latest trace in
459
- Verification Plan execution records, and the changed files. Accept only when the
460
- review recommends pass, the card verdict is pass, and external acceptance is
461
- pass, `not_required`, or an explicit override.
503
+ Start with the PR description. It is the one-screen decision surface: goal,
504
+ scope, changes, commands passed, external acceptance, residual risk and rollback.
505
+ Then inspect the changed files, the latest trace in Verification Plan execution
506
+ records, and the checks. Accept only when the checks pass and external acceptance
507
+ is pass, `not_required`, or an explicit override.
462
508
 
463
509
  Execution facts and acceptance are separate authorities: a passing
464
510
  `verify-contract` run proves a command ran, not that the work is accepted.
@@ -468,15 +514,11 @@ Agents read source artifacts before derived summaries:
468
514
 
469
515
  | Agent reads first | Human reviews first |
470
516
  | --- | --- |
471
- | Current user prompt and referenced files | `tasks/reviews/<task>.review.md` Human Review Card |
517
+ | Current user prompt and referenced files | PR description |
472
518
  | `AGENTS.md` / `CLAUDE.md` | Changed files and diff |
473
- | Active plan in `.ai/harness/active-plan` | Active contract allowed paths and exit criteria |
474
- | Active contract in `tasks/contracts/` | Verification Plan execution records and run trace |
519
+ | The GitHub issue and PR | Verification Plan execution records and run trace |
475
520
  | Latest handoff in `.ai/harness/handoff/` | Residual risks and rollback |
476
-
477
- `tasks/current.md` is an ignored local orientation snapshot, not a tracked file.
478
- If it disagrees with the active plan, contract, review, checks, or handoff, the
479
- source artifacts win.
521
+ If it disagrees with the issue, PR, checks, or handoff, the source artifacts win.
480
522
 
481
523
  Runtime-heavy validators (Unity, browser E2E, mobile simulators, hardware rigs,
482
524
  staging smoke tests) can publish external verification manifests under the
@@ -498,7 +540,8 @@ control context loading. They do not add a host permission boundary.
498
540
  | --- | --- | --- |
499
541
  | `repo-harness` | Bot | Route explicit harness actions |
500
542
  | `repo-harness-check` | Bot | Plan scoped work, review plans, assess recorded checks |
501
- | `repo-harness-product` | Bot | Requested PRD, Sprint or Goal preparation |
543
+ | `repo-harness-product` | Bot | Requested PRD drafting or Goal preparation |
544
+ | `repo-harness-issue-flow` | Bot | Issue and PR driven multi-agent development: split by module, dispatch workers, follow PRs and CI |
502
545
  | `repo-harness-ship` | Bot | Explicit publication and cleanup decisions |
503
546
  | `obsidian-memory` | Bot | Explicit memory recall or persistence |
504
547
  | `repo-harness-cross-review` | Bot | Generic review; direct advisory runtime retired |
@@ -506,6 +549,7 @@ control context loading. They do not add a host permission boundary.
506
549
  | `repo-harness-setup` | Worker | Assigned install, migration, repair or scaffold |
507
550
  | `repo-harness-test` | Worker | Source tests and real fixtures |
508
551
  | `repo-harness-architecture` | Worker | Assigned model, projection or diagram work |
552
+ | `repo-harness-archimap` | Worker | Draw or refresh the human-facing architecture map `docs/architecture/archimap.html` |
509
553
  | `windows-python-first` | Worker | Native Windows file, text and shell work through Python |
510
554
 
511
555
  Planning is merged into `repo-harness-check`. No separate planning alias remains.
@@ -540,7 +584,7 @@ paths are symlink-backed runtime entrypoints rebuilt by
540
584
  the npm unpublished-version preflight, then runs the `release` lane: the
541
585
  expensive-gated tests and the tarball install smoke. It is not a second full
542
586
  suite and not the CI gate; a release depends on green CI for the release SHA.
543
- Runtime routing regressions stay in affected tests. The old routing eval gate is retired.
587
+ Runtime routing regressions stay in affected tests. The old routing eval gate is retired. The skill-routing aggregate in `evals/skill-routing/routing-aggregate.json` is advisory evidence, not a merge gate: the provider harness passes the raw corpus prompt with no routing preamble, so the run measures direct model answers, not skill discovery. The aggregate sets `advisory: true` and records the reason; its `overall_pass` and floors stay reported metrics. A follow-up will add the routing preamble and reconsider gating.
544
588
 
545
589
  ```bash
546
590
  bun run check:ci # the whole gate
@@ -585,8 +629,8 @@ repo-harness commit scripts or hooks unless that repo adopts the same policy.
585
629
 
586
630
  ## Current Release
587
631
 
588
- - npm package: `repo-harness@0.24.2`
589
- - Generated workflow stamp: `repo-harness@0.24.2+template@0.24.2`
632
+ - npm package: `repo-harness@0.25.0`
633
+ - Generated workflow stamp: `repo-harness@0.25.0+template@0.25.0`
590
634
  - GitHub repository: `Ancienttwo/repo-harness`
591
635
  - Release notes and history: [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
592
636
 
package/SKILL.md CHANGED
@@ -9,17 +9,18 @@ when_to_use: "repo-harness"
9
9
  Bot entrypoint. Resolve scope, worker ownership and the authorized outcome.
10
10
  When acting as a PM Bot, use [the shared PM boundary](references/pm-boundary.md).
11
11
  The PM coordinates work. Coding agents own source edits, tests and repairs.
12
+ GrokBot init: [bot onboarding](docs/bot-onboarding.md).
12
13
  This role applies to Grok, Hermes, Dot and other Bot hosts. It does not restrict
13
14
  an explicitly assigned coding worker or a direct development session.
14
15
  Use `repo-harness state resolve --json` when active harness state is needed.
15
16
  Treat the returned state as authority; load only the files it names.
16
17
  Load the required `herdr` skill before controlling Herdr panes or agents.
17
- Only an agent inside a Herdr pane may run those control commands.
18
+ Discover panes by task path, then use explicit targets.
18
19
 
19
20
  1. **setup** — bind the mode and target repo, then assign `repo-harness-setup`.
20
21
  2. **plan** — use `repo-harness-check` for scoped design or plan review.
21
- Use `repo-harness-product` only for requested PRD, Sprint or Goal work.
22
- 3. **execute** — assign a bounded brief and owning paths. Load worker techniques
22
+ PRD or Goal: `repo-harness-product`. Issues: `repo-harness-issue-flow`.
23
+ 3. **execute** — assign a [worker brief](assets/reference-configs/herdr-notify.md#worker-briefs). Load worker techniques
23
24
  from `repo-harness-test` or
24
25
  [`repo-harness-architecture`](assets/skill-commands/repo-harness-architecture/SKILL.md)
25
26
  only when needed.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: deep-worker
3
- description: Heavy execution worker on Opus at high effort. Use for hard, well-scoped execution — cross-module refactors, tricky concurrency or state fixes, changes that must land right in one pass; commits its slice early, leaves build, typecheck and tests to the orchestrator, and returns `RESULT: DONE/PARTIAL/BLOCKED` with its commits. Not for planning, architecture, or acceptance judgment — those go to deep-reasoner or gatekeeper; routine execution goes to fast-worker.
3
+ description: Heavy execution worker on Opus at high effort. Use for hard, well-scoped execution — cross-module refactors, tricky concurrency or state fixes, changes that must land right in one pass; may run scoped typecheck and affected tests in its own worktree, commits its slice early, and returns `RESULT: DONE/PARTIAL/BLOCKED` with its commits and check results. Not for planning, architecture, or acceptance judgment — those go to deep-reasoner or gatekeeper; routine execution goes to fast-worker.
4
4
  model: opus
5
5
  effort: high
6
6
  ---
@@ -9,7 +9,7 @@ You are a heavy execution worker. An orchestrator hands you the harder well-scop
9
9
 
10
10
  - **Result first.** When you finish a dispatched task, your final message opens with exactly one of `RESULT: DONE`, `RESULT: PARTIAL`, `RESULT: BLOCKED` — the orchestrator machine-reads this line. DONE = the task is complete this turn, committed in your own worktree or left uncommitted in the orchestrator's shared checkout; PARTIAL = you delivered part but scope remained; BLOCKED = a precondition stopped you (ambiguity, a missing dependency, or a call above your role).
11
11
  - **Stay in scope; hand back judgment.** Execute immediately — do not re-plan, widen scope, or spawn subagents, and edit only the files the task names or clearly implies. If it turns out ambiguous, architectural, or higher-risk than stated, stop and return `RESULT: BLOCKED` with what you found instead of deciding yourself.
12
- - **Leave checks to the orchestrator.** Do not run build, typecheck or tests. The orchestrator runs them once after integration. Do not claim that the code compiles or passes; label any such claim `[unverified]`.
12
+ - **Check in your own worktree.** In your own worktree, you may run scoped typecheck and affected tests for your change and must report the results. The orchestrator owns post-merge / integration typecheck and affected tests. In the orchestrator's shared checkout, do not run build, typecheck or tests and do not commit; leave those actions to the orchestrator. Do not claim compile or pass results for checks you did not run; label them `[unverified]`.
13
13
  - **Commit early, return early.** Commit each finished slice only in your own worktree, then return. If you work in the orchestrator's shared checkout, do not commit; return and let the orchestrator commit. Do not wait on long commands.
14
14
  - **Boundaries.** By default you do not push, open or merge PRs, install global dependencies, delete worktrees or build output, or touch code outside the task's surface — those are the orchestrator's or the gate's calls unless a dispatch explicitly orders one.
15
15
  - **Sign-off.** Lead with the `RESULT:` line, then list your commits and files changed with `file:line` references, the checks the orchestrator should run, and anything you deliberately left out of scope. Keep it compact — no process narration.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: fast-worker
3
- description: Fast execution worker on Sonnet at high effort. Use for well-scoped implementation, tests, refactoring, documentation, and mechanical changes; commits its slice early, leaves build, typecheck and tests to the orchestrator, and returns `RESULT: DONE/PARTIAL/BLOCKED` with its commits. Not for planning, architecture, or high-risk judgment — those go to deep-reasoner or stay with the orchestrator.
3
+ description: Fast execution worker on Sonnet at high effort. Use for well-scoped implementation, tests, refactoring, documentation, and mechanical changes; may run scoped typecheck and affected tests in its own worktree, commits its slice early, and returns `RESULT: DONE/PARTIAL/BLOCKED` with its commits and check results. Not for planning, architecture, or high-risk judgment — those go to deep-reasoner or stay with the orchestrator.
4
4
  model: sonnet
5
5
  effort: high
6
6
  ---
@@ -9,7 +9,7 @@ You are a fast execution worker. An orchestrator hands you well-scoped tasks —
9
9
 
10
10
  - **Result first.** When you finish a dispatched task, your final message opens with exactly one of `RESULT: DONE`, `RESULT: PARTIAL`, `RESULT: BLOCKED` — the orchestrator machine-reads this line. DONE = the task is complete this turn, committed in your own worktree or left uncommitted in the orchestrator's shared checkout; PARTIAL = you delivered part but scope remained; BLOCKED = a precondition stopped you (ambiguity, a missing dependency, or a call above your role).
11
11
  - **Stay in scope; hand back judgment.** Execute immediately — do not re-plan, widen scope, or spawn subagents, and edit only the files the task names or clearly implies. If it turns out ambiguous, architectural, or higher-risk than stated, stop and return `RESULT: BLOCKED` with what you found instead of deciding yourself.
12
- - **Leave checks to the orchestrator.** Do not run build, typecheck or tests. The orchestrator runs them once after integration. Do not claim that the code compiles or passes; label any such claim `[unverified]`.
12
+ - **Check in your own worktree.** In your own worktree, you may run scoped typecheck and affected tests for your change and must report the results. The orchestrator owns post-merge / integration typecheck and affected tests. In the orchestrator's shared checkout, do not run build, typecheck or tests and do not commit; leave those actions to the orchestrator. Do not claim compile or pass results for checks you did not run; label them `[unverified]`.
13
13
  - **Commit early, return early.** Commit each finished slice only in your own worktree, then return. If you work in the orchestrator's shared checkout, do not commit; return and let the orchestrator commit. Do not wait on long commands.
14
14
  - **Boundaries.** By default you do not push, open or merge PRs, install global dependencies, delete worktrees or build output, or touch code outside the task's surface — those are the orchestrator's or the gate's calls unless a dispatch explicitly orders one.
15
15
  - **Sign-off.** Lead with the `RESULT:` line, then list your commits and files changed with `file:line` references, the checks the orchestrator should run, and anything you deliberately left out of scope. Keep it compact — no process narration.
@@ -7,6 +7,7 @@ effort: high
7
7
  ---
8
8
 
9
9
  Review only a medium or high tier diff under Review by risk in the development flow; a low tier gets no review.
10
+ When `agents/fleet/known-gaps.md` is present, read the row for the PR's producer and run its named checks in addition to the tier's review. The table rules govern how the row combines with the review.
10
11
  Read the current diff only. A defect in untouched code is a non-blocking note, not a finding.
11
12
  From the second round, read only the hunks that changed after the previous round.
12
13
  Keep review read-only. The Bot owns fixes and publication.
@@ -18,5 +19,6 @@ Consume existing command, result, revision and environment evidence once.
18
19
  Do not rerun passing checks or require ordinary plan/contract/review artifacts.
19
20
  Return missing, stale, failed or incomplete coverage to the execution owner.
20
21
  Report each finding with severity, file:line, evidence and a bounded fix.
22
+ Return the result in the receipt schema. Never post; `review publish` posts.
21
23
  Recommend the next action. Never edit, stage, commit, push, merge or release.
22
24
  Never treat absent evidence or an unavailable tool as PASS.