@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
@@ -4,18 +4,22 @@
4
4
  nothing and prints the stage line alone; on `start: reached` report the stage line and **stop**. Then:
5
5
  1. Read Issue #N **and every comment on it** — `pnpm josh issue:read <N>`; the later text is the
6
6
  agreement in force (`issue-comments.md`, which also carries the answers that stop the run).
7
- 2. **Normalize the title** to clear English: `gh api -X PATCH repos/{owner}/{repo}/issues/<N> -f title="<title>"`.
7
+ 2. Derive a clear English title.
8
8
  3. Analyze requirements → **scope assessment per `split-assessment.md`**.
9
- 4. Post the plan — a blank body takes `gh api -X PATCH repos/{owner}/{repo}/issues/<N> -f body="<plan>"`,
10
- otherwise `pnpm josh issue:comment <N> --body-file <path>` — in the session language
11
- (`JOSH_SESSION_LANG`, default `ja`).
12
- 5. **Apply the `run:planned` label** — the next command's `run:entry` starts at the implementation
13
- (`gh api repos/{owner}/{repo}/issues/<N>/labels -f 'labels[]=run:planned' --silent`).
14
- 6. Send the Telegram notification, its last line `Next: halfrun #<N> | prrun #<N> | fullrun #<N>` →
9
+ 4. **Record the plan** — written to a file in the session language (`JOSH_SESSION_LANG`, default
10
+ `ja`), then `pnpm josh issue:plan <N> --body-file <path> --title "<title>" --planned`: it renames
11
+ the issue, fills a blank body or comments otherwise, and applies `run:planned`, so the next
12
+ command's `run:entry` starts at the implementation. A target named in front of the reference
13
+ adds `--repo <owner/name>`. Before writing the plan, run `pnpm josh plan:consumers
14
+ <identifier...>` on what it adds or changes and finish the `### 影響を受ける既存の利用者` draft it
15
+ prints; `issue:plan` refuses a plan without it (`docs/josh-commands-backlog.md` → "`josh issue:plan`").
16
+ 5. Send the Telegram notification, its last line `Next: halfrun #<N> | prrun #<N> | fullrun #<N>` →
15
17
  **stop** (do not implement).
16
18
 
17
- **Two or more separately-mergeable deliverables** take the split path instead of a plan: create the
18
- children as in `kickoff new`, then either **promote `#N`** with `pnpm josh epic --promote <N> <N1> <N2>
19
+ **Two or more separately-mergeable deliverables** take the split path instead of a plan: rename `#N`
20
+ to the step-2 title (`gh api -X PATCH repos/{owner}/{repo}/issues/<N> -f title="<title>"` — neither
21
+ `issue:plan` nor `epic --promote` runs here to apply it), create the children as in `kickoff new`,
22
+ then either **promote `#N`** with `pnpm josh epic --promote <N> <N1> <N2>
19
23
  ... [--ordered] [--rationale-file <path|->]` (when `#N` is a request, a discussion or a container), or
20
24
  keep `#N` as a child and create a new epic with `pnpm josh epic`. That branch is Tier A: choose and
21
25
  record the reasoning on the Issue. Present `backlogrun #<E> --only` and stop.
@@ -41,13 +45,13 @@ gate must hold **together**. The rest of `split-assessment.md` is read when a sp
41
45
  - `kickoff new` or `kickoff new "<title>"`: (0) **Scope assessment** per `split-assessment.md` — one
42
46
  deliverable takes the **single-issue path**, several the **multi-issue split path**.
43
47
  - **Single-issue path**: (1) Derive an English title, or use the one given. (2) `pnpm josh issue:file
44
- "<title>" --body-file <body-file> --depth <n>` plus the labels the words typed after `new` name
48
+ "<title>" --body-file <body-file>` plus the labels the words typed after `new` name
45
49
  ("Words typed after `new`", below; body per `prompts/collaboration-workflow/issue-template.md`) —
46
50
  its duplicate scan runs first, and a candidate covering the same work stops the run (`SKILL.md` →
47
51
  `issue-scout.md`). Capture `<N>`. (3) Post the plan as `kickoff #<N>` does. (4) Telegram. (5)
48
52
  **Stop**.
49
53
  - **Multi-issue split path**: (1) Per deliverable, `pnpm josh issue:file "<sub-title>" --body-file
50
- <body-file> --depth <n> --route split` plus the labels the words after `new` name (duplicate scan
54
+ <body-file> --route split` plus the labels the words after `new` name (duplicate scan
51
55
  per `issue-scout.md`). A split filed into another repository gives every child body the `## Origin`
52
56
  backlink, the epic the same link as prose (never a checkbox row, which disables its auto-close), and
53
57
  the originating Issue lists children and epic under `## Upstream issues`. (2) **Epic — always, for
@@ -57,19 +61,13 @@ gate must hold **together**. The rest of `split-assessment.md` is read when a sp
57
61
  a hand-edited epic with `pnpm josh epic:check <E>`. (3) Telegram listing every created Issue. (4)
58
62
  Present `backlogrun #<E> --only`. (5) **Stop**.
59
63
 
60
- **The epic itself is never implemented** — `backlogrun` runs its *children*, and `pnpm josh followup`
61
- closes it once every child is closed. Children with no required order take `None — the children are
64
+ **The epic itself is never implemented** — `backlogrun` runs its *children*, and it closes itself
65
+ once every child is closed, whichever josh path closes the last one. Children with no required order take `None — the children are
62
66
  independent; any execution order works.` under `Dependencies`. **Only when the execution order
63
67
  matters** (`execution-waves.md` → "When a wave may be declared") pass `--ordered`, which treats the
64
68
  argument order as the dependency order.
65
69
 
66
- **Only where `josh` is unavailable**, the manual fallback: `gh api repos/{owner}/{repo}/labels -f
67
- name=epic -f color=5319e7 -f description="Tracks a batch of child issues from one split" --silent
68
- 2>/dev/null || true`, then `gh api repos/{owner}/{repo}/issues -f title="<epic-title>" -f
69
- 'labels[]=epic' -F body=@<body-file>` with the epic format of `issue-template.md`; an order is
70
- recorded per pair with `gh api repos/{owner}/{repo}/issues/<N2>/dependencies/blocked_by -F
71
- issue_id="$(gh api repos/{owner}/{repo}/issues/<N1> --jq .id)"` (the blocker's **database id**; a
72
- failure is non-fatal), never folded into the creation call.
70
+ Without `josh`: `issue-template.md` → "複数 Issue に分割するときの epic Issue".
73
71
 
74
72
  `pnpm josh issue:file` lints the body and applies the classification labels it declares (`issue-template.md`; `docs/josh-commands-backlog.md` → `josh issue:file`).
75
73
  An Issue a consumer can use only once it is published is filed with `--release` (`kickoff new`), or linked with `pnpm josh issue:release <N>` (`kickoff #N`) — either makes it a blocker of the repository's `release` Issue, which never gets `auto-ok` on its own.
@@ -83,7 +81,10 @@ An Issue a consumer can use only once it is published is filed with `--release`
83
81
  **Words after `new`** (`kickoff new high`) are read like `into <target>`, never inferred. Each adds its
84
82
  labels to the filing; a word not in the table is asked about:
85
83
 
86
- | Typed | Added to `pnpm josh issue:file` |
87
- | --------- | ------------------------------- |
84
+ | Typed | Added to `pnpm josh issue:file` |
85
+ | ---------- | ------------------------------- |
88
86
  | `auto ok` | nothing — `issue:file` judges it |
89
- | `high` | `--label priority:high` |
87
+ | `critical` | `--label priority:critical` |
88
+ | `high` | `--label priority:high` |
89
+
90
+ A typed priority wins: `issue:file` then skips the body's `- 優先度:` judgement (`scripts/issue/issue-priority.ts`).
@@ -1,9 +1,7 @@
1
1
  # The dependency update — when `josh latest` runs
2
2
 
3
3
  `josh latest` updates every dependency, the published ranges, `pnpm audit` and pnpm, in that
4
- order and over the network. This file is the **single source** of when it runs; every entry point
5
- references it and none restates it. History: `docs/maintainers/latest-gate-rationale.md` → "Where
6
- each rule came from".
4
+ order and over the network.
7
5
 
8
6
  ## Ask the command; do not decide
9
7
 
@@ -28,26 +26,21 @@ judgement that the dependencies are probably still fresh.
28
26
  ## What runs when the answer is `required`
29
27
 
30
28
  ```bash
31
- git stash push -u -m "josh latest" # only if the working tree has staged or modified files
32
- pnpm josh ms
33
- pnpm josh latest # on `required` only
34
- pnpm josh stash:pop "josh latest" # only if you stashed above — by message, never a positional pop
29
+ pnpm josh latest:if-required # stash → josh latest → pop by message; nothing on `skip`
35
30
  ```
36
31
 
37
- **The pop is by message, never a bare `git stash pop`** — the stash is a repository-wide stack every
38
- work tree shares.
32
+ It asks `latest:scope` itself, so a run reads `run:prep`'s `latest:` line and never asks again. A
33
+ failed update or a conflicted pop stops with the stash kept and names the pop to run.
39
34
 
40
35
  Then **load the `dependency-update` skill and follow its procedure** — the overrides in **both**
41
36
  `pnpm-workspace.yaml` and `package.json`, and the one expected `devEngines` pnpm bump — in every run in
42
37
  which `josh latest` actually ran; never report the pins intact without having run it.
43
38
 
44
- **On `skip`, one line of that block goes away and no more.** `pnpm josh latest` does not run, and
45
- the `dependency-update` skill is not read, because nothing rewrote a pin for it to check.
39
+ **On `skip`, the command does nothing** and the `dependency-update` skill is not read, because
40
+ nothing rewrote a pin for it to check.
46
41
 
47
- **Two of those steps are not this gate's, and making either conditional breaks something.**
48
- `pnpm josh ms` runs per issue and per child either way — it brings the previous merge into the tree.
49
- The stash before it is the branch switch's, not the update's, so it is conditional on the **tree**,
50
- never on the answer.
42
+ **`pnpm josh ms` is not this gate's** — it runs per issue and per child either way, bringing the
43
+ previous merge into the tree, before the update.
51
44
 
52
45
  ## The vulnerability net is not what moved
53
46
 
@@ -59,8 +52,6 @@ merge is CI**: the `Security Audit` job runs on every pull request and is one of
59
52
 
60
53
  **The lock file the update rewrites lands with whichever issue ran it.** `josh latest` leaves
61
54
  `pnpm-lock.yaml` modified and that issue's `pnpm josh git -y` commits it. Should the issue then fail
62
- CI on a bump rather than on its own change, fix it forward before parking the issue for it. Rationale
63
- for the elapsed-time window: `docs/maintainers/latest-gate-rationale.md` → "Why an elapsed-time
64
- window rather than once per batch".
55
+ CI on a bump rather than on its own change, fix it forward before parking the issue for it.
65
56
 
66
57
  `docs/josh-commands-automation.md` documents the command itself.
@@ -1,8 +1,6 @@
1
1
  # `needs-human-review` — the child that stops before its commit
2
2
 
3
- **The single source of the label**, read at its point of use — the moment `pnpm josh issue:state <N>`
4
- answers `human_review: yes`. Rationale and history: `docs/maintainers/needs-human-review-rationale.md`
5
- → "Why the label exists".
3
+ Read the moment `pnpm josh issue:state <N>` answers `human_review: yes`.
6
4
 
7
5
  An issue carrying **`needs-human-review`** is degraded to a `halfrun`-shaped stop, whichever entry
8
6
  point reached it — `fullrun` or `backlogrun` — and the label may be applied **only by a person**.
@@ -10,18 +8,18 @@ point reached it — `fullrun` or `backlogrun` — and the label may be applied
10
8
  - **Implementation and the verification gate run normally** — refactor, `pnpm josh gate`,
11
9
  `/code-review`, exactly as for any other child.
12
10
  - **Run `pnpm josh test:e2e` yourself before stopping.** With no pull request there is no CI E2E job,
13
- and `pnpm josh followup` is never reached. This is `halfrun`'s situation exactly: you run it and read
14
- what it prints. A printed skip is the answer for a project with no E2E suite; a skip nobody saw
15
- printed is not.
11
+ and `pnpm josh followup` is never reached. A printed skip is the answer for a project with no E2E
12
+ suite.
16
13
  - **Nothing is committed, pushed, opened as a pull request or merged.** `pnpm josh bump`,
17
14
  `pnpm josh git` and `pnpm josh followup` are never reached.
18
15
  - **The working tree is left uncommitted, and nothing is stashed.**
19
- - **Send a `confirmation` Telegram and stop the whole run.** The remaining children are not started —
20
- inside a `backlogrun` this is the one thing that is *not* park-and-continue.
21
- - The Telegram body carries the **resume command**, in the same form `halfrun`'s own stop uses.
16
+ - **Mark the stop: `pnpm josh run:hold <N> --human-review-stop`, then stop the whole run.** It keeps
17
+ the hold, marks it as `halfrun`'s stop, and sends the `confirmation` Telegram with the resume command
18
+ and the lane directory — never compose one. It answers `e2e-owed` until `test:e2e` answered green on
19
+ this tree. The remaining children are not started — inside a `backlogrun` this is the one thing that
20
+ is *not* park-and-continue.
22
21
  - **Resuming is `halfrun`'s stop exactly**: a person looks at the working tree and, if it is right,
23
- carries on from the commit themselves. The stop report carries that resume command too, not only the
24
- Telegram.
22
+ carries on from the commit themselves. The stop report carries the resume command too.
25
23
 
26
24
  **Stopping is the specification, not a failure.**
27
25
 
@@ -36,18 +34,12 @@ pnpm josh issue:state <N> --repo <owner/repo> # a child in another repository
36
34
 
37
35
  **Never apply or remove it**: a mark a run can clear for itself is
38
36
  not a mark. Everything but typing the command on an explicit instruction in the current turn is a
39
- proposal, written as an Issue comment and left for the person. The label itself is created once per
40
- repository, by a person:
41
-
42
- ```bash
43
- gh api repos/{owner}/{repo}/labels -f name=needs-human-review -f color=d93f0b -f description="Implement and verify, but stop before committing so a person can look"
44
- ```
37
+ proposal, written as an Issue comment and left for the person. `josh sync` creates the label.
45
38
 
46
39
  **It is not `needs-decision`**: `needs-decision` withholds a run's *start*; this withholds its *end*.
47
40
  So a `needs-human-review` issue is still offered, and a child stopped by it **goes on holding its
48
41
  repository** — `scripts/issue/issue-labels.ts` keeps it out of `NOT_DIRECTLY_RUNNABLE_LABELS` and
49
- `scripts/epic/epic-busy.ts` keeps it out of the parked set (`docs/maintainers/needs-human-review-rationale.md`
50
- → "Why it is not `needs-decision`").
42
+ `scripts/epic/epic-busy.ts` keeps it out of the parked set.
51
43
 
52
44
  Each entry point's own branch stays in its own file — `fullrun.md`, `halfrun.md`,
53
45
  `backlogrun.md` — and routes here for the definition.
@@ -23,12 +23,13 @@ report. Drop an observation nobody would act on.
23
23
  `pnpm josh run:event --append note "#<N> <text>"`, shown by `pnpm josh run:board`
24
24
  (`docs/josh-commands-run.md` → "`josh run:board`").
25
25
 
26
- **The filing ceilings still apply.** Count it in the run's ten-Issue limit; above the target
26
+ **The filing ceilings still apply.** It counts toward the per-run cap (`prerequisite.md`); above the target
27
27
  repository's WIP cap, close one first or do not file (`prompts/collaboration-workflow/wip-cap.md`).
28
28
  File with `pnpm josh issue:file` (`issue-scout.md`): it lints the body, applies the classification
29
29
  labels, scans for duplicates and runs `epic:bundle` (an `auto-ok` epic adds it to the backlog pool —
30
30
  `backlogrun-steps.md` → "What one invocation approves"). On the second filing of the run it asks the fold
31
31
  question and holds a `fold` (`split-assessment.md` → "The same two questions decide the filing-time fold").
32
+ A bug filing's origin line: `prompts/collaboration-workflow/issue-template.md` (`- 原因:`).
32
33
 
33
34
  ### The depth test — a discretionary filing cites the product work it blocked
34
35
 
@@ -40,26 +41,7 @@ question and holds a `fold` (`split-assessment.md` → "The same two questions d
40
41
  | **1** | The run orchestration that executes an Issue | `fullrun` / `backlogrun`, lanes, the `epic:*` commands, the filing routes themselves |
41
42
  | **2** | What measures a run | `josh cost` and the run-timing report |
42
43
 
43
- **The depth is recorded on the Issue as a label, and the label is applied when the Issue is filed.**
44
- `depth:0` / `depth:1` / `depth:2` are defined in `scripts/issue/issue-labels.ts` with no definition of
45
- their own — **the table above is the single source**. **Every filing route applies one**: each route
46
- of `prerequisite.md`'s table, a split child and a review branch-2 filing pass `--depth <n>` to
47
- `pnpm josh issue:file`, beside any `--route`.
48
-
49
- ```bash
50
- pnpm josh issue:file "<title>" --body-file <body-file> --depth 1
51
- gh api repos/{owner}/{repo}/issues/<N>/labels -f 'labels[]=depth:1' # an Issue already filed
52
- ```
53
-
54
- `issue:file` creates any missing workflow label from `DEPTH_LABELS` before the create call.
55
-
56
- - **It is read off the subject, exactly as the table is** — not a judgement, unlike `auto-ok` and
57
- `needs-human-review`; it withholds nothing.
58
- - **Applied at filing, not at completion.**
59
- - **An Issue carrying more than one counts as the lowest depth present.**
60
- - **An `epic` takes no depth label** and is excluded from the share's denominator.
61
-
62
- Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why the depth label is applied at filing".
44
+ **The depth is read, not recorded** — no label carries it.
63
45
 
64
46
  - **A discretionary observation at depth 1 or deeper is filed only where it can cite the depth-0 work
65
47
  it stopped or delayed** — an Issue number or a run, never "this would slow runs down". **Cannot cite
@@ -74,35 +56,14 @@ Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why the depth
74
56
  - **Cannot write both, it is not filed** — it goes to the ledger.
75
57
  - **This narrows depth 2 alone, and the exemptions above carry over unchanged.**
76
58
 
77
- Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why depth gates a discretionary filing".
78
-
79
59
  **It governs this route only — the fourth row of `prerequisite.md`'s table.** A review finding routed
80
60
  to branch 2 of `prompts/review.md` → "Review round cap" is filed under that section's own bar and
81
61
  **does not take the depth test**. **That bar is the reason, and the subject's depth is not.**
82
- Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why a review branch-2 filing skips the depth test".
83
62
 
84
63
  **And a PR that *adds* a measurement names its reader in the same way** — the Issue that read the value
85
64
  to decide something, or the path of the rule that reads it. **A measurement with no reader is not
86
65
  added.** `route:tier-a` and `route:interrupt` carry over unchanged.
87
66
 
88
- ### The depth-0 share — what is counted
89
-
90
- **The depth-0 share is the share of open Issues at depth 0.**
91
-
92
- **The denominator is a rule, not a choice, and this is it:**
93
-
94
- - **Counted: every open Issue that does not carry `epic`.**
95
- - **`route:tier-a` and `route:interrupt` are counted like anything else.**
96
- - **An Issue with no depth label is in the denominator**, counted separately as `unlabelled`.
97
- - **The numerator is what is left**: open, non-epic Issues carrying `depth:0`.
98
-
99
- **Two readings of the same backlog give the same number.**
100
-
101
- Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why the depth-0 denominator is fixed".
102
-
103
- **What the number is for is not decided here** — no `backlog:next` change and no target value until it
104
- has been measured the same way more than once.
105
-
106
67
  ### A delegated child does not take this route
107
68
 
108
69
  **A delegated child files `route:tier-a` and `route:interrupt` only.** Its discretionary observations
@@ -111,13 +72,6 @@ summary carries, and how long it may be"); the parent files what survives the de
111
72
  run's ceiling.
112
73
 
113
74
  **A delegated child does not append to the ledger either — the parent collapses the duplicates and
114
- appends what is left.** **The 10-per-run ceiling for this route is the parent's to count.** **Lines
75
+ appends what is left.** **Lines
115
76
  its own `review:record` and `measure:rerun` write are not this route** — they go to its issue's file in
116
77
  its lane (`observation-ledger.md` → "The ledger — where an observation that cannot cite a blockage goes").
117
-
118
- Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why a delegated child neither files nor appends".
119
-
120
- **This file is the single source of every procedure above**; nothing under
121
- `prompts/collaboration-workflow/` restates it.
122
-
123
- Provenance: `docs/maintainers/observation-filing-rationale.md` → "Where each rule came from".
@@ -1,14 +1,11 @@
1
1
  # The observation ledger — grammar, commit path and promotion
2
2
 
3
3
  **Read only when the depth test in `observation-filing.md` turns an observation away, or a user
4
- reports a bug** (its kind of miss, below), in the turn that appends the line. Single source of the
5
- ledger's grammar, commit path and second-sighting promotion. Provenance:
6
- `docs/maintainers/observation-ledger-rationale.md` → "Where each rule came from".
4
+ reports a bug** (its kind of miss, below), in the turn that appends the line.
7
5
 
8
6
  ## The ledger — where an observation that cannot cite a blockage goes
9
7
 
10
- **An observation the depth test turns away is recorded in the ledger, not discarded.** Rationale:
11
- `docs/maintainers/observation-ledger-rationale.md` → "Why the ledger exists".
8
+ **An observation the depth test turns away is recorded in the ledger, not discarded.**
12
9
 
13
10
  - **The destination is the `.josh/observations/` directory in the repository the observation is
14
11
  about**, **one file per issue**: `<N>.md` for the issue the run is executing (its branch's number,
@@ -60,8 +57,7 @@ blocked depth-0 work is filed as before.
60
57
 
61
58
  ## The commit path — how an appended line reaches the default branch
62
59
 
63
- **An append nobody commits is an append nobody can count.** Rationale:
64
- `docs/maintainers/observation-ledger-rationale.md` → "Why the ledger has a commit path".
60
+ **An append nobody commits is an append nobody can count.**
65
61
 
66
62
  - **A run's appended lines ride its own commit** — `pnpm josh git` stages `.josh/observations/`
67
63
  (`scripts/git/git-staging.ts`). **Record before the commit, not after the merge:** a finding recorded
@@ -87,13 +83,12 @@ blocked depth-0 work is filed as before.
87
83
 
88
84
  ## The second sighting is what files it
89
85
 
90
- **A repeat is the citation** — counted, not judged (`docs/maintainers/observation-ledger-rationale.md`
91
- → "Why a second sighting files"):
86
+ **A repeat is the citation** — counted, not judged:
92
87
 
93
88
  - **On `observation:record` answering `file`, the observation is filed**, at depth 1 or deeper, with
94
89
  no depth-0 citation (only when exactly one earlier sighting exists).
95
90
  - **The Issue quotes the ledger's own dates — the first sighting's and this one's.**
96
- - **Both ceilings still apply** (`observation-filing.md`): the 10-per-run cap and the WIP cap.
91
+ - **Both ceilings still apply** (`observation-filing.md`): the per-run filing cap and the WIP cap.
97
92
 
98
93
  **A third and later sighting appends a line and files nothing more** — `pnpm josh issue:scout` finds
99
94
  the open Issue.
@@ -2,9 +2,9 @@
2
2
 
3
3
  The **pre-gate cut**: a dispatched lane child ends its process the moment implementation is done, and a
4
4
  **fresh** process resumes the same lane from the gate onward, without the implementation's accumulated
5
- context. Rationale: `docs/maintainers/pre-gate-cut-rationale.md` → "Why the cut exists".
5
+ context.
6
6
 
7
- This file is the single source of the boundary: `run:cut` takes it, `run:cut --resume` is the fresh
7
+ `run:cut` takes the boundary, `run:cut --resume` is the fresh
8
8
  process's entry check. A second boundary — the implementation-phase cut, _during_ implementation — is
9
9
  below; it states only what differs.
10
10
 
@@ -17,20 +17,12 @@ the fallback.
17
17
  ## It applies to a dispatched lane child, and to nothing else
18
18
 
19
19
  A person's interactive `fullrun` never relaunches itself. A dispatched child is told apart
20
- **mechanically, by a mark the dispatch sets** — never by reading its own prompt.
20
+ **mechanically, by the `JOSH_LANE_CHILD` mark the dispatch sets** — never by reading its own prompt
21
+ (`docs/josh-commands-run.md` → "`josh run:cut`").
21
22
 
22
- ### The dispatch mark
23
-
24
- `lane:dispatch` starts each child generation with **`JOSH_LANE_CHILD`** set to the lane's issue number
25
- (`scripts/lane/lane-child-marker.ts`).
26
-
27
- - **Meaning**: "this session was launched for issue `<N>`, not typed by a person."
28
- - **Lifetime**: the child process — set at launch, never written by the run itself.
29
- - **Trust**: only where its value equals the lane's own issue; a leaked mark naming another issue, or
30
- none, is read as a person. An interactive `fullrun` carries no mark.
31
-
32
- The name, meaning and lifetime are documented here and nowhere else. `run:cut` itself looks for an
33
- **open lane** for the issue instead (`not-a-lane` otherwise), so it is safe to issue unconditionally.
23
+ An interactive `fullrun` carries no mark, and every
24
+ guard in this file holds that boundary: **It fires for a marked child and nowhere else**. `run:cut`
25
+ answers `not-a-lane` outside a lane, so it is safe to issue unconditionally.
34
26
 
35
27
  ## Taking the cut
36
28
 
@@ -54,20 +46,9 @@ pnpm josh run:cut <N>
54
46
 
55
47
  ### The gate refuses until the cut has been taken
56
48
 
57
- `pnpm josh rule:guard` **refuses `pnpm josh gate`** in a lane with no cut record carried, handing back
58
- the command above. Rationale: `docs/maintainers/pre-gate-cut-rationale.md` → "Why the rules are
59
- guards, not prose".
60
-
61
- - **It fires for a marked child and nowhere else**: the working directory is `<lane root>/<issue
62
- number>` **and** `JOSH_LANE_CHILD` names that issue. `run:cut` uses an open-lane lookup instead, so
63
- the guard and the command need not agree byte for byte.
64
- - **It fires only when the current context warrants a cut** (`cost_cli.session_verdict`, as `run:cut`).
65
- - **It is silent once the cut is carried**.
66
- - **It fires once per run.**
67
- - **`--resume`, `--end` and `--json` do not count as taking the cut.**
68
-
69
- Its row: `prompts/collaboration-workflow/rule-delivery.md`. Suites: `docs/maintainers/pre-gate-cut-rationale.md`
70
- → "Which suites pin each guard".
49
+ The `pre-gate-cut` row of `pnpm josh rule:list` **refuses `pnpm josh gate`** in a lane with no cut record carried, handing back
50
+ the command above — run it. When the guard fires: `docs/josh-commands-run.md` → "`josh run:cut`"; its
51
+ row: `prompts/collaboration-workflow/rule-delivery.md`.
71
52
 
72
53
  ## Resuming — the fresh process's entry check
73
54
 
@@ -92,8 +73,7 @@ pnpm josh run:cut --resume <N>
92
73
  ### The stage is passed to the resumed child, not reconstructed by it
93
74
 
94
75
  **Skip the entry it has already done**: do not re-read the workflow skill, repeat the split assessment
95
- or re-normalize the title; the plan and decisions are read back from the issue. Rationale:
96
- `docs/maintainers/pre-gate-cut-rationale.md` → "Why the resume carries what it carries".
76
+ or re-normalize the title; the plan and decisions are read back from the issue.
97
77
 
98
78
  ## What is carried, and what is not
99
79
 
@@ -124,24 +104,24 @@ Same `cost_verdict.per_request_cost` through `cost_cli.session_verdict` as `back
124
104
 
125
105
  ### It is a guard, fired at the edit that crosses the threshold
126
106
 
127
- **The trigger**: `pnpm josh rule:guard` refuses an `Edit` / `Write` in a dispatched lane child over
107
+ **The trigger**: the `implementation-cut` row of `pnpm josh rule:list` refuses an `Edit` / `Write` in a dispatched lane child over
128
108
  threshold, handing back `pnpm josh run:cut --impl <N> --handoff <path>`. `cut` ends the turn; the
129
109
  fresh process's `run:cut --resume <N>` answers `resume-impl` — **the implementation resume clears the
130
- record**, so the cut may fire again. **A cut that relaunches its successor owes no Telegram**. Outside a
110
+ record**, so the cut may fire again. **A cut that relaunches its successor owes no Telegram** — the
111
+ `Stop` hook reads the relaunch off the turn's own `run:cut` output, not off the record the resume
112
+ clears. Outside a
131
113
  lane, `run:cut --impl` prints the held run's instruction: on `over`, keep the hold, send a
132
114
  `confirmation` Telegram naming `fullrun #<N>`, end the turn. **It fires on every threshold crossing,
133
115
  not once per run**; **An edit reissued right after a refusal passes**; **An unmeasurable session
134
- warrants the cut**; **It is silent between a cut and its resume**. Rationale:
135
- `docs/maintainers/pre-gate-cut-rationale.md` → "Why the rules are guards, not prose"
136
- (`scripts/rules/implementation-cut.ts`). A child that ended without cutting is detected by
116
+ warrants the cut**; **It is silent between a cut and its resume** (`scripts/rules/implementation-cut.ts`).
117
+ A child that ended without cutting is detected by
137
118
  `pnpm josh run:ending <N> --output <path>`.
138
119
 
139
120
  ## The threshold
140
121
 
141
122
  `CONTEXT_CUT_THRESHOLD` and `cost_verdict.per_request_cost` live in
142
123
  `scripts/cost-runtime/context-cut-payback.ts`; both cuts and the parent hand-off read the same verdict,
143
- and an unmeasurable session is always cut. Rationale: `docs/maintainers/pre-gate-cut-rationale.md` →
144
- "Why the threshold is a break-even". Both cuts end the turn **before** the gate, so the push is never a
124
+ and an unmeasurable session is always cut. Both cuts end the turn **before** the gate, so the push is never a
145
125
  turn boundary (`chain-rule.md`).
146
126
 
147
127
  ## A lane child records its park before it stops
@@ -149,18 +129,16 @@ turn boundary (`chain-rule.md`).
149
129
  **The trigger**: a dispatched lane child about to stop for a decision (Tier B, Tier C, an upstream
150
130
  defect) parks its own Issue first — `backlogrun-park.md` → "park and continue" — so `pnpm josh
151
131
  run:liveness` reads it `settled`. A `needs-human-review` or `already-done` stop already carries its
152
- label. `pnpm josh rule:guard` refuses `pnpm josh notify --task-type confirmation` from a marked child
153
- until then — **It fires once per run.** (`scripts/rules/lane-park.ts`).
132
+ label. The `lane-park` row of `pnpm josh rule:list` refuses `pnpm josh notify --task-type confirmation` from a marked child
133
+ until `pnpm josh run:park` has recorded the park — **It fires once per run.** (`scripts/rules/lane-park.ts`).
154
134
 
155
135
  **A split is not a park**: a child that promoted its Issue to an `epic` stops without
156
- `needs-decision` — `backlogrun-park.md` → "Splitting a child mid-run". `pnpm josh rule:guard` refuses a
136
+ `needs-decision` — `backlogrun-park.md` → "Splitting a child mid-run". The `lane-split-park` row of `pnpm josh rule:list` refuses a
157
137
  `needs-decision` write onto that epic, on every occurrence (`scripts/rules/lane-split-park.ts`).
158
138
 
159
139
  ### The interactive ask is refused one call earlier
160
140
 
161
141
  **The trigger**: a headless session ends the turn on an interactive ask, so the notify guard never
162
- fires; `pnpm josh rule:guard` refuses `AskUserQuestion` for a marked lane child on every occurrence — park the question instead.
142
+ fires; the `lane-interactive-ask` row of `pnpm josh rule:list` refuses `AskUserQuestion` for a marked lane child on every occurrence — park the question instead.
163
143
  `pnpm josh run:ending` lifts a slipped ask into the park basis (`scripts/rules/lane-interactive-ask.ts`,
164
144
  `scripts/agent/interactive-ask.ts`).
165
-
166
- Provenance of each rule: `docs/maintainers/pre-gate-cut-rationale.md` → "Where each rule came from".
@@ -1,8 +1,7 @@
1
1
  # A prerequisite discovered mid-run — a dependency, not a park
2
2
 
3
3
  **The single source of the prerequisite branch**, read at its point of use — the moment a run
4
- discovers that another Issue in this repository has to land first. History:
5
- `docs/maintainers/prerequisite-rationale.md` → "Where each rule came from".
4
+ discovers that another Issue in this repository has to land first.
6
5
 
7
6
  **A prerequisite discovered mid-run is a dependency, not a park** — the Issue in hand is still one
8
7
  deliverable, it just needs another one before it.
@@ -30,7 +29,7 @@ offer hands it back once its blockers merge.
30
29
 
31
30
  **A wait for the next published release is a dependency too** — never `needs-decision`. Record it
32
31
  with `pnpm josh issue:release <M> --wait` (`<M>` blocked by the release Issue, filed when none is
33
- open), then stash, comment and `pnpm josh run:release <M>` as for a prerequisite below; `fullrun` /
32
+ open), then `pnpm josh run:pause <M> --for <the release Issue>` as for a prerequisite below; `fullrun` /
34
33
  `halfrun` stop, `backlogrun` continues. Closing the release Issue once a person has published it hands
35
34
  `<M>` back to `backlog:next` (`docs/josh-commands-backlog.md` → `josh issue:release`).
36
35
 
@@ -38,7 +37,7 @@ open), then stash, comment and `pnpm josh run:release <M>` as for a prerequisite
38
37
  so the observation row carries no `route:` label (`observation-filing.md`):
39
38
 
40
39
  ```bash
41
- pnpm josh issue:file "<title>" --body-file <body-file> --depth <n> --route tier-a
40
+ pnpm josh issue:file "<title>" --body-file <body-file> --route tier-a
42
41
  ```
43
42
 
44
43
  The command lints the body against `prompts/collaboration-workflow/issue-template.md`, applies the
@@ -51,24 +50,18 @@ later steps name its number. **Its duplicate scan is read exactly as it is for a
51
50
 
52
51
  **Each entry point's own branch stays in that entry's file:**
53
52
 
54
- - **A named epic under `backlogrun`** files without confirmation, records the dependency with
55
- `pnpm josh epic --add <E> <N> --before <M>` — `<E>` the epic, `<N>` the prerequisite just filed,
56
- `<M>` the child in hand — and the run **continues rather than parking it** (`backlogrun-park.md` → "A
57
- prerequisite discovered mid-run"). A child outside any epic records the same relation on itself
58
- directly; that branch is the same section's.
53
+ - **A named epic under `backlogrun`** files without confirmation, sets `<M>` — the child in hand —
54
+ aside with `run:pause` below, and the run **continues rather than parking it** (`backlogrun-park.md` →
55
+ "A prerequisite discovered mid-run").
59
56
  - **`fullrun` / `halfrun`** file the same way without asking, insert the prerequisite into the epic
60
57
  that already tracks the Issue or create one over both, and then **stop**, leaving the person one
61
58
  command to type (`fullrun.md` / `halfrun.md`). Typing `fullrun` approved implementing **one** Issue;
62
59
  a batch is a different authorization, so the stop stays.
63
60
 
64
- **Two steps every entry's procedure turns on:**
61
+ **Once the prerequisite is filed, every entry sets `<M>` aside with `pnpm josh run:pause <M> --for <N>`**
62
+ — the stash, the comment naming its `stash:pop`, the blocked-by and the release; a failure is rerun as
63
+ is (`docs/josh-commands-run.md` → `josh run:pause`). Name the comment's pop in the Telegram too.
65
64
 
66
- - **`git stash push -u` — the `-u` is not optional.** The work in progress almost always includes a
67
- new, untracked `*.test.ts`, which a stash without `-u` leaves for the next `pnpm josh ms` to refuse.
68
- - **The Issue comment is what gets the stash popped, not the Telegram.** The run that picks the Issue up
69
- reads it and pops before implementing — **by message, `pnpm josh stash:pop "<the -m message>"`, never
70
- a positional `git stash pop`** (the stack is shared by every lane). Say it in the Telegram too.
71
-
72
- **Automatic filing is capped at 10 Issues per run** at every entry point; `pnpm josh rule:guard`
73
- refuses the eleventh filing (`prompts/collaboration-workflow/rule-delivery.md`). On reaching it, stop
65
+ **Automatic filing is capped at 10 Issues per run** at every entry point; the `filing-cap` row of
66
+ `pnpm josh rule:list` refuses the eleventh filing (`prompts/collaboration-workflow/rule-delivery.md`). On reaching it, stop
74
67
  and report. `kickoff` is exempt — it never implements, so it never discovers one.
@@ -40,7 +40,6 @@ silence clock (`docs/josh-commands-run.md` → "`josh run:progress`").
40
40
  `JOSH_PROGRESS_INTERVAL_MINUTES` moves both sides; `josh` → `progress_interval_minutes` in
41
41
  `package.json` sits one step below it. **`--interval` moves the watcher alone** — quieter, never the
42
42
  guard stricter.
43
- Rationale: `docs/maintainers/progress-watcher-rationale.md` → "Why the heartbeat reads as it does".
44
43
 
45
44
  ### What a report says
46
45
 
@@ -54,15 +53,14 @@ missing, say so. **A field's empty value is an observation, never a state** (`re
54
53
 
55
54
  **The heartbeat is ambient, never a Telegram.** `pnpm josh run:board` is its reader, in a pane of the
56
55
  person's own; **no session relays the stream** — name the board command once, at the first cut or when
57
- asked; `.vscode/tasks.json` starts it on folder open once VSCode's automatic-task prompt is allowed.
56
+ asked; the person starts it, or the `josh: run board` task in `.vscode/tasks.json`, by hand.
58
57
  `pnpm josh run:event --watch` stays for following the raw events one by one. `pnpm josh run:wake --list` is the one-line read for a person who types for it.
59
58
  **A request for periodic progress is never a CronCreate job** — on screen, name `pnpm josh run:board`;
60
59
  off-screen, start `pnpm josh run:board --every <minutes>` in the background (`docs/josh-commands-run.md`).
61
60
 
62
61
  **A stop is the only interrupt**: a `backlogrun` that has stopped ends with
63
62
  `pnpm josh run:carry --end --stopped "<reason>"`, which sends one ⏸️ confirmation; a parked child sends
64
- its own (`backlogrun-park.md`). Rationale: `docs/maintainers/progress-watcher-rationale.md` → "Why the
65
- signal tiers are split this way".
63
+ its own (`backlogrun-park.md`).
66
64
 
67
65
  ### Who starts it, and what counts as a report
68
66
 
@@ -85,7 +83,4 @@ tool result only you read is not one.** `--output` is omitted there, and `record
85
83
  **A run that merges needs no teardown; a run that stops has to end the reporting itself** — **no
86
84
  further `--wait` is started** after the stop notification, and the running one is stopped in the same
87
85
  turn: `halfrun`'s stop before commit, a `needs-human-review`, split or prerequisite stop, a
88
- `backlogrun` named issue's failure stop. Rationale: `docs/maintainers/progress-watcher-rationale.md` →
89
- "Why the watcher runs where it does".
90
-
91
- Provenance of each rule: `docs/maintainers/progress-watcher-rationale.md` → "Where each rule came from".
86
+ `backlogrun` named issue's failure stop.
@@ -1,10 +1,8 @@
1
1
  # `prrun` — the manifest (plan → implement → PR → green → stop, a person merges)
2
2
 
3
- `prrun` sits between `halfrun` (stop before commit) and `fullrun` (auto-merge). It runs `fullrun`
4
- up to a green, mergeable pull request and **stops before the merge**, so a person merges by hand.
5
- **Read `fullrun.md` and `entry-sequence.md` for every step** — the entry
6
- sequence, the step lists, the gate, the review and the stop branches are `fullrun`'s, unchanged. This
7
- file names only the difference.
3
+ `prrun` runs `fullrun` up to a green, mergeable pull request and **stops before the merge**, so a
4
+ person merges by hand. **Read `fullrun.md` and `entry-sequence.md` for every step** — the entry
5
+ sequence, the step lists, the gate, the review and the stop branches are `fullrun`'s, unchanged.
8
6
 
9
7
  ## The difference — the entry
10
8
 
@@ -22,13 +20,9 @@ Where `fullrun` runs `pnpm josh followup` and merges, `prrun` does three things
22
20
  review findings resolved. A failure stops the run exactly as it stops a `fullrun`.
23
21
  2. **Mark the stop — `pnpm josh run:hold <N> --prrun-stop`.** It records the commit the pull request is
24
22
  on in this run's own hold, the record `fullrun #<N>` adopts (its prrun resume, `working-tree-hold.md`). **The hold and `in-progress` stay**: the run is not finished until the merge's tail runs.
25
- 3. **Send a `confirmation` Telegram with the resume commands, then stop.** **`fullrun #<N>` first** —
26
- its `run:entry` reads where the pull request stands and resumes from there; the direct command
27
- follows for finishing without an agent:
28
- `pnpm josh notify --task-type confirmation --issue-url "<issue-url>" --body=$'prrun ready to
29
- merge: <pr-url>\nNext: fullrun #<N>\nAfter a manual merge, without an agent: pnpm josh followup
30
- "<title> #<N>"' --recommended "fullrun #<N>" --alternative "Merge by hand, then pnpm josh
31
- followup"`. The stop report names the same two, in the same order.
23
+ 3. **Stop.** The mark has already sent the `confirmation` Telegram, its resume line `Next: fullrun
24
+ #<N>` — never compose one. The stop report names `fullrun #<N>` (recommended) and a manual merge followed by
25
+ `pnpm josh followup "<title> #<N>"`, in that order.
32
26
 
33
27
  **Invoking `prrun` is _not_ authorization to merge** — never run `pnpm josh followup` without
34
28
  `--no-merge` in a `prrun`. After a person merges by hand, the same `pnpm josh followup "<title> #<N>"`