@joshuafolkken/kit 1.1784.0 → 1.2114.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 (690) hide show
  1. package/.claude/agents/reviewer-verification.md +19 -0
  2. package/.claude/agents/reviewer.md +19 -0
  3. package/.claude/settings.json +5 -6
  4. package/.claude/skills/dependency-update/SKILL.md +9 -10
  5. package/.claude/skills/workflow-commands/SKILL.md +6 -6
  6. package/.claude/skills/workflow-commands/background-commands.md +8 -5
  7. package/.claude/skills/workflow-commands/backlogrun-child.md +3 -1
  8. package/.claude/skills/workflow-commands/backlogrun-lanes.md +1 -1
  9. package/.claude/skills/workflow-commands/backlogrun-park.md +5 -2
  10. package/.claude/skills/workflow-commands/backlogrun-progress.md +2 -3
  11. package/.claude/skills/workflow-commands/backlogrun-recovery.md +1 -1
  12. package/.claude/skills/workflow-commands/backlogrun-steps.md +3 -2
  13. package/.claude/skills/workflow-commands/backlogrun.md +1 -1
  14. package/.claude/skills/workflow-commands/chain-rule.md +41 -32
  15. package/.claude/skills/workflow-commands/delegation.md +6 -6
  16. package/.claude/skills/workflow-commands/entry-sequence.md +2 -2
  17. package/.claude/skills/workflow-commands/followup.md +7 -5
  18. package/.claude/skills/workflow-commands/fullrun-steps.md +6 -6
  19. package/.claude/skills/workflow-commands/fullrun.md +1 -1
  20. package/.claude/skills/workflow-commands/issue-comments.md +9 -4
  21. package/.claude/skills/workflow-commands/issue-fold-existing.md +2 -1
  22. package/.claude/skills/workflow-commands/kickoff.md +2 -2
  23. package/.claude/skills/workflow-commands/observation-filing.md +1 -1
  24. package/.claude/skills/workflow-commands/observation-ledger.md +6 -4
  25. package/.claude/skills/workflow-commands/pre-gate-cut.md +9 -7
  26. package/.claude/skills/workflow-commands/prerequisite.md +3 -2
  27. package/.claude/skills/workflow-commands/retrospective.md +2 -2
  28. package/.claude/skills/workflow-commands/split-assessment.md +7 -5
  29. package/.codex/hooks.json +5 -5
  30. package/.github/actions/setup-pnpm/action.yml +9 -16
  31. package/.github/dependabot.yml +16 -0
  32. package/.github/workflows/auto-tag.yml +45 -0
  33. package/.github/workflows/ci.yml +155 -15
  34. package/.github/workflows/dependabot-auto-merge.yml +63 -4
  35. package/.github/workflows/production.yml +8 -0
  36. package/.github/workflows/publish.yml +59 -45
  37. package/.vscode/settings.json +19 -0
  38. package/CLAUDE.md +5 -12
  39. package/SECURITY.md +2 -2
  40. package/dist/CLAUDE.md +5 -12
  41. package/dist/commands/document-read-cli.js +2 -1
  42. package/dist/commands/document-section-main.js +2 -1
  43. package/dist/commands/read-set-cli.js +194 -134
  44. package/dist/commands/run-prep-main.js +9694 -10173
  45. package/dist/commands/run-step-cli.js +22138 -18285
  46. package/dist/hooks/audit-provision.js +23 -5
  47. package/dist/hooks/chunk-3GKE653K.js +6204 -0
  48. package/dist/hooks/chunk-45CJJOO7.js +1243 -0
  49. package/dist/hooks/{chunk-CWMBGKYW.js → chunk-5PM2JRGV.js} +2153 -856
  50. package/dist/hooks/{chunk-WR2KQAYZ.js → chunk-7SIUNQXK.js} +1207 -1470
  51. package/dist/hooks/{chunk-O2YBIDSI.js → chunk-CQD4LJE6.js} +1682 -1130
  52. package/dist/hooks/{chunk-VWWCFGWK.js → chunk-OPSRGWFU.js} +1 -1
  53. package/dist/hooks/{chunk-XGBNSWEI.js → chunk-UJ3FPMMM.js} +132 -49
  54. package/dist/hooks/chunk-VVNYJWEI.js +30 -0
  55. package/dist/hooks/chunk-Z6DQJKH3.js +2806 -0
  56. package/dist/hooks/codex-hook-adapter.js +8 -8
  57. package/dist/hooks/format-edited.js +4 -5
  58. package/dist/hooks/inputs.json +415 -389
  59. package/dist/hooks/pretool-guard.js +7 -6
  60. package/dist/hooks/session-lang.js +101 -258
  61. package/dist/hooks/stop-guard.js +1744 -2576
  62. package/dist/josh.js +7133 -6368
  63. package/dist/version/index.js +161 -1
  64. package/eslint/rules/comment-why-only.js +108 -0
  65. package/package.json +15 -8
  66. package/prompts/coding-standards.md +1 -1
  67. package/prompts/collaboration-workflow/file-edits.md +14 -11
  68. package/prompts/collaboration-workflow/issue-citation.md +0 -4
  69. package/prompts/collaboration-workflow/issue-template.md +40 -21
  70. package/prompts/collaboration-workflow/lane-instructions.md +3 -1
  71. package/prompts/collaboration-workflow/measurement.md +8 -1
  72. package/prompts/collaboration-workflow/operating-rules.md +11 -2
  73. package/prompts/collaboration-workflow/output-bounds.md +6 -2
  74. package/prompts/collaboration-workflow/plan-comment.md +1 -1
  75. package/prompts/collaboration-workflow/principles.md +9 -0
  76. package/prompts/collaboration-workflow/residency.md +3 -2
  77. package/prompts/collaboration-workflow/rule-delivery.md +13 -1
  78. package/prompts/collaboration-workflow/upstream-interrupt.md +2 -2
  79. package/prompts/collaboration-workflow/wip-cap.md +3 -1
  80. package/prompts/review-rubric.md +8 -0
  81. package/prompts/review.md +31 -22
  82. package/prompts/testing-guide.md +1 -0
  83. package/scripts/agent/agent-argv.ts +14 -16
  84. package/scripts/agent/agent-provider.ts +138 -0
  85. package/scripts/agent/agent-role-profile.ts +108 -156
  86. package/scripts/agent/agent-safe-text.ts +20 -5
  87. package/scripts/agent/api-usage-limit.ts +65 -0
  88. package/scripts/agent/claude-agent-argv.ts +19 -9
  89. package/scripts/agent/codex-agent-argv.ts +118 -22
  90. package/scripts/agent/usage-limit-reset.ts +179 -0
  91. package/scripts/auth/claude-token-output.ts +2 -2
  92. package/scripts/auto-ok/auto-ok-author.ts +53 -0
  93. package/scripts/auto-ok/auto-ok-cli.ts +20 -9
  94. package/scripts/backlog/backlog-defect-priority.ts +1 -1
  95. package/scripts/backlog/backlog-drive-cli.ts +6 -1
  96. package/scripts/backlog/backlog-drive-hold.ts +3 -3
  97. package/scripts/backlog/backlog-drive-idle.ts +10 -0
  98. package/scripts/backlog/backlog-drive-launch-pass.ts +90 -0
  99. package/scripts/backlog/backlog-drive-launch.ts +8 -2
  100. package/scripts/backlog/backlog-drive-named-offer.ts +73 -30
  101. package/scripts/backlog/backlog-drive-named.ts +28 -7
  102. package/scripts/backlog/backlog-drive-paused.ts +5 -4
  103. package/scripts/backlog/backlog-drive-restore.ts +11 -3
  104. package/scripts/backlog/backlog-drive.ts +21 -60
  105. package/scripts/backlog/backlog-gate-scope.ts +61 -0
  106. package/scripts/backlog/backlog-measure-close.ts +112 -0
  107. package/scripts/backlog/backlog-next.ts +39 -49
  108. package/scripts/backlog/backlog-occupied.ts +2 -2
  109. package/scripts/backlog/backlog-overlap.ts +42 -8
  110. package/scripts/backlog/backlog-plan-cli.ts +4 -1
  111. package/scripts/backlog/backlog-plan-comment.ts +81 -0
  112. package/scripts/backlog/backlog-plan-read.ts +19 -6
  113. package/scripts/backlog/backlog-pool.ts +50 -12
  114. package/scripts/backlog/backlog-rank.ts +60 -13
  115. package/scripts/backlog/backlog-stalled-detect.ts +2 -1
  116. package/scripts/backlog/backlog-waves.ts +17 -2
  117. package/scripts/backlog/backlogrun-launch.ts +7 -4
  118. package/scripts/cost-runtime/context-cut-payback.ts +27 -25
  119. package/scripts/cost-runtime/cost-cli.ts +37 -16
  120. package/scripts/cost-runtime/cost-pricing.ts +9 -0
  121. package/scripts/cost-runtime/cost-verdict.ts +4 -1
  122. package/scripts/delegation/delegation-policy.ts +2 -2
  123. package/scripts/delegation/duplicate-read-guard.ts +1 -0
  124. package/scripts/delegation/investigation-guard.ts +14 -2
  125. package/scripts/delegation/investigation-reads.ts +45 -23
  126. package/scripts/dependabot/dependabot-cooldown.ts +3 -2
  127. package/scripts/discovery/repo-party.ts +80 -20
  128. package/scripts/discovery/session-owner-pin.ts +51 -0
  129. package/scripts/document/capped-print.ts +1 -1
  130. package/scripts/document/command-reference-line-budget.ts +42 -0
  131. package/scripts/document/document-byte-budget.ts +17 -7
  132. package/scripts/document/document-checks.ts +20 -0
  133. package/scripts/document/document-ratchet-check.ts +101 -0
  134. package/scripts/document/document-section.ts +1 -0
  135. package/scripts/document/entry-read-budget.ts +7 -3
  136. package/scripts/document/issue-citation-budget.ts +94 -0
  137. package/scripts/epic/epic-cli-argv.ts +2 -2
  138. package/scripts/epic/epic-fetch.ts +4 -2
  139. package/scripts/epic/epic-graph.ts +7 -2
  140. package/scripts/epic/epic-issue.ts +3 -1
  141. package/scripts/epic/epic-rank.ts +5 -0
  142. package/scripts/exports/unused-members-check.ts +62 -0
  143. package/scripts/exports/unused-members-cli.ts +6 -51
  144. package/scripts/followup/followup-ci-path.ts +67 -0
  145. package/scripts/followup/followup-coderabbit-retrigger.ts +261 -0
  146. package/scripts/followup/followup-coderabbit-wait.ts +13 -10
  147. package/scripts/followup/followup-failed-tests.ts +160 -0
  148. package/scripts/followup/followup-job-needs.ts +100 -0
  149. package/scripts/followup/followup-job-rerun.ts +303 -0
  150. package/scripts/followup/followup-main-move.ts +113 -0
  151. package/scripts/followup/git-followup-finish.ts +43 -11
  152. package/scripts/followup/git-followup-pending.ts +3 -3
  153. package/scripts/followup/git-followup-stages.ts +41 -11
  154. package/scripts/followup/git-pr-followup-checks.ts +55 -16
  155. package/scripts/followup/git-pr-followup-wrapup.ts +24 -5
  156. package/scripts/followup/git-pr-followup.ts +62 -27
  157. package/scripts/fresh-machine/fresh-machine-script.ts +5 -9
  158. package/scripts/fresh-machine/specs/kit-test-backlogrun-python.json +2 -2
  159. package/scripts/fresh-machine/specs/kit-test-backlogrun.json +2 -2
  160. package/scripts/gate/busy-average.ts +34 -2
  161. package/scripts/gate/check-related-pinned.ts +43 -0
  162. package/scripts/gate/check-related-reuse.ts +64 -0
  163. package/scripts/gate/check-related-section.ts +57 -0
  164. package/scripts/gate/check-related-unplanned.ts +34 -0
  165. package/scripts/gate/check-related.ts +265 -0
  166. package/scripts/gate/command-memory.ts +1 -1
  167. package/scripts/gate/core-admission.ts +24 -6
  168. package/scripts/gate/core-budget-timing.ts +20 -6
  169. package/scripts/gate/core-budget.ts +40 -11
  170. package/scripts/gate/core-wait-record.ts +3 -2
  171. package/scripts/gate/core-wait.ts +25 -2
  172. package/scripts/gate/core-weights.ts +15 -7
  173. package/scripts/gate/gate-labels.ts +46 -0
  174. package/scripts/gate/gate-ledger.ts +14 -6
  175. package/scripts/gate/gate-plan.ts +103 -58
  176. package/scripts/gate/gate-report.ts +9 -7
  177. package/scripts/gate/gate-run-steps.ts +26 -3
  178. package/scripts/gate/gate-skip.ts +45 -6
  179. package/scripts/gate/gate-static-group.ts +60 -0
  180. package/scripts/gate/gate-steps.ts +2 -1
  181. package/scripts/gate/gate-tree.ts +4 -2
  182. package/scripts/gate/hook-gate-reuse.ts +19 -2
  183. package/scripts/gate/metrics-totals.ts +59 -0
  184. package/scripts/gate/scoped-green.ts +68 -15
  185. package/scripts/gate/since-green.ts +14 -6
  186. package/scripts/gate/structural-checks.ts +96 -0
  187. package/scripts/gate/verification-gate.ts +51 -16
  188. package/scripts/gate/verification-inputs.ts +21 -6
  189. package/scripts/gate/verification-tail.ts +52 -0
  190. package/scripts/gh/gh-author-association.ts +23 -2
  191. package/scripts/gh/git-ai-review-scan.ts +1 -1
  192. package/scripts/gh/git-gh-api-path.ts +12 -3
  193. package/scripts/gh/git-gh-comments-unreadable.ts +36 -0
  194. package/scripts/gh/git-gh-exec.ts +32 -2
  195. package/scripts/gh/git-gh-issue-read.ts +4 -2
  196. package/scripts/gh/git-gh-issue-rest.ts +1 -0
  197. package/scripts/gh/git-gh-issue-write.ts +8 -2
  198. package/scripts/gh/git-gh-issue.ts +12 -5
  199. package/scripts/gh/git-gh-pr-auto-merge.ts +13 -6
  200. package/scripts/gh/git-gh-pr-graphql-state.ts +56 -0
  201. package/scripts/gh/git-gh-pr-read.ts +74 -13
  202. package/scripts/gh/git-gh-pr-rest.ts +3 -1
  203. package/scripts/gh/git-gh-pr-snapshot.ts +22 -7
  204. package/scripts/gh/git-gh-pr-too-large.ts +20 -0
  205. package/scripts/gh/git-gh-pr.ts +21 -7
  206. package/scripts/gh/git-gh-retry.ts +141 -0
  207. package/scripts/gh/git-pr-ai-review.ts +15 -6
  208. package/scripts/gh/git-pr-checks-eval.ts +3 -0
  209. package/scripts/gh/git-pr-checks.ts +5 -5
  210. package/scripts/git/base-tree.ts +30 -0
  211. package/scripts/git/change-base.ts +4 -10
  212. package/scripts/git/changed-paths-sync.ts +63 -0
  213. package/scripts/git/changed-paths.ts +16 -1
  214. package/scripts/git/git-common-directory.ts +11 -1
  215. package/scripts/git/git-diff-reads.ts +66 -20
  216. package/scripts/git/git-error.ts +9 -2
  217. package/scripts/git/git-schemas.ts +13 -0
  218. package/scripts/git/git-worktree.ts +13 -0
  219. package/scripts/git/gone-branch.ts +4 -1
  220. package/scripts/git/main-merge-budget-conflict.ts +89 -0
  221. package/scripts/git/main-merge-guard.ts +55 -18
  222. package/scripts/git/main-merge-regenerate.ts +59 -25
  223. package/scripts/git/main-merge.ts +53 -5
  224. package/scripts/git/no-base-checkout.ts +127 -0
  225. package/scripts/git/stash/git-stash.ts +11 -2
  226. package/scripts/git/stash/stash-push-cli.ts +10 -0
  227. package/scripts/hooks/batch-guard.ts +40 -21
  228. package/scripts/hooks/edited-cspell.ts +37 -11
  229. package/scripts/hooks/format-edited-file.ts +22 -2
  230. package/scripts/hooks/lane-plan-guard.ts +50 -0
  231. package/scripts/hooks/pre-commit-lint-switch.ts +9 -0
  232. package/scripts/hooks/pre-commit-lint.ts +14 -1
  233. package/scripts/hooks/pre-push-related-switch.ts +10 -0
  234. package/scripts/hooks/pre-push-unit.ts +76 -10
  235. package/scripts/hooks/pretool-guard.ts +2 -0
  236. package/scripts/hooks/reserved-run.ts +14 -1
  237. package/scripts/hooks/run-hook.sh +23 -8
  238. package/scripts/hooks/step-zero-notice.ts +6 -1
  239. package/scripts/hooks/stop-actions.ts +3 -15
  240. package/scripts/hooks/stop-guard.ts +7 -6
  241. package/scripts/init/distributed-paths.ts +1 -0
  242. package/scripts/init/hook-command-rewrite.ts +5 -1
  243. package/scripts/init/hook-launch.ts +4 -2
  244. package/scripts/issue/aggregation-split.ts +52 -0
  245. package/scripts/issue/defect-origin-line.ts +19 -1
  246. package/scripts/issue/defect-rate-cli.ts +5 -102
  247. package/scripts/issue/defect-report.ts +4 -4
  248. package/scripts/issue/effect-audit-cli.ts +178 -0
  249. package/scripts/issue/effect-audit.ts +185 -0
  250. package/scripts/issue/expected-effect-lint.ts +64 -9
  251. package/scripts/issue/git-next-issues.ts +5 -0
  252. package/scripts/issue/issue-body-or-comment.ts +38 -4
  253. package/scripts/issue/issue-cite-cli.ts +1 -3
  254. package/scripts/issue/issue-classification.ts +1 -0
  255. package/scripts/issue/issue-closing-pr.ts +8 -1
  256. package/scripts/issue/issue-evidence-exit.ts +4 -2
  257. package/scripts/issue/issue-file-cap.ts +58 -0
  258. package/scripts/issue/issue-file-cli.ts +111 -38
  259. package/scripts/issue/issue-file-deferral.ts +52 -0
  260. package/scripts/issue/issue-file-fold.ts +29 -10
  261. package/scripts/issue/issue-file-interrupt.ts +85 -0
  262. package/scripts/issue/issue-file-lane-hint.ts +30 -0
  263. package/scripts/issue/issue-file.ts +43 -6
  264. package/scripts/issue/issue-labels.ts +19 -2
  265. package/scripts/issue/issue-lint-cli.ts +27 -2
  266. package/scripts/issue/issue-measured-cli.ts +13 -35
  267. package/scripts/issue/issue-measured-close.ts +58 -0
  268. package/scripts/issue/issue-not-before-label.ts +2 -2
  269. package/scripts/issue/issue-not-before.ts +4 -1
  270. package/scripts/issue/issue-priority-cli.ts +60 -0
  271. package/scripts/issue/issue-priority-raise.ts +55 -0
  272. package/scripts/issue/issue-priority.ts +174 -43
  273. package/scripts/issue/issue-rank.ts +21 -4
  274. package/scripts/issue/issue-read-cli.ts +32 -6
  275. package/scripts/issue/issue-read.ts +37 -12
  276. package/scripts/issue/issue-sample-gate.ts +95 -74
  277. package/scripts/issue/issue-sample-prime.ts +127 -0
  278. package/scripts/issue/issue-sample-required.ts +57 -0
  279. package/scripts/issue/issue-sample-source.ts +12 -11
  280. package/scripts/issue/issue-search.ts +124 -0
  281. package/scripts/issue/issue-state.ts +13 -1
  282. package/scripts/issue/issue-template-section.ts +43 -0
  283. package/scripts/issue/issue-watch-diff.ts +31 -1
  284. package/scripts/issue/issue-watch-hook.ts +11 -2
  285. package/scripts/issue/issue-watch.ts +55 -12
  286. package/scripts/issue/markdown-section.ts +1 -0
  287. package/scripts/issue/measure-declaration.ts +121 -0
  288. package/scripts/issue/measure-rerun-cli.ts +7 -70
  289. package/scripts/issue/plan-consumers-section.ts +22 -1
  290. package/scripts/issue/reproduction-measure.ts +3 -1
  291. package/scripts/issue/size-estimate.ts +90 -0
  292. package/scripts/issue/trusted-measure.ts +84 -0
  293. package/scripts/josh/command-usage.ts +3 -2
  294. package/scripts/josh/durable-state-migrate.ts +105 -0
  295. package/scripts/josh/durable-state.ts +112 -0
  296. package/scripts/josh/josh-aliases.ts +95 -0
  297. package/scripts/josh/josh-command-map.ts +1 -82
  298. package/scripts/josh/josh-commands-agent-hooks.ts +6 -6
  299. package/scripts/josh/josh-commands-ai.ts +5 -5
  300. package/scripts/josh/josh-commands-development.ts +59 -58
  301. package/scripts/josh/josh-commands-issue-write.ts +23 -4
  302. package/scripts/josh/josh-commands-issue.ts +32 -0
  303. package/scripts/josh/josh-commands-lane.ts +87 -4
  304. package/scripts/josh/josh-commands-lint.ts +16 -3
  305. package/scripts/josh/josh-commands-maintenance.ts +15 -0
  306. package/scripts/josh/josh-commands-review.ts +41 -6
  307. package/scripts/josh/josh-commands-ship.ts +56 -8
  308. package/scripts/josh/josh-commands-test-check.ts +80 -0
  309. package/scripts/josh/josh-commands-workflow.ts +1 -1
  310. package/scripts/josh/josh-environment-file.ts +43 -3
  311. package/scripts/josh/josh-in-process.ts +2 -2
  312. package/scripts/josh/josh-logic.ts +5 -3
  313. package/scripts/josh/josh-run.ts +19 -1
  314. package/scripts/josh/run-record-path.ts +15 -0
  315. package/scripts/josh/stamp-file.ts +11 -2
  316. package/scripts/lane/lane-adopt-cli.ts +98 -0
  317. package/scripts/lane/lane-adopt.ts +208 -0
  318. package/scripts/lane/lane-await.ts +5 -8
  319. package/scripts/lane/lane-baseline.ts +123 -0
  320. package/scripts/lane/lane-breakdown-cli.ts +64 -0
  321. package/scripts/lane/lane-breakdown-implement.ts +170 -0
  322. package/scripts/lane/lane-breakdown-laps.ts +107 -0
  323. package/scripts/lane/lane-breakdown-pinned.ts +76 -0
  324. package/scripts/lane/lane-breakdown-text.ts +145 -0
  325. package/scripts/lane/lane-breakdown.ts +239 -0
  326. package/scripts/lane/lane-check-stats.ts +29 -8
  327. package/scripts/lane/lane-child-invocation.ts +9 -2
  328. package/scripts/lane/lane-child-mark-keys.ts +12 -0
  329. package/scripts/lane/lane-child-marker.ts +20 -1
  330. package/scripts/lane/lane-ci-path-stats.ts +73 -0
  331. package/scripts/lane/lane-claim-stats.ts +84 -0
  332. package/scripts/lane/lane-close.ts +8 -3
  333. package/scripts/lane/lane-dispatch-log.ts +3 -3
  334. package/scripts/lane/lane-dispatch.ts +2 -2
  335. package/scripts/lane/lane-gap-stats.ts +7 -6
  336. package/scripts/lane/lane-guard-policy.ts +7 -1
  337. package/scripts/lane/lane-implement-stats.ts +207 -0
  338. package/scripts/lane/lane-implement-subagents.ts +90 -0
  339. package/scripts/lane/lane-investigation-switch.ts +16 -0
  340. package/scripts/lane/lane-ledger-kind.ts +31 -0
  341. package/scripts/lane/lane-ledger-schema-ship.ts +49 -0
  342. package/scripts/lane/lane-ledger-schema.ts +119 -36
  343. package/scripts/lane/lane-ledger-write.ts +257 -0
  344. package/scripts/lane/lane-ledger.ts +31 -177
  345. package/scripts/lane/lane-load.ts +1 -1
  346. package/scripts/lane/lane-measure-cli.ts +176 -59
  347. package/scripts/lane/lane-net-read.ts +44 -0
  348. package/scripts/lane/lane-net-time.ts +212 -0
  349. package/scripts/lane/lane-open.ts +16 -7
  350. package/scripts/lane/lane-output.ts +2 -4
  351. package/scripts/lane/lane-overrun-prompt.ts +147 -0
  352. package/scripts/lane/lane-overrun.ts +274 -0
  353. package/scripts/lane/lane-paths.ts +24 -1
  354. package/scripts/lane/lane-pause-cli.ts +4 -1
  355. package/scripts/lane/lane-paused-spans.ts +97 -0
  356. package/scripts/lane/lane-plan-check.ts +207 -0
  357. package/scripts/lane/lane-plan-cli.ts +41 -0
  358. package/scripts/lane/lane-plan.ts +144 -0
  359. package/scripts/lane/lane-registry.ts +14 -1
  360. package/scripts/lane/lane-relaunch.ts +1 -1
  361. package/scripts/lane/lane-round-one-stats.ts +51 -0
  362. package/scripts/lane/lane-sampler.ts +23 -4
  363. package/scripts/lane/lane-session-action.ts +93 -18
  364. package/scripts/lane/lane-session-broker.ts +49 -21
  365. package/scripts/lane/lane-session-reread-main.ts +14 -0
  366. package/scripts/lane/lane-session-reread.ts +51 -0
  367. package/scripts/lane/lane-ship-lap-stats.ts +74 -0
  368. package/scripts/lane/lane-sleep.ts +58 -0
  369. package/scripts/lane/lane-spent.ts +1 -1
  370. package/scripts/lane/lane-split-stats.ts +28 -0
  371. package/scripts/lane/lane-stage-stats.ts +13 -1
  372. package/scripts/lane/lane-state.ts +41 -9
  373. package/scripts/lane/lane-stats-tables.ts +58 -0
  374. package/scripts/lane/lane-stats.ts +21 -5
  375. package/scripts/lane/lane-stop-stats.ts +51 -19
  376. package/scripts/lane/lane-tail-stats.ts +32 -0
  377. package/scripts/lane/lane-transcript-calls.ts +67 -10
  378. package/scripts/lane/lane-transcript-stats.ts +44 -12
  379. package/scripts/lane/lane-value-cell.ts +72 -0
  380. package/scripts/lane/lane-value.ts +118 -0
  381. package/scripts/lane/lane-withdraw-closed.ts +124 -0
  382. package/scripts/lane/lane-withdraw.ts +108 -31
  383. package/scripts/lane/lane-yield.ts +85 -0
  384. package/scripts/lane/openai-lane-ship.ts +12 -11
  385. package/scripts/lane/openai-lane-supervisor-decision.ts +6 -8
  386. package/scripts/lane/openai-lane-supervisor-owner.ts +5 -8
  387. package/scripts/lane/openai-lane-supervisor.ts +5 -4
  388. package/scripts/lib/poll.ts +38 -9
  389. package/scripts/lib/settled-together.ts +10 -0
  390. package/scripts/lib/shell-quote.ts +21 -0
  391. package/scripts/lib/token-shape.ts +111 -0
  392. package/scripts/lint/eslint-daemon-sources.ts +79 -0
  393. package/scripts/lint/eslint-daemon.ts +45 -6
  394. package/scripts/lint/eslint-warm-cli.ts +7 -0
  395. package/scripts/lint/eslint-warm.ts +66 -0
  396. package/scripts/lint/import-graph.ts +141 -11
  397. package/scripts/lint/lint-gate-scope.ts +2 -2
  398. package/scripts/lint/lint-parallel.ts +54 -6
  399. package/scripts/lint/lint-related.ts +154 -33
  400. package/scripts/lint/rename-cli.ts +179 -0
  401. package/scripts/lint/rename-identifier.ts +192 -0
  402. package/scripts/lint/type-only-imports.ts +58 -0
  403. package/scripts/notify/telegram-notify.ts +12 -3
  404. package/scripts/observations/observation-record.ts +42 -16
  405. package/scripts/observations/observations-flush.ts +32 -9
  406. package/scripts/overrides/overrides-check.ts +9 -1
  407. package/scripts/release/release-approval-prune.ts +7 -1
  408. package/scripts/repo/required-checks-logic.ts +4 -1
  409. package/scripts/repo/ruleset-check.ts +4 -3
  410. package/scripts/report/markdown-shape.ts +28 -0
  411. package/scripts/report/report-format-reference.ts +15 -1
  412. package/scripts/report/report-labels.ts +12 -1
  413. package/scripts/report/report-lint-child-summary.ts +94 -0
  414. package/scripts/report/report-lint-cli.ts +26 -7
  415. package/scripts/report/report-lint.ts +2 -20
  416. package/scripts/review/prose-stale-cli.ts +88 -0
  417. package/scripts/review/prose-stale-scan.ts +152 -0
  418. package/scripts/review/review-attest.ts +73 -23
  419. package/scripts/review/review-brief-cli.ts +68 -19
  420. package/scripts/review/review-brief-paths.ts +22 -0
  421. package/scripts/review/review-brief.ts +14 -7
  422. package/scripts/review/review-comment-carry.ts +47 -0
  423. package/scripts/review/review-comment-round.ts +85 -22
  424. package/scripts/review/review-finding-ledger.ts +109 -7
  425. package/scripts/review/review-finding-text.ts +43 -0
  426. package/scripts/review/review-interaction.ts +11 -0
  427. package/scripts/review/review-lane-handover.ts +68 -0
  428. package/scripts/review/review-lint-cli.ts +57 -0
  429. package/scripts/review/review-lint-findings.ts +92 -0
  430. package/scripts/review/review-lint-sections.ts +80 -0
  431. package/scripts/review/review-lint.ts +221 -0
  432. package/scripts/review/review-prior-findings.ts +102 -0
  433. package/scripts/review/review-readers-scan.ts +4 -2
  434. package/scripts/review/review-record-cli.ts +177 -54
  435. package/scripts/review/review-record-code-round.ts +55 -0
  436. package/scripts/review/review-record-comment.ts +60 -0
  437. package/scripts/review/review-record-interaction.ts +35 -0
  438. package/scripts/review/review-record-pinned.ts +108 -0
  439. package/scripts/review/review-record.ts +25 -1
  440. package/scripts/review/review-reviewed-tree.ts +307 -0
  441. package/scripts/review/review-round-one-closure.ts +62 -0
  442. package/scripts/review/review-round-reuse.ts +106 -0
  443. package/scripts/review/review-round2-cli.ts +91 -29
  444. package/scripts/review/review-round2-skip-comment.ts +55 -0
  445. package/scripts/review/review-round2.ts +24 -8
  446. package/scripts/review/review-stamps.ts +7 -3
  447. package/scripts/review/review-stop-log.ts +20 -6
  448. package/scripts/review/review-stops-cli.ts +2 -1
  449. package/scripts/review/review-submit-cli.ts +101 -0
  450. package/scripts/rules/agent-model.ts +1 -1
  451. package/scripts/rules/bash-triggers.ts +3 -3
  452. package/scripts/rules/concise-reply.ts +88 -0
  453. package/scripts/rules/credential-body.ts +77 -0
  454. package/scripts/rules/decision-oracle.ts +1 -1
  455. package/scripts/rules/delivered-rules.ts +36 -17
  456. package/scripts/rules/destructive-command.ts +3 -11
  457. package/scripts/rules/direct-issue-comment.ts +34 -12
  458. package/scripts/rules/direct-issue-read.ts +191 -0
  459. package/scripts/rules/direct-pr-create.ts +4 -24
  460. package/scripts/rules/early-heartbeat.ts +2 -0
  461. package/scripts/rules/edit-tool.ts +27 -0
  462. package/scripts/rules/file-edit-rows.ts +17 -0
  463. package/scripts/rules/file-rewrite.ts +146 -0
  464. package/scripts/rules/firing-point.ts +3 -2
  465. package/scripts/rules/gh-api.ts +128 -7
  466. package/scripts/rules/gh-repo-selector.ts +84 -0
  467. package/scripts/rules/git-force.ts +2 -2
  468. package/scripts/rules/guard-remedy.ts +14 -5
  469. package/scripts/rules/implementation-cut.ts +61 -28
  470. package/scripts/rules/investigator-foreground.ts +231 -0
  471. package/scripts/rules/issue-citation.ts +15 -60
  472. package/scripts/rules/issue-comments.ts +9 -4
  473. package/scripts/rules/josh-git-bare.ts +1 -1
  474. package/scripts/rules/lane-background.ts +41 -13
  475. package/scripts/rules/lane-direct-tool.ts +107 -9
  476. package/scripts/rules/lane-interactive-ask.ts +4 -1
  477. package/scripts/rules/lane-park.ts +4 -2
  478. package/scripts/rules/lane-spilled-read.ts +90 -0
  479. package/scripts/rules/lane-split-park.ts +1 -1
  480. package/scripts/rules/lane-switch-main.ts +4 -4
  481. package/scripts/rules/last-prompt.ts +20 -47
  482. package/scripts/rules/oracle-consulted.ts +1 -1
  483. package/scripts/rules/permission-guards.ts +5 -1
  484. package/scripts/rules/piped-verification-shapes.ts +110 -0
  485. package/scripts/rules/piped-verification.ts +67 -17
  486. package/scripts/rules/poll-loop.ts +72 -9
  487. package/scripts/rules/pr-merge.ts +5 -5
  488. package/scripts/rules/pre-gate-cut.ts +3 -3
  489. package/scripts/rules/protected-files.ts +88 -24
  490. package/scripts/rules/reply-language.ts +3 -17
  491. package/scripts/rules/reply-prose.ts +34 -0
  492. package/scripts/rules/repo-admin.ts +132 -0
  493. package/scripts/rules/reviewer-foreground.ts +88 -0
  494. package/scripts/rules/round-one-check-related.ts +120 -0
  495. package/scripts/rules/rule-body-guard.ts +5 -15
  496. package/scripts/rules/rule-value-cache.ts +53 -5
  497. package/scripts/rules/rule-value-candidates.ts +84 -0
  498. package/scripts/rules/rule-value-cli.ts +59 -11
  499. package/scripts/rules/rule-value.ts +17 -4
  500. package/scripts/rules/run-tail-rule.ts +1 -1
  501. package/scripts/rules/sed-in-place.ts +196 -0
  502. package/scripts/rules/shell-segments.ts +10 -2
  503. package/scripts/rules/stop-rule-rows.ts +1 -13
  504. package/scripts/rules/stop-rules.ts +33 -58
  505. package/scripts/rules/test-declared-commit.ts +1 -1
  506. package/scripts/rules/third-party-write.ts +110 -23
  507. package/scripts/rules/timed-rerun.ts +1 -1
  508. package/scripts/rules/turn-filings.ts +90 -0
  509. package/scripts/rules/worktree-guard.ts +22 -7
  510. package/scripts/run/board/run-board-ending-reason.ts +6 -2
  511. package/scripts/run/board/run-board-fit.ts +24 -1
  512. package/scripts/run/board/run-board-found.ts +134 -0
  513. package/scripts/run/board/run-board-header.ts +8 -0
  514. package/scripts/run/board/run-board-labels.ts +11 -1
  515. package/scripts/run/board/run-board-lane-time.ts +1 -0
  516. package/scripts/run/board/run-board-link.ts +15 -2
  517. package/scripts/run/board/run-board-notes.ts +7 -1
  518. package/scripts/run/board/run-board-operation.ts +4 -2
  519. package/scripts/run/board/run-board-phase.ts +2 -5
  520. package/scripts/run/board/run-board-plan.ts +1 -1
  521. package/scripts/run/board/run-board-read.ts +46 -1
  522. package/scripts/run/board/run-board-reason.ts +20 -8
  523. package/scripts/run/board/run-board-render-checks.ts +3 -2
  524. package/scripts/run/board/run-board-render-drawn.ts +11 -0
  525. package/scripts/run/board/run-board-render-found.ts +157 -0
  526. package/scripts/run/board/run-board-render-lead.ts +9 -0
  527. package/scripts/run/board/run-board-render-legend.ts +19 -0
  528. package/scripts/run/board/run-board-render-tail.ts +1 -1
  529. package/scripts/run/board/run-board-render.ts +82 -18
  530. package/scripts/run/board/run-board-spin.ts +1 -3
  531. package/scripts/run/board/run-board-status.ts +2 -0
  532. package/scripts/run/board/run-board-tick.ts +39 -10
  533. package/scripts/run/carry/run-carry-ended.ts +3 -2
  534. package/scripts/run/carry/run-carry.ts +3 -2
  535. package/scripts/run/cut/run-cut-cli.ts +33 -133
  536. package/scripts/run/cut/run-cut-digest.ts +152 -0
  537. package/scripts/run/cut/run-cut-handoff.ts +52 -8
  538. package/scripts/run/cut/run-cut-report.ts +24 -3
  539. package/scripts/run/cut/run-cut-resume.ts +129 -0
  540. package/scripts/run/cut/run-cut-review.ts +105 -0
  541. package/scripts/run/cut/run-cut.ts +18 -7
  542. package/scripts/run/detached-launch.ts +1 -1
  543. package/scripts/run/entry/run-entry-cli.ts +88 -19
  544. package/scripts/run/entry/run-entry-spill.ts +83 -0
  545. package/scripts/run/entry/run-entry-stop.ts +5 -1
  546. package/scripts/run/entry/run-entry-trust.ts +91 -0
  547. package/scripts/run/event/run-event-baseline.ts +56 -0
  548. package/scripts/run/event/run-event-filed.ts +9 -3
  549. package/scripts/run/event/run-event-overrun.ts +197 -0
  550. package/scripts/run/event/run-event-render.ts +4 -0
  551. package/scripts/run/event/run-event-stream.ts +25 -3
  552. package/scripts/run/hold/run-stop-notify.ts +3 -8
  553. package/scripts/run/merge/run-merge-cap.ts +57 -0
  554. package/scripts/run/merge/run-merge-cli.ts +66 -23
  555. package/scripts/run/merge/run-merge-outcome.ts +2 -0
  556. package/scripts/run/merge/run-merge-ship.ts +13 -3
  557. package/scripts/run/merge/run-merge-signals.ts +40 -23
  558. package/scripts/run/merge/run-merge-steps.ts +56 -36
  559. package/scripts/run/merge/run-merge-usage-limit.ts +53 -0
  560. package/scripts/run/merge/run-merge-withdrawn.ts +53 -0
  561. package/scripts/run/merge/run-merge.ts +41 -14
  562. package/scripts/run/review/run-review-cli.ts +306 -20
  563. package/scripts/run/review/run-review-early-push.ts +121 -0
  564. package/scripts/run/review/run-review-join-read.ts +94 -0
  565. package/scripts/run/review/run-review-pinned-accepted.ts +126 -0
  566. package/scripts/run/review/run-review-pinned-join.ts +216 -0
  567. package/scripts/run/review/run-review-pinned-steps.ts +383 -0
  568. package/scripts/run/review/run-review-pinned-tree.ts +37 -0
  569. package/scripts/run/review/run-review-pinned.ts +53 -0
  570. package/scripts/run/review/run-review-steps.ts +70 -34
  571. package/scripts/run/review/run-review.ts +26 -6
  572. package/scripts/run/run-parent-cut-hook.ts +3 -4
  573. package/scripts/run/run-prep.ts +1 -0
  574. package/scripts/run/run-stage-read.ts +2 -6
  575. package/scripts/run/run-step-cli.ts +17 -5
  576. package/scripts/run/run-step-lane-plan.ts +27 -0
  577. package/scripts/run/run-step-section.ts +26 -7
  578. package/scripts/run/run-step.ts +5 -2
  579. package/scripts/run/ship/run-ship-args.ts +19 -0
  580. package/scripts/run/ship/run-ship-brokered-review.ts +106 -0
  581. package/scripts/run/ship/run-ship-cli.ts +131 -39
  582. package/scripts/run/ship/run-ship-conflict-probe.ts +59 -0
  583. package/scripts/run/ship/run-ship-detach.ts +10 -4
  584. package/scripts/run/ship/run-ship-handover.ts +106 -0
  585. package/scripts/run/ship/run-ship-infra-retry.ts +16 -1
  586. package/scripts/run/ship/run-ship-lap.ts +63 -0
  587. package/scripts/run/ship/run-ship-next.ts +27 -26
  588. package/scripts/run/ship/run-ship-overlap.ts +8 -3
  589. package/scripts/run/ship/run-ship-place.ts +9 -2
  590. package/scripts/run/ship/run-ship-planned.ts +92 -0
  591. package/scripts/run/ship/run-ship-pre-detach-pinned.ts +197 -0
  592. package/scripts/run/ship/run-ship-pre-detach-timed.ts +7 -8
  593. package/scripts/run/ship/run-ship-pre-detach.ts +77 -23
  594. package/scripts/run/ship/run-ship-preflight.ts +16 -4
  595. package/scripts/run/ship/run-ship-probe.ts +23 -9
  596. package/scripts/run/ship/run-ship-relaunch-cap.ts +43 -7
  597. package/scripts/run/ship/run-ship-relaunch.ts +51 -0
  598. package/scripts/run/ship/run-ship-return.ts +103 -29
  599. package/scripts/run/ship/run-ship-review-reason.ts +24 -0
  600. package/scripts/run/ship/run-ship-review-steps.ts +230 -59
  601. package/scripts/run/ship/run-ship-review.ts +171 -51
  602. package/scripts/run/ship/run-ship-reviewer.ts +138 -42
  603. package/scripts/run/ship/run-ship-scoped.ts +39 -10
  604. package/scripts/run/ship/run-ship-stage.ts +49 -13
  605. package/scripts/run/ship/run-ship-steps.ts +24 -4
  606. package/scripts/run/ship/run-ship-stop-cause.ts +43 -2
  607. package/scripts/run/ship/run-ship-stop-context.ts +50 -13
  608. package/scripts/run/ship/run-ship-sync.ts +171 -30
  609. package/scripts/run/ship/run-ship-synced-scope.ts +178 -0
  610. package/scripts/run/ship/run-ship-wait-cli.ts +145 -0
  611. package/scripts/run/ship/run-ship-waiter.ts +114 -0
  612. package/scripts/run/ship/run-ship.ts +16 -2
  613. package/scripts/run/wake/run-wake-caffeinate.ts +48 -0
  614. package/scripts/run/wake/run-wake-cli.ts +6 -113
  615. package/scripts/run/wake/run-wake-code.ts +53 -11
  616. package/scripts/run/wake/run-wake-driver.ts +5 -3
  617. package/scripts/run/wake/run-wake-finish.ts +137 -0
  618. package/scripts/run/wake/run-wake-loop.ts +5 -3
  619. package/scripts/run/wake/run-wake-ports.ts +11 -3
  620. package/scripts/run/wake/run-wake-session.ts +2 -0
  621. package/scripts/run/wake/run-wake.ts +3 -2
  622. package/scripts/safe-chain/ci-installer-pin.ts +49 -8
  623. package/scripts/safe-chain/project-config.ts +3 -2
  624. package/scripts/security/secretlint-scan.ts +42 -9
  625. package/scripts/security/security-audit-provision-main.ts +9 -1
  626. package/scripts/security/security-audit-provision.ts +1 -1
  627. package/scripts/security/security-audit.ts +21 -1
  628. package/scripts/security/sonar-file.ts +10 -5
  629. package/scripts/split/split-assess.ts +12 -3
  630. package/scripts/split/split-early-notice.ts +116 -0
  631. package/scripts/split/split-measure.ts +20 -2
  632. package/scripts/split/split-resolution.ts +107 -0
  633. package/scripts/test/direct-importers.ts +185 -0
  634. package/scripts/test/pure-files-entries.ts +83 -0
  635. package/scripts/test/related-heavy-tests.ts +81 -0
  636. package/scripts/test/test-no-base.ts +88 -0
  637. package/scripts/test/test-pinned-cache-logic.ts +363 -0
  638. package/scripts/test/test-pinned-cache.ts +337 -0
  639. package/scripts/test/test-pinned-emit.ts +49 -0
  640. package/scripts/test/test-pinned-functions.ts +116 -0
  641. package/scripts/test/test-pinned-ledger.ts +80 -0
  642. package/scripts/test/test-pinned-logic.ts +208 -20
  643. package/scripts/test/test-pinned-main.ts +84 -18
  644. package/scripts/test/test-pinned-pool.ts +73 -0
  645. package/scripts/test/test-pinned-probe.ts +254 -0
  646. package/scripts/test/test-pinned-prune-logic.ts +118 -0
  647. package/scripts/test/test-pinned-reach.ts +194 -0
  648. package/scripts/test/test-pinned-record.ts +196 -0
  649. package/scripts/test/test-pinned-rewire.ts +148 -0
  650. package/scripts/test/test-pinned-spawn.ts +81 -0
  651. package/scripts/test/test-pinned-stage.ts +70 -0
  652. package/scripts/test/test-pinned.ts +258 -47
  653. package/scripts/test/test-reach-cli.ts +61 -0
  654. package/scripts/test/test-read-map.ts +35 -11
  655. package/scripts/test/test-read-recording.ts +17 -5
  656. package/scripts/test/test-read-trace.ts +26 -8
  657. package/scripts/test/test-red-logic.ts +46 -7
  658. package/scripts/test/test-red.ts +34 -14
  659. package/scripts/test/test-related-claim.ts +37 -0
  660. package/scripts/test/test-related-main.ts +4 -1
  661. package/scripts/test/test-related-moved.ts +91 -0
  662. package/scripts/test/test-related-record.ts +43 -23
  663. package/scripts/test/test-related-scope.ts +99 -34
  664. package/scripts/test/test-related-synced.ts +135 -0
  665. package/scripts/test/test-related-touched.ts +84 -0
  666. package/scripts/test/test-related.ts +167 -83
  667. package/scripts/test/test-unit-guard.ts +28 -5
  668. package/scripts/test/unit-durations.ts +41 -0
  669. package/scripts/test/unit-worker-share.ts +5 -4
  670. package/scripts/test/vitest-cache-directory.ts +19 -0
  671. package/scripts/test/vitest-cli-excludes.ts +14 -0
  672. package/scripts/test/vitest-failure-summary.ts +111 -0
  673. package/scripts/test/whole-suite-files.ts +12 -1
  674. package/scripts/time-runtime/time-batch-guard.ts +42 -4
  675. package/scripts/time-runtime/time-bundle-call.ts +1 -1
  676. package/scripts/time-runtime/time-bundles.ts +36 -5
  677. package/scripts/time-runtime/time-markers.ts +2 -2
  678. package/scripts/time-runtime/time-search-call.ts +38 -0
  679. package/scripts/time-runtime/time-shell.ts +1 -1
  680. package/scripts/time-runtime/time-transcript-line.ts +17 -5
  681. package/scripts/version/development-engines-verdict.ts +124 -0
  682. package/scripts/version/latest-corepack.ts +2 -0
  683. package/templates/gitignore +2 -0
  684. package/templates/workflows/ci.yml +41 -0
  685. package/dist/hooks/chunk-AZX4FGQ3.js +0 -207
  686. package/dist/hooks/chunk-PT5R6UJD.js +0 -7131
  687. package/dist/hooks/chunk-TUIFS5E7.js +0 -72
  688. package/dist/hooks/chunk-YCDOIR3I.js +0 -3456
  689. package/scripts/cost-runtime/context-cut-threshold.ts +0 -11
  690. package/scripts/rules/filing-cap.ts +0 -139
@@ -1,8 +1,9 @@
1
1
  import { ports } from '#ports'
2
- import { core_budget } from '#scripts/gate/core-budget'
2
+ import { core_weights } from '#scripts/gate/core-weights'
3
3
  import { gate_plan } from '#scripts/gate/gate-plan'
4
4
  import { GATE_COMMAND, type CommandEntry } from './josh-command-types'
5
5
  import { AGENT_HOOK_COMMANDS } from './josh-commands-agent-hooks'
6
+ import { TEST_CHECK_COMMANDS } from './josh-commands-test-check'
6
7
 
7
8
  const NARROWED = { arguments: 'scripts/thing.ts', note: 'narrow by the given files instead' }
8
9
  // The unseeded ports are read from `ports/index.js`, their one definition (#818).
@@ -11,7 +12,6 @@ const UNSEEDED: Readonly<Record<string, string | undefined>> = {}
11
12
  const FILE_ARGUMENTS = '[files...]'
12
13
  const REQUIRED_FILE_ARGUMENTS = '<files...>'
13
14
  const FILTER_ARGUMENTS = '[filters...]'
14
- const MATCH_ARGUMENTS = '[--match]'
15
15
  const PATH_ARGUMENTS = '<path...>'
16
16
 
17
17
  /* eslint-disable @typescript-eslint/naming-convention */
@@ -29,7 +29,11 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
29
29
  script: 'scripts/gate/verification-gate.ts',
30
30
  description: 'Run lint, type check, spell check and unit tests concurrently',
31
31
  category: 'Development',
32
- reference: ['[--verbose|--force|--no-unit]', 'developer', ['files', 'processes']],
32
+ reference: [
33
+ '[--verbose|--force|--no-unit|--static-group=<group>]',
34
+ 'developer',
35
+ ['files', 'processes'],
36
+ ],
33
37
  usage: {
34
38
  examples: [
35
39
  { arguments: '' },
@@ -44,8 +48,8 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
44
48
  description: 'Check code with prettier and eslint (skips a tool a basic project lacks)',
45
49
  category: 'Development',
46
50
  reference: ['[--changed]', 'developer', ['processes']],
47
- core_weight: core_budget.CORE_WEIGHTS.lint,
48
- memory_mb: core_budget.MEMORY_MB.lint,
51
+ core_weight: core_weights.CORE_WEIGHTS.lint,
52
+ memory_mb: core_weights.MEMORY_MB.lint,
49
53
  usage: {
50
54
  examples: [
51
55
  { arguments: '' },
@@ -55,11 +59,12 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
55
59
  },
56
60
  'lint:related': {
57
61
  script: 'scripts/lint/lint-related.ts',
58
- description: 'Check only the changed files with prettier and eslint (whole tree on fallback)',
62
+ description:
63
+ 'Check only the changed files with prettier and eslint, and in kit the source guard tests (whole tree on fallback)',
59
64
  category: 'Development',
60
65
  reference: [FILE_ARGUMENTS, 'developer', ['processes']],
61
- core_weight: core_budget.CORE_WEIGHTS.lint,
62
- memory_mb: core_budget.MEMORY_MB.lint,
66
+ core_weight: core_weights.CORE_WEIGHTS.lint,
67
+ memory_mb: core_weights.MEMORY_MB.lint,
63
68
  usage: { examples: [{ arguments: '' }, NARROWED] },
64
69
  },
65
70
  lines: {
@@ -67,8 +72,8 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
67
72
  description: "Print a file's code lines against the max-lines limit and the headroom left",
68
73
  category: 'Development',
69
74
  reference: [REQUIRED_FILE_ARGUMENTS, 'developer', ['none']],
70
- core_weight: core_budget.CORE_WEIGHTS.eslint_scan,
71
- memory_mb: core_budget.MEMORY_MB.eslint_scan,
75
+ core_weight: core_weights.CORE_WEIGHTS.eslint_scan,
76
+ memory_mb: core_weights.MEMORY_MB.eslint_scan,
72
77
  usage: {
73
78
  examples: [{ arguments: 'scripts/hooks/format-edited-file.ts scripts/josh/josh-logic.ts' }],
74
79
  },
@@ -79,12 +84,12 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
79
84
  'Print repository-wide quality totals and durations, and fail when a total grew past the merge-base or a duration past its baseline',
80
85
  category: 'Development',
81
86
  reference: [
82
- '[--no-startup | --totals-only | --accept --reason "<why>"]',
87
+ '[--no-startup | --totals-only [--rerecord] | --accept --reason "<why>"]',
83
88
  'developer',
84
89
  ['files'],
85
90
  ],
86
- core_weight: core_budget.CORE_WEIGHTS.eslint_scan,
87
- memory_mb: core_budget.MEMORY_MB.eslint_scan,
91
+ core_weight: core_weights.CORE_WEIGHTS.eslint_scan,
92
+ memory_mb: core_weights.MEMORY_MB.metrics,
88
93
  is_kit_only: true,
89
94
  usage: {
90
95
  examples: [
@@ -99,8 +104,8 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
99
104
  'List refactoring candidates in the changed scope by category and answer clear/candidates',
100
105
  category: 'Development',
101
106
  reference: ['', 'automation', ['processes']],
102
- core_weight: core_budget.CORE_WEIGHTS.eslint_scan,
103
- memory_mb: core_budget.MEMORY_MB.eslint_scan,
107
+ core_weight: core_weights.CORE_WEIGHTS.eslint_scan,
108
+ memory_mb: core_weights.MEMORY_MB.eslint_scan,
104
109
  usage: { examples: [{ arguments: '' }] },
105
110
  },
106
111
  bytes: {
@@ -121,10 +126,11 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
121
126
  description:
122
127
  "Print each delivered rule's unaided compliance — runs reached, kept rate, refusals",
123
128
  category: 'AI tools',
124
- reference: ['[--refresh]', 'developer', ['files']],
129
+ reference: ['[--fresh | --refresh]', 'developer', ['files']],
125
130
  usage: {
126
131
  examples: [
127
- { arguments: '' },
132
+ { arguments: '', note: 'a reading cached under 15 minutes ago, else measure' },
133
+ { arguments: '--fresh', note: 'measure now, whatever the cache holds' },
128
134
  {
129
135
  arguments: '--refresh',
130
136
  note: 'write the reading to the loop-head cache instead of stdout',
@@ -147,16 +153,46 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
147
153
  reference: ['', 'developer', ['files', 'processes']],
148
154
  usage: { examples: [{ arguments: '' }] },
149
155
  },
156
+ rename: {
157
+ script: 'scripts/lint/rename-cli.ts',
158
+ description:
159
+ 'Rename an identifier, and the import specifier it moved with, across files through the TypeScript parse tree',
160
+ category: 'Development',
161
+ reference: [
162
+ '<old-identifier> <new-identifier> [--import <old-specifier> <new-specifier>] <file...>',
163
+ 'automation',
164
+ ['files', 'processes'],
165
+ ],
166
+ usage: {
167
+ examples: [
168
+ { arguments: 'old_name new_name scripts/a.ts scripts/b.ts' },
169
+ {
170
+ arguments:
171
+ "lane_ledger lane_ledger_write --import '#scripts/lane/lane-ledger' '#scripts/lane/lane-ledger-write' scripts/gate/core-wait-record.ts",
172
+ note: 'the identifier and its module together',
173
+ },
174
+ ],
175
+ },
176
+ },
150
177
  ...AGENT_HOOK_COMMANDS,
151
178
  'cspell:dot': {
152
179
  script: 'scripts/lint/cspell-cached.ts',
153
180
  description: 'Run spell check including dotfiles',
154
181
  category: 'Development',
155
182
  reference: ['', 'developer', ['processes']],
156
- core_weight: core_budget.CORE_WEIGHTS.spell_check,
157
- memory_mb: core_budget.MEMORY_MB.spell_check,
183
+ core_weight: core_weights.CORE_WEIGHTS.spell_check,
184
+ memory_mb: core_weights.MEMORY_MB.spell_check,
158
185
  usage: { examples: [{ arguments: '', note: 'includes dotfiles' }] },
159
186
  },
187
+ 'check:related': {
188
+ script: 'scripts/gate/check-related.ts',
189
+ description: 'Run related lint, unit, type and dotfile spelling checks in parallel',
190
+ category: 'Development',
191
+ reference: ['', 'developer', ['processes']],
192
+ usage: {
193
+ examples: [{ arguments: '' }, { arguments: '--full', note: 'whole outputs' }],
194
+ },
195
+ },
160
196
  behavior: {
161
197
  script: 'scripts/behavior/behavior-cli.ts',
162
198
  description:
@@ -187,51 +223,16 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
187
223
  description: 'Run only the unit tests related to the changed files (full suite on fallback)',
188
224
  category: 'Development',
189
225
  reference: [FILE_ARGUMENTS, 'developer', ['processes']],
190
- ...gate_plan.DIRECT_UNIT_CLAIM,
191
226
  usage: {
192
227
  examples: [
193
228
  { arguments: '' },
194
229
  NARROWED,
230
+ { arguments: '--touched', note: "only the diff's tests and its modules' same-named ones" },
195
231
  { arguments: '--silent', note: 'flags are forwarded to vitest' },
196
232
  ],
197
233
  },
198
234
  },
199
- 'test:declared': {
200
- script: 'scripts/test/test-declared.ts',
201
- description:
202
- 'Report whether the working-tree change needs a test (required/exempt/satisfied); --match checks Step 0 declarations on stdin',
203
- category: 'Development',
204
- reference: [MATCH_ARGUMENTS, 'developer', ['processes']],
205
- usage: {
206
- examples: [
207
- { arguments: '' },
208
- { arguments: '--match', note: 'check Step 0 declarations on stdin' },
209
- { arguments: '--help', note: 'print usage, including the --match stdin form' },
210
- ],
211
- },
212
- },
213
- 'test:red': {
214
- script: 'scripts/test/test-red-main.ts',
215
- description:
216
- 'Run the changed unit tests against the pre-fix tree (merge-base worktree) and report red/green/no-test/test-only',
217
- category: 'Development',
218
- reference: ['', 'developer', ['git', 'processes']],
219
- usage: { examples: [{ arguments: '', note: 'red, green, no-test or test-only' }] },
220
- },
221
- 'test:pinned': {
222
- script: 'scripts/test/test-pinned-main.ts',
223
- description:
224
- 'Revert each changed non-test hunk in a HEAD worktree, run its related tests, and list the hunks no test went red on',
225
- category: 'Development',
226
- reference: ['[--max <n>]', 'developer', ['git', 'processes']],
227
- ...gate_plan.DIRECT_UNIT_CLAIM,
228
- usage: {
229
- examples: [
230
- { arguments: '', note: 'unpinned / unchecked <file>:<line> lines' },
231
- { arguments: '--max 5', note: 'check at most 5 hunks; the rest print as unchecked' },
232
- ],
233
- },
234
- },
235
+ ...TEST_CHECK_COMMANDS,
235
236
  disposition: {
236
237
  script: 'scripts/review/disposition-cli.ts',
237
238
  description:
@@ -267,8 +268,8 @@ const DEV_COMMANDS: Record<string, CommandEntry> = {
267
268
  description: 'Type-check with tsc (skips a basic project with no TypeScript to check)',
268
269
  category: 'Development',
269
270
  reference: ['[arguments...]', 'developer', ['processes']],
270
- core_weight: core_budget.CORE_WEIGHTS.type_check,
271
- memory_mb: core_budget.MEMORY_MB.type_check,
271
+ core_weight: core_weights.CORE_WEIGHTS.type_check,
272
+ memory_mb: core_weights.MEMORY_MB.type_check,
272
273
  usage: { examples: [{ arguments: '' }] },
273
274
  },
274
275
  port: {
@@ -107,13 +107,17 @@ const ISSUE_WRITE_COMMANDS: Record<string, CommandEntry> = {
107
107
  category: 'AI tools',
108
108
  // Releasing the hold runs `run:hold`, which reaches the stop confirmation.
109
109
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
110
- reference: [EVIDENCE_REFERENCE, 'automation', ['network', 'files']],
110
+ reference: [`${EVIDENCE_REFERENCE} [--unmet]`, 'automation', ['network', 'files']],
111
111
  usage: {
112
112
  examples: [
113
113
  {
114
114
  arguments: '4452 --evidence-file .josh/tmp/measured.md',
115
115
  note: 'comment, label, close, release — in that order',
116
116
  },
117
+ {
118
+ arguments: '4452 --unmet --evidence-file .josh/tmp/measured.md',
119
+ note: 'the measurement fell short of the expected effect: measured:unmet as well',
120
+ },
117
121
  ],
118
122
  flags: [
119
123
  {
@@ -121,16 +125,21 @@ const ISSUE_WRITE_COMMANDS: Record<string, CommandEntry> = {
121
125
  description:
122
126
  'the result comment: per acceptance criterion, the measurement and the run it came from. An empty file is refused before anything is written.',
123
127
  },
128
+ {
129
+ names: ['--unmet'],
130
+ description:
131
+ 'the measurement fell short of the expected effect it checked; adds the measured:unmet label `josh effect:audit` reads',
132
+ },
124
133
  ],
125
134
  },
126
135
  },
127
136
  'issue:file': {
128
137
  script: 'scripts/issue/issue-file-cli.ts',
129
138
  description:
130
- 'File an Issue with every filing step: lint, Origin, fold, WIP cap, duplicate scout, labels, then epic:bundle',
139
+ 'File an Issue with every filing step: filing cap, fold, local checks (lint, Origin, auto-ok label), start condition and WIP cap, then the duplicate scout once none refuses, labels, then epic:bundle',
131
140
  category: 'AI tools',
132
141
  reference: [
133
- '<title> --body-file <path> [--route <route>] [--label <name>] [--repo <owner/repo>] [--distinct <N,…>] [--over-cap] [--no-auto-ok] [--release]',
142
+ '<title> --body-file <path> [--route <route>] [--label <name>] [--repo <owner/repo>] [--distinct <N,…>] [--found-during <N>] [--over-cap] [--no-auto-ok] [--release] [--blocks-finder]',
134
143
  'automation',
135
144
  ['network'],
136
145
  ],
@@ -159,9 +168,14 @@ const ISSUE_WRITE_COMMANDS: Record<string, CommandEntry> = {
159
168
  names: ['--distinct <N,…>'],
160
169
  description: 'duplicate candidates you read and judged distinct.',
161
170
  },
171
+ {
172
+ names: ['--found-during <N>'],
173
+ description:
174
+ 'the Issue whose work the filing came from, when it is not the lane or branch Issue. The filing cap counts per origin (step 2); step 7 never holds it as a candidate here. #N gets a deferral comment.',
175
+ },
162
176
  {
163
177
  names: ['--over-cap'],
164
- description: 'the run is blocked by this filing; the cap lets it through.',
178
+ description: 'the run is blocked by this filing; the WIP cap lets it through.',
165
179
  },
166
180
  {
167
181
  names: ['--no-auto-ok'],
@@ -172,6 +186,11 @@ const ISSUE_WRITE_COMMANDS: Record<string, CommandEntry> = {
172
186
  description:
173
187
  "a consumer can use the change only once it is published. The filed issue becomes a blocker of the target's release issue (step 10).",
174
188
  },
189
+ {
190
+ names: ['--blocks-finder'],
191
+ description:
192
+ 'with `--route interrupt`, the finder cannot go on until this issue is done. The finder is recorded as blocked by the filed issue (step 9); under an epic, `epic --reconcile <E>` after `epic --add` declares it.',
193
+ },
175
194
  ],
176
195
  },
177
196
  },
@@ -29,6 +29,13 @@ const ISSUE_COMMANDS: Record<string, CommandEntry> = {
29
29
  reference: ['<issue>', 'automation', ['network']],
30
30
  usage: { examples: [{ arguments: '3773' }] },
31
31
  },
32
+ 'issue:priority': {
33
+ script: 'scripts/issue/issue-priority-cli.ts',
34
+ description: 'Apply priority:high to an issue whose body reached the high floor after filing',
35
+ category: 'AI tools',
36
+ reference: ['<issue>', 'automation', ['network']],
37
+ usage: { examples: [{ arguments: '4960' }] },
38
+ },
32
39
  'issue:read': {
33
40
  script: 'scripts/issue/issue-read-main.ts',
34
41
  description: "Print each issue's title, body and every comment on it, in one call",
@@ -97,6 +104,31 @@ const ISSUE_COMMANDS: Record<string, CommandEntry> = {
97
104
  reference: ['', 'automation', ['network']],
98
105
  usage: { examples: [{ arguments: '', note: 'every issue labelled bug, open or closed' }] },
99
106
  },
107
+ 'effect:audit': {
108
+ script: 'scripts/issue/effect-audit-cli.ts',
109
+ description:
110
+ 'List closed run-time-shortening issues with their expected effect, follow-up measurement and result',
111
+ category: 'AI tools',
112
+ reference: ['[--days <N>] [--draft <issue>]', 'automation', ['network', 'files']],
113
+ usage: {
114
+ examples: [
115
+ { arguments: '', note: 'issues closed in the last 30 days, one line each' },
116
+ { arguments: '--days 7', note: 'a shorter window' },
117
+ {
118
+ arguments: '--draft 4896',
119
+ note: 'write the retirement candidate of a shortfall and print its issue:file line',
120
+ },
121
+ ],
122
+ flags: [
123
+ { names: ['--days <N>'], description: 'the window, in days back from now (default 30)' },
124
+ {
125
+ names: ['--draft <issue>'],
126
+ description:
127
+ 'an issue whose measurement carries measured:unmet: write its retirement-candidate body to a temporary file',
128
+ },
129
+ ],
130
+ },
131
+ },
100
132
  'issue:fold': {
101
133
  script: 'scripts/issue/issue-fold-main.ts',
102
134
  description:
@@ -16,6 +16,7 @@ const LANE_SCRIPT = 'scripts/lane/lane-cli.ts'
16
16
  // has to read `.env` to see them — without this the two are documented and unreachable.
17
17
  const LANE_ARGUMENTS = { script: LANE_SCRIPT, tsx_arguments: OPTIONAL_ENV_FILE_FLAGS } as const
18
18
  const ISSUE_WITH_OPTIONS = '<issue> [options]'
19
+ const ISSUE_OR_ALL = '<issue> | --all'
19
20
  const MEASURE_ARGUMENTS = {
20
21
  script: 'scripts/lane/lane-measure-cli.ts',
21
22
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
@@ -25,7 +26,7 @@ const PAUSE_ARGUMENTS = {
25
26
  script: 'scripts/lane/lane-pause-cli.ts',
26
27
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
27
28
  category: 'AI tools',
28
- reference: ['<issue> | --all', 'developer', ['processes']],
29
+ reference: [ISSUE_OR_ALL, 'developer', ['processes']],
29
30
  } satisfies Partial<CommandEntry>
30
31
 
31
32
  /* eslint-disable @typescript-eslint/naming-convention */
@@ -101,12 +102,12 @@ const LANE_COMMANDS: Record<string, CommandEntry> = {
101
102
  {
102
103
  names: ['JOSH_{SCHEDULER,WORKER,REVIEWER}_EFFORT'],
103
104
  description:
104
- 'role effort overrides for either provider; defaults are `medium`, `medium`, and `high`.',
105
+ 'role effort overrides for either provider; defaults are `medium`, `medium`, and `medium`.',
105
106
  },
106
107
  {
107
108
  names: ['JOSH_REVIEWER_VERIFICATION_{MODEL,EFFORT}'],
108
109
  description:
109
- 'review round 2 and later (the verification pass); Anthropic defaults are `claude-sonnet-5-5` / `high`, falling back to `JOSH_REVIEWER_*`.',
110
+ 'review round 2 and later (the verification pass); defaults are `claude-sonnet-5-5` / `high` on Anthropic and `high` on OpenAI, falling back to `JOSH_REVIEWER_*`.',
110
111
  },
111
112
  ],
112
113
  },
@@ -168,6 +169,18 @@ const LANE_COMMANDS: Record<string, CommandEntry> = {
168
169
  examples: [{ arguments: '3769 --reason "folded into a broader issue"' }],
169
170
  },
170
171
  },
172
+ // `.env` is read for the Telegram settings the yield's hold release reaches (`run-hold-cli.ts`).
173
+ 'lane:plan': {
174
+ script: 'scripts/lane/lane-plan-cli.ts',
175
+ tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
176
+ description:
177
+ 'Record the files a lane child plans to edit, and give the lane back when a running lane that planned earlier declares or plans one of them — naming the file and that issue',
178
+ category: 'AI tools',
179
+ reference: ['<issue> <path>... [--probe]', 'automation', ['files', 'network']],
180
+ usage: {
181
+ examples: [{ arguments: '4864 scripts/lane/lane-plan.ts scripts/backlog/backlog-next.ts' }],
182
+ },
183
+ },
171
184
  // `.env` is read for `JOSH_LANE_ROOT`, as every lane command reads it, so `--all` finds the lanes.
172
185
  'lane:pause': {
173
186
  ...PAUSE_ARGUMENTS,
@@ -182,6 +195,21 @@ const LANE_COMMANDS: Record<string, CommandEntry> = {
182
195
  default_script_arguments: ['resume'],
183
196
  usage: { examples: LANE_SIGNAL_EXAMPLES },
184
197
  },
198
+ // `.env` is read for `JOSH_LANE_ROOT`, as every lane command reads it, so `--all` finds the lanes.
199
+ 'lane:adopt': {
200
+ script: 'scripts/lane/lane-adopt-cli.ts',
201
+ tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
202
+ description:
203
+ 'Give an open lane that lost its state record a record again, read from its process, work tree, unpushed commits, pull request and issue — its work untouched',
204
+ category: 'AI tools',
205
+ reference: [ISSUE_OR_ALL, 'developer', ['files', 'git', 'processes', 'network']],
206
+ usage: {
207
+ examples: [
208
+ { arguments: '4744' },
209
+ { arguments: '--all', note: 'every open lane with no record' },
210
+ ],
211
+ },
212
+ },
185
213
  // A live run's lane limit: `.env` is read so the bare form reports the
186
214
  // `JOSH_LANE_LIMIT` a person set there when no override stands.
187
215
  'lane:limit': {
@@ -213,7 +241,7 @@ const LANE_COMMANDS: Record<string, CommandEntry> = {
213
241
  'lane:stats': {
214
242
  ...MEASURE_ARGUMENTS,
215
243
  description:
216
- 'Print one table row of lane throughput, gate duration and machine load over a period, the per-stage durations of a lane under it, the wait after each ship stop reason under those, and the duration and reuse count of each gate check last',
244
+ "Print one table row of lane throughput, gate duration and machine load over a period, the per-stage durations of a lane under it, the wait after each ship stop reason under those, the duration and reuse count of each gate check, and each check's core claim against the cores it used",
217
245
  category: 'AI tools',
218
246
  reference: ['--period <days> [--limit <lane-limit>]', 'maintainer', ['none']],
219
247
  default_script_arguments: ['stats'],
@@ -221,6 +249,61 @@ const LANE_COMMANDS: Record<string, CommandEntry> = {
221
249
  examples: [{ arguments: '--period 7', note: "a 7-day period's stage medians and maxima" }],
222
250
  },
223
251
  },
252
+ // One lane measurement as one number on the last line, for an Issue's measurement declaration
253
+ // (joshuafolkken/kit#4630).
254
+ 'lane:value': {
255
+ ...MEASURE_ARGUMENTS,
256
+ description:
257
+ 'Print one lane measurement since an instant as a single number: cell (a lane:stats table cell, --table --row --column), lint-unmoved (median s of a lint:related that found nothing moved), metrics-stops (pre-detach metrics stops per lane), lint-core-wait (lint:related core-budget wait, min per lane), edit (median s of one Edit)',
258
+ category: 'AI tools',
259
+ reference: ['<metric> --since <instant>', 'maintainer', ['none']],
260
+ default_script_arguments: ['value'],
261
+ usage: {
262
+ examples: [
263
+ {
264
+ arguments: 'edit --since 2026-10-23T03:29Z',
265
+ note: 'the median Edit time since an instant',
266
+ },
267
+ {
268
+ arguments:
269
+ 'cell --table "test:related scope" --row related --column "median (s)" --since 2026-10-23T03:29Z',
270
+ note: 'one lane:stats table cell since an instant',
271
+ },
272
+ ],
273
+ },
274
+ },
275
+ 'lane:net': {
276
+ ...MEASURE_ARGUMENTS,
277
+ description:
278
+ "Print a lane's net minutes: its issue's first dispatch to its merge, less the waits its parks, outages, usage-limit stops and yields stood and the host's sleeps",
279
+ category: 'AI tools',
280
+ reference: ['<issue>', 'maintainer', ['none']],
281
+ default_script_arguments: ['net'],
282
+ usage: {
283
+ examples: [
284
+ {
285
+ arguments: '4695',
286
+ note: 'the net minutes a causing-lane line declares',
287
+ },
288
+ ],
289
+ },
290
+ },
291
+ 'lane:breakdown': {
292
+ script: 'scripts/lane/lane-breakdown-cli.ts',
293
+ tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
294
+ description:
295
+ "Print a merged lane's net time by stage, longest first, the implementation split by its tool calls",
296
+ category: 'AI tools',
297
+ reference: ['<issue>', 'maintainer', ['none']],
298
+ usage: {
299
+ examples: [
300
+ {
301
+ arguments: '4970',
302
+ note: 'the breakdown the overrun investigation comments on the lane',
303
+ },
304
+ ],
305
+ },
306
+ },
224
307
  }
225
308
  /* eslint-enable @typescript-eslint/naming-convention */
226
309
 
@@ -15,10 +15,23 @@ const LINT_COMMANDS: Record<string, CommandEntry> = {
15
15
  },
16
16
  'report:lint': {
17
17
  script: 'scripts/report/report-lint-cli.ts',
18
- description: 'Check a two-layer work summary on stdin against its mechanical format rules',
18
+ description:
19
+ "Check a two-layer work summary, or with --child-summary a lane child's summary, on stdin against its mechanical format rules",
20
+ category: 'AI tools',
21
+ reference: ['[--child-summary] (reads stdin)', 'automation', ['none']],
22
+ usage: {
23
+ examples: [{ arguments: '< summary.md' }, { arguments: '--child-summary < summary.md' }],
24
+ },
25
+ },
26
+ 'review:lint': {
27
+ script: 'scripts/review/review-lint-cli.ts',
28
+ description:
29
+ "Check a review's markdown on stdin against the review rubric's output format, round 1 or with --round 2 the verification pass",
19
30
  category: 'AI tools',
20
- reference: ['(reads stdin)', 'automation', ['none']],
21
- usage: { examples: [{ arguments: '< summary.md' }] },
31
+ reference: ['[--round <1|2>] (reads stdin)', 'automation', ['none']],
32
+ usage: {
33
+ examples: [{ arguments: '< review.md' }, { arguments: '--round 2 < review.md' }],
34
+ },
22
35
  },
23
36
  'report:template': {
24
37
  script: 'scripts/report/report-template-cli.ts',
@@ -85,6 +85,21 @@ const MAINTENANCE_COMMANDS: Record<string, CommandEntry> = {
85
85
  examples: [{ arguments: '', note: 'verify when the lockfile or its policy moved' }],
86
86
  },
87
87
  },
88
+ 'command:derive': {
89
+ script: 'tools/document/command-derive.ts',
90
+ description:
91
+ 'Write every artifact the command map derives — usage spans, catalog, snapshot, docs/why.md counts — and print page bytes against their ceilings',
92
+ category: 'Maintenance',
93
+ reference: ['', 'maintainer', ['files']],
94
+ // Kit-only: the pages it writes are kit's own documentation, and the script lives under the
95
+ // undistributed `tools/`.
96
+ is_kit_only: true,
97
+ // The command-map snapshot runs through one single-file vitest run.
98
+ core_weight: 1,
99
+ usage: {
100
+ examples: [{ arguments: '', note: 'after adding, renaming or describing a command' }],
101
+ },
102
+ },
88
103
  'audit:provision': {
89
104
  script: 'scripts/security/security-audit-provision-main.ts',
90
105
  description: 'Install the pinned osv-scanner when the audit cannot find one (no-op if present)',
@@ -4,7 +4,7 @@ const LEVEL_ONLY = '--level-only'
4
4
  const CHECK = '--check'
5
5
  const MACHINE_READABLE = 'the verdict and the reason, machine-readable'
6
6
  const JSON_FLAG = '--json'
7
- const ROUND_1_CLOSED = '--round-1-closed'
7
+ const RECORD = '--record'
8
8
 
9
9
  // The review and delegation commands, split out of `josh-commands-ai.ts` when each command's usage
10
10
  // moved onto its entry (#4185). `AI_COMMANDS` spreads this in at the same place, so the map keeps its
@@ -67,22 +67,57 @@ const REVIEW_COMMANDS: Record<string, CommandEntry> = {
67
67
  ],
68
68
  },
69
69
  },
70
+ 'review:submit': {
71
+ script: 'scripts/review/review-submit-cli.ts',
72
+ description: "Write a ship reviewer's findings, read from stdin, where the ship reads them",
73
+ category: 'AI tools',
74
+ reference: ['[--interaction] < findings | [--interaction] --none', 'automation', ['files']],
75
+ usage: {
76
+ examples: [
77
+ { arguments: '< findings.txt', note: 'the /code-review slot' },
78
+ { arguments: '--interaction < findings.txt', note: 'the interaction review slot' },
79
+ { arguments: '--none', note: 'a review with no findings' },
80
+ ],
81
+ flags: [
82
+ {
83
+ names: ['--none'],
84
+ description: 'a review with no findings; empty stdin without it is refused.',
85
+ },
86
+ ],
87
+ },
88
+ },
89
+ // The self-check's "Prose matches the code" as a search: each word the diff removed that prose still names.
90
+ 'prose:stale': {
91
+ script: 'scripts/review/prose-stale-cli.ts',
92
+ description:
93
+ 'List each removed declared or exported name, josh command, UPPER_CASE constant or .md heading that docs, prompts or comments still name',
94
+ category: 'AI tools',
95
+ reference: ['', 'automation', ['none']],
96
+ usage: {
97
+ examples: [
98
+ {
99
+ arguments: '',
100
+ note: '→ `file:line kind word` per reference, or `ok` (exit 1 / 0; 2 on a failure)',
101
+ },
102
+ ],
103
+ },
104
+ },
70
105
  'review:round2': {
71
106
  script: 'scripts/review/review-round2-cli.ts',
72
107
  description: 'Say whether the second /code-review round is due, or may be skipped entirely',
73
108
  category: 'AI tools',
74
- reference: ['[--round-1-closed] [--json]', 'automation', ['none']],
109
+ reference: ['[--record <N>] [--json]', 'automation', ['network']],
75
110
  usage: {
76
111
  examples: [
77
- { arguments: '', note: '→ required' },
78
- { arguments: ROUND_1_CLOSED, note: '→ required | skip' },
112
+ { arguments: '', note: '→ required | skip, for the branch’s issue' },
113
+ { arguments: `${RECORD} 123`, note: '→ required | skip, a skip commented on that issue' },
79
114
  { arguments: JSON_FLAG, note: MACHINE_READABLE },
80
115
  ],
81
116
  flags: [
82
117
  {
83
- names: [ROUND_1_CLOSED],
118
+ names: [RECORD],
84
119
  description:
85
- 'the caller states every round-1 High/Medium finding closed and none was filed or deferred; its absence answers `required`.',
120
+ 'the issue whose ledger dispositions decide round 1’s closure — skip only when every High/Medium is `fixed` or `false-positive` — and where a skip is commented under `## Round 2 skipped`, once.',
86
121
  },
87
122
  { names: [JSON_FLAG], description: 'machine-readable verdict and reason.' },
88
123
  ],