@joshuafolkken/kit 1.1229.0 → 1.1370.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 (939) hide show
  1. package/.claude/agents/investigator.md +1 -0
  2. package/.claude/settings.json +4 -0
  3. package/.claude/skills/dependency-update/SKILL.md +5 -3
  4. package/.claude/skills/epic-commands/SKILL.md +82 -113
  5. package/.claude/skills/epic-commands/epic-bundle.md +38 -63
  6. package/.claude/skills/epic-commands/execution-waves.md +30 -51
  7. package/.claude/skills/verify-ui/SKILL.md +13 -20
  8. package/.claude/skills/workflow-commands/SKILL.md +10 -10
  9. package/.claude/skills/workflow-commands/background-commands.md +4 -4
  10. package/.claude/skills/workflow-commands/backlogrun-child.md +30 -105
  11. package/.claude/skills/workflow-commands/backlogrun-handoff-report.md +29 -0
  12. package/.claude/skills/workflow-commands/backlogrun-lanes.md +45 -131
  13. package/.claude/skills/workflow-commands/backlogrun-park.md +36 -53
  14. package/.claude/skills/workflow-commands/backlogrun-progress.md +81 -331
  15. package/.claude/skills/workflow-commands/backlogrun-recovery.md +29 -83
  16. package/.claude/skills/workflow-commands/backlogrun-steps.md +105 -424
  17. package/.claude/skills/workflow-commands/backlogrun.md +50 -61
  18. package/.claude/skills/workflow-commands/chain-rule.md +36 -40
  19. package/.claude/skills/workflow-commands/entry-sequence.md +6 -6
  20. package/.claude/skills/workflow-commands/followup.md +24 -20
  21. package/.claude/skills/workflow-commands/fullrun-steps.md +23 -27
  22. package/.claude/skills/workflow-commands/fullrun.md +10 -10
  23. package/.claude/skills/workflow-commands/halfrun.md +9 -8
  24. package/.claude/skills/workflow-commands/into-target.md +12 -18
  25. package/.claude/skills/workflow-commands/issue-comments.md +11 -26
  26. package/.claude/skills/workflow-commands/kickoff.md +27 -16
  27. package/.claude/skills/workflow-commands/latest-gate.md +18 -29
  28. package/.claude/skills/workflow-commands/needs-human-review.md +13 -24
  29. package/.claude/skills/workflow-commands/observation-filing.md +37 -28
  30. package/.claude/skills/workflow-commands/observation-ledger.md +48 -38
  31. package/.claude/skills/workflow-commands/pre-gate-cut.md +9 -9
  32. package/.claude/skills/workflow-commands/prerequisite.md +23 -15
  33. package/.claude/skills/workflow-commands/progress-watcher.md +17 -11
  34. package/.claude/skills/workflow-commands/prrun.md +3 -3
  35. package/.claude/skills/workflow-commands/retrospective.md +13 -18
  36. package/.claude/skills/workflow-commands/split-assessment.md +6 -4
  37. package/.claude/skills/workflow-commands/target-repository.md +25 -28
  38. package/.claude/skills/workflow-commands/working-tree-hold.md +11 -17
  39. package/.gitattributes +2 -1
  40. package/.github/workflows/ci.yml +14 -0
  41. package/.github/workflows/publish.yml +2 -0
  42. package/.vscode/tasks.json +14 -0
  43. package/CLAUDE.md +10 -61
  44. package/README.md +38 -57
  45. package/SECURITY.md +1 -1
  46. package/dist/CLAUDE.md +10 -61
  47. package/dist/commands/document-section-cli.js +42 -10
  48. package/dist/config-merge/index.js +11 -2
  49. package/dist/hooks/audit-provision.js +2 -2
  50. package/dist/hooks/batch-guard.js +7 -7
  51. package/dist/hooks/{chunk-FIVDHQGT.js → chunk-43G45XJF.js} +18 -20
  52. package/dist/hooks/{chunk-JUDKDCDP.js → chunk-4TW4MQUL.js} +284 -362
  53. package/dist/hooks/{chunk-5VMKCCC4.js → chunk-76RK6E3H.js} +13 -11
  54. package/dist/hooks/{chunk-RNWHN5BP.js → chunk-DZWZ3DKY.js} +4 -4
  55. package/dist/hooks/{chunk-5VNDSNG3.js → chunk-FZ6FUSBM.js} +1 -1
  56. package/dist/hooks/{chunk-VC3PZPZO.js → chunk-GG72ANKI.js} +1 -1
  57. package/dist/hooks/{chunk-6HJJXRBX.js → chunk-KPM4YIIX.js} +8 -44
  58. package/dist/hooks/chunk-MXVQMLDP.js +3705 -0
  59. package/dist/hooks/{chunk-ELCN5LCH.js → chunk-NEC4AT4Z.js} +34 -12
  60. package/dist/hooks/{chunk-TQNPDZNH.js → chunk-NZBHG6FW.js} +7 -5
  61. package/dist/hooks/chunk-NZN2UFI6.js +2409 -0
  62. package/dist/hooks/{chunk-F56MFS4B.js → chunk-R6CRQEAL.js} +4 -4
  63. package/dist/hooks/chunk-SYSRHRWU.js +1589 -0
  64. package/dist/hooks/{chunk-55HHG5PX.js → chunk-TLJYAGZK.js} +799 -903
  65. package/dist/hooks/chunk-Z5TMJIPW.js +45 -0
  66. package/dist/hooks/codex-hook-adapter.js +26 -21
  67. package/dist/hooks/duplicate-read-guard.js +8 -8
  68. package/dist/hooks/format-edited.js +4 -4
  69. package/dist/hooks/inputs.json +213 -197
  70. package/dist/hooks/investigation-guard.js +8 -8
  71. package/dist/hooks/pretool-guard.js +15 -15
  72. package/dist/hooks/session-lang.js +406 -8
  73. package/dist/hooks/stop-guard.js +122 -201
  74. package/dist/josh.js +540 -137
  75. package/dist/version/index.js +15 -13
  76. package/eslint/base.js +43 -5
  77. package/eslint/rules/english-only-prose.js +3 -3
  78. package/eslint/rules/import.js +12 -0
  79. package/eslint/rules/namespace-object-export.js +2 -2
  80. package/package.json +16 -10
  81. package/pnpm-workspace.yaml +2 -4
  82. package/prompts/coding-standards.md +14 -48
  83. package/prompts/collaboration-workflow/file-edits.md +1 -1
  84. package/prompts/collaboration-workflow/issue-citation.md +1 -1
  85. package/prompts/collaboration-workflow/issue-template.md +4 -10
  86. package/prompts/collaboration-workflow/operating-rules.md +7 -8
  87. package/prompts/collaboration-workflow/output-bounds.md +1 -1
  88. package/prompts/collaboration-workflow/overview.md +1 -1
  89. package/prompts/collaboration-workflow/plan-comment.md +2 -1
  90. package/prompts/collaboration-workflow/principles.md +21 -3
  91. package/prompts/collaboration-workflow/report-format.md +16 -29
  92. package/prompts/collaboration-workflow/residency.md +1 -1
  93. package/prompts/collaboration-workflow/rule-delivery.md +7 -95
  94. package/prompts/collaboration-workflow/shell-body.md +3 -23
  95. package/prompts/collaboration-workflow/turn-batching.md +4 -13
  96. package/prompts/collaboration-workflow/wip-cap.md +5 -11
  97. package/prompts/refactoring.md +1 -1
  98. package/prompts/review-rubric.md +3 -22
  99. package/prompts/review.md +15 -38
  100. package/prompts/testing-guide.md +2 -4
  101. package/scripts/adopt/adopt-logic.ts +5 -5
  102. package/scripts/adopt/adopt-toolkits.ts +4 -5
  103. package/scripts/adopt/adopt.ts +2 -3
  104. package/scripts/agent/agent-argv.ts +7 -7
  105. package/scripts/agent/agent-diagnostics.ts +2 -2
  106. package/scripts/agent/agent-exit-record.ts +1 -1
  107. package/scripts/agent/agent-headless.ts +1 -1
  108. package/scripts/agent/agent-launch-environment.ts +6 -1
  109. package/scripts/agent/agent-role-profile.ts +49 -22
  110. package/scripts/agent/agent-session-role.ts +32 -0
  111. package/scripts/agent/api-outage.ts +1 -1
  112. package/scripts/agent/claude-agent-argv.ts +4 -4
  113. package/scripts/agent/claude-result-event.ts +4 -4
  114. package/scripts/agent/codex-hooks.ts +2 -2
  115. package/scripts/agent/interactive-ask.ts +3 -6
  116. package/scripts/auto-ok/auto-ok-cli.ts +46 -60
  117. package/scripts/backlog/backlog-arrival-added.ts +34 -0
  118. package/scripts/backlog/backlog-arrival.ts +54 -17
  119. package/scripts/backlog/backlog-budget-cli.ts +34 -6
  120. package/scripts/backlog/backlog-budget.ts +17 -24
  121. package/scripts/backlog/backlog-defect-priority.ts +1 -1
  122. package/scripts/backlog/backlog-drive-args.ts +5 -4
  123. package/scripts/backlog/backlog-drive-cli.ts +14 -10
  124. package/scripts/backlog/backlog-drive-epic.ts +85 -0
  125. package/scripts/backlog/backlog-drive-launch.ts +1 -1
  126. package/scripts/backlog/backlog-drive-named-offer.ts +60 -9
  127. package/scripts/backlog/backlog-drive-named.ts +39 -9
  128. package/scripts/backlog/backlog-drive-offer-argv.ts +1 -1
  129. package/scripts/backlog/backlog-drive-restore.ts +1 -1
  130. package/scripts/backlog/backlog-drive-retrospective.ts +2 -2
  131. package/scripts/backlog/backlog-drive.ts +43 -28
  132. package/scripts/backlog/backlog-idle.ts +88 -0
  133. package/scripts/backlog/backlog-named.ts +11 -15
  134. package/scripts/backlog/backlog-next.ts +26 -30
  135. package/scripts/backlog/backlog-offer-cli.ts +28 -23
  136. package/scripts/backlog/backlog-offer.ts +7 -7
  137. package/scripts/backlog/backlog-overlap.ts +178 -0
  138. package/scripts/backlog/backlog-plan-cli.ts +14 -90
  139. package/scripts/backlog/backlog-plan-read.ts +111 -0
  140. package/scripts/backlog/backlog-plan.ts +11 -10
  141. package/scripts/backlog/backlog-pool.ts +13 -14
  142. package/scripts/backlog/backlog-rank.ts +11 -11
  143. package/scripts/backlog/backlog-ready.ts +15 -10
  144. package/scripts/backlog/backlog-scope.ts +14 -15
  145. package/scripts/backlog/backlog-stalled-cli.ts +2 -2
  146. package/scripts/backlog/backlog-stalled-detect.ts +4 -4
  147. package/scripts/backlog/backlog-stalled.ts +5 -6
  148. package/scripts/backlog/backlog-waves.ts +4 -4
  149. package/scripts/backlog/backlogrun-args.ts +74 -0
  150. package/scripts/backlog/backlogrun-cli.ts +113 -0
  151. package/scripts/backlog/backlogrun-launch.ts +178 -0
  152. package/scripts/behavior/behavior-assertion.ts +6 -8
  153. package/scripts/behavior/behavior-cli.ts +1 -1
  154. package/scripts/behavior/behavior-rules.ts +3 -3
  155. package/scripts/build/build-claude-md.ts +4 -4
  156. package/scripts/build/build-codex-hooks.ts +2 -2
  157. package/scripts/build/build-commands.ts +1 -1
  158. package/scripts/build/build-hooks.ts +5 -5
  159. package/scripts/build/build.ts +1 -1
  160. package/scripts/build/hook-bundle-stamp.ts +109 -7
  161. package/scripts/build/local-bin.ts +2 -2
  162. package/scripts/cases/cases-cli.ts +1 -1
  163. package/scripts/cases/cases-logic.ts +2 -2
  164. package/scripts/ci/composite-actions.ts +1 -2
  165. package/scripts/ci/pr-classification.ts +2 -2
  166. package/scripts/claude/workflow-destination.ts +1 -1
  167. package/scripts/clone/clone-aggregate.ts +1 -1
  168. package/scripts/clone/clone-fingerprint.ts +1 -1
  169. package/scripts/clone/clone-scan-cli.ts +1 -1
  170. package/scripts/clone/clone-scan.ts +1 -1
  171. package/scripts/config-merge/index.ts +1 -1
  172. package/scripts/config-merge/json-format.ts +1 -3
  173. package/scripts/config-merge/patch-json-array.ts +90 -0
  174. package/scripts/config-merge/patch-json-key.ts +6 -3
  175. package/scripts/config-merge/patch-json-list.ts +1 -1
  176. package/scripts/cost-runtime/codex-usage.ts +1 -1
  177. package/scripts/cost-runtime/context-cut-payback.ts +4 -5
  178. package/scripts/cost-runtime/context-cut-threshold.ts +4 -6
  179. package/scripts/cost-runtime/cost-attribute.ts +3 -3
  180. package/scripts/cost-runtime/cost-blocks.ts +3 -4
  181. package/scripts/cost-runtime/cost-cli.ts +14 -11
  182. package/scripts/cost-runtime/cost-corpus.ts +11 -11
  183. package/scripts/cost-runtime/cost-pricing.ts +4 -4
  184. package/scripts/cost-runtime/cost-tokens.ts +1 -2
  185. package/scripts/cost-runtime/cost-transcript.ts +29 -29
  186. package/scripts/cost-runtime/cost-usage.ts +6 -7
  187. package/scripts/cost-runtime/cost-verdict.ts +10 -11
  188. package/scripts/cost-runtime/own-session.ts +1 -1
  189. package/scripts/cost-runtime/transcript-cwd.ts +2 -2
  190. package/scripts/delegation/delegation-cli.ts +4 -4
  191. package/scripts/delegation/delegation-policy.ts +13 -15
  192. package/scripts/delegation/duplicate-read-guard.ts +9 -10
  193. package/scripts/delegation/fanout-cli.ts +1 -1
  194. package/scripts/delegation/fanout.ts +1 -1
  195. package/scripts/delegation/investigation-guard.ts +18 -22
  196. package/scripts/delegation/investigation-reads.ts +48 -238
  197. package/scripts/discovery/repo-discovery.ts +1 -1
  198. package/scripts/discovery/repo-map-logic.ts +1 -2
  199. package/scripts/discovery/repo-origin.ts +3 -3
  200. package/scripts/discovery/repo-party-cli.ts +2 -2
  201. package/scripts/discovery/repo-party.ts +2 -2
  202. package/scripts/doctor/doctor-consumer.ts +1 -1
  203. package/scripts/doctor/doctor-io.ts +6 -7
  204. package/scripts/doctor/doctor-logic.ts +1 -1
  205. package/scripts/doctor/doctor-ports.ts +1 -1
  206. package/scripts/doctor/doctor.ts +8 -9
  207. package/scripts/document/backlogrun-parent-read-set.ts +5 -6
  208. package/scripts/document/bash-output-cap.ts +5 -7
  209. package/scripts/document/capped-print-part.ts +1 -1
  210. package/scripts/document/capped-print.ts +1 -1
  211. package/scripts/document/document-byte-budget.ts +33 -64
  212. package/scripts/document/document-byte-check.ts +4 -4
  213. package/scripts/document/document-reachability.ts +7 -8
  214. package/scripts/document/document-read-cli.ts +2 -2
  215. package/scripts/document/document-scan.ts +26 -2
  216. package/scripts/document/document-section-cli.ts +6 -8
  217. package/scripts/document/document-section.ts +8 -12
  218. package/scripts/document/edit-files-cli.ts +3 -4
  219. package/scripts/document/entry-read-budget.ts +8 -70
  220. package/scripts/document/entry-read-set.ts +51 -34
  221. package/scripts/document/lane-child-read-set.ts +9 -9
  222. package/scripts/document/read-files-cli.ts +1 -2
  223. package/scripts/document/read-set-cli.ts +16 -19
  224. package/scripts/document/read-set-cost.ts +4 -4
  225. package/scripts/document/read-set-point-of-use.ts +28 -38
  226. package/scripts/document/read-set-pricing.ts +1 -1
  227. package/scripts/document/read-set-trim.ts +3 -3
  228. package/scripts/document/resident-budget.ts +8 -10
  229. package/scripts/epic/epic-add-body.ts +15 -18
  230. package/scripts/epic/epic-add-plan.ts +26 -28
  231. package/scripts/epic/epic-add.ts +32 -25
  232. package/scripts/epic/epic-audit-checks.ts +27 -37
  233. package/scripts/epic/epic-audit-cli.ts +21 -22
  234. package/scripts/epic/epic-audit-orphans.ts +16 -17
  235. package/scripts/epic/epic-audit-rationale.ts +10 -15
  236. package/scripts/epic/epic-audit-report.ts +2 -5
  237. package/scripts/epic/epic-audit.ts +18 -14
  238. package/scripts/epic/epic-body.ts +10 -10
  239. package/scripts/epic/epic-bundle-cli.ts +36 -34
  240. package/scripts/epic/epic-bundle-evidence.ts +5 -5
  241. package/scripts/epic/epic-bundle-gaps.ts +6 -9
  242. package/scripts/epic/epic-bundle-poll.ts +1 -1
  243. package/scripts/epic/epic-bundle-referenced.ts +11 -14
  244. package/scripts/epic/epic-bundle.ts +19 -20
  245. package/scripts/epic/epic-busy.ts +44 -21
  246. package/scripts/epic/epic-candidate-confirm.ts +15 -18
  247. package/scripts/epic/epic-chains.ts +18 -23
  248. package/scripts/epic/epic-classify.ts +11 -12
  249. package/scripts/epic/epic-cli-argv.ts +5 -6
  250. package/scripts/epic/epic-cli-remove.ts +9 -4
  251. package/scripts/epic/epic-cli.ts +38 -26
  252. package/scripts/epic/epic-close-comment.ts +14 -15
  253. package/scripts/epic/epic-close.ts +25 -29
  254. package/scripts/epic/epic-cross-repo.ts +18 -21
  255. package/scripts/epic/epic-decision.ts +14 -18
  256. package/scripts/epic/epic-fetch.ts +25 -31
  257. package/scripts/epic/epic-graph.ts +15 -17
  258. package/scripts/epic/epic-index.ts +14 -16
  259. package/scripts/epic/epic-issue.ts +9 -11
  260. package/scripts/epic/epic-label-age.ts +74 -0
  261. package/scripts/epic/epic-lane-offer.ts +35 -24
  262. package/scripts/epic/epic-nested.ts +1 -1
  263. package/scripts/epic/epic-next-read.ts +8 -8
  264. package/scripts/epic/epic-next-views.ts +12 -12
  265. package/scripts/epic/epic-next.ts +29 -33
  266. package/scripts/epic/epic-outside-blocker.ts +11 -10
  267. package/scripts/epic/epic-parse.ts +22 -24
  268. package/scripts/epic/epic-promote.ts +3 -2
  269. package/scripts/epic/epic-rank.ts +1 -1
  270. package/scripts/epic/epic-read.ts +10 -8
  271. package/scripts/epic/epic-reconcile.ts +8 -6
  272. package/scripts/epic/epic-reference.ts +5 -4
  273. package/scripts/epic/epic-relation-recheck.ts +10 -11
  274. package/scripts/epic/epic-relations.ts +9 -8
  275. package/scripts/epic/epic-remove-plan.ts +4 -5
  276. package/scripts/epic/epic-remove.ts +7 -5
  277. package/scripts/epic/epic-report.ts +18 -20
  278. package/scripts/epic/epic-run.ts +6 -5
  279. package/scripts/epic/epic-sections.ts +2 -2
  280. package/scripts/epic/epic-shape.ts +3 -3
  281. package/scripts/epic/epic-solo-stale.ts +3 -2
  282. package/scripts/epic/epic-solo.ts +8 -8
  283. package/scripts/epic/epic-triage.ts +5 -4
  284. package/scripts/epic/epic-validate.ts +8 -7
  285. package/scripts/epic/epic.ts +5 -5
  286. package/scripts/exports/unused-members-cli.ts +1 -1
  287. package/scripts/followup/followup-issue-number.ts +1 -2
  288. package/scripts/followup/git-followup-cleanup.ts +6 -7
  289. package/scripts/followup/git-followup-finish.ts +11 -13
  290. package/scripts/followup/git-followup-flush.ts +11 -7
  291. package/scripts/followup/git-followup-issue-close.ts +16 -13
  292. package/scripts/followup/git-followup-label.ts +9 -6
  293. package/scripts/followup/git-followup-merged.ts +1 -1
  294. package/scripts/followup/git-followup-pending.ts +7 -9
  295. package/scripts/followup/git-followup-stages.ts +28 -17
  296. package/scripts/followup/git-followup-workflow.ts +19 -21
  297. package/scripts/followup/git-pr-followup-checks.ts +13 -20
  298. package/scripts/followup/git-pr-followup-wrapup.ts +7 -7
  299. package/scripts/followup/git-pr-followup.ts +18 -17
  300. package/scripts/gate/core-admission.ts +162 -0
  301. package/scripts/gate/core-budget.ts +134 -91
  302. package/scripts/gate/gate-ledger.ts +114 -0
  303. package/scripts/gate/gate-log.ts +7 -9
  304. package/scripts/gate/gate-plan.ts +103 -35
  305. package/scripts/gate/gate-report.ts +39 -21
  306. package/scripts/gate/gate-skip.ts +11 -13
  307. package/scripts/gate/gate-steps.ts +5 -1
  308. package/scripts/gate/gate-tree.ts +3 -4
  309. package/scripts/gate/hook-gate-reuse.ts +9 -9
  310. package/scripts/gate/machine-capacity.ts +313 -0
  311. package/scripts/gate/pre-commit-type-check.ts +4 -4
  312. package/scripts/gate/project-checks.ts +12 -4
  313. package/scripts/gate/scoped-green.ts +11 -18
  314. package/scripts/gate/type-check-command.ts +2 -2
  315. package/scripts/gate/type-check-step.ts +4 -4
  316. package/scripts/gate/verification-gate.ts +60 -53
  317. package/scripts/gh/gh-spawn.ts +2 -2
  318. package/scripts/gh/git-ai-review-scan.ts +3 -2
  319. package/scripts/gh/git-gh-api-path.ts +10 -11
  320. package/scripts/gh/git-gh-exec.ts +43 -48
  321. package/scripts/gh/git-gh-failure.ts +6 -9
  322. package/scripts/gh/git-gh-helpers.ts +1 -1
  323. package/scripts/gh/git-gh-issue-list.ts +15 -19
  324. package/scripts/gh/git-gh-issue-read.ts +43 -60
  325. package/scripts/gh/git-gh-issue-rest.ts +14 -15
  326. package/scripts/gh/git-gh-issue-write.ts +52 -40
  327. package/scripts/gh/git-gh-issue.ts +23 -24
  328. package/scripts/gh/git-gh-pr-auto-merge.ts +3 -3
  329. package/scripts/gh/git-gh-pr-read.ts +46 -50
  330. package/scripts/gh/git-gh-pr-rest.ts +23 -26
  331. package/scripts/gh/git-gh-pr-review.ts +2 -2
  332. package/scripts/gh/git-gh-pr-rollup.ts +4 -4
  333. package/scripts/gh/git-gh-pr-snapshot.ts +8 -10
  334. package/scripts/gh/git-gh-pr.ts +16 -16
  335. package/scripts/gh/git-gh-reachability.ts +11 -12
  336. package/scripts/gh/git-gh-repo.ts +2 -3
  337. package/scripts/gh/git-gh-rest-state.ts +1 -1
  338. package/scripts/gh/git-pr-ai-review.ts +6 -5
  339. package/scripts/gh/git-pr-checks-eval.ts +28 -30
  340. package/scripts/gh/git-pr-checks-parse.ts +14 -16
  341. package/scripts/gh/git-pr-checks-watch.ts +17 -17
  342. package/scripts/gh/git-pr-checks.ts +20 -23
  343. package/scripts/gh/git-pr-coderabbit.ts +8 -6
  344. package/scripts/gh/git-pr-confirmation.ts +5 -5
  345. package/scripts/gh/git-pr-managed-config.ts +7 -9
  346. package/scripts/gh/git-pr-messages.ts +1 -1
  347. package/scripts/gh/git-pr.ts +15 -16
  348. package/scripts/gh/github-issue-url.ts +8 -9
  349. package/scripts/git/base-tree.ts +66 -0
  350. package/scripts/git/change-base.ts +42 -2
  351. package/scripts/git/changed-file-scope.ts +5 -5
  352. package/scripts/git/changed-paths.ts +1 -2
  353. package/scripts/git/constants.ts +2 -2
  354. package/scripts/git/git-branch.ts +1 -1
  355. package/scripts/git/git-closes-keyword.ts +3 -3
  356. package/scripts/git/git-command.ts +53 -41
  357. package/scripts/git/git-common-directory.ts +3 -3
  358. package/scripts/git/git-diff-reads.ts +14 -15
  359. package/scripts/git/git-error.ts +1 -1
  360. package/scripts/git/git-execa-error.ts +1 -2
  361. package/scripts/git/git-issue.ts +10 -8
  362. package/scripts/git/git-location-environment.ts +3 -4
  363. package/scripts/git/git-ls-remote.ts +6 -8
  364. package/scripts/git/git-pre-push-hook.ts +11 -10
  365. package/scripts/git/git-preflight.ts +5 -5
  366. package/scripts/git/git-push-transport.ts +2 -2
  367. package/scripts/git/git-remote-branch.ts +1 -2
  368. package/scripts/git/git-schemas.ts +16 -23
  369. package/scripts/git/git-spawn-sync.ts +1 -1
  370. package/scripts/git/git-spawn.ts +37 -14
  371. package/scripts/git/git-ssh-keepalive.ts +12 -5
  372. package/scripts/git/git-staging.ts +7 -8
  373. package/scripts/git/git-workflow.ts +1 -1
  374. package/scripts/git/git-worktree.ts +35 -27
  375. package/scripts/git/gone-branch.ts +2 -2
  376. package/scripts/git/listing-cutoff.ts +1 -2
  377. package/scripts/git/lockfile-sync.ts +65 -0
  378. package/scripts/git/main-merge-guard.ts +1 -2
  379. package/scripts/git/main-merge.ts +7 -7
  380. package/scripts/git/main-sync.ts +23 -8
  381. package/scripts/git/parse-json-array.ts +18 -23
  382. package/scripts/git/repository-lock.ts +34 -2
  383. package/scripts/git/stash/git-stash.ts +4 -5
  384. package/scripts/git/stash/stash-orphans.ts +5 -3
  385. package/scripts/git/stash/stash-pop-args.ts +1 -1
  386. package/scripts/git/stash/stash-pop-cli.ts +3 -3
  387. package/scripts/git/stash/stash-sweep-lock.ts +2 -2
  388. package/scripts/hooks/batch-guard.ts +11 -13
  389. package/scripts/hooks/check-commit-message.ts +12 -9
  390. package/scripts/hooks/codex-hook-adapter.ts +16 -10
  391. package/scripts/hooks/edited-cspell.ts +3 -4
  392. package/scripts/hooks/format-edited-cli.ts +1 -1
  393. package/scripts/hooks/format-edited-file.ts +11 -17
  394. package/scripts/hooks/format-rewrite-notice.ts +19 -17
  395. package/scripts/hooks/pre-push-unit.ts +10 -14
  396. package/scripts/hooks/pretool-guard-cli.ts +4 -4
  397. package/scripts/hooks/pretool-guard.ts +93 -18
  398. package/scripts/hooks/reserved-run.ts +2 -2
  399. package/scripts/hooks/step-zero-notice.ts +1 -1
  400. package/scripts/hooks/stop-guard.ts +21 -10
  401. package/scripts/init/basic-path-migration.ts +2 -2
  402. package/scripts/init/claude-kit-only-settings.ts +2 -2
  403. package/scripts/init/claude-plugin-config.ts +2 -2
  404. package/scripts/init/distributed-paths.ts +4 -4
  405. package/scripts/init/hook-command-rewrite.ts +3 -3
  406. package/scripts/init/hook-launch.ts +5 -5
  407. package/scripts/init/init-actions.ts +13 -0
  408. package/scripts/init/init-ai-copy.ts +11 -11
  409. package/scripts/init/init-bootstrap.ts +3 -3
  410. package/scripts/init/init-copy-content.ts +4 -4
  411. package/scripts/init/init-logic-json-merge.ts +7 -9
  412. package/scripts/init/init-logic-migrate.ts +1 -1
  413. package/scripts/init/init-logic-templates.ts +1 -1
  414. package/scripts/init/init-logic-workspace.ts +4 -4
  415. package/scripts/init/init-logic-yaml-merge.ts +2 -2
  416. package/scripts/init/init-logic.ts +19 -22
  417. package/scripts/init/init.ts +12 -8
  418. package/scripts/init/kit-base-preset.ts +1 -1
  419. package/scripts/init/kit-setup-state.ts +1 -1
  420. package/scripts/init/kit-written-paths.ts +1 -2
  421. package/scripts/init/package-manager-pin.ts +35 -0
  422. package/scripts/init/project-profile-cli.ts +1 -1
  423. package/scripts/init/project-profile.ts +3 -3
  424. package/scripts/init/session-language-environment.ts +1 -1
  425. package/scripts/init/start-exec.ts +3 -4
  426. package/scripts/init/start-plan.ts +2 -2
  427. package/scripts/init/start-setup-pr.ts +3 -2
  428. package/scripts/init/start-steps.ts +2 -2
  429. package/scripts/init/tsconfig-preset-migration.ts +1 -1
  430. package/scripts/init/vscode-tasks.ts +62 -0
  431. package/scripts/issue/baseline-measure.ts +2 -2
  432. package/scripts/issue/behavior-change-lint.ts +2 -2
  433. package/scripts/issue/defect-rate-cli.ts +6 -7
  434. package/scripts/issue/defect-rate.ts +37 -27
  435. package/scripts/issue/git-next-issues.ts +9 -8
  436. package/scripts/issue/issue-auto-ok.ts +49 -11
  437. package/scripts/issue/issue-backlinks-cli.ts +5 -5
  438. package/scripts/issue/issue-backlinks.ts +6 -6
  439. package/scripts/issue/issue-cite-cli.ts +20 -18
  440. package/scripts/issue/issue-cite.ts +18 -8
  441. package/scripts/issue/issue-closing-pr.ts +4 -4
  442. package/scripts/issue/issue-comment-cli.ts +6 -4
  443. package/scripts/issue/issue-file-cli.ts +75 -15
  444. package/scripts/issue/issue-file-fold.ts +155 -0
  445. package/scripts/issue/issue-file.ts +14 -6
  446. package/scripts/issue/issue-fold-cli.ts +14 -9
  447. package/scripts/issue/issue-fold.ts +23 -8
  448. package/scripts/issue/issue-labels.ts +46 -37
  449. package/scripts/issue/issue-lint-cli.ts +2 -2
  450. package/scripts/issue/issue-lint.ts +1 -1
  451. package/scripts/issue/issue-merged.ts +10 -4
  452. package/scripts/issue/issue-number-shape.ts +27 -0
  453. package/scripts/issue/issue-rank.ts +1 -1
  454. package/scripts/issue/issue-read-cli.ts +4 -5
  455. package/scripts/issue/issue-read.ts +4 -5
  456. package/scripts/issue/issue-reference.ts +5 -5
  457. package/scripts/issue/issue-release-cli.ts +165 -0
  458. package/scripts/issue/issue-release.ts +58 -0
  459. package/scripts/issue/issue-report-failures.ts +7 -4
  460. package/scripts/issue/issue-scout-cli.ts +11 -11
  461. package/scripts/issue/issue-scout-closed.ts +4 -4
  462. package/scripts/issue/issue-scout.ts +4 -5
  463. package/scripts/issue/issue-state-cli.ts +17 -10
  464. package/scripts/issue/issue-state.ts +12 -13
  465. package/scripts/issue/issue-wip.ts +7 -7
  466. package/scripts/issue/markdown-section.ts +3 -3
  467. package/scripts/issue/measure-rerun-cli.ts +10 -9
  468. package/scripts/issue/reproduction-measure.ts +3 -3
  469. package/scripts/issue/session-cite.ts +56 -0
  470. package/scripts/josh/agent-session-environment.ts +10 -8
  471. package/scripts/josh/cli-body.ts +2 -2
  472. package/scripts/josh/command-suggest.ts +1 -1
  473. package/scripts/josh/file-map-stamp.ts +20 -23
  474. package/scripts/josh/hook-decision.ts +24 -28
  475. package/scripts/josh/josh-command-map.ts +4 -1
  476. package/scripts/josh/josh-command-types.ts +32 -34
  477. package/scripts/josh/josh-commands-ai.ts +6 -6
  478. package/scripts/josh/josh-commands-backlog.ts +15 -3
  479. package/scripts/josh/josh-commands-clone.ts +1 -1
  480. package/scripts/josh/josh-commands-development.ts +33 -4
  481. package/scripts/josh/josh-commands-document.ts +3 -3
  482. package/scripts/josh/josh-commands-guard.ts +3 -3
  483. package/scripts/josh/josh-commands-issue.ts +11 -5
  484. package/scripts/josh/josh-commands-lane.ts +16 -5
  485. package/scripts/josh/josh-commands-lint.ts +1 -1
  486. package/scripts/josh/josh-commands-maintenance.ts +2 -2
  487. package/scripts/josh/josh-commands-run.ts +20 -6
  488. package/scripts/josh/josh-commands-split.ts +1 -2
  489. package/scripts/josh/josh-commands-versioning.ts +5 -5
  490. package/scripts/josh/josh-commands-workflow.ts +30 -22
  491. package/scripts/josh/josh-environment-file.ts +1 -1
  492. package/scripts/josh/josh-in-process.ts +3 -3
  493. package/scripts/josh/josh-logic.ts +10 -10
  494. package/scripts/josh/josh-run.ts +3 -3
  495. package/scripts/josh/josh-verdict.ts +9 -12
  496. package/scripts/josh/josh.ts +3 -3
  497. package/scripts/josh/kit-only.ts +2 -2
  498. package/scripts/josh/path-decision.ts +3 -3
  499. package/scripts/josh/platform-temporary.ts +7 -5
  500. package/scripts/josh/process-identity.ts +24 -6
  501. package/scripts/josh/process-owner.ts +4 -4
  502. package/scripts/josh/session-language-cli.ts +53 -11
  503. package/scripts/josh/session-language.ts +1 -1
  504. package/scripts/josh/stamp-file.ts +48 -29
  505. package/scripts/josh/stamp-record.ts +57 -0
  506. package/scripts/lane/lane-await.ts +35 -11
  507. package/scripts/lane/lane-cache.ts +6 -6
  508. package/scripts/lane/lane-capacity.ts +32 -17
  509. package/scripts/lane/lane-child-invocation.ts +17 -15
  510. package/scripts/lane/lane-child-marker.ts +12 -12
  511. package/scripts/lane/lane-cli.ts +20 -13
  512. package/scripts/lane/lane-close.ts +6 -6
  513. package/scripts/lane/lane-dispatch.ts +61 -72
  514. package/scripts/lane/lane-environment.ts +5 -5
  515. package/scripts/lane/lane-guard-policy.ts +7 -21
  516. package/scripts/lane/lane-handoff.ts +2 -2
  517. package/scripts/lane/lane-install.ts +9 -10
  518. package/scripts/lane/lane-launch-cli.ts +13 -8
  519. package/scripts/lane/lane-ledger.ts +73 -11
  520. package/scripts/lane/lane-leftover.ts +44 -30
  521. package/scripts/lane/lane-limit-cli.ts +160 -0
  522. package/scripts/lane/lane-limit-override.ts +74 -0
  523. package/scripts/lane/lane-load.ts +19 -68
  524. package/scripts/lane/lane-measure-cli.ts +15 -25
  525. package/scripts/lane/lane-occupancy.ts +6 -4
  526. package/scripts/lane/lane-open.ts +25 -24
  527. package/scripts/lane/lane-output.ts +4 -3
  528. package/scripts/lane/lane-paths.ts +22 -8
  529. package/scripts/lane/lane-phase.ts +33 -0
  530. package/scripts/lane/lane-reap.ts +2 -2
  531. package/scripts/lane/lane-registry.ts +27 -15
  532. package/scripts/lane/lane-relaunch.ts +9 -9
  533. package/scripts/lane/lane-report.ts +5 -4
  534. package/scripts/lane/lane-resume.ts +2 -2
  535. package/scripts/lane/lane-sampler.ts +55 -0
  536. package/scripts/lane/lane-seed.ts +7 -7
  537. package/scripts/lane/lane-stage-stats.ts +135 -0
  538. package/scripts/lane/lane-start-point.ts +8 -11
  539. package/scripts/lane/lane-stats.ts +60 -15
  540. package/scripts/lane/lane-stray.ts +140 -0
  541. package/scripts/lane/lane-vacant.ts +1 -1
  542. package/scripts/lane/openai-lane-supervisor-decision.ts +3 -7
  543. package/scripts/lane/openai-lane-supervisor-owner.ts +3 -9
  544. package/scripts/lane/openai-review-broker.ts +2 -4
  545. package/scripts/lib/ancestor-directories.ts +1 -1
  546. package/scripts/lib/bounded-pool.ts +2 -2
  547. package/scripts/lib/buffered-process.ts +4 -6
  548. package/scripts/lib/caddy-logs.sh +0 -0
  549. package/scripts/lib/cli-flags.ts +39 -6
  550. package/scripts/lib/error-message.ts +1 -1
  551. package/scripts/lib/json-value.ts +17 -3
  552. package/scripts/lib/poll.ts +1 -1
  553. package/scripts/lib/status-icons.ts +3 -3
  554. package/scripts/lib/timed-fetch.ts +1 -1
  555. package/scripts/lib/timeouts.ts +1 -1
  556. package/scripts/lines/bytes-command.ts +3 -4
  557. package/scripts/lines/effective-limit.ts +25 -12
  558. package/scripts/lines/line-budget.ts +47 -55
  559. package/scripts/lines/line-targets.ts +6 -2
  560. package/scripts/lines/lines-command.ts +3 -3
  561. package/scripts/lint/cspell-cached.ts +1 -1
  562. package/scripts/lint/cycle-recheck.ts +122 -0
  563. package/scripts/lint/format.ts +1 -2
  564. package/scripts/lint/lint-parallel.ts +34 -19
  565. package/scripts/lint/lint-related-scope.ts +25 -15
  566. package/scripts/lint/lint-related.ts +6 -7
  567. package/scripts/managed-marker/index.ts +1 -1
  568. package/scripts/managed-marker/managed-marker-logic.ts +1 -2
  569. package/scripts/notify/git-notify.ts +9 -7
  570. package/scripts/notify/telegram-notify.ts +53 -37
  571. package/scripts/notify/telegram-test-logic.ts +3 -3
  572. package/scripts/notify/telegram-test.ts +45 -30
  573. package/scripts/observations/observation-ledger-home.ts +14 -8
  574. package/scripts/observations/observation-ledger-line.ts +3 -2
  575. package/scripts/observations/observation-ledger-migrate.ts +3 -4
  576. package/scripts/observations/observation-ledger-prepare.ts +4 -4
  577. package/scripts/observations/observation-ledger.ts +14 -15
  578. package/scripts/observations/observation-record-cli.ts +83 -0
  579. package/scripts/observations/observation-record.ts +91 -0
  580. package/scripts/observations/observations-flush-cli.ts +1 -1
  581. package/scripts/observations/observations-flush-landing.ts +7 -6
  582. package/scripts/observations/observations-flush.ts +26 -27
  583. package/scripts/overrides/overrides-check.ts +18 -8
  584. package/scripts/package/package-scout-cli.ts +1 -1
  585. package/scripts/package/package-scout-format.ts +2 -2
  586. package/scripts/package/package-scout.ts +1 -1
  587. package/scripts/propagate/propagate-git-failure.ts +1 -1
  588. package/scripts/propagate/propagate-git.ts +7 -7
  589. package/scripts/propagate/propagate-plan.ts +2 -2
  590. package/scripts/propagate/propagate-publish.ts +2 -3
  591. package/scripts/propagate/propagate-run.ts +5 -7
  592. package/scripts/propagate/propagate-select.ts +1 -1
  593. package/scripts/propagate/propagate-steps.ts +19 -20
  594. package/scripts/propagate/propagate-targets.ts +6 -10
  595. package/scripts/propagate/propagate.ts +5 -5
  596. package/scripts/refactor/import-graph.ts +1 -1
  597. package/scripts/refactor/refactor-lint.ts +4 -10
  598. package/scripts/refactor/refactor-scan-cli.ts +1 -1
  599. package/scripts/refactor/refactor-scan.ts +2 -2
  600. package/scripts/refactor/refactor-targets.ts +1 -1
  601. package/scripts/release/github-release-cli.ts +25 -3
  602. package/scripts/release/github-release-environment.ts +1 -0
  603. package/scripts/release/github-release-runs.ts +115 -0
  604. package/scripts/release/github-release.ts +13 -67
  605. package/scripts/release/release-cli.ts +21 -4
  606. package/scripts/release/release-history.ts +6 -10
  607. package/scripts/release/release-plan.ts +3 -3
  608. package/scripts/release/release-progress.ts +3 -4
  609. package/scripts/release/release-publish.ts +8 -9
  610. package/scripts/release/release-scope-cli.ts +8 -10
  611. package/scripts/release/release-tag.ts +6 -8
  612. package/scripts/release/release-worktree.ts +5 -5
  613. package/scripts/repo/auto-merge-setting-logic.ts +7 -9
  614. package/scripts/repo/auto-merge-setting.ts +1 -1
  615. package/scripts/repo/repo-setting.ts +4 -4
  616. package/scripts/repo/repository-labels.ts +1 -1
  617. package/scripts/repo/required-checks-logic.ts +3 -3
  618. package/scripts/repo/required-checks-report.ts +1 -1
  619. package/scripts/repo/ruleset-check-cli.ts +1 -1
  620. package/scripts/repo/ruleset-check.ts +1 -1
  621. package/scripts/report/report-format-reference.ts +26 -0
  622. package/scripts/report/report-lint-cli.ts +2 -2
  623. package/scripts/report/report-lint.ts +16 -2
  624. package/scripts/review/disposition-cli.ts +2 -2
  625. package/scripts/review/disposition-logic.ts +1 -1
  626. package/scripts/review/live-evidence.ts +9 -6
  627. package/scripts/review/review-attest-cli.ts +1 -2
  628. package/scripts/review/review-attest.ts +3 -3
  629. package/scripts/review/review-brief-cli.ts +19 -20
  630. package/scripts/review/review-brief.ts +29 -32
  631. package/scripts/review/review-checkout.ts +2 -2
  632. package/scripts/review/review-diff-parts.ts +3 -5
  633. package/scripts/review/review-diff-write.ts +1 -1
  634. package/scripts/review/review-finding-ledger.ts +7 -4
  635. package/scripts/review/review-findings-cli.ts +2 -2
  636. package/scripts/review/review-level.ts +4 -7
  637. package/scripts/review/review-record-cli.ts +73 -16
  638. package/scripts/review/review-record.ts +5 -4
  639. package/scripts/review/review-round2-cli.ts +2 -3
  640. package/scripts/review/review-round2.ts +13 -21
  641. package/scripts/review/review-stamps.ts +9 -71
  642. package/scripts/review/review-tree.ts +4 -5
  643. package/scripts/rules/bash-triggers.ts +4 -4
  644. package/scripts/rules/decision-oracle-batch.ts +5 -6
  645. package/scripts/rules/decision-oracle-stage.ts +1 -1
  646. package/scripts/rules/decision-oracle-tokens.ts +1 -2
  647. package/scripts/rules/decision-oracle.ts +2 -2
  648. package/scripts/rules/delivered-rules.ts +61 -406
  649. package/scripts/rules/destructive-command.ts +2 -2
  650. package/scripts/rules/direct-filing.ts +4 -4
  651. package/scripts/rules/direct-pr-create.ts +2 -2
  652. package/scripts/rules/early-heartbeat.ts +15 -19
  653. package/scripts/rules/file-body.ts +5 -6
  654. package/scripts/rules/filing-cap.ts +6 -7
  655. package/scripts/rules/filing-offer.ts +1 -1
  656. package/scripts/rules/firing-point.ts +6 -6
  657. package/scripts/rules/gh-api.ts +2 -2
  658. package/scripts/rules/git-argv.ts +3 -3
  659. package/scripts/rules/git-force.ts +2 -2
  660. package/scripts/rules/hook-context-line.ts +31 -0
  661. package/scripts/rules/implementation-cut-verdict.ts +5 -8
  662. package/scripts/rules/implementation-cut.ts +35 -32
  663. package/scripts/rules/index-guard.ts +2 -2
  664. package/scripts/rules/issue-citation.ts +7 -7
  665. package/scripts/rules/issue-comments.ts +21 -13
  666. package/scripts/rules/josh-git-bare.ts +2 -2
  667. package/scripts/rules/lane-background.ts +14 -16
  668. package/scripts/rules/lane-carry-conflict.ts +41 -5
  669. package/scripts/rules/lane-interactive-ask.ts +6 -9
  670. package/scripts/rules/lane-park.ts +12 -16
  671. package/scripts/rules/lane-split-park.ts +1 -2
  672. package/scripts/rules/lane-switch-main.ts +10 -13
  673. package/scripts/rules/last-prompt.ts +1 -1
  674. package/scripts/rules/oracle-consulted.ts +5 -5
  675. package/scripts/rules/oracle-firing.ts +6 -9
  676. package/scripts/rules/oracle-list-cli.ts +2 -2
  677. package/scripts/rules/permission-guards.ts +2 -2
  678. package/scripts/rules/piped-verification.ts +79 -9
  679. package/scripts/rules/poll-loop.ts +9 -11
  680. package/scripts/rules/pre-gate-cut.ts +33 -30
  681. package/scripts/rules/prior-comment-read.ts +3 -3
  682. package/scripts/rules/protected-files.ts +25 -13
  683. package/scripts/rules/raw-field-body.ts +3 -4
  684. package/scripts/rules/reply-language.ts +1 -1
  685. package/scripts/rules/rule-body-guard.ts +10 -12
  686. package/scripts/rules/rule-guard.ts +1 -1
  687. package/scripts/rules/rule-list.ts +51 -0
  688. package/scripts/rules/rule-registry-rows.ts +282 -0
  689. package/scripts/rules/rule-registry.ts +109 -0
  690. package/scripts/rules/rule-value-cache.ts +2 -2
  691. package/scripts/rules/rule-value-cli.ts +6 -4
  692. package/scripts/rules/rule-value.ts +61 -22
  693. package/scripts/rules/run-tail-rule.ts +11 -15
  694. package/scripts/rules/shell-body-trigger.ts +7 -7
  695. package/scripts/rules/shell-segments.ts +2 -4
  696. package/scripts/rules/stop-rules.ts +54 -41
  697. package/scripts/rules/tail-commands.ts +1 -1
  698. package/scripts/rules/test-declared-commit.ts +2 -2
  699. package/scripts/rules/third-party-write.ts +3 -3
  700. package/scripts/rules/worktree-guard.ts +12 -5
  701. package/scripts/run/add/run-add-cli.ts +165 -0
  702. package/scripts/run/add/run-add.ts +124 -0
  703. package/scripts/run/board/run-board-cli.ts +207 -0
  704. package/scripts/run/board/run-board-closed.ts +95 -0
  705. package/scripts/run/board/run-board-every.ts +60 -0
  706. package/scripts/run/board/run-board-fetch.ts +38 -0
  707. package/scripts/run/board/run-board-fit.ts +219 -0
  708. package/scripts/run/board/run-board-github.ts +162 -0
  709. package/scripts/run/board/run-board-header.ts +275 -0
  710. package/scripts/run/board/run-board-kind.ts +35 -0
  711. package/scripts/run/board/run-board-labels.ts +299 -0
  712. package/scripts/run/board/run-board-layout.ts +222 -0
  713. package/scripts/run/board/run-board-link.ts +31 -0
  714. package/scripts/run/board/run-board-machine.ts +198 -0
  715. package/scripts/run/board/run-board-notes.ts +103 -0
  716. package/scripts/run/board/run-board-phase.ts +136 -0
  717. package/scripts/run/board/run-board-plan.ts +129 -0
  718. package/scripts/run/board/run-board-read.ts +62 -0
  719. package/scripts/run/board/run-board-render-legend.ts +82 -0
  720. package/scripts/run/board/run-board-render-notes.ts +77 -0
  721. package/scripts/run/board/run-board-render-slot.ts +50 -0
  722. package/scripts/run/board/run-board-render.ts +407 -0
  723. package/scripts/run/board/run-board-scope.ts +17 -0
  724. package/scripts/run/board/run-board-screen.ts +43 -0
  725. package/scripts/run/board/run-board-span.ts +66 -0
  726. package/scripts/run/board/run-board-spin.ts +115 -0
  727. package/scripts/run/board/run-board-state.ts +113 -0
  728. package/scripts/run/board/run-board-status.ts +279 -0
  729. package/scripts/run/board/run-board-tick.ts +210 -0
  730. package/scripts/run/board/run-board-track.ts +22 -0
  731. package/scripts/run/board/run-board-usage-read.ts +255 -0
  732. package/scripts/run/board/run-board-usage-rusage.ts +124 -0
  733. package/scripts/run/board/run-board-usage-text.ts +80 -0
  734. package/scripts/run/board/run-board-usage.ts +165 -0
  735. package/scripts/run/carry/run-carry-added.ts +62 -0
  736. package/scripts/run/carry/run-carry-args.ts +25 -22
  737. package/scripts/run/carry/run-carry-change.ts +1 -1
  738. package/scripts/run/carry/run-carry-cli.ts +71 -48
  739. package/scripts/run/carry/run-carry-conversation.ts +6 -7
  740. package/scripts/run/carry/run-carry-ended.ts +85 -0
  741. package/scripts/run/carry/run-carry-reclaim.ts +1 -1
  742. package/scripts/run/carry/run-carry-stash.ts +3 -2
  743. package/scripts/run/carry/run-carry-streak.ts +8 -10
  744. package/scripts/run/carry/run-carry.ts +85 -89
  745. package/scripts/run/cut/run-cut-args.ts +7 -7
  746. package/scripts/run/cut/run-cut-cli.ts +68 -37
  747. package/scripts/run/cut/run-cut-handoff.ts +15 -15
  748. package/scripts/run/cut/run-cut-report.ts +37 -16
  749. package/scripts/run/cut/run-cut.ts +63 -77
  750. package/scripts/run/detached-launch.ts +35 -50
  751. package/scripts/run/entry/run-entry-cli.ts +48 -27
  752. package/scripts/run/entry/run-entry-stop.ts +7 -9
  753. package/scripts/run/entry/run-entry.ts +5 -6
  754. package/scripts/run/event/run-event-cli.ts +5 -6
  755. package/scripts/run/event/run-event-filed.ts +69 -0
  756. package/scripts/run/event/run-event-follow.ts +3 -3
  757. package/scripts/run/event/run-event-plan.ts +38 -0
  758. package/scripts/run/event/run-event-render.ts +10 -4
  759. package/scripts/run/event/run-event-scope.ts +47 -18
  760. package/scripts/run/event/run-event-stream-emit.ts +64 -11
  761. package/scripts/run/event/run-event-stream.ts +172 -43
  762. package/scripts/run/event/run-event-watch.ts +4 -6
  763. package/scripts/run/hold/run-hold-cli.ts +65 -62
  764. package/scripts/run/hold/run-hold.ts +88 -46
  765. package/scripts/run/merge/run-merge-cli.ts +116 -77
  766. package/scripts/run/merge/run-merge-collect.ts +107 -0
  767. package/scripts/run/merge/run-merge-steps.ts +112 -65
  768. package/scripts/run/merge/run-merge-token.ts +30 -0
  769. package/scripts/run/merge/run-merge.ts +31 -22
  770. package/scripts/run/progress/run-progress-args.ts +4 -4
  771. package/scripts/run/progress/run-progress-cli.ts +39 -50
  772. package/scripts/run/progress/run-progress-clock.ts +25 -32
  773. package/scripts/run/progress/run-progress-config.ts +6 -9
  774. package/scripts/run/progress/run-progress-read.ts +9 -10
  775. package/scripts/run/progress/run-progress.ts +48 -53
  776. package/scripts/run/review/run-review-cli.ts +6 -6
  777. package/scripts/run/review/run-review-steps.ts +6 -6
  778. package/scripts/run/review/run-review.ts +9 -11
  779. package/scripts/run/run-cli-fault.ts +29 -0
  780. package/scripts/run/run-ending-cli.ts +3 -3
  781. package/scripts/run/run-ending.ts +10 -14
  782. package/scripts/run/run-halfrun-resume.ts +6 -8
  783. package/scripts/run/run-headless.ts +25 -12
  784. package/scripts/run/run-invocation.ts +17 -22
  785. package/scripts/run/run-label.ts +7 -5
  786. package/scripts/run/run-liveness-cli.ts +19 -6
  787. package/scripts/run/run-liveness.ts +27 -38
  788. package/scripts/run/run-next-cli.ts +5 -9
  789. package/scripts/run/run-next.ts +4 -5
  790. package/scripts/run/run-parent-cut-hook.ts +10 -12
  791. package/scripts/run/run-preflight.ts +25 -29
  792. package/scripts/run/run-prep-cli.ts +17 -13
  793. package/scripts/run/run-prep-locate.ts +4 -5
  794. package/scripts/run/run-prep.ts +7 -10
  795. package/scripts/run/run-prrun-resume.ts +2 -2
  796. package/scripts/run/run-report-cli.ts +4 -4
  797. package/scripts/run/run-report.ts +9 -14
  798. package/scripts/run/run-retrospective.ts +3 -3
  799. package/scripts/run/run-section.ts +42 -0
  800. package/scripts/run/run-stage-read.ts +2 -2
  801. package/scripts/run/run-stage.ts +6 -4
  802. package/scripts/run/run-status-cli.ts +7 -5
  803. package/scripts/run/run-status.ts +6 -7
  804. package/scripts/run/run-step-cli.ts +13 -15
  805. package/scripts/run/run-step.ts +62 -48
  806. package/scripts/run/run-stop-notify.ts +7 -8
  807. package/scripts/run/run-stranded-cli.ts +1 -1
  808. package/scripts/run/run-stranded-detect.ts +4 -4
  809. package/scripts/run/run-stranded.ts +11 -13
  810. package/scripts/run/run-tail-cli.ts +15 -16
  811. package/scripts/run/run-tail.ts +14 -33
  812. package/scripts/run/run-watcher-guard-cli.ts +3 -4
  813. package/scripts/run/run-watcher-guard.ts +11 -12
  814. package/scripts/run/run-watcher-hook.ts +6 -12
  815. package/scripts/run/ship/run-ship-cli.ts +67 -33
  816. package/scripts/run/ship/run-ship-detach.ts +15 -13
  817. package/scripts/run/ship/run-ship-lock.ts +1 -1
  818. package/scripts/run/ship/run-ship-next.ts +7 -8
  819. package/scripts/run/ship/run-ship-pre-detach.ts +27 -11
  820. package/scripts/run/ship/run-ship-preflight.ts +10 -11
  821. package/scripts/run/ship/run-ship-probe.ts +4 -4
  822. package/scripts/run/ship/run-ship-return.ts +1 -1
  823. package/scripts/run/ship/run-ship-review-steps.ts +43 -24
  824. package/scripts/run/ship/run-ship-review.ts +12 -14
  825. package/scripts/run/ship/run-ship-scoped.ts +15 -6
  826. package/scripts/run/ship/run-ship-stage.ts +80 -26
  827. package/scripts/run/ship/run-ship-steps.ts +26 -16
  828. package/scripts/run/ship/run-ship-stop-text.ts +4 -2
  829. package/scripts/run/ship/run-ship-sync.ts +9 -8
  830. package/scripts/run/ship/run-ship.ts +17 -32
  831. package/scripts/run/tidy/run-tidy-cli.ts +9 -5
  832. package/scripts/run/tidy/run-tidy-lanes.ts +18 -7
  833. package/scripts/run/tidy/run-tidy-stashes.ts +8 -8
  834. package/scripts/run/tidy/run-tidy.ts +4 -3
  835. package/scripts/run/wake/run-wake-cli.ts +27 -33
  836. package/scripts/run/wake/run-wake-describe.ts +76 -29
  837. package/scripts/run/wake/run-wake-driver.ts +14 -14
  838. package/scripts/run/wake/run-wake-handoff.ts +6 -6
  839. package/scripts/run/wake/run-wake-loop.ts +13 -21
  840. package/scripts/run/wake/run-wake-restart.ts +4 -5
  841. package/scripts/run/wake/run-wake-session.ts +23 -27
  842. package/scripts/run/wake/run-wake.ts +57 -328
  843. package/scripts/safe-chain/ci-installer-pin.ts +3 -3
  844. package/scripts/safe-chain/pack-hook.ts +2 -2
  845. package/scripts/safe-chain/preinstall-command.ts +2 -2
  846. package/scripts/security/security-audit-logic.ts +1 -1
  847. package/scripts/security/security-audit-provision-logic.ts +1 -1
  848. package/scripts/security/security-audit-provision.ts +2 -2
  849. package/scripts/security/security-audit.ts +5 -5
  850. package/scripts/security/security-updates-logic.ts +2 -3
  851. package/scripts/security/security-updates.ts +2 -4
  852. package/scripts/self-sync-guard/index.ts +1 -1
  853. package/scripts/self-sync-guard/self-sync-guard-logic.ts +2 -2
  854. package/scripts/self-sync-guard/self-sync-refusal.ts +1 -1
  855. package/scripts/sonar/sonar-hotspots-cli.ts +1 -1
  856. package/scripts/sonar/sonar-hotspots.ts +1 -1
  857. package/scripts/sonar/sonar-new-code-cli.ts +1 -1
  858. package/scripts/sonar/sonar-new-code.ts +1 -1
  859. package/scripts/sonar/sonar-project.ts +1 -1
  860. package/scripts/split/split-assess-cli.ts +1 -1
  861. package/scripts/split/split-assess.ts +3 -3
  862. package/scripts/sync/directory-copy-guard.ts +2 -3
  863. package/scripts/sync/managed-config-scope-cli.ts +1 -2
  864. package/scripts/sync/managed-config-scope.ts +4 -4
  865. package/scripts/sync/plugin-skill-directories.ts +2 -2
  866. package/scripts/sync/reconcile-templates.ts +17 -8
  867. package/scripts/sync/removed-skill-manifest.ts +2 -3
  868. package/scripts/sync/sync-ai-files.ts +7 -7
  869. package/scripts/sync/sync-configs.ts +30 -3
  870. package/scripts/sync/sync-hook-safety.ts +2 -2
  871. package/scripts/sync/sync.ts +23 -10
  872. package/scripts/sync/synced-paths.ts +2 -1
  873. package/scripts/sync/workflow-pin-logic.ts +1 -1
  874. package/scripts/test/test-declared-changed.ts +4 -4
  875. package/scripts/test/test-declared-logic.ts +2 -3
  876. package/scripts/test/test-declared-match.ts +25 -4
  877. package/scripts/test/test-declared.ts +26 -9
  878. package/scripts/test/test-red-commit.ts +3 -2
  879. package/scripts/test/test-red-logic.ts +7 -14
  880. package/scripts/test/test-red.ts +12 -47
  881. package/scripts/test/test-related-scope.ts +2 -3
  882. package/scripts/test/test-related.ts +3 -3
  883. package/scripts/test/test-type-logic.ts +1 -2
  884. package/scripts/test/test-unit-guard.ts +13 -17
  885. package/scripts/test/unit-worker-share.ts +7 -8
  886. package/scripts/time-runtime/time-agent-bundles.ts +2 -4
  887. package/scripts/time-runtime/time-background.ts +17 -21
  888. package/scripts/time-runtime/time-batch-guard.ts +67 -342
  889. package/scripts/time-runtime/time-bundle-call.ts +26 -28
  890. package/scripts/time-runtime/time-bundles.ts +11 -12
  891. package/scripts/time-runtime/time-call-identity.ts +1 -1
  892. package/scripts/time-runtime/time-command-key.ts +2 -2
  893. package/scripts/time-runtime/time-density-hook.ts +8 -11
  894. package/scripts/time-runtime/time-density.ts +5 -5
  895. package/scripts/time-runtime/time-followup-stage.ts +7 -7
  896. package/scripts/time-runtime/time-format.ts +5 -5
  897. package/scripts/time-runtime/time-hook-transcript.ts +3 -3
  898. package/scripts/time-runtime/time-instant.ts +1 -1
  899. package/scripts/time-runtime/time-markers.ts +15 -19
  900. package/scripts/time-runtime/time-phase-names.ts +3 -3
  901. package/scripts/time-runtime/time-reported-failure.ts +15 -19
  902. package/scripts/time-runtime/time-round-trips.ts +20 -23
  903. package/scripts/time-runtime/time-shell.ts +8 -8
  904. package/scripts/time-runtime/time-single-check.ts +1 -2
  905. package/scripts/time-runtime/time-spans.ts +35 -40
  906. package/scripts/time-runtime/time-tool-call.ts +15 -16
  907. package/scripts/time-runtime/time-transcript-line.ts +53 -34
  908. package/scripts/time-runtime/time-writes.ts +5 -5
  909. package/scripts/ui/ui-routes-cli.ts +1 -2
  910. package/scripts/ui/ui-routes.ts +1 -2
  911. package/scripts/version/bump-version.ts +1 -1
  912. package/scripts/version/fresh-metadata-cache.ts +2 -2
  913. package/scripts/version/latest-corepack.ts +129 -98
  914. package/scripts/version/latest-lane-guard.ts +1 -1
  915. package/scripts/version/latest-scope-cli.ts +2 -2
  916. package/scripts/version/latest-stamp.ts +1 -2
  917. package/scripts/version/latest-update.ts +2 -2
  918. package/scripts/version/npm-registry.ts +2 -2
  919. package/scripts/version/package-manager-version.ts +18 -0
  920. package/scripts/version/publishable-range-check.ts +2 -1
  921. package/scripts/version/publishable-range.ts +1 -1
  922. package/scripts/version/release-age.ts +11 -11
  923. package/scripts/version/release-hold.ts +2 -2
  924. package/scripts/version/safe-chain-version-update.ts +3 -3
  925. package/scripts/version/version-check-logic.ts +2 -3
  926. package/scripts/version/version-check.ts +1 -2
  927. package/scripts/version/version-command-config.ts +2 -2
  928. package/scripts/version/version-commands.ts +3 -3
  929. package/scripts/version/version-remote.ts +4 -4
  930. package/scripts/version/version-targets.ts +2 -2
  931. package/templates/gitignore +7 -0
  932. package/templates/workflows/github-release.yml +4 -0
  933. package/dist/hooks/chunk-NV2JRZZO.js +0 -6385
  934. package/dist/hooks/chunk-RKUAD3I6.js +0 -90
  935. package/dist/hooks/chunk-WPALEIRX.js +0 -18
  936. package/scripts/backlog/backlog-restructure.ts +0 -152
  937. package/scripts/rules/issue-fold-rule.ts +0 -72
  938. package/scripts/rules/wip-cap.ts +0 -63
  939. package/scripts/run/run-issue-number.ts +0 -19
@@ -28,6 +28,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
28
28
  category: 'Development',
29
29
  reference: ['', 'developer', ['processes']],
30
30
  core_weight: core_budget.CORE_WEIGHTS.lint,
31
+ memory_mb: core_budget.MEMORY_MB.lint,
31
32
  },
32
33
  'lint:related': {
33
34
  script: 'scripts/lint/lint-related.ts',
@@ -35,6 +36,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
35
36
  category: 'Development',
36
37
  reference: [FILE_ARGUMENTS, 'developer', ['processes']],
37
38
  core_weight: core_budget.CORE_WEIGHTS.lint,
39
+ memory_mb: core_budget.MEMORY_MB.lint,
38
40
  },
39
41
  lines: {
40
42
  script: 'scripts/lines/lines-command.ts',
@@ -42,6 +44,21 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
42
44
  category: 'Development',
43
45
  reference: [REQUIRED_FILE_ARGUMENTS, 'developer', ['none']],
44
46
  core_weight: core_budget.CORE_WEIGHTS.eslint_scan,
47
+ memory_mb: core_budget.MEMORY_MB.eslint_scan,
48
+ },
49
+ metrics: {
50
+ script: 'scripts/metrics/metrics-command.ts',
51
+ description:
52
+ 'Print repository-wide quality totals and durations, and fail when a total grew past the merge-base or a duration past its baseline',
53
+ category: 'Development',
54
+ reference: [
55
+ '[--no-startup | --totals-only | --accept --reason "<why>"]',
56
+ 'developer',
57
+ ['files'],
58
+ ],
59
+ core_weight: core_budget.CORE_WEIGHTS.eslint_scan,
60
+ memory_mb: core_budget.MEMORY_MB.eslint_scan,
61
+ is_kit_only: true,
45
62
  },
46
63
  'refactor:scan': {
47
64
  script: 'scripts/refactor/refactor-scan-cli.ts',
@@ -50,6 +67,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
50
67
  category: 'Development',
51
68
  reference: ['', 'automation', ['processes']],
52
69
  core_weight: core_budget.CORE_WEIGHTS.eslint_scan,
70
+ memory_mb: core_budget.MEMORY_MB.eslint_scan,
53
71
  },
54
72
  bytes: {
55
73
  script: 'scripts/lines/bytes-command.ts',
@@ -65,6 +83,13 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
65
83
  category: 'AI tools',
66
84
  reference: ['[--refresh]', 'developer', ['files']],
67
85
  },
86
+ 'rule:list': {
87
+ script: 'scripts/rules/rule-list.ts',
88
+ description:
89
+ "Print the trigger-delivered rules — each one's source, firing call and silent turn — from the guard rows",
90
+ category: 'AI tools',
91
+ reference: ['', 'automation', ['none']],
92
+ },
68
93
  format: {
69
94
  script: 'scripts/lint/format.ts',
70
95
  description: 'Format code with prettier and eslint (skips a tool a basic project lacks)',
@@ -86,8 +111,8 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
86
111
  // **No `tsx_arguments`, deliberately.** `JOSH_BATCH_GUARD` is a per-machine preference kept in
87
112
  // `.env`, which every other command reads through `OPTIONAL_ENV_FILE_FLAGS` — but declaring any
88
113
  // `tsx_arguments` disqualifies a command from in-process dispatch (`josh-in-process.ts`), and
89
- // this one runs before every `Bash` call. That is the hot path joshuafolkken/kit#1342 took a
90
- // second ~0.16 s tsx start off. The script calls `process.loadEnvFile` itself instead, which is
114
+ // this one runs before every `Bash` call, where a second ~0.16 s tsx start is not affordable.
115
+ // The script calls `process.loadEnvFile` itself instead, which is
91
116
  // node's own `--env-file` parser with node's own precedence.
92
117
  },
93
118
  'pretool:guard': {
@@ -114,7 +139,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
114
139
  'session:lang': {
115
140
  script: 'scripts/josh/session-language-cli.ts',
116
141
  description:
117
- 'Claude Code hook: print the resolved JOSH_SESSION_LANG (defaults to ja) for the session context',
142
+ 'Claude Code hook: print a non-default JOSH_SESSION_LANG for the session context, and the run:board reply rule while a backlogrun is live (otherwise nothing)',
118
143
  category: 'Development',
119
144
  reference: ['', 'automation', ['none']],
120
145
  // **No `tsx_arguments`, deliberately**, the same as `batch:guard` above: this runs on every
@@ -128,7 +153,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
128
153
  category: 'Development',
129
154
  reference: ['<pretool|posttool>', 'automation', ['none']],
130
155
  // The live-source fallback `scripts/hooks/run-hook.sh` derives from the `codex-hook-adapter`
131
- // bundle name (joshuafolkken/kit#3184). **No `tsx_arguments`**, the same as `pretool:guard`
156
+ // bundle name. **No `tsx_arguments`**, the same as `pretool:guard`
132
157
  // above: it runs before every guarded Codex call.
133
158
  },
134
159
  'cspell:dot': {
@@ -137,6 +162,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
137
162
  category: 'Development',
138
163
  reference: ['', 'developer', ['processes']],
139
164
  core_weight: core_budget.CORE_WEIGHTS.spell_check,
165
+ memory_mb: core_budget.MEMORY_MB.spell_check,
140
166
  },
141
167
  behavior: {
142
168
  script: 'scripts/behavior/behavior-cli.ts',
@@ -159,6 +185,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
159
185
  category: 'Development',
160
186
  reference: [FILTER_ARGUMENTS, 'developer', ['processes']],
161
187
  core_weight: gate_plan.direct_unit_weight,
188
+ memory_mb: gate_plan.direct_unit_memory,
162
189
  },
163
190
  'test:related': {
164
191
  script: 'scripts/test/test-related.ts',
@@ -166,6 +193,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
166
193
  category: 'Development',
167
194
  reference: [FILE_ARGUMENTS, 'developer', ['processes']],
168
195
  core_weight: gate_plan.direct_unit_weight,
196
+ memory_mb: gate_plan.direct_unit_memory,
169
197
  },
170
198
  'test:declared': {
171
199
  script: 'scripts/test/test-declared.ts',
@@ -213,6 +241,7 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
213
241
  category: 'Development',
214
242
  reference: ['[arguments...]', 'developer', ['processes']],
215
243
  core_weight: core_budget.CORE_WEIGHTS.type_check,
244
+ memory_mb: core_budget.MEMORY_MB.type_check,
216
245
  },
217
246
  port: {
218
247
  script: 'scripts/ports/port-command.ts',
@@ -1,10 +1,10 @@
1
1
  import type { CommandEntry } from './josh-command-types'
2
2
 
3
3
  // The document-reading and -editing command registry, split out of `josh-commands-ai.ts` so that file
4
- // stays under its 300-code-line limit, exactly as `SPLIT_COMMANDS` was for the same reason
5
- // (joshuafolkken/kit#2162, joshuafolkken/kit#2218, joshuafolkken/kit#2366). It is spread into
4
+ // stays under its 300-code-line limit, exactly as `SPLIT_COMMANDS` was for the same reason.
5
+ // It is spread into
6
6
  // `AI_COMMANDS` so the commands stay grouped under the 'AI tools' category. `read:files` and
7
- // `edit:files` are the read/write halves of the round-trip fold (joshuafolkken/kit#2202 / #2366).
7
+ // `edit:files` are the read/write halves of the round-trip fold.
8
8
 
9
9
  /* eslint-disable @typescript-eslint/naming-convention */
10
10
  const DOCUMENT_COMMANDS: Record<string, CommandEntry> = {
@@ -1,11 +1,11 @@
1
1
  import type { CommandEntry } from './josh-command-types'
2
2
 
3
3
  // The `PreToolUse` guard registry, split out of `josh-commands-ai.ts` so that file stays under its
4
- // 300-code-line limit, exactly as `LANE_COMMANDS` and `SPLIT_COMMANDS` were for the same reason
5
- // (joshuafolkken/kit#2162, joshuafolkken/kit#2218, joshuafolkken/kit#2298). It is spread into
4
+ // 300-code-line limit, exactly as `LANE_COMMANDS` and `SPLIT_COMMANDS` were for the same reason.
5
+ // It is spread into
6
6
  // `AI_COMMANDS` so the guards stay grouped with the other AI tools.
7
7
  //
8
- // **None declare `tsx_arguments`, for the reason `batch:guard` declares none** (joshuafolkken/kit#1342):
8
+ // **None declare `tsx_arguments`, for the reason `batch:guard` declares none**:
9
9
  // declaring any disqualifies a command from in-process dispatch, and these run in front of every read
10
10
  // or shell call. Each script calls `process.loadEnvFile` itself instead, through `hook-decision.ts`.
11
11
 
@@ -1,7 +1,7 @@
1
1
  import type { CommandEntry } from './josh-command-types'
2
2
 
3
3
  // The issue-reading and issue-citation commands, split out of `josh-commands-ai.ts` when the mandated
4
- // `issue:cite` section pushed that file past its 300-line ceiling (joshuafolkken/kit#2220) — the same
4
+ // `issue:cite` section pushed that file past its 300-line ceiling — the same
5
5
  // group-per-file shape `LANE_COMMANDS` and `SPLIT_COMMANDS` already take. `COMMAND_MAP` spreads this
6
6
  // in, so nothing downstream sees where an entry lives.
7
7
 
@@ -33,8 +33,7 @@ const ISSUE_COMMANDS: Record<string, CommandEntry> = {
33
33
  },
34
34
  'defect:rate': {
35
35
  script: 'scripts/issue/defect-rate-cli.ts',
36
- description:
37
- 'Print the defect rate of merged work: defects filed per behavior change completed',
36
+ description: 'Print the defect rate of merged work: defects filed per enhancement completed',
38
37
  category: 'AI tools',
39
38
  reference: ['[--days <n>]', 'automation', ['network']],
40
39
  },
@@ -66,14 +65,21 @@ const ISSUE_COMMANDS: Record<string, CommandEntry> = {
66
65
  'issue:file': {
67
66
  script: 'scripts/issue/issue-file-cli.ts',
68
67
  description:
69
- 'File an Issue with every filing step: lint, Origin, WIP cap, duplicate scout, labels, then epic:bundle',
68
+ 'File an Issue with every filing step: lint, Origin, fold, WIP cap, duplicate scout, labels, then epic:bundle',
70
69
  category: 'AI tools',
71
70
  reference: [
72
- '<title> --body-file <path> --depth <0|1|2> [--route <route>] [--label <name>] [--repo <owner/repo>] [--distinct <N,…>] [--over-cap] [--no-auto-ok]',
71
+ '<title> --body-file <path> --depth <0|1|2> [--route <route>] [--label <name>] [--repo <owner/repo>] [--distinct <N,…>] [--over-cap] [--no-auto-ok] [--requested] [--release]',
73
72
  'automation',
74
73
  ['network'],
75
74
  ],
76
75
  },
76
+ 'issue:release': {
77
+ script: 'scripts/issue/issue-release-cli.ts',
78
+ description:
79
+ "Link an Issue to the repository's open release Issue as its blocker, filing one when none is open",
80
+ category: 'AI tools',
81
+ reference: ['<issue>', 'automation', ['network']],
82
+ },
77
83
  }
78
84
  /* eslint-enable @typescript-eslint/naming-convention */
79
85
 
@@ -1,7 +1,7 @@
1
1
  import { OPTIONAL_ENV_FILE_FLAGS, type CommandEntry } from './josh-command-types'
2
2
 
3
3
  // The `lane:*` command registry, split out of `josh-commands-ai.ts` so that file stays under its line
4
- // limit (joshuafolkken/kit#2162). One script answers `lane:open` / `lane:close` / `lane:list` /
4
+ // limit. One script answers `lane:open` / `lane:close` / `lane:list` /
5
5
  // `lane:prune` / `lane:output` / `lane:dispatch` / `lane:await`, told apart by the verb below;
6
6
  // `lane:launch` is the composite that opens, pops-and-installs on the first lane, and dispatches.
7
7
  const LANE_SCRIPT = 'scripts/lane/lane-cli.ts'
@@ -39,7 +39,8 @@ const LANE_COMMANDS: Record<string, CommandEntry> = {
39
39
  },
40
40
  'lane:prune': {
41
41
  ...LANE_ARGUMENTS,
42
- description: 'Close every lane an interruption left without its work tree',
42
+ description:
43
+ 'Close every lane an interruption left without its work tree, then sweep unregistered leftovers under the lanes root',
43
44
  category: 'AI tools',
44
45
  reference: ['', 'automation', ['files', 'git']],
45
46
  default_script_arguments: ['prune'],
@@ -73,12 +74,22 @@ const LANE_COMMANDS: Record<string, CommandEntry> = {
73
74
  category: 'AI tools',
74
75
  reference: ['<issue> [--stash <message>]', 'automation', ['files', 'git', 'processes']],
75
76
  },
76
- // The lane-limit measurement (joshuafolkken/kit#3355): `.env` is read so `lane:stats` labels the row
77
+ // A live run's lane limit: `.env` is read so the bare form reports the
78
+ // `JOSH_LANE_LIMIT` a person set there when no override stands.
79
+ 'lane:limit': {
80
+ script: 'scripts/lane/lane-limit-cli.ts',
81
+ tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
82
+ description:
83
+ 'Change a live backlogrun’s lane limit without stopping it, or print the limit, lanes in use and free lanes',
84
+ category: 'AI tools',
85
+ reference: ['[<limit>] [--reset]', 'developer', ['files']],
86
+ },
87
+ // The lane-limit measurement: `.env` is read so `lane:stats` labels the row
77
88
  // with the `JOSH_LANE_LIMIT` a person set there.
78
89
  'lane:sample': {
79
90
  ...MEASURE_ARGUMENTS,
80
91
  description:
81
- 'Record the machine load (load average, swap, free memory, working lanes) to the lane ledger',
92
+ 'Record the machine load (load average, swap, free memory, working lanes) to the lane ledger — a backlogrun samples itself, this is for a reading outside one',
82
93
  category: 'AI tools',
83
94
  reference: ['[--every <seconds>]', 'maintainer', ['files']],
84
95
  default_script_arguments: ['sample'],
@@ -86,7 +97,7 @@ const LANE_COMMANDS: Record<string, CommandEntry> = {
86
97
  'lane:stats': {
87
98
  ...MEASURE_ARGUMENTS,
88
99
  description:
89
- 'Print one table row of lane throughput, gate duration and machine load over a period',
100
+ 'Print one table row of lane throughput, gate duration and machine load over a period, and the per-stage durations of a lane under it',
90
101
  category: 'AI tools',
91
102
  reference: ['--period <days> [--limit <lane-limit>]', 'maintainer', ['none']],
92
103
  default_script_arguments: ['stats'],
@@ -1,6 +1,6 @@
1
1
  import type { CommandEntry } from './josh-command-types'
2
2
 
3
- // The linters for the fixed-shape artifacts a run writes by hand (joshuafolkken/kit#2123). They are
3
+ // The linters for the fixed-shape artifacts a run writes by hand. They are
4
4
  // `AI tools` by category, like every other automation command, but live in their own file so
5
5
  // `josh-commands-ai.ts` stays under its line ceiling.
6
6
 
@@ -45,9 +45,9 @@ const MAINTENANCE_COMMANDS: Record<string, CommandEntry> = {
45
45
  shell: [
46
46
  'sh',
47
47
  '-c',
48
- 'export NODE_AUTH_TOKEN=$(gh auth token) && pnpm josh latest:guard && pnpm josh latest:corepack && pnpm josh latest:update && pnpm josh ranges && pnpm josh audit && pnpm josh latest:scope --record',
48
+ 'export NODE_AUTH_TOKEN=$(gh auth token) && pnpm josh latest:guard && pnpm josh latest:update && pnpm josh ranges && pnpm josh audit && pnpm josh latest:corepack && pnpm josh latest:scope --record',
49
49
  ],
50
- description: 'Update pnpm, dependencies, and run security audit',
50
+ description: 'Update dependencies, run security audit, then update pnpm',
51
51
  category: 'Maintenance',
52
52
  reference: ['', 'developer', ['files', 'network', 'processes']],
53
53
  argument_targets: ['latest:corepack', 'latest:update', 'audit'],
@@ -1,9 +1,9 @@
1
1
  import { OPTIONAL_ENV_FILE_FLAGS, type CommandEntry } from './josh-command-types'
2
2
 
3
3
  // The run-lifecycle registry (`run:hold` through `run:step`), split out of `josh-commands-ai.ts` so
4
- // that file stays under its 300-code-line limit, as `BACKLOG_COMMANDS` and `LANE_COMMANDS` were
5
- // (joshuafolkken/kit#2992). It is spread into `AI_COMMANDS` at the place the entries used to sit, so
6
- // the generated catalog keeps their order.
4
+ // that file stays under its 300-code-line limit, as `BACKLOG_COMMANDS` and `LANE_COMMANDS` are. It
5
+ // is spread into `AI_COMMANDS` at the place the entries belong, so the generated catalog keeps their
6
+ // order.
7
7
 
8
8
  // One script answers both `run:hold` and `run:release`; the flag below is what tells them apart.
9
9
  const RUN_HOLD_SCRIPT = 'scripts/run/hold/run-hold-cli.ts'
@@ -32,12 +32,18 @@ const RUN_COMMANDS: Record<string, CommandEntry> = {
32
32
  'run:carry': {
33
33
  script: 'scripts/run/carry/run-carry-cli.ts',
34
34
  // `--stopped` sends the stop confirmation, so the Telegram credentials come from `.env` as for
35
- // `run:wake` below (joshuafolkken/kit#3357).
35
+ // `run:wake` below.
36
36
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
37
37
  description: 'Carry one invocation’s budget across its own session cuts',
38
38
  category: 'AI tools',
39
39
  reference: ['<operation> [arguments...]', 'automation', ['files']],
40
40
  },
41
+ 'run:add': {
42
+ script: 'scripts/run/add/run-add-cli.ts',
43
+ description: 'Add issues to a live backlogrun, ahead of the queue unless --no-priority',
44
+ category: 'AI tools',
45
+ reference: ['<issue...> [--no-priority]', 'automation', ['network', 'files']],
46
+ },
41
47
  'run:wake': {
42
48
  script: 'scripts/run/wake/run-wake-cli.ts',
43
49
  // `.env` rather than the ambient environment:
@@ -76,18 +82,26 @@ const RUN_COMMANDS: Record<string, CommandEntry> = {
76
82
  ['files'],
77
83
  ],
78
84
  },
85
+ 'run:board': {
86
+ script: 'scripts/run/board/run-board-cli.ts',
87
+ // `--every` pushes its frame as a Telegram, so the credentials come from `.env` as for `run:carry`.
88
+ tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
89
+ description: 'Draw a live board of the running backlogrun, redrawn every second',
90
+ category: 'AI tools',
91
+ reference: ['[--once | --chat | --every <minutes>]', 'automation', ['files', 'network']],
92
+ },
79
93
  'run:prep': {
80
94
  script: 'scripts/run/run-prep-cli.ts',
81
95
  description: 'Bundle a run’s pre-edit reads: body, comments, state, dependency scope',
82
96
  category: 'AI tools',
83
97
  reference: ['<issue>', 'automation', ['network']],
84
98
  },
85
- // The entry sequence a lane opened on, folded into one call (joshuafolkken/kit#2372): claim the tree,
99
+ // The entry sequence a lane opened on, folded into one call: claim the tree,
86
100
  // read the budget, gather the issue reads and decide the pre-implementation step. `run:hold`,
87
101
  // `cost --cut`, `run:prep` and `run:step` were four round trips re-billing a lane's full context each.
88
102
  'run:entry': {
89
103
  script: 'scripts/run/entry/run-entry-cli.ts',
90
- // A `busy` hold or an `over` budget sends the stop confirmation (joshuafolkken/kit#3357).
104
+ // A `busy` hold or an `over` budget sends the stop confirmation.
91
105
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
92
106
  description:
93
107
  'Open a run in one call: claim the tree, read the budget, bundle the reads, decide the pre-implementation step',
@@ -1,8 +1,7 @@
1
1
  import type { CommandEntry } from './josh-command-types'
2
2
 
3
3
  // The `split:assess` command registry, split out of `josh-commands-ai.ts` so that file stays under its
4
- // 300-code-line limit, exactly as `LANE_COMMANDS` was for the same reason (joshuafolkken/kit#2162,
5
- // joshuafolkken/kit#2218). It is spread into `AI_COMMANDS` so the command stays grouped with the other
4
+ // 300-code-line limit, exactly as `LANE_COMMANDS` was for the same reason. It is spread into `AI_COMMANDS` so the command stays grouped with the other
6
5
  // decision oracles under the 'AI tools' category.
7
6
 
8
7
  /* eslint-disable @typescript-eslint/naming-convention */
@@ -24,16 +24,16 @@ const VERSIONING_COMMANDS: Record<string, CommandEntry> = {
24
24
  category: 'Versioning',
25
25
  reference: ['', 'developer', ['network']],
26
26
  },
27
- // The one place that decides a version (joshuafolkken/kit#1169). A `script` entry for the same
27
+ // The one place that decides a version. A `script` entry for the same
28
28
  // reason `ranges` is one: script paths resolve against the kit package root, so it keeps working
29
29
  // from a consumer repository where the file lives under node_modules.
30
30
  release: {
31
31
  script: 'scripts/release/release-cli.ts',
32
32
  description: 'Release the merges main has taken since the version last changed',
33
33
  category: 'Versioning',
34
- reference: ['[version]', 'maintainer', ['git', 'network', 'release']],
34
+ reference: ['[--dry-run]', 'maintainer', ['git', 'network', 'release']],
35
35
  },
36
- // The read-only half of the one above (joshuafolkken/kit#1582). `release --dry-run` cannot
36
+ // The read-only half of the one above. `release --dry-run` cannot
37
37
  // answer this question: it refuses off the default branch and on a dirty tree, which is every
38
38
  // position a run asks it from. A `script` entry for the same reason `release` is one.
39
39
  'release:scope': {
@@ -42,8 +42,8 @@ const VERSIONING_COMMANDS: Record<string, CommandEntry> = {
42
42
  category: 'Versioning',
43
43
  reference: ['[--json]', 'automation', ['none']],
44
44
  },
45
- // Run by the release workflows, kit's and the one sync distributes, after a tag has published
46
- // (joshuafolkken/kit#3007). Settings come from the environment, so the workflow decides them.
45
+ // Run by the release workflows, kit's and the one sync distributes, after a tag has published.
46
+ // Settings come from the environment, so the workflow decides them.
47
47
  'release:github': {
48
48
  script: 'scripts/release/github-release-cli.ts',
49
49
  description: 'Create the GitHub Release for a published tag, with generated notes',
@@ -20,20 +20,17 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
20
20
  reference: ['<message>', 'developer', ['network']],
21
21
  default_script_arguments: ['-y', '--skip-commit', '--skip-push'],
22
22
  },
23
- // **The optional form, on both** (joshuafolkken/kit#1564). These two were the last commands
24
- // passing the mandatory `--env-file=.env`, which node resolves before the script's first line: on
25
- // a machine with no `.env` they died as `.env: not found` with exit code 9, even where
26
- // `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID` existed as real environment variables — a cloud
27
- // session, and `followup` with them the merge step of every `fullrun` there. `doctor` was moved to
28
- // this form for the same reason in joshuafolkken/kit#869.
23
+ // **The optional form, on both**. The mandatory `--env-file=.env` is resolved by node before the
24
+ // script's first line: on a machine with no `.env` it dies as `.env: not found` with exit code 9,
25
+ // even where `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID` exist as real environment variables — a
26
+ // cloud session, and `followup` with them the merge step of every `fullrun` there.
29
27
  //
30
28
  // Nothing is lost by relaxing it: both scripts already load `.env` through `josh_environment_file`
31
29
  // themselves, so the file is read either way and node's precedence — an existing environment
32
30
  // variable wins over the file — is node's own in both spellings.
33
31
  //
34
- // **What the mandatory flag was accidentally providing was noise**, and that is replaced rather
35
- // than dropped: `telegram_notify.send` now throws on missing credentials and on a failed send, so
36
- // `josh notify` exits non-zero instead of warning and answering 0.
32
+ // **A missing credential still fails loudly**: `telegram_notify.send` throws on missing credentials
33
+ // and on a failed send, so `josh notify` exits non-zero instead of warning and answering 0.
37
34
  followup: {
38
35
  script: 'scripts/followup/git-followup-workflow.ts',
39
36
  description: 'Follow-up git workflow',
@@ -49,11 +46,23 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
49
46
  script: 'scripts/notify/telegram-test.ts',
50
47
  description: 'Send Telegram notification',
51
48
  category: 'Workflow',
52
- reference: ['--task-type <type> --body <text>', 'automation', ['notifications']],
49
+ reference: [
50
+ '[--task-type <type>] [--body <text> | --body-file <path>] [--issue-url <url>] [--pr-url <url>] [--issue-title <text>] [--repo-name <name>]',
51
+ 'automation',
52
+ ['notifications'],
53
+ ],
53
54
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
54
55
  },
55
- // The observation ledger's commit path for the lines no run's own commit carried
56
- // (joshuafolkken/kit#1756, joshuafolkken/kit#2763): a lane's lines sit in the primary checkout, which
56
+ // One observation-ledger sighting: the key's count, the append and the second-sighting verdict,
57
+ // which a run used to type as a `cat | grep -c` and judge by hand.
58
+ 'observation:record': {
59
+ script: 'scripts/observations/observation-record-cli.ts',
60
+ description: 'Record an observation sighting and answer whether it is now filed',
61
+ category: 'Workflow',
62
+ reference: ['<key> <depth> <where> <what> [--checkout <path>]', 'automation', ['files']],
63
+ },
64
+ // The observation ledger's commit path for the lines no run's own commit carried:
65
+ // a lane's lines sit in the primary checkout, which
57
66
  // its commit cannot see, and the recurrence count the promotion rule reads is a count of main.
58
67
  'observations:flush': {
59
68
  script: 'scripts/observations/observations-flush-cli.ts',
@@ -61,8 +70,8 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
61
70
  category: 'Workflow',
62
71
  reference: ['', 'automation', ['git', 'network']],
63
72
  },
64
- // The one write path for a `/code-review` round's findings (joshuafolkken/kit#2325), plus the
65
- // `--check` gate `followup` runs before it merges (joshuafolkken/kit#2343). It appends a `- rf:`
73
+ // The one write path for a `/code-review` round's findings, plus the
74
+ // `--check` gate `followup` runs before it merges. It appends a `- rf:`
66
75
  // line per finding — or one zero-finding line for a clean round — to the observation ledger, so
67
76
  // `observations:flush` commits them and the recurrence count survives the run.
68
77
  'review:record': {
@@ -70,12 +79,12 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
70
79
  description: 'Record a review round’s findings, or check a round was recorded',
71
80
  category: 'Workflow',
72
81
  reference: [
73
- '--issue <N> [<category>:<severity>:<file> ...] | --check --issue <N>',
82
+ '--issue <N> [--comment] [<category>:<severity>:<file> ...] | --check --issue <N>',
74
83
  'automation',
75
- ['files'],
84
+ ['files', 'network'],
76
85
  ],
77
86
  },
78
- // The reader over what `review:record` wrote (joshuafolkken/kit#2325): each recurring category’s
87
+ // The reader over what `review:record` wrote: each recurring category’s
79
88
  // count, and the number of zero-finding rounds that distinguishes a quiet category from an unwatched one.
80
89
  'review:findings': {
81
90
  script: 'scripts/review/review-findings-cli.ts',
@@ -84,7 +93,7 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
84
93
  reference: ['', 'developer', ['files']],
85
94
  },
86
95
  // After a behavior-change Issue merges, re-run its declared baseline and print before/after; a value
87
- // that did not move appends a refuted-premise line to the observation ledger (joshuafolkken/kit#2212).
96
+ // that did not move appends a refuted-premise line to the observation ledger.
88
97
  'measure:rerun': {
89
98
  script: 'scripts/issue/measure-rerun-cli.ts',
90
99
  description: 'Re-run a merged issue’s baseline command and print the before/after pair',
@@ -92,7 +101,7 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
92
101
  reference: ['<issue-number>', 'automation', ['network', 'processes', 'files']],
93
102
  },
94
103
  // A script rather than an `sh -c` chain, because it has a precondition to enforce: run inside a
95
- // linked work tree it would hijack the default branch from every other one (joshuafolkken/kit#1535).
104
+ // linked work tree it would hijack the default branch from every other one.
96
105
  'main:sync': {
97
106
  script: 'scripts/git/main-sync.ts',
98
107
  description:
@@ -101,9 +110,8 @@ const WORKFLOW_COMMANDS: Record<string, CommandEntry> = {
101
110
  reference: ['', 'developer', ['git', 'network']],
102
111
  },
103
112
  // A script rather than an `sh -c` chain, because the strategy has to be named rather than left to
104
- // the caller's git configuration: the `git pull` this replaced aborted with `Need to specify how
105
- // to reconcile divergent branches` on exactly the diverged branch the command exists for
106
- // (joshuafolkken/kit#1659).
113
+ // the caller's git configuration: a bare `git pull` aborts with `Need to specify how to reconcile
114
+ // divergent branches` on exactly the diverged branch the command exists for.
107
115
  'main:merge': {
108
116
  script: 'scripts/git/main-merge.ts',
109
117
  description: 'Merge origin default branch into the current branch',
@@ -4,7 +4,7 @@ import { ENV_FILE_NAME } from '#ports'
4
4
  //
5
5
  // **The flag form is what most commands use, and it is not free.** Declaring any `tsx_arguments`
6
6
  // disqualifies a command from in-process dispatch (`josh-in-process.ts`), which puts a second
7
- // ~0.16 s tsx start in front of every call — the hot path joshuafolkken/kit#1342 took it off. A
7
+ // ~0.16 s tsx start in front of every call. A
8
8
  // command a hook fires on every `Bash` call, or one an unattended `epicrun` polls every sixty
9
9
  // seconds, cannot pay that, so it reads the file itself instead.
10
10
  //
@@ -5,8 +5,8 @@ import type { CommandEntry } from './josh-command-types'
5
5
 
6
6
  // `pnpm josh <script command>` started tsx twice — once for this dispatcher, once for the script it
7
7
  // spawned. Measured on 2026-09-04, the second start was about 0.16 s of the 0.55 s a
8
- // `pnpm josh format:edited` took, and the edit/Bash hook pays it 60–90 times in a single run
9
- // (joshuafolkken/kit#1342). The script is ordinary TypeScript and a TypeScript loader is already
8
+ // `pnpm josh format:edited` took, and the edit/Bash hook pays it 60–90 times in a single run.
9
+ // The script is ordinary TypeScript and a TypeScript loader is already
10
10
  // installed by the time this file runs, so the dispatcher evaluates the script itself instead.
11
11
  const TYPESCRIPT_EXTENSION = '.ts'
12
12
  const JAVASCRIPT_EXTENSION = '.js'
@@ -21,7 +21,7 @@ function is_typescript_dispatcher(dispatcher_url: string): boolean {
21
21
  }
22
22
 
23
23
  // A command marked `is_bundled` is pre-built to `dist/commands/<script basename>.js` by
24
- // `scripts/build/build-commands.ts` (joshuafolkken/kit#3328). The path is derived here, in a module
24
+ // `scripts/build/build-commands.ts`. The path is derived here, in a module
25
25
  // the dispatcher bundle already carries, so the build and the dispatcher cannot name two locations.
26
26
  function bundled_script_path(package_directory: string, script: string): string {
27
27
  const name = `${path.basename(script, TYPESCRIPT_EXTENSION)}${JAVASCRIPT_EXTENSION}`
@@ -59,7 +59,7 @@ function resolve_tsx_executable(): string {
59
59
 
60
60
  // Locating the CLI entry through tsx's own manifest never consults pnpm's generated shim, which
61
61
  // hardcodes a store path a later bump prunes. The resolution itself is `resolve_package_bin` —
62
- // shared with the format hook's eslint route rather than written twice (joshuafolkken/kit#1259).
62
+ // shared with the format hook's eslint route rather than written twice.
63
63
  function resolve_tsx_cli_entry(): string | undefined {
64
64
  for (const base_directory of [PACKAGE_DIR, process.cwd()]) {
65
65
  const cli_entry = resolve_package_bin(base_directory, TSX_PACKAGE, TSX_BIN)
@@ -157,7 +157,7 @@ function format_help(is_all = false, is_consumer = false): string {
157
157
  }
158
158
 
159
159
  // Every name a user could type — the canonical commands and their aliases — ranked by edit distance
160
- // so `josh gat` points at `gate` (joshuafolkken/kit#1928).
160
+ // so `josh gat` points at `gate`.
161
161
  function all_command_names(): Array<string> {
162
162
  return [...Object.keys(COMMAND_MAP), ...Object.keys(ALIASES)]
163
163
  }
@@ -219,7 +219,7 @@ function spawn_script_entry(
219
219
 
220
220
  // Only the in-process branch is genuinely asynchronous; the spawning one answers the moment the
221
221
  // child exits. Both are reported as a promise so every caller has one shape to handle, and
222
- // `josh.ts` awaits it either way (joshuafolkken/kit#1342).
222
+ // `josh.ts` awaits it either way.
223
223
  async function run_script_entry(
224
224
  entry: CommandEntry,
225
225
  subcommand_arguments: Array<string>,
@@ -242,8 +242,7 @@ function github_prerequisite_exit(resolved: string, is_consumer: boolean): numbe
242
242
  }
243
243
 
244
244
  // The exit a command answers with before it runs, or `undefined` to go ahead: a consumer is refused a
245
- // kit-only command with guidance, and a composite command rejects extra arguments
246
- // (joshuafolkken/kit#1988).
245
+ // kit-only command with guidance, and a composite command rejects extra arguments.
247
246
  function pre_dispatch_exit(
248
247
  resolved: string,
249
248
  entry: CommandEntry,
@@ -279,25 +278,26 @@ async function run_entry(
279
278
  return await run_script_entry(entry, subcommand_arguments)
280
279
  }
281
280
 
282
- function command_weight(entry: CommandEntry): number | undefined {
283
- return typeof entry.core_weight === 'function' ? entry.core_weight() : entry.core_weight
281
+ function declared(value: number | (() => number) | undefined): number | undefined {
282
+ return typeof value === 'function' ? value() : value
284
283
  }
285
284
 
286
- // **Every command passes through here, so this is where a declared weight is reserved**
287
- // (joshuafolkken/kit#3345). A heavy command run directly, outside `josh gate`, used to start its tools
285
+ // **Every command passes through here, so this is where a declared weight is reserved**.
286
+ // A heavy command run directly, outside `josh gate`, used to start its tools
288
287
  // without claiming a place. A command under a parent that already holds its cores claims nothing:
289
288
  // `core_budget.with_command_reservation` reads the mark that parent set.
290
289
  async function dispatch_entry(
291
290
  entry: CommandEntry,
292
291
  subcommand_arguments: Array<string>,
293
292
  ): Promise<number> {
294
- const weight = command_weight(entry)
293
+ const weight = declared(entry.core_weight)
295
294
 
296
295
  if (weight === undefined) return await run_entry(entry, subcommand_arguments)
297
296
 
298
297
  return await core_budget.with_command_reservation(
299
298
  weight,
300
299
  async () => await run_entry(entry, subcommand_arguments),
300
+ { memory_mb: declared(entry.memory_mb) },
301
301
  )
302
302
  }
303
303
 
@@ -1,6 +1,6 @@
1
1
  import { execa } from 'execa'
2
2
 
3
- // One captured `pnpm josh` subprocess (joshuafolkken/kit#2162). A composite command that collapses a
3
+ // One captured `pnpm josh` subprocess. A composite command that collapses a
4
4
  // sequence of `pnpm josh` calls into one — `run:merge`, `backlog:offer`, `lane:launch` — reads each
5
5
  // step's output back rather than inheriting it, so the step's own report logic is reused rather than
6
6
  // cloned and only the composite's own token reaches the caller's stdout. This is that read, single-
@@ -11,11 +11,11 @@ import { execa } from 'execa'
11
11
  // a person sees it, so a composite streams it through; `run:merge` keeps it piped, because it composes
12
12
  // its own report from the captured values instead.
13
13
  //
14
- // **Forwarded stderr is captured as well** (joshuafolkken/kit#2462): a composite that writes a report
14
+ // **Forwarded stderr is captured as well**: a composite that writes a report
15
15
  // of its own — `run:tail` — puts a failed step's reason in that report, where a detached run's log
16
16
  // otherwise showed only pnpm's `ELIFECYCLE` line.
17
17
  //
18
- // **`timeout_ms` bounds a read made from inside a loop** (joshuafolkken/kit#2503): the step is killed and
18
+ // **`timeout_ms` bounds a read made from inside a loop**: the step is killed and
19
19
  // its exit reads as a failure, so a hung network call ends a pass instead of the loop around it.
20
20
 
21
21
  const PNPM = 'pnpm'