@joshuafolkken/kit 1.1471.0 → 1.1784.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 (895) hide show
  1. package/.claude/agents/investigator.md +1 -1
  2. package/.claude/settings.json +6 -6
  3. package/.claude/skills/epic-commands/SKILL.md +26 -77
  4. package/.claude/skills/epic-commands/epic-bundle.md +12 -6
  5. package/.claude/skills/epic-commands/execution-waves.md +1 -2
  6. package/.claude/skills/verify-ui/SKILL.md +1 -2
  7. package/.claude/skills/workflow-commands/SKILL.md +12 -14
  8. package/.claude/skills/workflow-commands/background-commands.md +8 -12
  9. package/.claude/skills/workflow-commands/backlogrun-child.md +13 -18
  10. package/.claude/skills/workflow-commands/backlogrun-handoff-report.md +7 -25
  11. package/.claude/skills/workflow-commands/backlogrun-lanes.md +23 -28
  12. package/.claude/skills/workflow-commands/backlogrun-park.md +16 -31
  13. package/.claude/skills/workflow-commands/backlogrun-progress.md +12 -21
  14. package/.claude/skills/workflow-commands/backlogrun-recovery.md +12 -12
  15. package/.claude/skills/workflow-commands/backlogrun-steps.md +12 -20
  16. package/.claude/skills/workflow-commands/backlogrun.md +32 -51
  17. package/.claude/skills/workflow-commands/chain-rule.md +18 -11
  18. package/.claude/skills/workflow-commands/delegation.md +13 -8
  19. package/.claude/skills/workflow-commands/entry-sequence.md +10 -12
  20. package/.claude/skills/workflow-commands/followup.md +10 -35
  21. package/.claude/skills/workflow-commands/fullrun-steps.md +38 -49
  22. package/.claude/skills/workflow-commands/fullrun.md +6 -8
  23. package/.claude/skills/workflow-commands/halfrun.md +20 -32
  24. package/.claude/skills/workflow-commands/into-target.md +1 -2
  25. package/.claude/skills/workflow-commands/issue-comments.md +19 -15
  26. package/.claude/skills/workflow-commands/issue-scout.md +5 -4
  27. package/.claude/skills/workflow-commands/kickoff.md +24 -23
  28. package/.claude/skills/workflow-commands/latest-gate.md +9 -18
  29. package/.claude/skills/workflow-commands/needs-human-review.md +11 -19
  30. package/.claude/skills/workflow-commands/observation-filing.md +4 -50
  31. package/.claude/skills/workflow-commands/observation-ledger.md +5 -10
  32. package/.claude/skills/workflow-commands/pre-gate-cut.md +22 -44
  33. package/.claude/skills/workflow-commands/prerequisite.md +11 -18
  34. package/.claude/skills/workflow-commands/progress-watcher.md +3 -8
  35. package/.claude/skills/workflow-commands/prrun.md +6 -12
  36. package/.claude/skills/workflow-commands/retrospective.md +5 -5
  37. package/.claude/skills/workflow-commands/split-assessment.md +14 -4
  38. package/.claude/skills/workflow-commands/target-repository.md +1 -2
  39. package/.claude/skills/workflow-commands/working-tree-hold.md +11 -13
  40. package/.codex/hooks.json +6 -6
  41. package/.github/actions/setup-node/action.yml +10 -1
  42. package/.github/actions/setup-pnpm/action.yml +1 -1
  43. package/.github/dependabot.yml +16 -0
  44. package/.github/release.yml +0 -2
  45. package/.github/workflows/ci.yml +121 -11
  46. package/.github/workflows/publish.yml +10 -3
  47. package/.github/workflows/sonar-qube.yml +1 -0
  48. package/.prettierignore +2 -0
  49. package/.vscode/tasks.json +1 -2
  50. package/CLAUDE.md +4 -8
  51. package/README.md +4 -2
  52. package/SECURITY.md +1 -1
  53. package/cspell/index.yaml +7 -0
  54. package/dist/CLAUDE.md +4 -8
  55. package/dist/commands/document-read-cli.js +882 -0
  56. package/dist/commands/{document-section-cli.js → document-section-main.js} +137 -62
  57. package/dist/commands/read-set-cli.js +1867 -0
  58. package/dist/commands/run-prep-main.js +21653 -0
  59. package/dist/commands/run-step-cli.js +23880 -0
  60. package/dist/config-merge/index.js +5 -1
  61. package/dist/hooks/audit-provision.js +20 -35
  62. package/dist/hooks/{chunk-DGT54IH5.js → chunk-AZX4FGQ3.js} +63 -17
  63. package/dist/hooks/chunk-CWMBGKYW.js +6483 -0
  64. package/dist/hooks/chunk-O2YBIDSI.js +4306 -0
  65. package/dist/hooks/{chunk-AS74OU3D.js → chunk-PT5R6UJD.js} +4582 -2118
  66. package/dist/hooks/chunk-TUIFS5E7.js +72 -0
  67. package/dist/hooks/{chunk-723HKZO5.js → chunk-VWWCFGWK.js} +1 -1
  68. package/dist/hooks/{chunk-E7OIKX5Z.js → chunk-WR2KQAYZ.js} +1863 -382
  69. package/dist/hooks/{chunk-KC5AK2GF.js → chunk-XGBNSWEI.js} +248 -46
  70. package/dist/hooks/chunk-YCDOIR3I.js +3456 -0
  71. package/dist/hooks/codex-hook-adapter.js +10 -19
  72. package/dist/hooks/format-edited.js +5 -5
  73. package/dist/hooks/inputs.json +436 -257
  74. package/dist/hooks/pretool-guard.js +7 -22
  75. package/dist/hooks/session-lang.js +380 -42
  76. package/dist/hooks/stop-guard.js +8711 -782
  77. package/dist/josh.js +5263 -997
  78. package/dist/self-sync-guard/index.js +74 -10
  79. package/dist/version/index.js +115 -406
  80. package/eslint/base.js +1 -1
  81. package/lefthook/base.yml +8 -4
  82. package/package.json +17 -53
  83. package/pnpm-workspace.yaml +4 -2
  84. package/prompts/coding-standards.md +1 -1
  85. package/prompts/collaboration-workflow/file-edits.md +1 -9
  86. package/prompts/collaboration-workflow/gh-rest.md +1 -2
  87. package/prompts/collaboration-workflow/issue-citation.md +2 -4
  88. package/prompts/collaboration-workflow/issue-template.md +42 -17
  89. package/prompts/collaboration-workflow/lane-instructions.md +34 -0
  90. package/prompts/collaboration-workflow/measurement.md +37 -0
  91. package/prompts/collaboration-workflow/operating-rules.md +6 -12
  92. package/prompts/collaboration-workflow/output-bounds.md +4 -9
  93. package/prompts/collaboration-workflow/overview.md +1 -1
  94. package/prompts/collaboration-workflow/plan-comment.md +3 -42
  95. package/prompts/collaboration-workflow/principles.md +19 -8
  96. package/prompts/collaboration-workflow/report-format.md +37 -57
  97. package/prompts/collaboration-workflow/residency.md +12 -8
  98. package/prompts/collaboration-workflow/rule-delivery.md +3 -11
  99. package/prompts/collaboration-workflow/shell-body.md +8 -18
  100. package/prompts/collaboration-workflow/turn-batching.md +4 -6
  101. package/prompts/collaboration-workflow/upstream-interrupt.md +16 -6
  102. package/prompts/collaboration-workflow/wip-cap.md +7 -7
  103. package/prompts/collaboration-workflow.md +4 -7
  104. package/prompts/refactoring.md +1 -1
  105. package/prompts/review-rubric.md +1 -2
  106. package/prompts/review.md +45 -26
  107. package/prompts/testing-guide.md +10 -45
  108. package/scripts/agent/agent-argv.ts +20 -4
  109. package/scripts/agent/agent-event.ts +15 -15
  110. package/scripts/agent/agent-exit-record.ts +13 -1
  111. package/scripts/agent/agent-role-profile.ts +101 -45
  112. package/scripts/agent/agent-safe-text.ts +60 -0
  113. package/scripts/agent/api-auth.ts +41 -0
  114. package/scripts/agent/api-outage.ts +1 -1
  115. package/scripts/agent/claude-agent-argv.ts +14 -0
  116. package/scripts/agent/codex-agent-argv.ts +2 -0
  117. package/scripts/agent/lane-instructions.ts +144 -0
  118. package/scripts/auto-ok/auto-ok-cli.ts +14 -16
  119. package/scripts/auto-ok/auto-ok-judge-read.ts +12 -3
  120. package/scripts/auto-ok/auto-ok-judge-write.ts +46 -19
  121. package/scripts/auto-ok/auto-ok-judge.ts +13 -2
  122. package/scripts/auto-ok/auto-ok-main.ts +17 -0
  123. package/scripts/backlog/backlog-arrival.ts +14 -3
  124. package/scripts/backlog/backlog-budget-cli.ts +7 -33
  125. package/scripts/backlog/backlog-budget-main.ts +16 -0
  126. package/scripts/backlog/backlog-budget.ts +6 -7
  127. package/scripts/backlog/backlog-defect-priority.ts +4 -3
  128. package/scripts/backlog/backlog-drive-adopt.ts +67 -0
  129. package/scripts/backlog/backlog-drive-args.ts +4 -5
  130. package/scripts/backlog/backlog-drive-cli.ts +113 -28
  131. package/scripts/backlog/backlog-drive-hold.ts +162 -0
  132. package/scripts/backlog/backlog-drive-idle.ts +151 -0
  133. package/scripts/backlog/backlog-drive-judge.ts +25 -0
  134. package/scripts/backlog/backlog-drive-memory.ts +126 -0
  135. package/scripts/backlog/backlog-drive-named-offer.ts +5 -10
  136. package/scripts/backlog/backlog-drive-named.ts +54 -7
  137. package/scripts/backlog/backlog-drive-offer-argv.ts +3 -8
  138. package/scripts/backlog/backlog-drive-paused.ts +169 -0
  139. package/scripts/backlog/backlog-drive-restore.ts +39 -8
  140. package/scripts/backlog/backlog-drive-seats.ts +18 -8
  141. package/scripts/backlog/backlog-drive-token-handling.ts +38 -0
  142. package/scripts/backlog/backlog-drive.ts +79 -75
  143. package/scripts/backlog/backlog-next-main.ts +16 -0
  144. package/scripts/backlog/backlog-next-shared.ts +73 -0
  145. package/scripts/backlog/backlog-next.ts +48 -16
  146. package/scripts/backlog/backlog-occupied.ts +69 -0
  147. package/scripts/backlog/backlog-offer-cli.ts +6 -21
  148. package/scripts/backlog/backlog-offer-exclude.ts +15 -0
  149. package/scripts/backlog/backlog-offer-main.ts +12 -0
  150. package/scripts/backlog/backlog-offer.ts +36 -3
  151. package/scripts/backlog/backlog-overlap.ts +22 -4
  152. package/scripts/backlog/backlog-plan-read.ts +6 -2
  153. package/scripts/backlog/backlog-plan.ts +18 -4
  154. package/scripts/backlog/backlog-pool.ts +10 -10
  155. package/scripts/backlog/backlog-rank.ts +10 -2
  156. package/scripts/backlog/backlog-ready.ts +137 -18
  157. package/scripts/backlog/backlog-stalled-detect.ts +109 -36
  158. package/scripts/backlog/backlog-stalled.ts +52 -16
  159. package/scripts/backlog/backlog-wait-cause.ts +86 -0
  160. package/scripts/backlog/backlog-waves.ts +39 -13
  161. package/scripts/backlog/backlogrun-args.ts +19 -7
  162. package/scripts/backlog/backlogrun-cli.ts +19 -5
  163. package/scripts/backlog/backlogrun-launch.ts +6 -0
  164. package/scripts/backlog/backlogrun-restart.ts +97 -0
  165. package/scripts/backlog/backlogrun-stop.ts +79 -7
  166. package/scripts/behavior/behavior-cli.ts +2 -2
  167. package/scripts/behavior/behavior-rules.ts +47 -24
  168. package/scripts/build/build-bin.ts +2 -16
  169. package/scripts/build/build-claude-md.ts +0 -7
  170. package/scripts/build/build-commands.ts +0 -13
  171. package/scripts/build/build-hooks.ts +49 -48
  172. package/scripts/build/hook-bundle-stamp.ts +29 -11
  173. package/scripts/build/local-bin.ts +1 -1
  174. package/scripts/cases/cases-cli.ts +25 -13
  175. package/scripts/cases/cases-interaction-scan.ts +134 -0
  176. package/scripts/cases/cases-interaction.ts +183 -0
  177. package/scripts/cases/cases-logic.ts +39 -6
  178. package/scripts/ci/pr-classification-main.ts +18 -0
  179. package/scripts/ci/pr-classification.ts +10 -17
  180. package/scripts/clone/clone-scan.ts +1 -1
  181. package/scripts/cost-runtime/cost-blocks.ts +22 -37
  182. package/scripts/cost-runtime/cost-cli.ts +31 -14
  183. package/scripts/cost-runtime/cost-main.ts +12 -0
  184. package/scripts/cost-runtime/cost-transcript.ts +1 -0
  185. package/scripts/delegation/delegation-policy.ts +17 -4
  186. package/scripts/delegation/duplicate-read-guard.ts +2 -10
  187. package/scripts/delegation/investigation-guard.ts +15 -73
  188. package/scripts/delegation/investigation-reads.ts +3 -5
  189. package/scripts/dependabot/dependabot-cooldown.ts +194 -0
  190. package/scripts/discovery/repo-discovery.ts +24 -6
  191. package/scripts/doctor/doctor-consumer.ts +2 -5
  192. package/scripts/document/document-byte-budget.ts +9 -6
  193. package/scripts/document/document-scan.ts +1 -1
  194. package/scripts/document/document-section-cli.ts +17 -13
  195. package/scripts/document/document-section-main.ts +12 -0
  196. package/scripts/document/entry-read-budget.ts +2 -2
  197. package/scripts/document/read-set-cli.ts +4 -1
  198. package/scripts/epic/epic-audit-cli.ts +12 -6
  199. package/scripts/epic/epic-audit-orphans.ts +5 -8
  200. package/scripts/epic/epic-audit.ts +52 -1
  201. package/scripts/epic/epic-bundle-apply.ts +137 -0
  202. package/scripts/epic/epic-bundle-cli.ts +32 -121
  203. package/scripts/epic/epic-bundle-evidence.ts +49 -26
  204. package/scripts/epic/epic-bundle-format.ts +116 -0
  205. package/scripts/epic/epic-bundle-main.ts +17 -0
  206. package/scripts/epic/epic-bundle-referenced.ts +14 -3
  207. package/scripts/epic/epic-bundle.ts +17 -9
  208. package/scripts/epic/epic-busy.ts +5 -12
  209. package/scripts/epic/epic-classify.ts +24 -15
  210. package/scripts/epic/epic-cli-argv.ts +31 -0
  211. package/scripts/epic/epic-cli-decide.ts +42 -0
  212. package/scripts/epic/epic-cli.ts +6 -38
  213. package/scripts/epic/epic-close.ts +112 -55
  214. package/scripts/epic/epic-cross-repo.ts +4 -7
  215. package/scripts/epic/epic-decide.ts +119 -0
  216. package/scripts/epic/epic-decision.ts +9 -0
  217. package/scripts/epic/epic-fetch.ts +4 -0
  218. package/scripts/epic/epic-graph.ts +2 -0
  219. package/scripts/epic/epic-issue.ts +5 -1
  220. package/scripts/epic/epic-label-age.ts +1 -1
  221. package/scripts/epic/epic-lane-offer.ts +39 -4
  222. package/scripts/epic/epic-next-main.ts +24 -0
  223. package/scripts/epic/epic-next.ts +6 -24
  224. package/scripts/epic/epic-outside-blocker.ts +6 -2
  225. package/scripts/epic/epic-parse.ts +9 -3
  226. package/scripts/epic/epic-read.ts +1 -0
  227. package/scripts/epic/epic-reconcile.ts +39 -0
  228. package/scripts/epic/epic-run.ts +10 -1
  229. package/scripts/epic/epic-solo.ts +50 -14
  230. package/scripts/epic/epic.ts +41 -7
  231. package/scripts/exports/unused-members-cli.ts +2 -2
  232. package/scripts/followup/followup-checks-event.ts +8 -3
  233. package/scripts/followup/followup-coderabbit-wait.ts +82 -0
  234. package/scripts/followup/followup-review-gates.ts +81 -0
  235. package/scripts/followup/git-followup-stages.ts +13 -3
  236. package/scripts/followup/git-followup-workflow.ts +31 -60
  237. package/scripts/followup/git-pr-followup-wrapup.ts +9 -14
  238. package/scripts/followup/git-pr-followup.ts +36 -8
  239. package/scripts/fresh-machine/fresh-machine-cli.ts +1 -1
  240. package/scripts/fresh-machine/fresh-machine-run.ts +8 -8
  241. package/scripts/fresh-machine/specs/kit-test-backlogrun.json +1 -1
  242. package/scripts/gate/busy-average.ts +58 -0
  243. package/scripts/gate/check-cpu.ts +60 -0
  244. package/scripts/gate/check-inputs.ts +73 -0
  245. package/scripts/gate/check-reuse.ts +141 -0
  246. package/scripts/gate/command-memory.ts +192 -0
  247. package/scripts/gate/core-admission.ts +218 -28
  248. package/scripts/gate/core-budget-timing.ts +37 -0
  249. package/scripts/gate/core-budget.ts +150 -119
  250. package/scripts/gate/core-wait-record.ts +48 -0
  251. package/scripts/gate/core-wait.ts +162 -0
  252. package/scripts/gate/core-weights.ts +86 -0
  253. package/scripts/gate/free-cores.ts +72 -0
  254. package/scripts/gate/gate-ledger.ts +49 -7
  255. package/scripts/gate/gate-plan.ts +44 -15
  256. package/scripts/gate/gate-report.ts +29 -4
  257. package/scripts/gate/gate-run-steps.ts +195 -0
  258. package/scripts/gate/gate-skip.ts +12 -2
  259. package/scripts/gate/gate-steps.ts +12 -1
  260. package/scripts/gate/held-mark.ts +55 -0
  261. package/scripts/gate/input-fingerprint.ts +42 -0
  262. package/scripts/gate/machine-capacity.ts +124 -31
  263. package/scripts/gate/moved-paths.ts +67 -0
  264. package/scripts/gate/pre-commit-type-check.ts +14 -1
  265. package/scripts/gate/project-checks.ts +5 -12
  266. package/scripts/gate/scoped-green.ts +12 -8
  267. package/scripts/gate/since-green.ts +62 -0
  268. package/scripts/gate/toolchain-inputs.ts +115 -0
  269. package/scripts/gate/verification-gate.ts +65 -129
  270. package/scripts/gate/verification-inputs.ts +250 -0
  271. package/scripts/gh/gh-author-association.ts +96 -9
  272. package/scripts/gh/git-ai-review-scan.ts +4 -2
  273. package/scripts/gh/git-gh-api-path.ts +15 -0
  274. package/scripts/gh/git-gh-branch-rules.ts +73 -0
  275. package/scripts/gh/git-gh-conditional.ts +5 -2
  276. package/scripts/gh/git-gh-issue-read.ts +5 -1
  277. package/scripts/gh/git-gh-issue-rest.ts +1 -0
  278. package/scripts/gh/git-gh-issue-write.ts +77 -17
  279. package/scripts/gh/git-gh-issue.ts +7 -3
  280. package/scripts/gh/git-gh-poll-read.ts +89 -0
  281. package/scripts/gh/git-gh-pr-auto-merge.ts +8 -3
  282. package/scripts/gh/git-gh-pr-rest.ts +1 -1
  283. package/scripts/gh/git-gh-pr-snapshot.ts +33 -20
  284. package/scripts/gh/git-gh-pr.ts +27 -15
  285. package/scripts/gh/git-pr-checks-eval.ts +39 -7
  286. package/scripts/gh/git-pr-checks-parse.ts +39 -9
  287. package/scripts/gh/git-pr-merge-checked.ts +80 -0
  288. package/scripts/gh/git-pr.ts +13 -1
  289. package/scripts/git/base-tree.ts +19 -2
  290. package/scripts/git/changed-file-scope.ts +6 -4
  291. package/scripts/git/changed-paths.ts +18 -1
  292. package/scripts/git/git-diff-reads.ts +27 -2
  293. package/scripts/git/git-grep-hits.ts +85 -0
  294. package/scripts/git/git-location-environment.ts +1 -1
  295. package/scripts/git/git-merge-conflicts.ts +83 -0
  296. package/scripts/git/git-preflight.ts +37 -12
  297. package/scripts/git/git-push-transport.ts +1 -2
  298. package/scripts/git/git-schemas.ts +17 -7
  299. package/scripts/git/git-spawn.ts +1 -2
  300. package/scripts/git/git-status.ts +4 -4
  301. package/scripts/git/main-merge-main.ts +12 -0
  302. package/scripts/git/main-merge-regenerate.ts +78 -0
  303. package/scripts/git/main-merge.ts +39 -14
  304. package/scripts/git/main-sync-main.ts +12 -0
  305. package/scripts/git/main-sync.ts +0 -9
  306. package/scripts/git/stash/git-stash.ts +27 -4
  307. package/scripts/git/stash/{stash-pop-args.ts → stash-args.ts} +13 -10
  308. package/scripts/git/stash/stash-pop-cli.ts +6 -12
  309. package/scripts/git/stash/stash-pop-main.ts +12 -0
  310. package/scripts/git/stash/stash-push-cli.ts +76 -0
  311. package/scripts/git/stash/stash-push-main.ts +12 -0
  312. package/scripts/hooks/batch-guard.ts +5 -16
  313. package/scripts/hooks/check-commit-message-main.ts +8 -0
  314. package/scripts/hooks/check-commit-message.ts +4 -7
  315. package/scripts/hooks/format-edited-file.ts +8 -24
  316. package/scripts/hooks/pre-commit-lint.ts +118 -0
  317. package/scripts/hooks/pre-push-unit.ts +4 -2
  318. package/scripts/hooks/pretool-guard-cli.ts +1 -8
  319. package/scripts/hooks/pretool-guard.ts +57 -69
  320. package/scripts/hooks/reserved-run.ts +67 -8
  321. package/scripts/hooks/run-hook.sh +18 -11
  322. package/scripts/hooks/shell-rules-notice.ts +37 -0
  323. package/scripts/hooks/stop-actions.ts +185 -0
  324. package/scripts/hooks/stop-guard.ts +72 -27
  325. package/scripts/init/hook-command-rewrite.ts +19 -5
  326. package/scripts/init/hook-launch.ts +15 -12
  327. package/scripts/init/init-actions.ts +0 -6
  328. package/scripts/init/init-ai-copy.ts +10 -36
  329. package/scripts/init/init-bootstrap.ts +9 -8
  330. package/scripts/init/init-dry-run-report.ts +1 -1
  331. package/scripts/init/init-dry-run.ts +1 -1
  332. package/scripts/init/init-file-action.ts +7 -9
  333. package/scripts/init/init-logic-json-merge.ts +2 -2
  334. package/scripts/init/init-logic-migrate.ts +9 -82
  335. package/scripts/init/init-logic.ts +3 -2
  336. package/scripts/init/init-main.ts +12 -0
  337. package/scripts/init/init.ts +5 -12
  338. package/scripts/init/kit-development-versions.ts +3 -7
  339. package/scripts/init/kit-written-paths.ts +2 -2
  340. package/scripts/init/project-profile.ts +5 -4
  341. package/scripts/init/tsconfig-preset-migration.ts +2 -1
  342. package/scripts/init/vscode-tasks.ts +1 -1
  343. package/scripts/issue/defect-origin-cli.ts +106 -0
  344. package/scripts/issue/defect-origin-line.ts +60 -0
  345. package/scripts/issue/defect-origin-main.ts +11 -0
  346. package/scripts/issue/defect-origin.ts +114 -0
  347. package/scripts/issue/defect-rate-cli.ts +34 -78
  348. package/scripts/issue/defect-rate.ts +0 -16
  349. package/scripts/issue/defect-report-cli.ts +128 -0
  350. package/scripts/issue/defect-report-format.ts +56 -0
  351. package/scripts/issue/defect-report-main.ts +11 -0
  352. package/scripts/issue/defect-report.ts +160 -0
  353. package/scripts/issue/expected-effect-lint.ts +60 -0
  354. package/scripts/issue/issue-already-done-cli.ts +62 -0
  355. package/scripts/issue/issue-body-or-comment.ts +40 -0
  356. package/scripts/issue/issue-cite-cli.ts +33 -22
  357. package/scripts/issue/issue-cite-main.ts +12 -0
  358. package/scripts/issue/issue-classification.ts +13 -8
  359. package/scripts/issue/issue-comment-cli.ts +10 -24
  360. package/scripts/issue/issue-comment-main.ts +12 -0
  361. package/scripts/issue/issue-evidence-exit.ts +100 -0
  362. package/scripts/issue/issue-file-cli.ts +29 -7
  363. package/scripts/issue/issue-file.ts +19 -19
  364. package/scripts/issue/issue-fold-cli.ts +2 -11
  365. package/scripts/issue/issue-fold-main.ts +12 -0
  366. package/scripts/issue/issue-labels.ts +81 -90
  367. package/scripts/issue/issue-lint-cli.ts +7 -13
  368. package/scripts/issue/issue-lint-main.ts +12 -0
  369. package/scripts/issue/issue-measured-cli.ts +56 -0
  370. package/scripts/issue/issue-merged.ts +19 -2
  371. package/scripts/issue/issue-not-before-label.ts +135 -0
  372. package/scripts/issue/issue-not-before.ts +111 -0
  373. package/scripts/issue/issue-number-shape.ts +15 -1
  374. package/scripts/issue/issue-park.ts +28 -0
  375. package/scripts/issue/issue-plan-cli.ts +151 -0
  376. package/scripts/issue/issue-priority.ts +151 -0
  377. package/scripts/issue/issue-rank.ts +7 -1
  378. package/scripts/issue/issue-read-cli.ts +3 -10
  379. package/scripts/issue/issue-read-main.ts +12 -0
  380. package/scripts/issue/issue-read.ts +29 -5
  381. package/scripts/issue/issue-release-cli.ts +0 -10
  382. package/scripts/issue/issue-release-main.ts +13 -0
  383. package/scripts/issue/issue-release.ts +7 -12
  384. package/scripts/issue/issue-sample-gate.ts +192 -0
  385. package/scripts/issue/issue-sample-source.ts +76 -0
  386. package/scripts/issue/issue-scout-cli.ts +19 -25
  387. package/scripts/issue/issue-scout-main.ts +14 -0
  388. package/scripts/issue/issue-state-cli.ts +0 -10
  389. package/scripts/issue/issue-state-main.ts +12 -0
  390. package/scripts/issue/issue-watch-diff.ts +56 -15
  391. package/scripts/issue/issue-watch.ts +2 -1
  392. package/scripts/issue/issue-wip.ts +2 -7
  393. package/scripts/issue/markdown-section.ts +19 -5
  394. package/scripts/issue/measure-rerun-cli.ts +13 -8
  395. package/scripts/issue/plan-consumers-cli.ts +39 -0
  396. package/scripts/issue/plan-consumers-main.ts +11 -0
  397. package/scripts/issue/plan-consumers-section.ts +55 -0
  398. package/scripts/issue/plan-consumers.ts +127 -0
  399. package/scripts/josh/agent-session-environment.ts +1 -1
  400. package/scripts/josh/command-usage.ts +82 -0
  401. package/scripts/josh/file-map-stamp.ts +49 -16
  402. package/scripts/josh/hook-decision.ts +32 -20
  403. package/scripts/josh/josh-command-map.ts +6 -1
  404. package/scripts/josh/josh-command-types.ts +65 -13
  405. package/scripts/josh/josh-commands-agent-hooks.ts +83 -0
  406. package/scripts/josh/josh-commands-ai.ts +169 -157
  407. package/scripts/josh/josh-commands-backlog.ts +82 -16
  408. package/scripts/josh/josh-commands-clone.ts +1 -0
  409. package/scripts/josh/josh-commands-development.ts +111 -71
  410. package/scripts/josh/josh-commands-document.ts +43 -1
  411. package/scripts/josh/josh-commands-epic.ts +171 -0
  412. package/scripts/josh/josh-commands-hooks.ts +31 -2
  413. package/scripts/josh/josh-commands-issue-write.ts +181 -0
  414. package/scripts/josh/josh-commands-issue.ts +124 -24
  415. package/scripts/josh/josh-commands-lane.ts +112 -2
  416. package/scripts/josh/josh-commands-lint.ts +19 -8
  417. package/scripts/josh/josh-commands-maintenance.ts +112 -4
  418. package/scripts/josh/josh-commands-pause.ts +29 -0
  419. package/scripts/josh/josh-commands-progress.ts +87 -0
  420. package/scripts/josh/josh-commands-project.ts +138 -9
  421. package/scripts/josh/josh-commands-review.ts +124 -0
  422. package/scripts/josh/josh-commands-run.ts +211 -23
  423. package/scripts/josh/josh-commands-ship.ts +169 -0
  424. package/scripts/josh/josh-commands-split.ts +9 -0
  425. package/scripts/josh/josh-commands-versioning.ts +49 -2
  426. package/scripts/josh/josh-commands-workflow.ts +149 -6
  427. package/scripts/josh/josh-logic.ts +11 -27
  428. package/scripts/josh/josh.ts +14 -5
  429. package/scripts/josh/package-directory.ts +18 -0
  430. package/scripts/josh/process-identity.ts +13 -4
  431. package/scripts/josh/session-language-cli.ts +4 -8
  432. package/scripts/josh/session-language-main.ts +13 -0
  433. package/scripts/josh/session-language.ts +6 -1
  434. package/scripts/josh/shared-cache.ts +90 -0
  435. package/scripts/josh/stamp-file.ts +9 -15
  436. package/scripts/lane/lane-await.ts +51 -12
  437. package/scripts/lane/lane-cache.ts +5 -30
  438. package/scripts/lane/lane-capacity.ts +19 -22
  439. package/scripts/lane/lane-check-stats.ts +97 -0
  440. package/scripts/lane/lane-child-invocation.ts +43 -4
  441. package/scripts/lane/lane-cli.ts +15 -5
  442. package/scripts/lane/lane-close.ts +86 -18
  443. package/scripts/lane/lane-core-wait-stats.ts +66 -0
  444. package/scripts/lane/lane-dispatch.ts +27 -6
  445. package/scripts/lane/lane-gap-stats.ts +156 -0
  446. package/scripts/lane/lane-guard-policy.ts +2 -2
  447. package/scripts/lane/lane-handoff.ts +76 -1
  448. package/scripts/lane/lane-held-stats.ts +129 -0
  449. package/scripts/lane/lane-install.ts +16 -15
  450. package/scripts/lane/lane-launch-cli.ts +0 -9
  451. package/scripts/lane/lane-launch-main.ts +12 -0
  452. package/scripts/lane/lane-ledger-schema.ts +266 -0
  453. package/scripts/lane/lane-ledger.ts +108 -97
  454. package/scripts/lane/lane-limit-cli.ts +19 -9
  455. package/scripts/lane/lane-measure-cli.ts +58 -10
  456. package/scripts/lane/lane-open.ts +9 -1
  457. package/scripts/lane/lane-parked.ts +3 -3
  458. package/scripts/lane/lane-pause-cli.ts +130 -0
  459. package/scripts/lane/lane-pause.ts +158 -0
  460. package/scripts/lane/lane-preserve.ts +29 -1
  461. package/scripts/lane/lane-process-table.ts +166 -0
  462. package/scripts/lane/lane-reap-settle.ts +124 -0
  463. package/scripts/lane/lane-reap.ts +50 -15
  464. package/scripts/lane/lane-registry.ts +33 -10
  465. package/scripts/lane/lane-residents.ts +162 -0
  466. package/scripts/lane/lane-restart.ts +26 -27
  467. package/scripts/lane/lane-round-two-stats.ts +49 -0
  468. package/scripts/lane/lane-sampler.ts +4 -0
  469. package/scripts/lane/lane-session-action.ts +160 -0
  470. package/scripts/lane/lane-session-broker.ts +134 -134
  471. package/scripts/lane/lane-snapshot-trace.ts +84 -0
  472. package/scripts/lane/lane-spans.ts +51 -0
  473. package/scripts/lane/lane-spent.ts +6 -3
  474. package/scripts/lane/lane-stage-stats.ts +7 -2
  475. package/scripts/lane/lane-state.ts +302 -0
  476. package/scripts/lane/lane-stats.ts +58 -4
  477. package/scripts/lane/lane-stop-stats.ts +113 -37
  478. package/scripts/lane/lane-test-related-stats.ts +127 -0
  479. package/scripts/lane/lane-transcript-calls.ts +145 -0
  480. package/scripts/lane/lane-transcript-stats.ts +168 -0
  481. package/scripts/lane/lane-vacant.ts +13 -3
  482. package/scripts/lane/lane-withdraw-cli.ts +72 -0
  483. package/scripts/lane/lane-withdraw.ts +183 -0
  484. package/scripts/lane/process-directories.ts +70 -0
  485. package/scripts/lane/process-lane-marks.ts +94 -0
  486. package/scripts/lib/atomic-write.ts +62 -0
  487. package/scripts/lib/buffered-process.ts +12 -5
  488. package/scripts/lib/cli-flags.ts +53 -0
  489. package/scripts/lib/figure-format.ts +63 -0
  490. package/scripts/lib/json-value.ts +9 -1
  491. package/scripts/lib/package-manifest.ts +35 -0
  492. package/scripts/lib/read-file.ts +3 -1
  493. package/scripts/lib/stamped-memo.ts +63 -0
  494. package/scripts/lib/stdout-on-stderr.ts +24 -0
  495. package/scripts/lib/timeouts.ts +9 -0
  496. package/scripts/lib/transcript-record.ts +91 -0
  497. package/scripts/lines/effective-limit.ts +1 -1
  498. package/scripts/lint/eslint-cache-dependencies.ts +145 -0
  499. package/scripts/lint/eslint-daemon.ts +265 -0
  500. package/scripts/lint/format.ts +14 -5
  501. package/scripts/lint/import-graph.ts +279 -0
  502. package/scripts/lint/lint-gate-scope.ts +102 -0
  503. package/scripts/lint/lint-parallel-main.ts +19 -0
  504. package/scripts/lint/lint-parallel.ts +72 -33
  505. package/scripts/lint/lint-related-scope.ts +33 -24
  506. package/scripts/lint/lint-related.ts +38 -6
  507. package/scripts/notify/confirmation-options.ts +1 -2
  508. package/scripts/notify/telegram-notify.ts +20 -20
  509. package/scripts/notify/telegram-test-logic.ts +0 -1
  510. package/scripts/notify/telegram-test-main.ts +8 -0
  511. package/scripts/notify/telegram-test.ts +12 -11
  512. package/scripts/observations/observation-ledger.ts +13 -0
  513. package/scripts/observations/observations-flush-landing.ts +5 -3
  514. package/scripts/observations/observations-flush.ts +6 -1
  515. package/scripts/overrides/overrides-check.ts +2 -5
  516. package/scripts/overrides/overrides-files.ts +2 -1
  517. package/scripts/overrides/overrides-logic.ts +3 -6
  518. package/scripts/package/verify-optional-eslint-install.ts +8 -6
  519. package/scripts/propagate/propagate-publish.ts +2 -7
  520. package/scripts/propagate/propagate-targets.ts +4 -12
  521. package/scripts/refactor/import-graph.ts +9 -7
  522. package/scripts/release/github-release-runs.ts +17 -6
  523. package/scripts/release/release-approval-prune.ts +18 -0
  524. package/scripts/release/release-history.ts +1 -3
  525. package/scripts/release/release-progress.ts +42 -22
  526. package/scripts/release/release-publish-run.ts +39 -0
  527. package/scripts/release/release-publish.ts +6 -6
  528. package/scripts/release/release-scope-cli.ts +0 -10
  529. package/scripts/release/release-scope-main.ts +12 -0
  530. package/scripts/repo/repo-setting.ts +3 -6
  531. package/scripts/repo/required-checks-logic.ts +6 -15
  532. package/scripts/report/report-format-reference.ts +4 -0
  533. package/scripts/report/report-labels.ts +155 -0
  534. package/scripts/report/report-lint-cli.ts +3 -0
  535. package/scripts/report/report-lint.ts +85 -110
  536. package/scripts/report/report-template-cli.ts +59 -0
  537. package/scripts/report/report-template.ts +112 -0
  538. package/scripts/review/acceptance-map-check.ts +61 -0
  539. package/scripts/review/acceptance-map.ts +206 -0
  540. package/scripts/review/removed-tests-check.ts +86 -0
  541. package/scripts/review/removed-tests.ts +149 -0
  542. package/scripts/review/review-brief-cli.ts +82 -16
  543. package/scripts/review/review-brief-main.ts +12 -0
  544. package/scripts/review/review-brief.ts +31 -3
  545. package/scripts/review/review-code-tree.ts +10 -6
  546. package/scripts/review/review-comment-round.ts +26 -8
  547. package/scripts/review/review-finding-ledger.ts +30 -15
  548. package/scripts/review/review-interaction.ts +94 -0
  549. package/scripts/review/review-readers-scan.ts +163 -0
  550. package/scripts/review/review-record-cli.ts +69 -30
  551. package/scripts/review/review-record-main.ts +12 -0
  552. package/scripts/review/review-round-one-blobs.ts +221 -0
  553. package/scripts/review/review-round2-cli.ts +49 -12
  554. package/scripts/review/review-round2.ts +80 -12
  555. package/scripts/review/review-stamps.ts +19 -1
  556. package/scripts/review/review-stop-log.ts +96 -0
  557. package/scripts/review/review-stops-cli.ts +85 -0
  558. package/scripts/review/review-tree.ts +6 -17
  559. package/scripts/review/review-untouched-readers.ts +146 -0
  560. package/scripts/review/test-titles.ts +118 -0
  561. package/scripts/rules/agent-model.ts +67 -0
  562. package/scripts/rules/bash-triggers.ts +46 -3
  563. package/scripts/rules/decision-oracle-batch.ts +9 -1
  564. package/scripts/rules/decision-oracle.ts +2 -2
  565. package/scripts/rules/delivered-rules.ts +90 -3
  566. package/scripts/rules/destructive-command.ts +8 -1
  567. package/scripts/rules/direct-filing.ts +10 -2
  568. package/scripts/rules/direct-issue-comment.ts +117 -0
  569. package/scripts/rules/direct-pr-create.ts +69 -3
  570. package/scripts/rules/early-heartbeat.ts +2 -1
  571. package/scripts/rules/file-body.ts +7 -0
  572. package/scripts/rules/filing-cap.ts +8 -0
  573. package/scripts/rules/firing-point.ts +6 -5
  574. package/scripts/rules/git-argv.ts +72 -14
  575. package/scripts/rules/git-force.ts +12 -2
  576. package/scripts/rules/guard-remedy.ts +121 -0
  577. package/scripts/rules/implementation-cut-verdict.ts +1 -1
  578. package/scripts/rules/implementation-cut.ts +11 -3
  579. package/scripts/rules/index-guard.ts +8 -1
  580. package/scripts/rules/issue-comments.ts +76 -7
  581. package/scripts/rules/josh-git-bare.ts +7 -0
  582. package/scripts/rules/lane-background.ts +67 -25
  583. package/scripts/rules/lane-carry-conflict.ts +6 -0
  584. package/scripts/rules/lane-direct-tool.ts +74 -0
  585. package/scripts/rules/lane-interactive-ask.ts +9 -2
  586. package/scripts/rules/lane-park.ts +45 -23
  587. package/scripts/rules/lane-split-park.ts +10 -2
  588. package/scripts/rules/lane-switch-main.ts +7 -0
  589. package/scripts/rules/last-prompt.ts +50 -5
  590. package/scripts/rules/oracle-consulted.ts +10 -0
  591. package/scripts/rules/oracle-firing.ts +1 -0
  592. package/scripts/rules/oracle-list-cli.ts +7 -0
  593. package/scripts/rules/permission-guards.ts +3 -0
  594. package/scripts/rules/piped-verification.ts +4 -2
  595. package/scripts/rules/poll-loop.ts +7 -0
  596. package/scripts/rules/pr-merge.ts +123 -0
  597. package/scripts/rules/protected-files.ts +32 -5
  598. package/scripts/rules/raw-field-body.ts +6 -0
  599. package/scripts/rules/rule-body-guard.ts +8 -0
  600. package/scripts/rules/rule-list.ts +12 -28
  601. package/scripts/rules/rule-rewrite.ts +114 -0
  602. package/scripts/rules/rule-value-cache.ts +4 -9
  603. package/scripts/rules/rule-value-cli.ts +51 -32
  604. package/scripts/rules/rule-value.ts +8 -2
  605. package/scripts/rules/shell-segments.ts +50 -0
  606. package/scripts/rules/stop-decision.ts +77 -0
  607. package/scripts/rules/stop-rule-rows.ts +64 -0
  608. package/scripts/rules/stop-rules.ts +150 -51
  609. package/scripts/rules/tail-commands.ts +15 -1
  610. package/scripts/rules/test-declared-commit.ts +11 -1
  611. package/scripts/rules/third-party-write.ts +7 -0
  612. package/scripts/rules/timed-rerun.ts +69 -0
  613. package/scripts/rules/worktree-guard.ts +13 -3
  614. package/scripts/run/board/run-board-app-name.ts +23 -0
  615. package/scripts/run/board/run-board-cli.ts +65 -30
  616. package/scripts/run/board/run-board-closed.ts +8 -2
  617. package/scripts/run/board/run-board-earlier.ts +94 -0
  618. package/scripts/run/board/run-board-ending-reason.ts +67 -0
  619. package/scripts/run/board/run-board-estimate-schedule.ts +103 -0
  620. package/scripts/run/board/run-board-estimate.ts +98 -0
  621. package/scripts/run/board/run-board-fit.ts +153 -36
  622. package/scripts/run/board/run-board-fold.ts +123 -0
  623. package/scripts/run/board/run-board-fresh.ts +2 -2
  624. package/scripts/run/board/run-board-gather-live.ts +29 -0
  625. package/scripts/run/board/run-board-gather-thread.ts +189 -0
  626. package/scripts/run/board/run-board-gather-worker.ts +29 -0
  627. package/scripts/run/board/run-board-gather.ts +187 -0
  628. package/scripts/run/board/run-board-github.ts +119 -31
  629. package/scripts/run/board/run-board-header.ts +86 -21
  630. package/scripts/run/board/run-board-keys.ts +58 -0
  631. package/scripts/run/board/run-board-kind.ts +20 -6
  632. package/scripts/run/board/run-board-labels.ts +118 -71
  633. package/scripts/run/board/run-board-lane-state.ts +109 -0
  634. package/scripts/run/board/run-board-lane-time.ts +122 -0
  635. package/scripts/run/board/run-board-layout.ts +240 -61
  636. package/scripts/run/board/run-board-length.ts +52 -0
  637. package/scripts/run/board/run-board-machine.ts +8 -4
  638. package/scripts/run/board/run-board-main.ts +12 -0
  639. package/scripts/run/board/run-board-notes.ts +52 -31
  640. package/scripts/run/board/run-board-now.ts +1 -1
  641. package/scripts/run/board/run-board-operation.ts +15 -33
  642. package/scripts/run/board/run-board-phase.ts +1 -1
  643. package/scripts/run/board/run-board-plan-shared.ts +115 -0
  644. package/scripts/run/board/run-board-plan.ts +55 -3
  645. package/scripts/run/board/run-board-planning.ts +45 -0
  646. package/scripts/run/board/run-board-priority.ts +44 -0
  647. package/scripts/run/board/run-board-process-groups.ts +195 -0
  648. package/scripts/run/board/run-board-read.ts +153 -13
  649. package/scripts/run/board/run-board-reason.ts +238 -45
  650. package/scripts/run/board/run-board-released.ts +35 -0
  651. package/scripts/run/board/run-board-render-checks.ts +39 -5
  652. package/scripts/run/board/run-board-render-condition.ts +96 -0
  653. package/scripts/run/board/run-board-render-drawn.ts +67 -0
  654. package/scripts/run/board/run-board-render-foot.ts +59 -0
  655. package/scripts/run/board/run-board-render-icon.ts +35 -0
  656. package/scripts/run/board/run-board-render-lanes.ts +145 -0
  657. package/scripts/run/board/run-board-render-lead.ts +80 -0
  658. package/scripts/run/board/run-board-render-legend.ts +117 -47
  659. package/scripts/run/board/run-board-render-notes.ts +156 -29
  660. package/scripts/run/board/run-board-render-processes.ts +196 -0
  661. package/scripts/run/board/run-board-render-section.ts +119 -0
  662. package/scripts/run/board/run-board-render-slot.ts +3 -36
  663. package/scripts/run/board/run-board-render-tail.ts +115 -48
  664. package/scripts/run/board/run-board-render-time.ts +56 -0
  665. package/scripts/run/board/run-board-render-title.ts +117 -24
  666. package/scripts/run/board/run-board-render-waits.ts +125 -0
  667. package/scripts/run/board/run-board-render.ts +206 -259
  668. package/scripts/run/board/run-board-roots.ts +54 -0
  669. package/scripts/run/board/run-board-row-yield.ts +10 -4
  670. package/scripts/run/board/run-board-setup.ts +1 -12
  671. package/scripts/run/board/run-board-snapshot.ts +111 -0
  672. package/scripts/run/board/run-board-spin.ts +2 -2
  673. package/scripts/run/board/run-board-state.ts +23 -29
  674. package/scripts/run/board/run-board-status.ts +206 -79
  675. package/scripts/run/board/run-board-thanks-read.ts +2 -2
  676. package/scripts/run/board/run-board-tick.ts +123 -104
  677. package/scripts/run/board/run-board-usage-board.ts +78 -0
  678. package/scripts/run/board/run-board-usage-lanes.ts +113 -0
  679. package/scripts/run/board/run-board-usage-listing.ts +93 -0
  680. package/scripts/run/board/run-board-usage-read.ts +120 -150
  681. package/scripts/run/board/run-board-usage-rusage.ts +19 -7
  682. package/scripts/run/board/run-board-usage-text.ts +139 -51
  683. package/scripts/run/board/run-board-usage-top.ts +102 -0
  684. package/scripts/run/board/run-board-usage.ts +89 -72
  685. package/scripts/run/board/run-board-usual.ts +20 -9
  686. package/scripts/run/carry/run-carry-args.ts +4 -7
  687. package/scripts/run/carry/run-carry-conversation.ts +1 -1
  688. package/scripts/run/carry/run-carry.ts +9 -4
  689. package/scripts/run/cut/run-cut-cli.ts +3 -2
  690. package/scripts/run/cut/run-cut-handoff.ts +2 -2
  691. package/scripts/run/cut/run-cut-report.ts +16 -0
  692. package/scripts/run/detached-launch.ts +23 -4
  693. package/scripts/run/entry/run-entry-cli.ts +8 -1
  694. package/scripts/run/event/run-event-cli.ts +1 -5
  695. package/scripts/run/event/run-event-filed.ts +12 -6
  696. package/scripts/run/event/run-event-follow.ts +2 -3
  697. package/scripts/run/event/run-event-render.ts +7 -10
  698. package/scripts/run/event/run-event-scope.ts +20 -2
  699. package/scripts/run/event/run-event-stream-emit.ts +78 -11
  700. package/scripts/run/event/run-event-stream.ts +37 -7
  701. package/scripts/run/hold/run-hold-adopt.ts +65 -0
  702. package/scripts/run/hold/run-hold-cli.ts +93 -22
  703. package/scripts/run/hold/run-hold-main.ts +12 -0
  704. package/scripts/run/hold/run-hold-member.ts +37 -0
  705. package/scripts/run/hold/run-hold-session.ts +46 -0
  706. package/scripts/run/hold/run-hold.ts +7 -1
  707. package/scripts/run/hold/run-stop-notify.ts +183 -0
  708. package/scripts/run/launch-priority.ts +32 -0
  709. package/scripts/run/merge/run-merge-auth.ts +31 -0
  710. package/scripts/run/merge/run-merge-cli.ts +72 -107
  711. package/scripts/run/merge/run-merge-close.ts +74 -0
  712. package/scripts/run/merge/run-merge-collect.ts +6 -13
  713. package/scripts/run/merge/run-merge-driver.ts +71 -0
  714. package/scripts/run/merge/run-merge-main.ts +12 -0
  715. package/scripts/run/merge/run-merge-outcome.ts +23 -0
  716. package/scripts/run/merge/run-merge-restart.ts +39 -0
  717. package/scripts/run/merge/run-merge-ship.ts +20 -4
  718. package/scripts/run/merge/run-merge-signals.ts +123 -0
  719. package/scripts/run/merge/run-merge-steps.ts +128 -83
  720. package/scripts/run/merge/run-merge.ts +53 -40
  721. package/scripts/run/park/run-park-cli.ts +91 -0
  722. package/scripts/run/park/run-park.ts +88 -0
  723. package/scripts/run/park/run-stalled.ts +68 -0
  724. package/scripts/run/pause/run-pause-cli.ts +73 -0
  725. package/scripts/run/pause/run-pause.ts +251 -0
  726. package/scripts/run/progress/run-progress-cli.ts +4 -12
  727. package/scripts/run/progress/run-progress-clock.ts +1 -1
  728. package/scripts/run/progress/run-progress-config.ts +6 -14
  729. package/scripts/run/progress/run-progress-main.ts +12 -0
  730. package/scripts/run/progress/run-progress.ts +1 -4
  731. package/scripts/run/review/run-review.ts +2 -1
  732. package/scripts/run/run-ending.ts +1 -0
  733. package/scripts/run/run-invocation.ts +5 -6
  734. package/scripts/run/run-liveness-cli.ts +6 -8
  735. package/scripts/run/run-liveness.ts +61 -30
  736. package/scripts/run/run-next.ts +1 -1
  737. package/scripts/run/run-parent-cut-hook.ts +2 -2
  738. package/scripts/run/run-poll-hook.ts +157 -0
  739. package/scripts/run/run-preflight.ts +18 -3
  740. package/scripts/run/run-prep-cli.ts +1 -10
  741. package/scripts/run/run-prep-locate.ts +7 -50
  742. package/scripts/run/run-prep-main.ts +12 -0
  743. package/scripts/run/run-prep.ts +6 -0
  744. package/scripts/run/run-report-cli.ts +101 -13
  745. package/scripts/run/run-report-handoff.ts +114 -0
  746. package/scripts/run/run-step-cli.ts +22 -15
  747. package/scripts/run/run-step-section.ts +85 -0
  748. package/scripts/run/run-step.ts +1 -1
  749. package/scripts/run/run-stranded-detect.ts +13 -0
  750. package/scripts/run/run-watcher-guard-cli.ts +1 -1
  751. package/scripts/run/run-watcher-guard.ts +1 -1
  752. package/scripts/run/ship/run-ship-args.ts +121 -0
  753. package/scripts/run/ship/run-ship-body-draft.ts +110 -0
  754. package/scripts/run/ship/run-ship-cli.ts +67 -151
  755. package/scripts/run/ship/run-ship-detach.ts +27 -7
  756. package/scripts/run/ship/run-ship-infra-retry.ts +59 -0
  757. package/scripts/run/ship/run-ship-next.ts +27 -3
  758. package/scripts/run/ship/run-ship-overlap.ts +232 -0
  759. package/scripts/run/ship/run-ship-place.ts +96 -0
  760. package/scripts/run/ship/run-ship-pre-detach-timed.ts +43 -0
  761. package/scripts/run/ship/run-ship-pre-detach.ts +102 -27
  762. package/scripts/run/ship/run-ship-preflight.ts +161 -30
  763. package/scripts/run/ship/run-ship-probe.ts +11 -3
  764. package/scripts/run/ship/run-ship-relaunch-cap.ts +70 -0
  765. package/scripts/run/ship/run-ship-removed-rows.ts +61 -0
  766. package/scripts/run/ship/run-ship-return.ts +123 -15
  767. package/scripts/run/ship/run-ship-review-steps.ts +105 -149
  768. package/scripts/run/ship/run-ship-review.ts +73 -6
  769. package/scripts/run/ship/run-ship-reviewer.ts +207 -0
  770. package/scripts/run/ship/run-ship-stage.ts +55 -6
  771. package/scripts/run/ship/run-ship-steps.ts +46 -15
  772. package/scripts/run/ship/run-ship-stop-cause.ts +135 -0
  773. package/scripts/run/ship/run-ship-stop-context.ts +206 -0
  774. package/scripts/run/ship/run-ship-stop-text.ts +11 -6
  775. package/scripts/run/ship/run-ship-sync.ts +57 -12
  776. package/scripts/run/ship/run-ship.ts +30 -2
  777. package/scripts/run/tidy/run-tidy-cli.ts +0 -4
  778. package/scripts/run/tidy/run-tidy-lanes.ts +3 -0
  779. package/scripts/run/tidy/run-tidy-main.ts +8 -0
  780. package/scripts/run/wake/run-wake-cli.ts +119 -100
  781. package/scripts/run/wake/run-wake-code.ts +83 -0
  782. package/scripts/run/wake/run-wake-driver.ts +19 -8
  783. package/scripts/run/wake/run-wake-loop.ts +34 -3
  784. package/scripts/run/wake/run-wake-main.ts +13 -0
  785. package/scripts/run/wake/run-wake-ports.ts +90 -0
  786. package/scripts/run/wake/run-wake-takeover.ts +66 -0
  787. package/scripts/run/wake/run-wake.ts +2 -1
  788. package/scripts/safe-chain/pack-hook.ts +2 -2
  789. package/scripts/safe-chain/preinstall-command.ts +2 -1
  790. package/scripts/safe-chain/project-config.ts +3 -9
  791. package/scripts/security/security-audit-main.ts +8 -0
  792. package/scripts/security/security-audit-provision-logic.ts +0 -11
  793. package/scripts/security/security-audit-provision-main.ts +12 -0
  794. package/scripts/security/security-audit-provision.ts +11 -26
  795. package/scripts/security/security-audit.ts +6 -7
  796. package/scripts/self-sync-guard/self-sync-guard-logic.ts +6 -13
  797. package/scripts/split/split-assess-cli.ts +2 -2
  798. package/scripts/split/split-assess.ts +15 -0
  799. package/scripts/split/split-measure.ts +65 -0
  800. package/scripts/sync/claude-settings-merge.ts +8 -15
  801. package/scripts/sync/directory-copy-guard.ts +4 -9
  802. package/scripts/sync/file-content.ts +78 -8
  803. package/scripts/sync/sync-ai-files.ts +3 -5
  804. package/scripts/sync/sync-configs.ts +11 -23
  805. package/scripts/sync/sync-hook-safety.ts +4 -10
  806. package/scripts/sync/sync-main.ts +11 -0
  807. package/scripts/sync/sync.ts +25 -37
  808. package/scripts/test/test-declared-changed.ts +2 -2
  809. package/scripts/test/test-declared.ts +1 -1
  810. package/scripts/test/test-e2e-guard.ts +55 -6
  811. package/scripts/test/test-e2e-stamp.ts +38 -0
  812. package/scripts/test/test-pinned-logic.ts +145 -0
  813. package/scripts/test/test-pinned-main.ts +78 -0
  814. package/scripts/test/test-pinned.ts +100 -0
  815. package/scripts/test/test-read-map.ts +264 -0
  816. package/scripts/test/test-read-recording.ts +91 -0
  817. package/scripts/test/test-read-trace.ts +148 -0
  818. package/scripts/test/test-red-main.ts +12 -0
  819. package/scripts/test/test-red.ts +12 -30
  820. package/scripts/test/test-related-main.ts +18 -0
  821. package/scripts/test/test-related-record.ts +119 -0
  822. package/scripts/test/test-related-scope.ts +229 -43
  823. package/scripts/test/test-related.ts +300 -22
  824. package/scripts/test/test-unit-guard-main.ts +15 -0
  825. package/scripts/test/test-unit-guard.ts +54 -21
  826. package/scripts/test/unit-count-file.ts +37 -0
  827. package/scripts/test/unit-run-marker.ts +162 -0
  828. package/scripts/test/unit-setup-files.ts +51 -0
  829. package/scripts/test/unit-worker-share.ts +71 -137
  830. package/scripts/test/whole-suite-files.ts +63 -0
  831. package/scripts/time-runtime/time-background.ts +20 -2
  832. package/scripts/time-runtime/time-bundles.ts +4 -3
  833. package/scripts/time-runtime/time-density-hook.ts +8 -6
  834. package/scripts/time-runtime/time-followup-stage.ts +1 -3
  835. package/scripts/time-runtime/time-format.ts +5 -28
  836. package/scripts/time-runtime/time-markers.ts +10 -1
  837. package/scripts/time-runtime/time-shell.ts +126 -14
  838. package/scripts/time-runtime/time-spans.ts +1 -0
  839. package/scripts/time-runtime/time-tool-call.ts +7 -0
  840. package/scripts/time-runtime/time-transcript-line.ts +49 -62
  841. package/scripts/uninstall/uninstall.ts +1 -1
  842. package/scripts/version/bump-version-main.ts +12 -0
  843. package/scripts/version/bump-version.ts +25 -25
  844. package/scripts/version/effective-upstream.ts +6 -12
  845. package/scripts/version/latest-corepack.ts +17 -32
  846. package/scripts/version/latest-if-required-cli.ts +93 -0
  847. package/scripts/version/latest-lane-guard-main.ts +8 -0
  848. package/scripts/version/latest-lane-guard.ts +0 -4
  849. package/scripts/version/latest-scope-cli.ts +0 -9
  850. package/scripts/version/latest-scope-main.ts +12 -0
  851. package/scripts/version/latest-update.ts +5 -5
  852. package/scripts/version/npm-registry.ts +44 -6
  853. package/scripts/version/publishable-range-check.ts +5 -16
  854. package/scripts/version/release-age.ts +1 -1
  855. package/scripts/version/release-hold.ts +1 -1
  856. package/scripts/version/release-window.ts +38 -0
  857. package/scripts/version/running-binary.ts +1 -1
  858. package/scripts/version/safe-chain-version-update.ts +3 -8
  859. package/scripts/version/version-targets.ts +6 -28
  860. package/templates/dependabot.yml +29 -0
  861. package/templates/gitignore +10 -3
  862. package/templates/pnpm-workspace.basic.yaml +1 -1
  863. package/templates/sonar-project.properties +3 -2
  864. package/templates/workflows/ci.yml +12 -4
  865. package/templates/workflows/github-release.yml +4 -0
  866. package/tsconfig.sonar.json +1 -1
  867. package/.ncurc.json +0 -3
  868. package/dist/hooks/batch-guard.js +0 -29
  869. package/dist/hooks/chunk-43ZHT22P.js +0 -3495
  870. package/dist/hooks/chunk-CDY4NFQG.js +0 -15
  871. package/dist/hooks/chunk-EUMACUK2.js +0 -2038
  872. package/dist/hooks/chunk-H5HVWYXK.js +0 -359
  873. package/dist/hooks/chunk-IIGFYXKC.js +0 -7104
  874. package/dist/hooks/chunk-IX6TTTI6.js +0 -95
  875. package/dist/hooks/chunk-J47HU5H5.js +0 -237
  876. package/dist/hooks/chunk-K4EOONYM.js +0 -45
  877. package/dist/hooks/chunk-K4LMBQC2.js +0 -68
  878. package/dist/hooks/chunk-SHGPANFB.js +0 -56
  879. package/dist/hooks/chunk-YHBZAJSV.js +0 -79
  880. package/dist/hooks/chunk-YYPI7SJZ.js +0 -131
  881. package/dist/hooks/duplicate-read-guard.js +0 -30
  882. package/dist/hooks/investigation-guard.js +0 -32
  883. package/scripts/backlog/backlog-stalled-cli.ts +0 -30
  884. package/scripts/cost-runtime/cost-format.ts +0 -29
  885. package/scripts/init/basic-path-migration.ts +0 -24
  886. package/scripts/issue/issue-backlinks-cli.ts +0 -93
  887. package/scripts/josh/josh-commands-guard.ts +0 -38
  888. package/scripts/lint/cross-file-recheck.ts +0 -155
  889. package/scripts/registry-migration/migrate-logic.ts +0 -237
  890. package/scripts/registry-migration/migrate.ts +0 -292
  891. package/scripts/registry-migration/user-npmrc.ts +0 -15
  892. package/scripts/rules/rule-guard.ts +0 -23
  893. package/scripts/rules/rule-registry-rows.ts +0 -282
  894. package/scripts/rules/rule-registry.ts +0 -109
  895. package/scripts/run/run-stranded-cli.ts +0 -27
@@ -6,11 +6,17 @@ This is the execution contract for `fullrun` and `backlogrun`, and for `prrun` u
6
6
  Review results and successful pushes are never turn boundaries.
7
7
 
8
8
  0. **A lane child**: `pnpm josh main:merge`, the self-check (`prompts/review.md` → "Before round 1 —
9
- the implementer's self-check"), the scoped pair, `pnpm josh ship --detach --review
10
- "<title> #<N>"` (`--cite <N>`), then **end the turn** on `launched`/`busy`. A stop relaunches a child
11
- whose prompt names `pnpm josh ship --log <N>` and (Anthropic lane) the re-detach to run after
9
+ the implementer's self-check"), the scoped pair, the ship body draft filled in
10
+ (`report-format.md` → "PR 本文の受け入れ条件の対応表"), `pnpm josh ship --detach --review
11
+ "<title> #<N>"` (`--cite <N>`), then **end the turn** on `launched`/`busy`. No `pnpm josh gate`,
12
+ `check` or `metrics` before it, by hand: ship reuses the scoped pair green on this tree and base
13
+ and runs the gate after its sync (`scripts/run/ship/run-ship-steps.ts`); a standalone `check` or
14
+ `metrics` leaves no record it reuses. A stop relaunches a child
15
+ whose prompt carries the failed output's tail and the changed files (`pnpm josh ship --log <N>` when
16
+ the stage printed nothing) and (Anthropic lane) the re-detach to run after
12
17
  the fix — `pnpm josh ship --detach`, `--review` only if the stopped ship carried it and stopped before
13
- round 2, which is final (`scripts/run/ship/run-ship-next.ts`); the supervisor skips a recorded round 1.
18
+ round 2, which is final, or the review went stale (`scripts/run/ship/run-ship-next.ts`); the
19
+ supervisor skips a recorded round 1 unless it went stale.
14
20
  `failed` → step 1. A backgrounded `ship` issued alone is moved to the foreground by the hook
15
21
  rather than refused.
16
22
  1. Run `pnpm josh main:merge`. **Then issue `pnpm josh run:cut <N>` alone, before the scoped pair and
@@ -18,7 +24,8 @@ Review results and successful pushes are never turn boundaries.
18
24
  (`prompts/review.md` → "Before round 1 — the implementer's self-check"), run the final scoped lint/test pair and
19
25
  `pnpm josh run:review`: it starts `pnpm josh gate` in the background and prints the `/code-review`
20
26
  brief in one call, so the two overlap. Launch the `/code-review` subagent as the `general-purpose`
21
- agent type with that brief (every tool, so `--fix` applies; never a guessed type name).
27
+ agent type with that brief and its `model` (`delegation.md`) (every tool, so `--fix` applies;
28
+ never a guessed type name).
22
29
  Never load the review skill in the main line.
23
30
  2. Once the review returns, run `pnpm josh run:review --join` to join and read the gate before
24
31
  committing; it exits non-zero on a red gate. Fix any red check, then rerun the affected scoped check
@@ -39,24 +46,24 @@ Review results and successful pushes are never turn boundaries.
39
46
  passes takes `--comment`** (`observation-ledger.md` → "The commit path").
40
47
  **`pnpm josh followup` refuses the merge until the round is recorded**
41
48
  (`pnpm josh review:record --check --issue <N>`).
49
+ A change to the run tooling also takes the interaction review: `prompts/review.md` → "Interaction review".
42
50
  5. **The clean path ships in one call** — with no second round due, background
43
- `pnpm josh ship "<title> #<N>" --body-file <evidence.md>`: PR preflight → gate → `git -y` →
51
+ `pnpm josh ship "<title> #<N>" --body-file <evidence.md>` — the file carries `## 実機証跡` and
52
+ `## 受け入れ条件の対応` (`report-format.md`), both asked at the preflight: PR preflight → gate → `git -y` →
44
53
  `followup` → `run:tail`, stopping at the first failure. `--review` runs both rounds. **Else a due
45
54
  round 2 does not fit `ship`**: the PR opens between the rounds — background
46
55
  `pnpm josh git -y "<title> #<N>"`, round 2 beside CI, then `pnpm josh followup`.
47
56
 
48
57
  A lane child may end once, at step 0 or the pre-gate cut (`pre-gate-cut.md`); never at the push. The chain otherwise stops only when the PR is merged, the completion Telegram was sent, and
49
- `pnpm josh ms` returned to the default branch, or when user judgment is required by an unverifiable
50
- CodeRabbit/Claude Review finding or a CI failure. In a lane `josh ms` refuses; the parent closes it. Managed config claims are reported by `followup` and do not stop the merge.
58
+ `run:tail` returned to the default branch, or when user judgment is required by an unverifiable
59
+ CodeRabbit/Claude Review finding or a CI failure. In a lane the parent closes it. Managed config claims are reported by `followup` and do not stop the merge.
51
60
 
52
61
  Recommendations are informational; severity decides. A CodeRabbit rate-limit warning is not a finding.
53
62
 
54
63
  ## Orchestration facts single-sourced here
55
64
 
56
65
  These are the gate → review → PR → merge facts other documents cite; this file is their single source
57
- (`prompts/review.md` carries the review _policy_, `prompts/review-rubric.md` the rubric). Where each
58
- rule came from and why it holds: `docs/maintainers/chain-rule-rationale.md` → "Where each rule came
59
- from", `docs/maintainers/chain-rule-rationale.md` → "Why the orchestration facts hold".
66
+ (`prompts/review.md` carries the review _policy_, `prompts/review-rubric.md` the rubric).
60
67
 
61
68
  - **The gate runs beside this review, not in front of it** — started with the review, joined before the
62
69
  commit. A red gate is fixed and re-run whatever the review concluded.
@@ -37,15 +37,14 @@ classification lives in `backlogrun-child.md` → "Each child runs in a delegate
37
37
  main line.** The unit returns conclusions with `file:line` citations, never the file text. It may run
38
38
  a temporary probe script and return its output.
39
39
 
40
- **The threshold is 3 files, and it is a count, not a forecast.** When the next read reaches it,
41
- delegate the unread investigation. Brief the unit on what was already read; do not re-read it there.
42
- **A delegation resets the counter rather than spending it**; `pnpm josh investigation:guard` counts
43
- unedited files and search turns and refuses the threshold call. `pnpm josh delegate --list` prints
44
- the threshold.
40
+ **Subject reading beyond the edit targets → dispatch the unit before the first read**
41
+ (`pnpm josh run:prep` → `=== investigation ===`). **The threshold is 3 files, and it is a count, not a
42
+ forecast** — where the guard refuses, not a budget. Brief the unit on what was already read.
43
+ **A delegation resets the counter rather than spending it**; the `investigation` row of
44
+ `pnpm josh rule:list` refuses the threshold call, in a lane child too (`pnpm josh delegate --list`).
45
45
 
46
- **Dispatch the unit as the `investigator` agent** (`kit:investigator` in a consumer) — the parent's
47
- model at a lowered effort, read-only.
48
- `docs/josh-commands-automation.md` → "`josh investigation:guard`" carries the command's counting details.
46
+ **Dispatch the unit as the `investigator` agent** (`kit:investigator` in a consumer) — read-only, on
47
+ the `model` its definition names.
49
48
 
50
49
  **The main line does not idle while the unit reads:** read files this run will edit, then verify the
51
50
  unit's cited lines. Independent investigations launch together; a brief that needs another unit's
@@ -54,3 +53,9 @@ answer waits for that answer.
54
53
  **When the Issue already names the file, function or rule, read that edit target in the main line.**
55
54
  It is not `survey`, and it is not `diagnosis`: the unit describes how the subject works;
56
55
  the main line decides what that means and what to change.
56
+
57
+ ## A `general-purpose` subagent names its model
58
+
59
+ **A `general-purpose` dispatch → set `model`**: `sonnet` for routine work, `opus` for judgment; a review
60
+ takes the alias of the `model=` id its brief prints (`claude-opus-5-5` → `opus`). Delivered by the
61
+ `agent-model` row of `pnpm josh rule:list`.
@@ -1,8 +1,6 @@
1
1
  # The entry sequence and the stop branches — shared by `fullrun`, `halfrun` and `prrun`
2
2
 
3
- `fullrun.md`, `halfrun.md` and `prrun.md` name only how their own run differs from this shared
4
- procedure; `pnpm josh run:step <N>` prints the run's next single action. History:
5
- `docs/maintainers/entry-sequence-rationale.md` → "Where each rule came from".
3
+ `pnpm josh run:step <N>` prints the run's next single action.
6
4
 
7
5
  ## The ordered entry sequence
8
6
 
@@ -20,9 +18,9 @@ short-circuits with a non-zero exit. The numbered steps are the detail behind ea
20
18
  source; a cross-repository target resolves its checkout from `pnpm josh doctor` first
21
19
  (`target-repository.md`).
22
20
  2. **`in-progress` rides on the hold** — for a `#N`, `run:entry` applies it once the tree is held and
23
- the budget allows the run; a `new` entry applies it right after filing (`fullrun-steps.md`). Every
24
- stop that leaves the tree clean ends with `pnpm josh run:release <N>`, which removes the label with
25
- the record (a `new` entry's bare release does not — `working-tree-hold.md`).
21
+ the budget allows the run; a `new` entry runs `pnpm josh run:hold --adopt <N>` right after filing,
22
+ which re-keys the hold and applies it (`fullrun-steps.md`). Every stop that leaves the tree clean
23
+ ends with `pnpm josh run:release <N>`, which removes the label with the record.
26
24
  3. **Ask the session boundary in the same turn as the hold** — `pnpm josh cost --cut`. `under`
27
25
  continues; `over` (or unanswerable) stops before the title — `run:entry` sends the `confirmation`
28
26
  Telegram and runs `run:release` (`stop notified: …`); by hand only for `new`. **Skip it when
@@ -33,8 +31,8 @@ short-circuits with a non-zero exit. The numbered steps are the detail behind ea
33
31
  dependency scope in one report; a `new` entry runs it once filed. The comment stops, the
34
32
  `human_review` stop (`needs-human-review.md`) and the dependency decision are read off it.
35
33
  5. **Print the next action — `pnpm josh run:step <N>`** — and follow it into the command's step list.
36
- Before implementing, `pnpm josh ms`, then `pnpm josh latest:scope` — update
37
- dependencies only on `required` (`latest-gate.md`), never on every run. `run:step` names every later
34
+ Before implementing, `pnpm josh ms`, then on `run:prep`'s `latest: required`
35
+ `pnpm josh latest:if-required` (`latest-gate.md`) — never on every run. `run:step` names every later
38
36
  action in order, each read at the point-of-use document `SKILL.md` lists, never re-narrated here
39
37
  (`residency.md` → "順序の問い").
40
38
 
@@ -51,12 +49,12 @@ lane child starts none and never reads that document (`pnpm josh read:set lane-c
51
49
  separately-mergeable deliverables over one gate: file the children (each `route:split`) and the epic,
52
50
  then **STOP** with "Please run `backlogrun #<E> --only` to execute this epic." Typing the command
53
51
  approved **one** Issue, never a batch.
54
- - **A prerequisite** — file it (`route:tier-a`), stash, record the dependency, and **STOP** with
55
- "Please run `backlogrun #<E> --only` to execute this epic"; `prerequisite.md` is the single source of
56
- the filing, the `-u` stash and the epic:bundle branch.
52
+ - **A prerequisite** — file it (`route:tier-a`), `pnpm josh run:pause <M> --for <N>`, and **STOP**
53
+ with "Please run `backlogrun #<E> --only` to execute this epic"; `prerequisite.md` is the single
54
+ source of the filing, the pause and the epic:bundle branch.
57
55
  - **An observation** — `observation-filing.md` (ask first if interactive).
58
56
 
59
- **Automatic filing is capped at 10 Issues per run.** On reaching it, stop and report.
57
+ **The per-run filing cap is `prerequisite.md`'s** (the `filing-cap` row); on its refusal, stop and report.
60
58
 
61
59
  **The `into <target>` suffix** (a `new` entry) inserts the artifact into a named epic —
62
60
  `into-target.md`, read when the suffix is typed.
@@ -2,8 +2,7 @@
2
2
 
3
3
  Everything between a green CI and a merged PR: the command, the merge it authorizes, the notifications,
4
4
  the reviewer scan, the config report and the release ask. `fullrun` and `backlogrun` end here; `halfrun`
5
- stops before the commit. This file is the single source. Where each rule came from:
6
- `docs/maintainers/followup-rationale.md` → "Where each rule came from".
5
+ stops before the commit.
7
6
 
8
7
  ## Run `pnpm josh followup`
9
8
 
@@ -32,8 +31,8 @@ A pre-merge failure stops the run; an unverifiable AI finding or CI failure need
32
31
  `confirmation` Telegram. A post-merge cleanup failure is named and does not undo the merge; run the
33
32
  named recovery without rerunning `followup`. The printed result is authoritative.
34
33
 
35
- After success, run `pnpm josh ms`; in a lane it refuses and the parent uses `pnpm josh lane:close <N>`.
36
- Never delete the branch unless requested. The sections below are read when the output needs reading.
34
+ After the merge `run:tail` returns to the default branch — `ship` runs it; after a bare `followup`, run
35
+ `pnpm josh run:tail <N>`. In a lane the parent uses `pnpm josh lane:close <N>`. Never delete the branch unless requested. The sections below are read when the output needs reading.
37
36
 
38
37
  ## The options
39
38
 
@@ -50,8 +49,6 @@ Never delete the branch unless requested. The sections below are read when the o
50
49
 
51
50
  Invoking `fullrun` is itself the explicit authorization to merge.
52
51
 
53
- - **Always run `pnpm josh ms` after a successful merge**. **In a lane, `pnpm josh lane:close <N>` is the
54
- terminal step instead** — `josh ms` refuses there.
55
52
  - **Green CI is not authorization to merge while AI review findings are open.** A blocker sends a
56
53
  `confirmation` Telegram and exits non-zero — fix and re-run. SonarCloud is carried by the required
57
54
  `SonarQube` check.
@@ -75,46 +72,24 @@ to 32 minutes; give the call the largest timeout it accepts (`timeout: 600000` i
75
72
  harness detaches the call, wait for its report; where it kills it, set `JOSH_CI_TIMEOUT_SECONDS` and
76
73
  re-run once CI has settled. Re-run after every follow-up commit.
77
74
 
75
+ In a lane, the detached ship supervisor runs it, not the child — its merge wait holds no lane
76
+ place: `scripts/backlog/backlog-occupied.ts`.
77
+
78
78
  **The count of unreleased merges is surfaced at completion — not a version.** It prints `🚚 unreleased
79
79
  merges on main: <n>`. **Do not report a shipped version** — a child no longer bumps. See "When `pnpm
80
80
  josh release` runs" below.
81
81
 
82
- ## Reading the stage-timing block
83
-
84
- One `followup stage: <name> <seconds>` row per stage, then `followup stages total:`.
85
-
86
- - **A failed run prints it too**, up to the stage that threw, named `interrupted`. The `merge` row
87
- appears only on a run that merged.
88
- - **A row named `<a>-and-<b>` is a batch of requests sent together**; `checks-wait` is never
89
- overlapped.
90
- - **The total is the sum of the stages**, not the wall clock — the post-merge tail sits outside it.
91
-
92
82
  A `failure` Telegram is sent **by hand, exactly once**, and only when recovery is given up:
93
83
 
94
84
  ```bash
95
85
  pnpm josh notify --task-type failure --issue-url "<issue-url>" --body-file <reason-file>
96
86
  ```
97
87
 
98
- ## AI reviewer comment scan
99
-
100
- `followup` scans top-level PR comments from AI reviewers **independently of CI status**.
101
-
102
- - **Blockers are structural, not NLP**: a Claude Review body with `### Issues`, `### Problem`,
103
- `#### Logic bug` or a numbered `### 1. …` heading; a CodeRabbit `Actionable comments posted: N` with
104
- N > 0. Rate-limit notices and sign-offs (`All issues resolved ✓`) match nothing.
105
- - **A standing blocker without `--ai-review-ignore-reason`** sends a `confirmation` Telegram and exits
106
- non-zero; with it, the reason is posted and the run proceeds.
107
- - **A comment listing that could not be read is a standing blocker**.
108
- - **Temporary**: CodeRabbit is non-blocking end to end — out of the default required checks
109
- (restore via `JOSH_REQUIRED_CHECKS`); its findings are audit notes. Reverting it:
110
- `docs/maintainers/followup-rationale.md` → "The temporary CodeRabbit exemption".
111
-
112
- ## Config file reporting
88
+ ## What the output means
113
89
 
114
- `followup` matches every changed path against what `josh sync` distributes (`AI_COPY_FILES`,
115
- `AI_COPY_FILE_MAPPINGS`, `AI_COPY_DIRECTORIES`, `SYNCED_PATHS`) and **reports** the claimed paths in the
116
- notification and the Issue report. **It stops nothing** (`docs/maintainers/followup-rationale.md` →
117
- "Why config claims are reported, not stopped"). `pnpm josh sync:scope` gives the same answer.
90
+ **A standing AI-review blocker** is fixed, or passed with `--ai-review-ignore-reason` once verified
91
+ inapplicable. The stage-timing block, the blocker shapes and the config-claim report:
92
+ `docs/josh-commands-automation.md` → "`josh followup`" and its detail document.
118
93
 
119
94
  ## When `pnpm josh release` runs
120
95
 
@@ -1,63 +1,53 @@
1
1
  # `fullrun` — the step lists and the branches
2
2
 
3
- **The detailed procedure behind `fullrun.md`'s manifest**, read on demand — `pnpm josh run:next <N>`
4
- names which step the run is at, and the sections below carry that step in full. History:
5
- `docs/maintainers/fullrun-steps-rationale.md` → "Where each rule came from".
3
+ `pnpm josh run:next <N>` names which step the run is at, and the sections below carry that step in
4
+ full.
6
5
 
7
6
  ## The `fullrun #N` step list
8
7
 
9
8
  File Issues with `pnpm josh issue:file` (it applies the classification labels); see `prompts/collaboration-workflow/issue-template.md`.
10
9
 
11
- **`in-progress` is already on the Issue** — `run:entry` applied it once the tree was held and the
12
- budget allowed the run, and `run:release <N>` takes it back off → Read Issue #N and its comments
13
- (`issue-comments.md`) → **normalize the title** (if not in English or can be phrased more clearly,
14
- derive a better English title and `gh api -X PATCH repos/{owner}/{repo}/issues/<N> -f title="<title>"`)
15
- → post the agreed plan only if the Issue body is blank (`gh api -X PATCH
16
- repos/{owner}/{repo}/issues/<N> -f body="<plan>"`); if the body already has content, skip the
17
- plan-posting step → implement (the `plan` event `run:board` draws 📝 from is written by code — by
18
- `run:entry` for a `run:planned` issue, else at the first implementation edit — never by hand; no cut
19
- follows the plan — a lane child's context is bounded by the
20
- threshold-gated implementation cut alone) → run the **verification gate** (the full procedure is `chain-rule.md`;
21
- in outline: refactor → `pnpm josh main:merge` → **a dispatched lane child hands the rest to
22
- `pnpm josh ship --detach --review "<title> #<N>"` and ends its turn** (`chain-rule.md` step 0) → otherwise `pnpm josh run:cut <N>` (the pre-gate cut, before the gate; a no-op
23
- outside a lane) → start `pnpm josh gate` and a subagent `/code-review`
24
- with the brief `pnpm josh review:brief` prints on `git diff main`, join the gate before the commit,
25
- iterate to no high/medium findings, within the round cap (`prompts/review.md`) → **the clean path folds the ship region into
26
- one call**, `pnpm josh ship "<title> #<N>"` (gate → commit/push/PR → the CI-wait `followup` → the
27
- `run:tail` report bookkeeping, stopping at the first failed step), with any
28
- branch-2 filing (`pnpm josh issue:file`, which runs `epic:bundle` itself) run before it → **when a second round is due `ship` does not
29
- fit**: open the PR between the rounds with `pnpm josh git -y "<title> #<N>"`, run round 2 beside CI, then
30
- `pnpm josh followup` and `pnpm josh run:tail <N>`). Issue plan comments are written in the session language (`JOSH_SESSION_LANG`,
31
- default `ja`). Before implementing, run `pnpm josh ms`, then `pnpm josh latest:scope`
32
- and update dependencies only on `required` — `latest-gate.md` is its single source, and on `required`
33
- load the `dependency-update` skill afterwards. **A dispatched lane child skips `pnpm josh ms`** — it
34
- refuses in a lane, and `pnpm josh main:merge` brings the latest default in during the gate
35
- (`docs/maintainers/fullrun-steps-rationale.md` → "Why a lane child skips `josh ms`"). The parent runs
36
- `pnpm josh ms` in the primary checkout, never the child — `backlogrun-lanes.md` and
37
- `backlogrun-child.md` are the single sources. When running `pnpm josh followup`, pass an
38
- implementation summary via `--notify-message` in the session language, leading with the three
39
- plain-language lines: `"Implemented <title>\nCause: ...\nFix: ...\nResult: ...\n\nDetails:\n-
40
- <change1>\n- <change2>"`. **`pnpm josh followup` waits for CI, verifies AI review findings, sends the
41
- completion notification, then merges; if blockers are found it exits non-zero — fix and re-run.**
42
- **Run `pnpm josh ms` after the merge.** A Codex lane skips it — the parent's `run:merge` syncs the
43
- primary checkout; a Claude run keeps it.
10
+ 1. **`in-progress` is already on the Issue** — `run:entry` applied it once the tree was held and the
11
+ budget allowed the run, and `run:release <N>` takes it back off.
12
+ 2. Read the Issue and its comments off `run:entry`'s `run:prep` report (`issue-comments.md`).
13
+ 3. **Record the agreed plan** with `pnpm josh issue:plan <N> --body-file <path>`, adding
14
+ `--title "<title>"` when the title is not in English or can be phrased more clearly (a blank body
15
+ takes the plan, otherwise it becomes a comment; its `### 影響を受ける既存の利用者` section is drafted
16
+ with `pnpm josh plan:consumers` — `kickoff.md` step 4).
17
+ 4. Run `pnpm josh ms`, then update dependencies only where the `run:prep` report answers
18
+ `latest: required` — `latest-gate.md` is its single source, and on `required` load the
19
+ `dependency-update` skill afterwards. **A dispatched lane child skips `pnpm josh ms`** — it refuses
20
+ in a lane, and `pnpm josh main:merge` brings the latest default in during the gate. The parent runs
21
+ `pnpm josh ms` in the primary checkout, never the child — `backlogrun-lanes.md` and
22
+ `backlogrun-child.md` are the single sources.
23
+ 5. Implement. The `plan` event `run:board` draws 📝 from is written by code — by `run:entry` for a
24
+ `run:planned` issue, else at the first implementation edit — never by hand; no cut follows the
25
+ plan — a lane child's context is bounded by the threshold-gated implementation cut alone.
26
+ 6. Run the **verification gate** through the merge: `chain-rule.md` → "Run the review-to-merge
27
+ chain". Branch-2 filing (`pnpm josh issue:file`, which runs `epic:bundle` itself) runs before
28
+ `pnpm josh ship`.
29
+ 7. When running `pnpm josh followup`, pass an implementation summary via `--notify-message` in the
30
+ session language, leading with the three plain-language lines: `"Implemented <title>\nCause:
31
+ ...\nFix: ...\nResult: ...\n\nDetails:\n- <change1>\n- <change2>"`. **`pnpm josh followup` waits
32
+ for CI, verifies AI review findings, sends the completion notification, then merges; if blockers
33
+ are found it exits non-zero — fix and re-run.**
34
+ 8. `run:tail` returns the checkout to the default branch (`main:sync`) after the merge; a lane child's
35
+ `run:tail` skips that step and the parent syncs the primary checkout.
44
36
 
45
37
  ## The `fullrun new` step list
46
38
 
47
39
  `kickoff new` + `fullrun #N` in one run. Steps: (1) Derive an English title, or use the provided one.
48
- (2) Create Issue: `pnpm josh issue:file "<title>" --body-file <body-file> --depth <n>`,
40
+ (2) Create Issue: `pnpm josh issue:file "<title>" --body-file <body-file>`,
49
41
  with the labels `kickoff.md` → "Words typed after `new`" maps (per
50
42
  `prompts/collaboration-workflow/issue-template.md`) — its duplicate scan runs first, and a candidate
51
43
  that covers the same work stops the run rather than filing a second Issue (`issue-scout.md`). Capture
52
- `<N>`. (3) Add `in-progress` (the bare hold named no issue):
53
- `gh api repos/{owner}/{repo}/issues/<N>/labels -f 'labels[]=in-progress'`. (4) Post the agreed plan
54
- in the session language: fill the body if blank,
55
- otherwise add a comment. (5) If the working tree already has staged or modified files,
56
- `git stash push -m "fullrun new: pre-existing changes" -- ':!.josh/observations'` first. (6) `pnpm josh ms`. (7)
57
- `pnpm josh latest:scope`; on `required` run `josh latest` and load the `dependency-update` skill; on
58
- `skip` neither runs (`latest-gate.md` is the single source). If you stashed in (5),
59
- `pnpm josh stash:pop "fullrun new: pre-existing changes"` — by message, never a positional `git stash
60
- pop`. (8) Implement. (9) Run the verification gate (as in `chain-rule.md`; only the first review round
44
+ `<N>`. (3) `pnpm josh run:hold --adopt <N>` — re-keys the bare hold to `<N>` and applies `in-progress`;
45
+ every later stop releases with `run:release <N>`. (4) Record the agreed plan
46
+ in the session language: `pnpm josh issue:plan <N> --body-file <path>` (its consumers section as in
47
+ `kickoff.md` step 4). (5) `pnpm josh stash:push "fullrun new: pre-existing changes"`. (6) `pnpm josh ms`. (7)
48
+ `pnpm josh run:prep <N>`; on `latest: required` run `pnpm josh latest:if-required` and load the `dependency-update`
49
+ skill; on `skip` neither runs (`latest-gate.md` is the single source). If (5) answered `stashed`,
50
+ `pnpm josh stash:pop "fullrun new: pre-existing changes"`. (8) Implement. (9) Run the verification gate (as in `chain-rule.md`; only the first review round
61
51
  runs here). (9a) **Ask `pnpm josh review:round2 --round-1-closed` whether a second round is due**, once
62
52
  round 1's fixes are in and before the commit. (10) Where the tree was edited after the first gate
63
53
  started, re-run `pnpm josh gate` and join it. (11) `pnpm josh git -y "<title> #<N>"` — the pull request
@@ -69,9 +59,8 @@ round was due** (9a `skip`), fold steps (10)–(13) and the release bookkeeping
69
59
  ship "<title> #<N>" --notify-message "..."` (gate → commit/push/PR → the CI-wait `followup` → `run:tail`,
70
60
  stopping at the first failed step); **where a second round ran**, the PR opened
71
61
  at (11) and the region stays separate — `pnpm josh followup "<title> #<N>" --notify-message "..."` then
72
- `pnpm josh run:tail <N>`. (14) **After the merge, run `pnpm josh ms`.** (15) **Ask `pnpm josh
73
- release:scope` and close the completion summary with what it answered** (`followup.md` →
74
- "When `pnpm josh release` runs").
62
+ `pnpm josh run:tail <N>`. (14) **Close the completion summary with `run:tail`'s `release:scope`
63
+ answer** (`followup.md` → "When `pnpm josh release` runs").
75
64
 
76
65
  ## The release ask — the last step of either form
77
66
 
@@ -1,18 +1,16 @@
1
1
  # `fullrun` — the manifest (plan → implement → PR → merge → notify)
2
2
 
3
- **This file is the manifest, not the procedure.** The entry sequence and the stop branches are
4
- `entry-sequence.md`, shared with `halfrun` and `prrun`; this file names only what is `fullrun`'s own.
5
- `pnpm josh run:step <N>` prints the run's next single action. `chain-rule.md`, `followup.md`,
6
- `background-commands.md` and `latest-gate.md` are **not entry reads** — each is fetched at its point of
7
- use. The step lists are `fullrun-steps.md`, read when a step needs its detail. History:
8
- `docs/maintainers/fullrun-rationale.md` → "Where each rule came from".
3
+ The entry sequence and the stop branches are `entry-sequence.md`. `pnpm josh run:step <N>` prints the
4
+ run's next single action. `chain-rule.md`, `followup.md`, `background-commands.md` and
5
+ `latest-gate.md` are **not entry reads** — each is fetched at its point of use. The step lists are
6
+ `fullrun-steps.md`, read when a step needs its detail.
9
7
 
10
8
  ## The difference — the entry and the end
11
9
 
12
10
  - **The entry passes no `--to`**: `pnpm josh run:entry <N>` is `fullrun`'s stage. Follow `run:step`
13
11
  into `fullrun-steps.md` — the `fullrun #N` list or the `fullrun new` list.
14
- - **The end merges**: `run:step` names the verification gate, `pnpm josh followup`, `pnpm josh ms` and
15
- the release ask in order. Invoking `fullrun` authorizes the merge, through `pnpm josh followup` only.
12
+ - **The end merges**: `run:step` names the verification gate, `pnpm josh followup` and the release ask
13
+ in order. Invoking `fullrun` authorizes the merge, through `pnpm josh followup` only.
16
14
  - **A split or a prerequisite stops the run**: typing `fullrun` approved **one** Issue.
17
15
 
18
16
  ## The lane-child seam
@@ -1,14 +1,10 @@
1
1
  # `halfrun` — the manifest (implement + verify, stop before commit)
2
2
 
3
- When this run files a new Issue, file it with `pnpm josh issue:file`, which lints the body and applies the classification labels it declares beside the `--depth` and `--route` labels; `prompts/collaboration-workflow/issue-template.md` is the single source for this classification.
3
+ When this run files a new Issue, file it with `pnpm josh issue:file`, which lints the body and applies the classification labels it declares beside the `--route` label; `prompts/collaboration-workflow/issue-template.md` is the single source for this classification.
4
4
 
5
- `halfrun` sits between `kickoff` (plan only) and `fullrun` (full execution with auto-merge). It
6
- implements the change and runs the full verification gate, then **stops before commit** — nothing is
7
- committed, pushed, or opened as a PR — so a person verifies the working tree by hand. Use it when a change needs human eyes before shipping.
8
-
9
- **This file is the manifest.** The entry sequence and the stop branches are `entry-sequence.md`,
10
- shared with `fullrun` and `prrun`; this file names only what is `halfrun`'s own. History:
11
- `docs/maintainers/halfrun-rationale.md` → "Where each rule came from".
5
+ `halfrun` implements the change and runs the full verification gate, then **stops before commit** —
6
+ nothing is committed, pushed, or opened as a PR — so a person verifies the working tree by hand. The
7
+ entry sequence and the stop branches are `entry-sequence.md`.
12
8
 
13
9
  ## The difference — the entry
14
10
 
@@ -19,36 +15,28 @@ shared with `fullrun` and `prrun`; this file names only what is `halfrun`'s own.
19
15
 
20
16
  ## The step list
21
17
 
22
- `halfrun #<N>`: read Issue #N and its comments → **normalize the title** (same as
23
- `fullrun`) → post the agreed plan only if the body is blank → `pnpm josh ms`, then `pnpm
24
- josh latest:scope` and update dependencies only on `required` (`latest-gate.md`; the
25
- `dependency-update` skill) → implement → run the **full verification gate** (refactor →
18
+ `halfrun #<N>`: read Issue #N and its comments → **record the agreed plan**, normalizing
19
+ the title (`pnpm josh issue:plan`, same as `fullrun`) → `pnpm josh ms`, then on `run:prep`'s
20
+ `latest: required` `pnpm josh latest:if-required` (`latest-gate.md`; the `dependency-update` skill) → implement → run the **full verification gate** (refactor →
26
21
  start `pnpm josh gate` beside a subagent `/code-review` with the brief `pnpm josh review:brief` prints,
27
22
  join the gate before the stop, iterate to no high/medium findings, within the round cap (`prompts/review.md`) → `pnpm josh
28
23
  test:e2e`, run by **you**, because `halfrun` opens no pull request and there is no CI E2E job; a printed
29
24
  skip is the answer where the project has no suite) → **mark the stop: `pnpm josh run:hold <N>
30
- --halfrun-stop`** (the record `fullrun #<N>` adopts; `new` passes the filed number) → send a
31
- `confirmation` Telegram with the resume commands in the body → **stop**. Plan comments are in the session language. The `confirmation` Telegram
32
- body MUST include the exact resume commands — **the `Next:` line first**, since that is how a verified
33
- `halfrun` ships: its `run:entry` adopts this stop's marked hold and resumes at
34
- the gate. The direct commands follow for shipping without an agent:
35
- `pnpm josh notify --task-type confirmation --issue-url "<issue-url>" --body=$'halfrun ready for manual
36
- verification\nNext: prrun #<N> | fullrun #<N>\nWithout an agent: pnpm josh git -y "<title> #<N>" && pnpm josh
37
- followup "<title> #<N>" --notify-message "Implemented <title>\\nCause: ...\\nFix: ...\\nResult:
38
- ...\\n\\nDetails:\\n- <change1>"' --recommended "Verify by hand, then prrun #<N>" --alternative "fullrun
39
- #<N>"`. The stop report names the same two, in the same order.
25
+ --halfrun-stop`** (the record `fullrun #<N>` adopts; refused with `e2e-owed` until `test:e2e` answered
26
+ green on this tree; it also sends the `confirmation` Telegram, its body led by
27
+ `Next: prrun #<N> | fullrun #<N>` — never compose one) → **stop**. Plan comments are in
28
+ the session language. The stop report names `prrun #<N>` (recommended) and `fullrun #<N>`, in that order.
40
29
  **Invoking `halfrun` is _not_ authorization to commit, push, or merge** — do not run `pnpm josh git -y` or `pnpm josh followup` yourself. If the user comes
41
- back with fixes, treat each as a new round: implement, re-run `pnpm josh gate`, send another
42
- `confirmation` Telegram, stop again.
30
+ back with fixes, treat each as a new round: implement, re-run `pnpm josh gate`, mark the stop again
31
+ (it sends the `confirmation`), stop again.
43
32
 
44
33
  `halfrun new` or `halfrun new "<title>"`: `kickoff new` + `halfrun #<N>` (no Issue exists yet). Steps
45
34
  mirror `fullrun new` (1)–(8): derive an English title (or use the provided one) → create the Issue
46
- (`pnpm josh issue:file "<title>" --body-file <body-file> --depth <n>`, with the labels
35
+ (`pnpm josh issue:file "<title>" --body-file <body-file>`, with the labels
47
36
  `kickoff.md` → "Words typed after `new`" maps, body per
48
- `prompts/collaboration-workflow/issue-template.md`; its duplicate scan is read per `issue-scout.md`) → add `in-progress` (as `fullrun new` (3)) → post the agreed plan → stash
49
- any pre-existing changes with `git stash push -m "halfrun new: pre-existing changes" -- ':!.josh/observations'`
50
- (the pathspec keeps the observation ledger in the tree for this run's commit), popped by
51
- message with `pnpm josh stash:pop "halfrun new: pre-existing changes"`, never a positional `git stash pop` →
52
- `pnpm josh ms` → `pnpm josh latest:scope` → implement → run the gate (as above, `pnpm
53
- josh test:e2e` run by **you**) → `pnpm josh run:hold <N> --halfrun-stop` → send the `confirmation`
54
- Telegram and **stop**.
37
+ `prompts/collaboration-workflow/issue-template.md`; its duplicate scan is read per `issue-scout.md`) → `pnpm josh run:hold --adopt <N>` (as `fullrun new` (3)) → post the agreed plan → stash
38
+ any pre-existing changes with `pnpm josh stash:push "halfrun new: pre-existing changes"`, popped
39
+ after `stashed` with `pnpm josh stash:pop "halfrun new: pre-existing changes"` →
40
+ `pnpm josh ms` → `pnpm josh run:prep <N>`, and on `latest: required` `pnpm josh latest:if-required` → implement → run the gate (as above, `pnpm
41
+ josh test:e2e` run by **you**) → `pnpm josh run:hold <N> --halfrun-stop` (it sends the `confirmation`)
42
+ → **stop**.
@@ -2,8 +2,7 @@
2
2
 
3
3
  **This file is the suffix's single source, read at its point of use — the moment a `new` entry is
4
4
  typed with an `into <target>` suffix, not at any entry.** A run given a `#N` or a bare `new` never
5
- reaches it. `SKILL.md` → §2's table keeps the trigger and points here. Rationale:
6
- `docs/maintainers/into-target-rationale.md` → "Why the suffix reads as it does".
5
+ reaches it.
7
6
 
8
7
  `kickoff new` / `fullrun new` / `halfrun new` accept a suffix naming the epic the run's artifact
9
8
  belongs to. Without it the artifact belongs to no epic, and `epic:next` only ever offers an epic's
@@ -1,7 +1,6 @@
1
1
  # An Issue's comments are part of the Issue
2
2
 
3
- **The single source of the comment read**, read before implementing a `#N` Issue. Rationale and
4
- history: `docs/maintainers/issue-comments-rationale.md` → "Why comments are read".
3
+ Read before implementing a `#N` Issue.
5
4
 
6
5
  **Every `#N` entry point reads the Issue's comments before it implements** — `fullrun`, `halfrun` and
7
6
  `kickoff`; a `backlogrun` named issue and epic child inherit it through `fullrun`. One call, in the same
@@ -48,32 +47,37 @@ means "waiting for an answer", and here the answer exists.
48
47
  the Issue (`scripts/issue/issue-labels.ts` → `NOT_DIRECTLY_RUNNABLE_LABELS`, `epic-classify.ts` →
49
48
  `human`), and `epic:busy` stops counting it. **Only a person removes it, by closing the Issue.**
50
49
 
50
+ **Commit nothing, push nothing, open no pull request** — run one command; it posts the evidence,
51
+ applies `already-done` and releases the hold, in that order, stopping at the first failure:
52
+
51
53
  ```bash
52
- gh api repos/{owner}/{repo}/labels -f name=already-done -f color=6f42c1 -f description="Verified already merged — a person closes it" --silent 2>/dev/null || true
53
- gh api repos/{owner}/{repo}/issues/<N>/labels -f 'labels[]=already-done'
54
+ pnpm josh issue:already-done <N> --evidence-file <path>
54
55
  ```
55
56
 
56
- 1. **Record the evidence as an Issue comment, before the label**: the merging pull request or commit
57
- and, per acceptance criterion, the file and lines that satisfy it. **A claim with no citations is not
58
- the finding this exit is for.**
59
- 2. **Apply `already-done`** — the two commands above.
60
- 3. **Commit nothing, push nothing, open no pull request.** Release the hold with
61
- `pnpm josh run:release <N>`, which also removes `in-progress`.
62
- 4. **Then behave as the entry point does for a parked child.** A typed `fullrun` / `halfrun` sends a
63
- `confirmation` Telegram naming the Issue and the covering merge, and stops; a `backlogrun` child is
64
- park-and-continue (`backlogrun-park.md` → "park and continue").
65
- 5. **Never close the Issue** — Tier C at every entry point.
57
+ **The evidence file names the merging pull request or commit and, per acceptance criterion, the
58
+ `file:line` that satisfies it.** **A claim with no citations is not the finding this exit is for.**
59
+
60
+ Then behave as the entry point does for a parked child: a typed `fullrun` / `halfrun` sends a
61
+ `confirmation` Telegram naming the Issue and the covering merge, and stops; a `backlogrun` child is
62
+ park-and-continue (`backlogrun-park.md` → "park and continue"). **Never close the Issue** — Tier C.
66
63
 
67
64
  **Looking familiar is no license to skip the work**: a criterion you cannot point at merged code for is
68
65
  one this run still owes.
69
66
 
67
+ ## A measurement-only Issue
68
+
69
+ **Every criterion is a measurement, so no pull request closes it** → `pnpm josh issue:measured <N>
70
+ --evidence-file <path>` (per criterion, the result and its run), never a bare comment: an OPEN child is
71
+ parked `run:stalled`. Invoking `fullrun` / `backlogrun` authorizes this close. `docs/josh-commands-backlog.md` → "`josh issue:measured`".
72
+
70
73
  ## A long thread
71
74
 
72
75
  **The fetch is one call; what costs is carrying it** — hence the projection to author, timestamp and
73
76
  body. A thread longer than the Issue is the pre-implementation reading `delegation.md` describes: brief
74
77
  a unit to return **the agreements in force plus the comment URLs that carry them**, never the text.
75
78
 
76
- **`pnpm josh rule:guard` refuses the body-only read** (`prompts/collaboration-workflow/rule-delivery.md`).
79
+ **Under Claude Code the hook prepends the comments to a line that opens with a body-only `gh api` read
80
+ and refuses every other body-only read; the Codex adapter refuses them all** (`prompts/collaboration-workflow/rule-delivery.md`).
77
81
  **This file is the rule, not the hook** — a session without hooks still owes the read.
78
82
 
79
83
  ## A person's update mid-run
@@ -6,8 +6,8 @@ Every filing asks whether the work already exists and which epic owns it; the co
6
6
  named in `--distinct`:
7
7
 
8
8
  ```bash
9
- pnpm josh issue:file "<title>" --body-file <complete-draft.md> --depth <n> [--route <route>]
10
- pnpm josh issue:file "<title>" --body-file <complete-draft.md> --depth <n> --distinct 2801,2795
9
+ pnpm josh issue:file "<title>" --body-file <complete-draft.md> [--route <route>]
10
+ pnpm josh issue:file "<title>" --body-file <complete-draft.md> --distinct 2801,2795
11
11
  ```
12
12
 
13
13
  - **`Duplicates:` is read, not skimmed.** Open each candidate and apply `issue-fold-existing.md`
@@ -28,8 +28,9 @@ pnpm josh issue:file "<title>" --body-file <complete-draft.md> --depth <n> --dis
28
28
  `add_to_epic` / `create_epic` Tier A and `ask` a stop, in exactly the reading `into-target.md`'s
29
29
  `into <target>` suffix would have given by hand. Where the user typed `into <target>`, that naming wins.
30
30
  - **`Epic: not asked` is not `Epic: none`.** The epic half decides from the issue numbers the body
31
- names. **Cite `#N` in the body whenever the work follows an existing Issue** — one line is enough,
32
- and naming the epic itself (`part of epic #<E>`) is answered with that epic.
31
+ names in its acceptance criteria or its `parent: #N` line; a background mention does not count.
32
+ **Cite `#N` there whenever the work follows an existing Issue** — one line is enough, and naming
33
+ the epic itself (`parent: #<E>`) is answered with that epic.
33
34
  - **`epic:bundle` then runs on the new Issue, in the same call.** Act on its printed answer; a `⚠`
34
35
  means rerun `pnpm josh epic:bundle <N>` — the Issue exists, so never refile; a placing answer
35
36
  reads the `epic-commands` skill.