@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
@@ -1,21 +1,11 @@
1
1
  # `backlogrun` — lanes and concurrency
2
2
 
3
- Point-of-use, read one section at a time from `backlogrun.md` → "The route table". Reasons:
4
-
5
- - `docs/maintainers/backlogrun-lanes-rationale.md` → "Why the lane ceiling is shaped the way it is"
6
- - `docs/maintainers/backlogrun-lanes-rationale.md` → "Why CI concurrency is capped by the lane limit"
7
- - `docs/maintainers/backlogrun-lanes-rationale.md` → "Why a lane's review needs a brief and an attestation"
8
- - `docs/maintainers/backlogrun-lanes-rationale.md` → "Why the lane branch is `<N>-lane` and never switched"
9
- - `docs/maintainers/backlogrun-lanes-rationale.md` → "Why lanes cost as well as buy throughput"
10
- - `docs/maintainers/backlogrun-lanes-rationale.md` → "Why `lane:launch` folds the lane steps into one"
11
- - `docs/maintainers/backlogrun-lanes-rationale.md` → "Why a committed child's lane is kept"
12
- - `docs/maintainers/backlogrun-lanes-rationale.md` → "Where each rule came from"
3
+ Point-of-use, read one section at a time from `backlogrun.md` → "The manifest — the ordered flow".
13
4
 
14
5
  ## Concurrency: as many children per repository as it has free lanes
15
6
 
16
- **One session per repository**, each running only its own repository's children. The lane ceiling is
17
- `.claude/skills/epic-commands/SKILL.md` → "An `in-progress` issue occupies a lane"; a dependency that
18
- crosses a repository is `.claude/skills/epic-commands/SKILL.md` → "Epics that span repositories".
7
+ **One session per repository**, each running only its own repository's children. The lane ceiling and a
8
+ dependency that crosses a repository are `docs/josh-commands-backlog.md` → "`josh epic:next`".
19
9
 
20
10
  ## A solo run
21
11
 
@@ -25,11 +15,15 @@ merged. **Decide it from three conditions that must all hold, never from how ser
25
15
  it a defect (not an improvement, refactor, removal or feature)? Is it in kit's own verification gate
26
16
  (lint / type check / spell check / unit tests), the code review, the pre-push hook, or the merge
27
17
  checks — not a consumer repository's CI or template? Does it, on `main` now, make unrelated PRs
28
- answer wrongly (a false green or a false red)? All three, and the issue carries `run:solo`; any one
29
- missing, and it carries `run:lane`. `backlog:next` and `epic:next --lanes` answer `triage` for an
30
- issue with neither, so a filed issue carries one of the two from its filing. **It stops the other
31
- lanes for one reason only: a batch run on broken verification leaves nobody's result trustworthy.**
32
- This section is the rule's single source; why: `docs/maintainers/wip-cap-rationale.md` → "Why a solo run".
18
+ answer wrongly (a false green or a false red) **on every run**? All three, and the issue carries
19
+ `run:solo`; any one missing, and it carries `run:lane`. `backlog:next` and `epic:next --lanes` answer
20
+ `triage` for an issue with neither, so a filed issue carries one of the two from its filing. **It stops
21
+ the other lanes for one reason only: a batch run on broken verification leaves nobody's result
22
+ trustworthy.**
23
+
24
+ **A wrong answer that only comes some of the time — a flaky test, a timeout under load — is not a solo
25
+ run.** It carries `run:lane` and `priority:critical`, so it leads the next offer while the other lanes
26
+ keep running: a flake costs another lane one rerun, less than every lane stopped until it merges.
33
27
 
34
28
  ## Lanes — running more than one child at a time
35
29
 
@@ -41,7 +35,7 @@ stay serial.**
41
35
 
42
36
  **A lane child may cut its own turn before the gate** — `pre-gate-cut.md`, the single source. The
43
37
  child is told apart from a person, and handed its resume stage, by `JOSH_LANE_CHILD`
44
- (`pre-gate-cut.md` → "The dispatch mark" and "The stage is passed to the resumed child").
38
+ (`docs/josh-commands-run.md` → "`josh run:cut`"; `pre-gate-cut.md` → "The stage is passed to the resumed child").
45
39
 
46
40
  **A lane's review does not inherit the lane, and `pnpm josh review:brief` is what closes that**: it
47
41
  prints the lane's root, branch and HEAD, targets written `git -C <root> …`, and a nonce the review
@@ -57,14 +51,14 @@ are not predicted").
57
51
 
58
52
  ### Once per repository, before the first lane opens
59
53
 
60
- In the **primary checkout**, in order, never per lane: `pnpm josh ms`; `pnpm josh latest:scope` and the
61
- update on `required` (`backlogrun-child.md` → "`josh latest` runs once per session, not once per
54
+ In the **primary checkout**, in order, never per lane: `pnpm josh ms`; `pnpm josh latest:if-required`
55
+ (`backlogrun-child.md` → "`josh latest` runs once per session, not once per
62
56
  child"); `pnpm josh lane:prune`; `pnpm josh run:tidy`.
63
57
 
64
58
  **The rewritten lock file reaches a pull request through the first lane.** Only if the update rewrote
65
- anything: `git stash push -u -m "backlogrun: josh latest before lanes"` in the primary checkout, and
59
+ anything: `pnpm josh stash:push "backlogrun: josh latest before lanes"` in the primary checkout, and
66
60
  record it on the first child's Issue. **The first lane's `pnpm josh lane:launch "$n" --stash
67
- "backlogrun: josh latest before lanes"` pops it by message** — never a positional `stash pop`. **Under
61
+ "backlogrun: josh latest before lanes"` pops it by message.** **Under
68
62
  `backlog:drive` the driver passes `--stash`, never you**; the push stays the parent's.
69
63
 
70
64
  ### Opening one lane and dispatching its child
@@ -77,7 +71,7 @@ pid=$(pnpm josh lane:launch "$n") || exit 1 # the child's pid on stdout, nothi
77
71
 
78
72
  | It answers | What the run does |
79
73
  | --- | --- |
80
- | a pid | The child runs; poll it |
74
+ | a pid | The child runs; wait on it with `lane:await` |
81
75
  | empty, non-zero, `full` | No free lane; wait for one |
82
76
  | empty, non-zero, `already-open` or a failed install | **Park that child and name `pnpm josh lane:close <N>`** — a lock the lane cannot build is a person's to fix |
83
77
  | `lane:open` reports a reused `<N>-lane` on stderr | The way back to a child parked after it pushed — **a reused branch is not a fresh lane** |
@@ -96,14 +90,15 @@ Everything else is unchanged; `pnpm josh followup` releases the lane's hold at t
96
90
  - **It records where the child writes** — `<temp>/josh-lane-dispatch-<N>.log`.
97
91
  - **A refusal is an empty capture beside a non-zero exit**, with a `warning` Telegram. **Park that
98
92
  child and name the log the message carries**; never re-dispatch into the same lane without reading it.
99
- - **A child that started with nowhere to write exits zero and warns** — **poll that lane on the
100
- process trace alone**.
93
+ - **A child that started with nowhere to write exits zero and warns** — **wait on that lane with
94
+ `lane:await`, which reads the process trace alone**.
101
95
  - **The child is started as `fullrun #<N>` with the lane as its working directory**; the typed
102
96
  `backlogrun` covers it.
103
97
  - **It passes `--permission-mode bypassPermissions`, never `--dangerously-skip-permissions`.**
104
98
  `.claude/settings.json`'s `deny` list still refuses what it names; report what stopped, never loosen it.
105
99
 
106
- **Start each child without blocking on it, and poll them all** — a silent one is
100
+ **Start each child without blocking on it, then wait on `backlog:drive` or `lane:await`**
101
+ (`scripts/run/run-poll-hook.ts`) — a silent one is
107
102
  `backlogrun-recovery.md` → "A delegated unit that stopped without reporting", read in that child's lane.
108
103
 
109
104
  **`pnpm josh ms` is the parent's now, not the child's** — run it in the primary checkout **before
@@ -122,7 +117,7 @@ read `backlogrun-recovery.md` → "Conflicts are not predicted" when `pnpm josh
122
117
  | The child was **parked before its commit** | **Left open**, its uncommitted work in place, its directory and held seat recorded on the Issue | The shared stash stack is unsafe; `lane:close` is a **forced** removal. `pnpm josh lane:launch <N>` re-dispatches into the kept lane (a failed-install lane is still refused) |
123
118
  | The child was **parked after its commit and push** | **Left open**, its directory and held seat recorded on the Issue | `lane:close` would take the **local branch**, the resume path |
124
119
  | The child hit a **merge conflict** | **Left open** — the resolution happens in it | `backlogrun-recovery.md` → "Conflicts are not predicted"; a park there takes the row above |
125
- | The child stopped on **`needs-human-review`** | **Left open and untouched** | The uncommitted work is what a person looks at. Name the lane directory in the stop report and Telegram |
120
+ | The child stopped on **`needs-human-review`** | **Left open and untouched** | The uncommitted work is what a person looks at. `run:hold <N> --human-review-stop` names the lane directory in the Telegram; the stop report names it too |
126
121
  | The child **failed** | Whichever of the two parked rows applies, plus the consecutive-failure count | **A merge conflict is not this row**, and is not counted |
127
122
  | **`lane:open` failed on the install** | `pnpm josh lane:close <N>`, then park the child | Frees the seat; a person fixes the cause. Carry pnpm's reason into the park note |
128
123
  | The lane is **spent** — no child working in it, its Issue closed, not one this run launched and has not collected with `run:merge`, a clean tree, no commit that is on no remote | Nothing to do — `pnpm josh lane:prune` closes it | Any other lane is kept, with the reason on standard error |
@@ -1,10 +1,7 @@
1
1
  # `backlogrun` — a child that cannot finish
2
2
 
3
3
  **Read this file in full when a child cannot finish** — before parking it, before a
4
- `needs-human-review` stop, or before recording a mid-run prerequisite or split. Point-of-use, never an
5
- entry read (`backlogrun.md` points here). Single source of park-and-continue, the `needs-human-review`
6
- stop, a stale `in-progress`, a mid-run prerequisite and a mid-run split. Provenance:
7
- `docs/maintainers/backlogrun-park-rationale.md` → "Where each rule came from".
4
+ `needs-human-review` stop, or before recording a mid-run prerequisite or split.
8
5
 
9
6
  ## What happens to a child that cannot finish
10
7
 
@@ -31,13 +28,12 @@ parks, re-dispatches or files.
31
28
  ## `needs-human-review` — the one stop that is not a park
32
29
 
33
30
  A child carrying **`needs-human-review`** stops `halfrun`-shaped and **the whole run ends there**:
34
- implementation and the gate run, nothing is committed, the tree is left dirty and unstashed, a
35
- `confirmation` Telegram carries the resume command, and the remaining children are not started.
36
- Rationale: `docs/maintainers/backlogrun-park-rationale.md` → "Why `needs-human-review` ends the run
37
- instead of parking".
31
+ implementation and the gate run, nothing is committed, the tree is left dirty and unstashed,
32
+ `pnpm josh run:hold <N> --human-review-stop` sends the `confirmation` Telegram with the resume command
33
+ and the lane directory, and the remaining children are not started.
38
34
 
39
35
  **The child goes on holding its repository**, and **its lane is left open and untouched**. **Name the
40
- lane directory in the stop report and in the Telegram.** Lanes in flight finish; no new lane opens.
36
+ lane directory in the stop report.** Lanes in flight finish; no new lane opens.
41
37
 
42
38
  **Never apply or remove the label** — a person's alone (`needs-human-review.md`, the single source).
43
39
 
@@ -47,8 +43,7 @@ When a child hits something only a person can decide (→ "Only a person's judge
47
43
  `needs-decision`"), **park the child and keep going**:
48
44
 
49
45
  ```bash
50
- gh api repos/{owner}/{repo}/issues/<N>/labels -f 'labels[]=needs-decision'
51
- pnpm josh issue:comment <N> --body-file <path> # what needs deciding, and the options
46
+ pnpm josh run:park <N> --body-file <path> # what needs deciding, and the options; applies needs-decision
52
47
  ```
53
48
 
54
49
  `in-progress` stays; the parked child does **not** hold the repository (`needs-decision` takes
@@ -65,7 +60,7 @@ still filed at once, and a workaround is still forbidden. `epic:bundle`'s `ask`
65
60
  **Removing the label is Tier A — do it without asking**, once the decision is recorded:
66
61
 
67
62
  ```bash
68
- gh api -X DELETE repos/{owner}/{repo}/issues/<N>/labels/needs-decision 2>/dev/null || true
63
+ pnpm josh run:park <N> --clear # succeeds when the label is already off
69
64
  ```
70
65
 
71
66
  **The released child goes back to a lane, never into the parent's own context** — `pnpm josh
@@ -86,12 +81,13 @@ It never carries:
86
81
  - a wait for the next published release — a dependency, `pnpm josh issue:release <N> --wait`
87
82
  (`prerequisite.md`);
88
83
  - a defect in the running repository's own run tooling — the run fixes it and resumes
89
- (`prompts/collaboration-workflow/upstream-interrupt.md` → "実行中のリポジトリ自身のラン機構の不具合").
84
+ (`prompts/collaboration-workflow/upstream-interrupt.md` → "実行中のリポジトリ自身のラン機構の不具合");
85
+ - a wait on an open blocker or a start date — `run:merge` releases it (`run-merge-steps.ts`);
86
+ - a mechanical failure — the driver applies `run:stalled` (`RUN_STALLED_LABEL` in `issue-labels.ts`).
90
87
 
91
88
  **When in doubt, it is Tier A**: decide, comment the decision, and continue. **A label a mechanical step
92
89
  applied** (a failed or abandoned child, a lost merge race) is read against this list once its reason is
93
- known, and removed when the reason is not on it. Rationale:
94
- `docs/maintainers/backlogrun-park-rationale.md` → "Why a run spends no attention on a non-finding".
90
+ known, and removed when the reason is not on it.
95
91
 
96
92
  ## `in-progress` is removed by whoever finds it stale
97
93
 
@@ -120,22 +116,11 @@ Something else in **this** repository has to land first: not a split, not an ups
120
116
 
121
117
  1. File the prerequisite `<N>` with `route:tier-a` (Tier A, first-party, no confirmation) — **first**,
122
118
  because the next step names it.
123
- 2. **Stash the work in progress**:
124
-
125
- ```bash
126
- git stash push -u -m "backlogrun: paused #<M> for prerequisite #<N>"
127
- pnpm josh issue:comment <M> --body-file <path> # what was stashed, and that #<N> must land first
128
- ```
129
-
130
- **`-u` is not optional** (new test files are untracked). **Pop it by message, never by position** —
131
- `pnpm josh stash:pop "backlogrun: paused #<M> for prerequisite #<N>"` — when `epic:next` offers `<M>`
132
- again, after its `pnpm josh ms`; expect conflicts.
133
- 3. `pnpm josh epic --add <E> <N> --before <M>` — row, declaration and `blocked-by` in one command;
134
- never a hand edit. **With no epic**, record `<M>` blocked by `<N>` alone with the `gh api
135
- …/dependencies/blocked_by` call in
136
- `prompts/collaboration-workflow/issue-template.md` → "複数 Issue に分割するときの epic Issue", step 4.
137
- 4. **Remove `in-progress` from `<M>`** — `pnpm josh run:release <M>`; a labelled child is never offered again.
138
- 5. **Do not park.** Back to step 1 of the loop; `epic:next` hands back the prerequisite first.
119
+ 2. **`pnpm josh run:pause <M> --for <N>`** — the stash, the comment naming its `stash:pop`, `<M>`
120
+ blocked by `<N>` (the epic's row and declaration too) and `run:release <M>` in one call
121
+ (`prerequisite.md`). Pop the stash the comment names when `epic:next` offers `<M>` again, after its
122
+ `pnpm josh ms`; expect conflicts.
123
+ 3. **Do not park.** Back to step 1 of the loop; `epic:next` hands back the prerequisite first.
139
124
 
140
125
  **A stop a dependency can express is never parked**, including a defect in this repository's own gate
141
126
  or run tooling — `prerequisite.md`.
@@ -1,14 +1,11 @@
1
1
  # `backlogrun` — progress, the hand-off, resume and waiting
2
2
 
3
- Point-of-use, read one section at a time from `backlogrun.md` → "The route table"; the heartbeat is `progress-watcher.md` → "Progress while the run is quiet".
3
+ Point-of-use, read one section at a time from `backlogrun.md` → "The manifest — the ordered flow"; the heartbeat is `progress-watcher.md` → "Progress while the run is quiet".
4
4
 
5
5
  ## Running a named epic's children
6
6
 
7
- **`backlog:drive` walks this loop on its own; a session runs it when the driver hands back `epic #N`**
8
- (the loop: `docs/maintainers/backlogrun-driver.md`; rationale:
9
- `docs/maintainers/backlogrun-progress-rationale.md` → "Why a named epic's children run in lanes";
10
- `docs/maintainers/backlogrun-progress-rationale.md` → "Why state lives in records, not the
11
- conversation"). Each child runs as `fullrun #<N>` in a lane —
7
+ **`backlog:drive` walks this loop on its own; a session runs it when the driver hands back `epic #N`.**
8
+ Each child runs as `fullrun #<N>` in a lane —
12
9
  `pnpm josh lane:launch <N>` (`backlogrun-lanes.md` → "Opening one lane and dispatching its child"),
13
10
  then `pnpm josh lane:await <N...> --owner "$PPID"` in the background — and every ending is read by one
14
11
  command:
@@ -20,10 +17,7 @@ next=$(pnpm josh run:merge <N> --epic <E> --repo <owner/repo> --owner "$PPID" --
20
17
  **`pnpm josh run:merge <N>` is the only reading of how a child ended** — never
21
18
  classify `issue:state` by hand or ask `epic:next` in its place. **Pass `--output <path>`, the child's
22
19
  transcript**; the named-epic flags are dropped for the opted-in backlog. It classifies, counts, closes
23
- the lane and comments itself; act on the token. Rationale:
24
- `docs/maintainers/backlogrun-progress-rationale.md` → "Why a child's ending is read by `run:merge` alone";
25
- `docs/maintainers/backlogrun-progress-rationale.md` → "Why a child's ending is classified at once";
26
- provenance of each rule: `docs/maintainers/backlogrun-progress-rationale.md` → "Where each rule came from".
20
+ the lane and comments itself; act on the token.
27
21
 
28
22
  | It prints | What the run does |
29
23
  | --- | --- |
@@ -32,7 +26,7 @@ provenance of each rule: `docs/maintainers/backlogrun-progress-rationale.md` →
32
26
  | `complete` | Record the root done (`backlogrun-steps.md` → "The session cut is inside the invocation") and post the epic summary |
33
27
  | `over` | Hand the lanes over and take the cut — "The hand-off" below |
34
28
  | `human-review` | Stop, leave `in-progress` on; send a `confirmation` only where the child ran in this session's own context (`needs-human-review.md`) |
35
- | `stop` / `environment` | Report the parked children (or the outage) and stop |
29
+ | `stop` / `environment` | Report the parked children (or the outage, or the `/login` an authentication failure needs) and stop |
36
30
  | `resumed` | `lane:await <N>` it again |
37
31
  | `retry` / `busy` | Re-read the child |
38
32
 
@@ -52,8 +46,7 @@ after every child's merge and `pnpm josh ms`, never wired to `pnpm josh delegate
52
46
  carrying the budget** (`backlogrun-steps.md` → "The session cut is inside the invocation"); it is not a
53
47
  stop. The threshold is `CONTEXT_CUT_THRESHOLD` in `scripts/cost-runtime/context-cut-threshold.ts`
54
48
  (135,000, shared by the scheduler entry, hand-off and the lane worker cut, `pre-gate-cut.md` → "The
55
- implementation-phase cut"). Rationale: `docs/maintainers/backlogrun-progress-rationale.md` → "Why the
56
- hand-off check is asked at every merge".
49
+ implementation-phase cut").
57
50
 
58
51
  | It answers | What the run does |
59
52
  | --- | --- |
@@ -72,12 +65,11 @@ and output path; fill a missing path with `pnpm josh lane:output <N> <path>`:
72
65
  closed by `pnpm josh lane:prune`.
73
66
  - **Every in-flight lane records a path** — count everything, run `pnpm josh run:carry --cut --owner
74
67
  "$PPID"`, post the progress comment naming every lane and its path with `pnpm josh run:board`, and end
75
- the turn; the `run:wake` driver polls the lanes. Rationale:
76
- `docs/maintainers/backlogrun-progress-rationale.md` → "Why lanes are handed over rather than drained".
68
+ the turn; the `run:wake` driver polls the lanes.
77
69
  - **`--cut` answers `capped`** (`MAX_CUTS`) — **do not `run:wake` or hand off**;
78
70
  carry this session on and re-ask at the next merge.
79
71
 
80
- The hand-off report's format is `backlogrun-handoff-report.md`. **This is not a failure and not a
72
+ The hand-off report is `pnpm josh run:report --handoff` (`backlogrun-handoff-report.md`). **This is not a failure and not a
81
73
  park** — nothing is labelled, stashed or filed.
82
74
 
83
75
  ## Resuming after a cut
@@ -88,7 +80,7 @@ park** — nothing is labelled, stashed or filed.
88
80
  ### Picking the lanes up in the fresh session
89
81
 
90
82
  **Start no child again and open no lane already open.** In one turn: `pnpm josh lane:list` (a line
91
- with a path is a handed-over child, polled per `backlogrun-recovery.md` → "A delegated unit that stopped
83
+ with a path is a handed-over child, waited on per `backlogrun-recovery.md` → "A delegated unit that stopped
92
84
  without reporting"), `pnpm josh run:progress --wait --output <handed-over paths>` in the background
93
85
  (`run:watcher:guard`), `pnpm josh run:liveness`, and `epic:next --lanes`, a lane per child it offers.
94
86
  **A carried-over child finishes in its own unit — never run its `followup` yourself**; one lost in the
@@ -104,15 +96,14 @@ the epic body; what merged the epic's task list.
104
96
 
105
97
  | Setting | Value | Meaning |
106
98
  | --- | --- | --- |
107
- | Polling interval | 60 s | **In flight, a floor between two asks, never a clock** — the wake is `lane:await`'s completion or the watcher's arrival exit, never a report. **With nothing in flight no wake comes: it is the parent's own clock.** A `backlogrun` idle watch is polled at this same interval. |
99
+ | Re-ask floor | 60 s | **In flight, never a clock — the wait is `backlog:drive` or `lane:await`**, and the wake is their exit or the watcher's arrival exit, never a report; a state read repeated with nothing decided in between is refused. **With nothing in flight no wake comes: it is the parent's own clock.** A `backlogrun` idle watch re-asks at this same floor. |
108
100
  | Silent delegated unit | 30 min | Not the child's duration — the time its output has gone **unchanged**. Past it, ask `run:liveness` and book a stopped unit as a failure. |
109
101
  | Stale `in-progress` | 90 min | Past it, the other session is gone. |
110
102
  | Publish wait | 10 min | `josh propagate`'s own budget. A failed publish never appears. |
111
103
  | `backlogrun` idle watch | 8 h | Counted from when the run's hands became free, never from its start; `pnpm josh backlog:budget` decides it. |
112
104
 
113
- Each timeout **ends the wait and reports** — none is retried indefinitely. Rationale for the figures:
114
- `docs/maintainers/backlogrun-progress-rationale.md` → "Why the parent waits on classification, not a
115
- clock". A stale child's label is removed first, so the next poll can offer it. **A graph that has
105
+ Each timeout **ends the wait and reports** — none is retried indefinitely. A stale child's label is
106
+ removed first, so the next ask can offer it. **A graph that has
116
107
  deadlocked on a cycle is not this loop's to untangle**: `epic:next` detects it and exits with an error.
117
108
 
118
109
  ## Who sends the summary, and who propagates
@@ -4,7 +4,8 @@ Point-of-use, read one section at the failure that reaches it; the single source
4
4
 
5
5
  ## A delegated unit that stopped without reporting
6
6
 
7
- **A stop from outside leaves no notification behind, so the parent polls rather than waits.** Record
7
+ **A stop from outside leaves no notification behind, so the parent waits on `lane:await`, whose exit
8
+ covers it.** Record
8
9
  where a lane child writes with `pnpm josh lane:output <N> <path>` in the dispatch turn, and once its
9
10
  output has been unchanged for the silent-unit window (`backlogrun-progress.md` → "Waiting, and never
10
11
  waiting forever") **ask the command rather than combining the traces yourself**, in the checkout the
@@ -18,28 +19,28 @@ pnpm josh run:liveness <N> --output <absolute path> --process <command lines nam
18
19
 
19
20
  | Answer | What the parent does |
20
21
  | --- | --- |
21
- | `alive` | Keep polling; touch nothing |
22
+ | `alive` | Wait on `lane:await` again; touch nothing |
23
+ | `paused` | Tell the person; neither wait nor recover (`docs/josh-commands-run.md` → `josh run:liveness`) |
22
24
  | `settled` | Re-read with `pnpm josh run:status <N>` and take the branch its state section says |
23
25
  | `undetermined` | Read the trace that failed and ask again. **A second in a row on the same child is a fault in the check**: send a `confirmation` naming the trace and stop — never escalate it to `stopped` |
24
26
  | `stopped` | The recovery below |
25
27
 
26
- Rationale: `docs/maintainers/backlogrun-recovery-rationale.md` → "Why liveness needs silence and no
27
- process together".
28
-
29
28
  **On `stopped`, re-read with `pnpm josh run:status <N>`.** **A re-read carrying `needs-decision`** — the
30
29
  unit parked it, then stopped: leave the label on and count nothing. Otherwise, while `state: OPEN`:
31
30
 
32
- 1. **Stash the half-finished work** — `git stash push -u -m "backlogrun: stopped unit for #<N>"` — and
33
- record it on the Issue; it is popped by message, `pnpm josh stash:pop "backlogrun: stopped unit for
34
- #<N>"`, never positionally.
31
+ 1. **Stash the half-finished work** — `pnpm josh stash:push "backlogrun: stopped unit for #<N>"` — and
32
+ record it on the Issue; it is popped with `pnpm josh stash:pop "backlogrun: stopped unit for #<N>"`.
35
33
  2. **Classify and act in one call** — `pnpm josh run:merge <N> --output <path>` (`--epic <E> --repo
36
34
  <owner/repo> --owner "$PPID"` for a named epic), **the same composite a returned child takes**. It
37
35
  tells an `outage` (re-dispatched with its session resumed, uncounted, bounded by
38
- `CONSECUTIVE_OUTAGE_LIMIT`) from an `abandoned` child (parked `needs-decision` and counted), and drops
36
+ `CONSECUTIVE_OUTAGE_LIMIT`) from an `abandoned` child (parked `run:stalled` and counted), and drops
39
37
  the stale `in-progress` itself.
40
38
  3. **Act on the token it printed** — `backlogrun-progress.md` → "Running a named epic's children".
41
39
 
42
- Rationale: `docs/maintainers/backlogrun-recovery-rationale.md` → "Why the poll routes through `run:merge`".
40
+ ## A person withdraws a running child
41
+
42
+ On a person's instruction to drop a running child, run `pnpm josh lane:withdraw <N>
43
+ --reason "<their reason>"` — `docs/josh-commands.md` → "`josh lane:withdraw`".
43
44
 
44
45
  ## Conflicts are not predicted
45
46
 
@@ -51,8 +52,7 @@ followup` ends that child with a named conflict in about ten seconds.
51
52
 
52
53
  **That child does not stop: it resolves the conflict in its own lane**, uncounted by the
53
54
  consecutive-failure guard. **The merge direction is `origin/main` into the lane's branch, never a
54
- rebase**; no step rewrites a pushed commit (`docs/maintainers/backlogrun-recovery-rationale.md` → "Why a
55
- conflict is resolved in the lane rather than handed to a person").
55
+ rebase**; no step rewrites a pushed commit.
56
56
 
57
57
  1. **Resolve in the lane.** `git fetch origin main`, merge `origin/main` into the lane's branch, resolve
58
58
  in place. Do not close the lane, open another, or switch its branch.
@@ -1,14 +1,6 @@
1
1
  # `backlogrun` — the detailed procedure behind the manifest
2
2
 
3
- Point-of-use, read one section at a time from `backlogrun.md` → "The route table"; how the driver runs the loop on its own is `docs/maintainers/backlogrun-driver.md`. Reasons:
4
-
5
- - `docs/maintainers/backlogrun-steps-rationale.md` → "Why the authorization boundary is shaped this way"
6
- - `docs/maintainers/backlogrun-steps-rationale.md` → "Why a session cut does not end the run"
7
- - `docs/maintainers/backlogrun-steps-rationale.md` → "Why the plan and the decision pass come first"
8
- - `docs/maintainers/backlogrun-steps-rationale.md` → "Why the loop's contract is shaped this way"
9
- - `docs/maintainers/backlogrun-steps-rationale.md` → "Why the idle watch lasts 8 hours from when the hands became free"
10
- - `docs/maintainers/backlogrun-steps-rationale.md` → "Why the cost check skips a watch"
11
- - `docs/maintainers/backlogrun-steps-rationale.md` → "Where each rule came from"
3
+ Point-of-use, read one section at a time from `backlogrun.md` → "The manifest — the ordered flow".
12
4
 
13
5
  ## What one invocation approves
14
6
 
@@ -28,13 +20,13 @@ judgement** — a Tier B toss-up or a Tier C action inside it; `--no-auto-ok` wi
28
20
 
29
21
  ### The brake that replaces the promise
30
22
 
31
- **Every bound is counted in the carry record rather than in the conversation:**
23
+ **Every bound is counted by a record or a guard rather than in the conversation:**
32
24
 
33
25
  | The bound | What it limits | Counted by |
34
26
  | --- | --- | --- |
35
27
  | `--max` | merges per invocation — a run's own filing competes for it | `run:carry --merged` |
36
28
  | `--idle` (8 hours unless typed) | how long the run waits once nothing can proceed | `--active`, the moment its hands became free |
37
- | **Ten filings per invocation** | additions to the pool on **every** filing route (`prerequisite.md`) — `route:tier-a`, `route:interrupt` and a review branch-2 filing are exempt from the depth test (`observation-filing.md`), never from this ceiling | `run:carry --filed` |
29
+ | **Ten filings per run** | additions to the pool on **every** filing route (`prerequisite.md`) — `route:tier-a`, `route:interrupt` and a review branch-2 filing are exempt from the depth test (`observation-filing.md`), never from this ceiling | `scripts/rules/filing-cap.ts` |
38
30
  | The WIP cap on open issues | the pool across invocations | `prompts/collaboration-workflow/wip-cap.md` |
39
31
 
40
32
  **This section is the single source of how the `epic:bundle` obligation and this boundary meet.**
@@ -74,7 +66,7 @@ record is the parent loop's; a lane never touches it**. Count with `--merged <N>
74
66
  | `resumed` | Take the budget from `--json`, report the plan again, read `backlogrun-progress.md` → "Resuming after a cut" |
75
67
  | `busy` / `mismatch` / `unreadable` / `unknown` | **Stop; do not open a lane** — report what it printed; never resume into another invocation's record |
76
68
  | `over` | **End the conversation**; retype the invocation in a fresh session |
77
- | `standing` | **Stop; do not open a lane**: report `pnpm josh run:carry --resume "<invocation>" --owner "$PPID"` and `pnpm josh run:carry --end` for the person to choose — a crash from a run-tooling defect this run has since fixed you resume yourself (`upstream-interrupt.md` → "実行中のリポジトリ自身のラン機構の不具合") |
69
+ | `standing` | **Stop; do not open a lane**: report `pnpm josh backlogrun --restart` (continue the run) and `pnpm josh run:carry --end` (discard it) for the person to choose — a crash from a run-tooling defect this run has since fixed you resume yourself (`upstream-interrupt.md` → "実行中のリポジトリ自身のラン機構の不具合") |
78
70
  **End the record when the run ends** — `pnpm josh run:report`, then `pnpm josh run:carry --end`, **never
79
71
  batched with it**, and `pnpm josh run:wake --stop` in the same turn. **A run that ends by _stopping_**
80
72
  (a `stop` verdict or the consecutive-failure guard) **ends with `pnpm josh run:carry --end --stopped
@@ -99,21 +91,21 @@ Waiting on a person, Out of scope) in the session language, with any truncated-l
99
91
  **Settle every `needs-decision` issue the plan listed in one pass**, from one `pnpm josh issue:read <N>
100
92
  <N> …` call (`issue-comments.md`):
101
93
 
102
- - **An answer already in the issue** — record it as a comment and **remove the label** (Tier A).
94
+ - **An answer already in the issue** — record it as a comment and **remove the label** with `pnpm josh run:park <N> --clear` (Tier A).
103
95
  **Never measure in order to decide**: a question needing a benchmark or a run stays labelled.
104
96
  - **A person's judgement** — apply `needs-decision` (`backlogrun-park.md` → "Only a person's judgement
105
97
  carries `needs-decision`").
106
98
  - **Order and isolate** — a native `blocked-by` where one must land first; `run:solo` on all three
107
99
  `backlogrun-lanes.md` → "A solo run" conditions, **every other one `run:lane`**, commenting the
108
100
  reason.
109
- - **`priority:high`** only on a cited ground (a stated deadline, a person's written policy), commented;
110
- **never remove it**.
101
+ - **`priority:critical` / `priority:high`** are applied at filing by `pnpm josh issue:file` from the
102
+ body's `- 優先度:` declaration (`issue-template.md`); **only a person removes them**.
111
103
  - **Report `pnpm josh backlog:plan --waves`** with the plan, never an order derived by hand; then start
112
104
  the loop, leaving whatever is still labelled parked.
113
105
 
114
- **`needs-decision`, `run:solo`, `run:lane` and `priority:high` are the only workflow labels a run
115
- applies by hand** — never `needs-human-review` (`needs-human-review.md`), and `auto-ok` only through
116
- `pnpm josh issue:file` or `pnpm josh auto-ok:judge`.
106
+ **`needs-decision`, `run:solo` and `run:lane` are the only workflow labels a run applies by hand** —
107
+ never `needs-human-review` (`needs-human-review.md`), the priority labels only through
108
+ `pnpm josh issue:file`, and `auto-ok` only through it or `pnpm josh auto-ok:judge`.
117
109
 
118
110
  ## The loop
119
111
 
@@ -135,14 +127,14 @@ section the row names:
135
127
  | `window` | Hand the loop back as is | — |
136
128
 
137
129
  **A candidate only in another repository is never a token** — report it with its checkout. The budgets,
138
- verdicts and stops are the driver's own: `docs/maintainers/backlogrun-driver.md`.
130
+ verdicts and stops are the driver's own.
139
131
 
140
132
  ## What runs once per session, not once per issue
141
133
 
142
134
  | Step | Where it is defined |
143
135
  | --- | --- |
144
136
  | `run:carry --begin` + `run:wake --start` before the plan; `run:carry --end` + `run:wake --stop` at the end | "The session cut is inside the invocation" above |
145
- | `pnpm josh ms`, `pnpm josh latest:scope`, `lane:prune` in the primary checkout before the first lane | `backlogrun-lanes.md` → "Once per repository, before the first lane opens" |
137
+ | `pnpm josh ms`, `pnpm josh latest:if-required`, `lane:prune` in the primary checkout before the first lane | `backlogrun-lanes.md` → "Once per repository, before the first lane opens" |
146
138
  | `josh latest` on `required` only, once, never in a lane | `backlogrun-child.md` → "`josh latest` runs once per session, not once per child" |
147
139
  | `pnpm josh run:hold <N>`'s preflight, before each child not in a lane | `docs/josh-commands-run.md` → "`josh run:hold`" |
148
140
  | `pnpm josh run:progress --wait` in the background, `--mark` at every real report | `progress-watcher.md` → "Progress while the run is quiet" |
@@ -1,10 +1,5 @@
1
1
  # `backlogrun` — the manifest (named issues, epics and the opted-in backlog)
2
2
 
3
- **This file is the manifest, not the procedure**: the ordered flow as terse triggers, and the route
4
- table naming the one section each moment reads. Rationale and provenance:
5
- `docs/maintainers/backlogrun-rationale.md` → "Why the loop's position is computed";
6
- `docs/maintainers/backlogrun-rationale.md` → "Where each rule came from".
7
-
8
3
  **`backlogrun` names either nothing, or the issues and epics to run first.** With no argument it runs
9
4
  whatever `pnpm josh backlog:next` offers — the whole opted-in backlog, every issue carrying `auto-ok`
10
5
  plus every child of an epic whose root carries it, ordered by dependency and grouped into waves. With
@@ -12,9 +7,9 @@ plus every child of an epic whose root carries it, ordered by dependency and gro
12
7
  that same backlog. **`--only` stops it after the named list**, draining nothing.
13
8
 
14
9
  **The loop's current position is computed, not carried in the conversation.** `pnpm josh run:step <N>`
15
- reads where the run is from the event stream, the carry record and the issue state, and prints the next
16
- single action — a runnable command, or the one point a person has to judge. **With no `<N>` it answers
17
- for the parent itself**, from the carry record alone.
10
+ reads it from the event stream, the carry record and the issue state, and prints the next single
11
+ action — a runnable command, or the one point a person has to judge — followed by the section that
12
+ governs it. With no `<N>` it answers for the parent itself, from the carry record alone.
18
13
 
19
14
  **A named item may be a single issue or an epic.** A single-issue item is one `fullrun`; **a named epic runs its children in
20
15
  dependency order across the free lanes, and the run does not advance to the next named item until
@@ -29,67 +24,53 @@ is still that one invocation (`backlogrun-steps.md` → "The session cut is insi
29
24
 
30
25
  ## The manifest — the ordered flow
31
26
 
27
+ A section `run:step` prints is not fetched again. Every other one is read at its step with
28
+ `pnpm josh doc:section <file> "<heading>"` — never a whole document (`SKILL.md` → "A section
29
+ reference is read as a section").
30
+
32
31
  1. **Claim nothing at the entry — this parent orchestrates and never implements.** The working-tree
33
32
  hold, the split assessment and `fullrun.md` are read by a dispatched child inside its own delegated
34
33
  `fullrun` unit, never at the parent's entry.
35
34
  2. **Begin the carry record before the plan** — `pnpm josh run:carry --begin "<invocation>" --owner
36
- "$PPID"` and `pnpm josh run:wake --start`, in the same turn as the first `pnpm josh ms`.
35
+ "$PPID"` and `pnpm josh run:wake --start`, in the same turn as the first `pnpm josh ms`. Its answers:
36
+ `backlogrun-steps.md` → "The session cut is inside the invocation"; a resumed session:
37
+ `backlogrun-progress.md` → "Resuming after a cut".
37
38
  3. **What this invocation approves** — the opted-in pool, a run's own filings once bundled, and the
38
- brake that bounds the amount; the route table's row points at the single source of the `auto-ok` rule.
39
+ brake that bounds the amount: `backlogrun-steps.md` → "What one invocation approves".
39
40
  4. **Report the plan before the first child** — `pnpm josh backlog:plan`, then resolve every
40
41
  `needs-decision` issue decidable from its body in one pass, recording `blocked-by`, `run:solo` and
41
- `run:lane` in the same pass.
42
+ `run:lane` in the same pass: `backlogrun-steps.md` → "The plan, before the first child starts";
43
+ `run:solo`: `backlogrun-lanes.md` → "A solo run".
42
44
  5. **Named issues run first, in order** — each as a delegated `fullrun`, one at a time, then the pool;
43
45
  `--only` stops after the list.
46
+ - Once per session: `backlogrun-steps.md` → "What runs once per session, not once per issue" and
47
+ `backlogrun-child.md` → "`josh latest` runs once per session, not once per child"
48
+ (`latest-gate.md` whole on `required`).
49
+ - The watcher: `progress-watcher.md` → "Progress while the run is quiet".
50
+ - Lanes: `backlogrun-lanes.md` → "Once per repository, before the first lane opens", by hand
51
+ `backlogrun-lanes.md` → "Opening one lane and dispatching its child".
52
+ - Dispatch: `backlogrun-child.md` → "Each child runs in a delegated unit".
44
53
  6. **The loop belongs to the supervisor — hand it over with what the bare `pnpm josh run:step`
45
54
  prints**, whatever the plan held: `run:wake` runs `backlog:drive`, which returns a branch to an AI
46
- session only when it needs judgment.
55
+ session only when it needs judgment (`backlogrun-steps.md` → "The loop").
56
+ - An `epic #N` hand-back or a `merge` branch: `backlogrun-progress.md` → "Running a named epic's
57
+ children".
58
+ - A merge answered `over`: `backlogrun-progress.md` → "The hand-off".
59
+ - A unit gone silent: `backlogrun-recovery.md` → "A delegated unit that stopped without reporting".
60
+ - A child that cannot finish: `backlogrun-park.md` → "park and continue".
47
61
  7. **End the record when the run ends** — `run:report`, then `run:carry --end` (or `--end --stopped
48
- "<reason>"`) and `run:wake --stop`. An empty plan is not that end; the driver's idle watch decides it.
49
- A person stops a run from the terminal with `pnpm josh backlogrun --stop`, which makes both calls.
50
-
51
- ## The route table
52
-
53
- **Read one section, at the moment its row names, with `pnpm josh doc:section <file> "<heading>"`** —
54
- never a whole document (`SKILL.md` → "A section reference is read as a section"):
55
-
56
- | The moment | Read |
57
- | --- | --- |
58
- | The entry: the carry record and its answers | `backlogrun-steps.md` → "The session cut is inside the invocation" |
59
- | What the invocation may merge, and the `auto-ok` rule | `backlogrun-steps.md` → "What one invocation approves" |
60
- | Before the first child: the plan and the decision pass | `backlogrun-steps.md` → "The plan, before the first child starts" |
61
- | The driver hands a branch back | `backlogrun-steps.md` → "The loop" |
62
- | Once per session | `backlogrun-steps.md` → "What runs once per session, not once per issue" |
63
- | `josh latest:scope` answers `required` | `latest-gate.md` (whole) |
64
- | Starting the progress watcher | `progress-watcher.md` → "Progress while the run is quiet" |
65
- | The run ends | `backlogrun-steps.md` → "End the record when the run ends" |
66
- | Labelling an issue `run:solo` | `backlogrun-lanes.md` → "A solo run" |
67
- | Before the first lane opens | `backlogrun-lanes.md` → "Once per repository, before the first lane opens" |
68
- | Opening a lane by hand | `backlogrun-lanes.md` → "Opening one lane and dispatching its child" |
69
- | The first child is in hand | `backlogrun-child.md` → "`josh latest` runs once per session, not once per child" |
70
- | Dispatching a child | `backlogrun-child.md` → "Each child runs in a delegated unit" |
71
- | An `epic #N` hand-back, a `merge` branch, or a `run:merge` token | `backlogrun-progress.md` → "Running a named epic's children" |
72
- | A merge answered `over` | `backlogrun-progress.md` → "The hand-off" |
73
- | A resumed session | `backlogrun-progress.md` → "Resuming after a cut" |
74
- | The run's last merge | `backlogrun-progress.md` → "Who sends the summary, and who propagates" |
75
- | `josh release:scope`, after the last merge | `followup.md` → "When `pnpm josh release` runs" |
76
- | A unit went silent | `backlogrun-recovery.md` → "A delegated unit that stopped without reporting" |
77
- | A child cannot finish | `backlogrun-park.md` → "park and continue" |
62
+ "<reason>"`) and `run:wake --stop`: `backlogrun-steps.md` → "End the record when the run ends".
63
+ - An empty plan is not that end; the driver's idle watch decides it. A person stops a run from the
64
+ terminal with `pnpm josh backlogrun --stop`, which makes both calls.
65
+ - The last merge: `backlogrun-progress.md` → "Who sends the summary, and who propagates", then
66
+ `followup.md` → "When `pnpm josh release` runs".
78
67
 
79
68
  ## Guards
80
69
 
81
70
  | Guard | Limit | On reaching it |
82
71
  | --- | --- | --- |
83
72
  | Children per run | 30 | Stop and report; an epic this large should be split. |
84
- | Issues filed per run | 10 | Stop and report; a run filing more than this has lost the plot. |
73
+ | Issues filed per run | `prerequisite.md`'s cap | Stop and report. |
85
74
  | Consecutive child failures | 3 | Stop and report; something is wrong with the environment, not the children. |
86
75
 
87
76
  A failure that is not consecutive parks its child and the run continues.
88
-
89
- ## This file is the single source of the `backlogrun` procedure
90
-
91
- `CLAUDE.md` carries the keyword's row in the shorthand table and the explicit-invocation rule;
92
- `SKILL.md` → §1 routes here. This manifest names which children there are and in what order; each
93
- step's procedure is the section its route-table row names. Where any of them could disagree, the rule
94
- is that this manifest and `backlogrun-steps.md` add nothing to a child's procedure — they only say
95
- which children there are.