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