@joshuafolkken/kit 1.1240.0 → 1.1373.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 (934) 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 +52 -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 +19 -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 +26 -16
  27. package/.claude/skills/workflow-commands/latest-gate.md +17 -28
  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/.vscode/tasks.json +14 -0
  42. package/CLAUDE.md +10 -61
  43. package/README.md +23 -66
  44. package/SECURITY.md +1 -1
  45. package/dist/CLAUDE.md +10 -61
  46. package/dist/commands/document-section-cli.js +43 -11
  47. package/dist/config-merge/index.js +11 -2
  48. package/dist/hooks/audit-provision.js +2 -2
  49. package/dist/hooks/batch-guard.js +7 -7
  50. package/dist/hooks/{chunk-KHGB5S3Y.js → chunk-7UBFU3CL.js} +18 -20
  51. package/dist/hooks/{chunk-ZQGD4GBY.js → chunk-7WKYHEGU.js} +8 -44
  52. package/dist/hooks/{chunk-4TZVB44A.js → chunk-AKGCP4LX.js} +285 -363
  53. package/dist/hooks/{chunk-QVSWU24O.js → chunk-BZMPVFDY.js} +7 -5
  54. package/dist/hooks/{chunk-5VNDSNG3.js → chunk-FZ6FUSBM.js} +1 -1
  55. package/dist/hooks/{chunk-GPTFMK5E.js → chunk-GG72ANKI.js} +1 -1
  56. package/dist/hooks/{chunk-XZYKEM6J.js → chunk-JCRDBQXB.js} +13 -11
  57. package/dist/hooks/{chunk-F3ELQ2AF.js → chunk-JGW24KKM.js} +4 -4
  58. package/dist/hooks/{chunk-ELCN5LCH.js → chunk-NEC4AT4Z.js} +34 -12
  59. package/dist/hooks/chunk-NZN2UFI6.js +2409 -0
  60. package/dist/hooks/{chunk-WK2XSHSI.js → chunk-SLSFIWTX.js} +550 -875
  61. package/dist/hooks/chunk-UTHMB4O2.js +1590 -0
  62. package/dist/hooks/{chunk-KRBERBBI.js → chunk-V4TKZHER.js} +4 -4
  63. package/dist/hooks/chunk-YLBBSSTF.js +3705 -0
  64. package/dist/hooks/chunk-Z5TMJIPW.js +45 -0
  65. package/dist/hooks/codex-hook-adapter.js +26 -21
  66. package/dist/hooks/duplicate-read-guard.js +8 -8
  67. package/dist/hooks/format-edited.js +4 -4
  68. package/dist/hooks/inputs.json +195 -181
  69. package/dist/hooks/investigation-guard.js +8 -8
  70. package/dist/hooks/pretool-guard.js +15 -15
  71. package/dist/hooks/session-lang.js +406 -8
  72. package/dist/hooks/stop-guard.js +122 -187
  73. package/dist/josh.js +282 -95
  74. package/dist/version/index.js +15 -13
  75. package/eslint/base.js +43 -5
  76. package/eslint/rules/english-only-prose.js +3 -3
  77. package/eslint/rules/import.js +12 -0
  78. package/eslint/rules/namespace-object-export.js +2 -2
  79. package/package.json +17 -11
  80. package/pnpm-workspace.yaml +2 -4
  81. package/prompts/coding-standards.md +14 -48
  82. package/prompts/collaboration-workflow/file-edits.md +1 -1
  83. package/prompts/collaboration-workflow/issue-citation.md +1 -1
  84. package/prompts/collaboration-workflow/issue-template.md +3 -10
  85. package/prompts/collaboration-workflow/operating-rules.md +7 -8
  86. package/prompts/collaboration-workflow/output-bounds.md +1 -1
  87. package/prompts/collaboration-workflow/overview.md +1 -1
  88. package/prompts/collaboration-workflow/plan-comment.md +2 -1
  89. package/prompts/collaboration-workflow/principles.md +21 -3
  90. package/prompts/collaboration-workflow/report-format.md +16 -29
  91. package/prompts/collaboration-workflow/residency.md +1 -1
  92. package/prompts/collaboration-workflow/rule-delivery.md +7 -95
  93. package/prompts/collaboration-workflow/shell-body.md +3 -23
  94. package/prompts/collaboration-workflow/turn-batching.md +4 -13
  95. package/prompts/collaboration-workflow/wip-cap.md +5 -11
  96. package/prompts/refactoring.md +1 -1
  97. package/prompts/review-rubric.md +3 -22
  98. package/prompts/review.md +15 -38
  99. package/prompts/testing-guide.md +2 -4
  100. package/scripts/adopt/adopt-logic.ts +5 -5
  101. package/scripts/adopt/adopt-toolkits.ts +4 -5
  102. package/scripts/adopt/adopt.ts +2 -3
  103. package/scripts/agent/agent-argv.ts +7 -7
  104. package/scripts/agent/agent-diagnostics.ts +2 -2
  105. package/scripts/agent/agent-exit-record.ts +1 -1
  106. package/scripts/agent/agent-headless.ts +1 -1
  107. package/scripts/agent/agent-launch-environment.ts +6 -1
  108. package/scripts/agent/agent-role-profile.ts +49 -22
  109. package/scripts/agent/agent-session-role.ts +32 -0
  110. package/scripts/agent/api-outage.ts +1 -1
  111. package/scripts/agent/claude-agent-argv.ts +4 -4
  112. package/scripts/agent/claude-result-event.ts +4 -4
  113. package/scripts/agent/codex-hooks.ts +2 -2
  114. package/scripts/agent/interactive-ask.ts +3 -6
  115. package/scripts/auto-ok/auto-ok-cli.ts +46 -60
  116. package/scripts/backlog/backlog-arrival-added.ts +34 -0
  117. package/scripts/backlog/backlog-arrival.ts +54 -17
  118. package/scripts/backlog/backlog-budget-cli.ts +34 -6
  119. package/scripts/backlog/backlog-budget.ts +17 -24
  120. package/scripts/backlog/backlog-defect-priority.ts +1 -1
  121. package/scripts/backlog/backlog-drive-args.ts +5 -4
  122. package/scripts/backlog/backlog-drive-cli.ts +14 -10
  123. package/scripts/backlog/backlog-drive-epic.ts +85 -0
  124. package/scripts/backlog/backlog-drive-launch.ts +1 -1
  125. package/scripts/backlog/backlog-drive-named-offer.ts +60 -9
  126. package/scripts/backlog/backlog-drive-named.ts +39 -9
  127. package/scripts/backlog/backlog-drive-offer-argv.ts +1 -1
  128. package/scripts/backlog/backlog-drive-restore.ts +1 -1
  129. package/scripts/backlog/backlog-drive-retrospective.ts +2 -2
  130. package/scripts/backlog/backlog-drive.ts +43 -28
  131. package/scripts/backlog/backlog-idle.ts +88 -0
  132. package/scripts/backlog/backlog-named.ts +11 -15
  133. package/scripts/backlog/backlog-next.ts +26 -30
  134. package/scripts/backlog/backlog-offer-cli.ts +28 -23
  135. package/scripts/backlog/backlog-offer.ts +7 -7
  136. package/scripts/backlog/backlog-overlap.ts +178 -0
  137. package/scripts/backlog/backlog-plan-cli.ts +14 -90
  138. package/scripts/backlog/backlog-plan-read.ts +111 -0
  139. package/scripts/backlog/backlog-plan.ts +11 -10
  140. package/scripts/backlog/backlog-pool.ts +13 -14
  141. package/scripts/backlog/backlog-rank.ts +11 -11
  142. package/scripts/backlog/backlog-ready.ts +15 -10
  143. package/scripts/backlog/backlog-scope.ts +14 -15
  144. package/scripts/backlog/backlog-stalled-cli.ts +2 -2
  145. package/scripts/backlog/backlog-stalled-detect.ts +4 -4
  146. package/scripts/backlog/backlog-stalled.ts +5 -6
  147. package/scripts/backlog/backlog-waves.ts +4 -4
  148. package/scripts/backlog/backlogrun-args.ts +74 -0
  149. package/scripts/backlog/backlogrun-cli.ts +113 -0
  150. package/scripts/backlog/backlogrun-launch.ts +178 -0
  151. package/scripts/behavior/behavior-assertion.ts +6 -8
  152. package/scripts/behavior/behavior-cli.ts +1 -1
  153. package/scripts/behavior/behavior-rules.ts +3 -3
  154. package/scripts/build/build-claude-md.ts +4 -4
  155. package/scripts/build/build-codex-hooks.ts +2 -2
  156. package/scripts/build/build-commands.ts +1 -1
  157. package/scripts/build/build-hooks.ts +5 -5
  158. package/scripts/build/build.ts +1 -1
  159. package/scripts/build/hook-bundle-stamp.ts +109 -7
  160. package/scripts/build/local-bin.ts +2 -2
  161. package/scripts/cases/cases-cli.ts +1 -1
  162. package/scripts/cases/cases-logic.ts +2 -2
  163. package/scripts/ci/composite-actions.ts +1 -2
  164. package/scripts/ci/pr-classification.ts +2 -2
  165. package/scripts/claude/workflow-destination.ts +1 -1
  166. package/scripts/clone/clone-aggregate.ts +1 -1
  167. package/scripts/clone/clone-fingerprint.ts +1 -1
  168. package/scripts/clone/clone-scan-cli.ts +1 -1
  169. package/scripts/clone/clone-scan.ts +1 -1
  170. package/scripts/config-merge/index.ts +1 -1
  171. package/scripts/config-merge/json-format.ts +1 -3
  172. package/scripts/config-merge/patch-json-array.ts +90 -0
  173. package/scripts/config-merge/patch-json-key.ts +6 -3
  174. package/scripts/config-merge/patch-json-list.ts +1 -1
  175. package/scripts/cost-runtime/codex-usage.ts +1 -1
  176. package/scripts/cost-runtime/context-cut-payback.ts +4 -5
  177. package/scripts/cost-runtime/context-cut-threshold.ts +4 -6
  178. package/scripts/cost-runtime/cost-attribute.ts +3 -3
  179. package/scripts/cost-runtime/cost-blocks.ts +3 -4
  180. package/scripts/cost-runtime/cost-cli.ts +14 -11
  181. package/scripts/cost-runtime/cost-corpus.ts +11 -11
  182. package/scripts/cost-runtime/cost-pricing.ts +4 -4
  183. package/scripts/cost-runtime/cost-tokens.ts +1 -2
  184. package/scripts/cost-runtime/cost-transcript.ts +29 -29
  185. package/scripts/cost-runtime/cost-usage.ts +6 -7
  186. package/scripts/cost-runtime/cost-verdict.ts +10 -11
  187. package/scripts/cost-runtime/own-session.ts +1 -1
  188. package/scripts/cost-runtime/transcript-cwd.ts +2 -2
  189. package/scripts/delegation/delegation-cli.ts +4 -4
  190. package/scripts/delegation/delegation-policy.ts +13 -15
  191. package/scripts/delegation/duplicate-read-guard.ts +9 -10
  192. package/scripts/delegation/fanout-cli.ts +1 -1
  193. package/scripts/delegation/fanout.ts +1 -1
  194. package/scripts/delegation/investigation-guard.ts +18 -22
  195. package/scripts/delegation/investigation-reads.ts +48 -238
  196. package/scripts/discovery/repo-discovery.ts +1 -1
  197. package/scripts/discovery/repo-map-logic.ts +1 -2
  198. package/scripts/discovery/repo-origin.ts +3 -3
  199. package/scripts/discovery/repo-party-cli.ts +2 -2
  200. package/scripts/discovery/repo-party.ts +2 -2
  201. package/scripts/doctor/doctor-consumer.ts +1 -1
  202. package/scripts/doctor/doctor-io.ts +6 -7
  203. package/scripts/doctor/doctor-logic.ts +1 -1
  204. package/scripts/doctor/doctor-ports.ts +1 -1
  205. package/scripts/doctor/doctor.ts +8 -9
  206. package/scripts/document/backlogrun-parent-read-set.ts +5 -6
  207. package/scripts/document/bash-output-cap.ts +5 -7
  208. package/scripts/document/capped-print-part.ts +1 -1
  209. package/scripts/document/capped-print.ts +1 -1
  210. package/scripts/document/document-byte-budget.ts +33 -64
  211. package/scripts/document/document-byte-check.ts +4 -4
  212. package/scripts/document/document-reachability.ts +7 -8
  213. package/scripts/document/document-read-cli.ts +2 -2
  214. package/scripts/document/document-scan.ts +30 -5
  215. package/scripts/document/document-section-cli.ts +6 -8
  216. package/scripts/document/document-section.ts +8 -12
  217. package/scripts/document/edit-files-cli.ts +3 -4
  218. package/scripts/document/entry-read-budget.ts +8 -70
  219. package/scripts/document/entry-read-set.ts +51 -34
  220. package/scripts/document/lane-child-read-set.ts +9 -9
  221. package/scripts/document/read-files-cli.ts +1 -2
  222. package/scripts/document/read-set-cli.ts +16 -19
  223. package/scripts/document/read-set-cost.ts +4 -4
  224. package/scripts/document/read-set-point-of-use.ts +28 -38
  225. package/scripts/document/read-set-pricing.ts +1 -1
  226. package/scripts/document/read-set-trim.ts +3 -3
  227. package/scripts/document/resident-budget.ts +8 -10
  228. package/scripts/epic/epic-add-body.ts +15 -18
  229. package/scripts/epic/epic-add-plan.ts +26 -28
  230. package/scripts/epic/epic-add.ts +32 -25
  231. package/scripts/epic/epic-audit-checks.ts +27 -37
  232. package/scripts/epic/epic-audit-cli.ts +21 -22
  233. package/scripts/epic/epic-audit-orphans.ts +16 -17
  234. package/scripts/epic/epic-audit-rationale.ts +10 -15
  235. package/scripts/epic/epic-audit-report.ts +2 -5
  236. package/scripts/epic/epic-audit.ts +18 -14
  237. package/scripts/epic/epic-body.ts +10 -10
  238. package/scripts/epic/epic-bundle-cli.ts +36 -34
  239. package/scripts/epic/epic-bundle-evidence.ts +5 -5
  240. package/scripts/epic/epic-bundle-gaps.ts +6 -9
  241. package/scripts/epic/epic-bundle-poll.ts +1 -1
  242. package/scripts/epic/epic-bundle-referenced.ts +11 -14
  243. package/scripts/epic/epic-bundle.ts +19 -20
  244. package/scripts/epic/epic-busy.ts +44 -21
  245. package/scripts/epic/epic-candidate-confirm.ts +15 -18
  246. package/scripts/epic/epic-chains.ts +18 -23
  247. package/scripts/epic/epic-classify.ts +11 -12
  248. package/scripts/epic/epic-cli-argv.ts +5 -6
  249. package/scripts/epic/epic-cli-remove.ts +9 -4
  250. package/scripts/epic/epic-cli.ts +38 -26
  251. package/scripts/epic/epic-close-comment.ts +14 -15
  252. package/scripts/epic/epic-close.ts +25 -29
  253. package/scripts/epic/epic-cross-repo.ts +18 -21
  254. package/scripts/epic/epic-decision.ts +14 -18
  255. package/scripts/epic/epic-fetch.ts +25 -31
  256. package/scripts/epic/epic-graph.ts +15 -17
  257. package/scripts/epic/epic-index.ts +14 -16
  258. package/scripts/epic/epic-issue.ts +9 -11
  259. package/scripts/epic/epic-label-age.ts +74 -0
  260. package/scripts/epic/epic-lane-offer.ts +35 -24
  261. package/scripts/epic/epic-nested.ts +1 -1
  262. package/scripts/epic/epic-next-read.ts +8 -8
  263. package/scripts/epic/epic-next-views.ts +12 -12
  264. package/scripts/epic/epic-next.ts +29 -33
  265. package/scripts/epic/epic-outside-blocker.ts +11 -10
  266. package/scripts/epic/epic-parse.ts +22 -24
  267. package/scripts/epic/epic-promote.ts +3 -2
  268. package/scripts/epic/epic-rank.ts +1 -1
  269. package/scripts/epic/epic-read.ts +10 -8
  270. package/scripts/epic/epic-reconcile.ts +8 -6
  271. package/scripts/epic/epic-reference.ts +5 -4
  272. package/scripts/epic/epic-relation-recheck.ts +10 -11
  273. package/scripts/epic/epic-relations.ts +9 -8
  274. package/scripts/epic/epic-remove-plan.ts +4 -5
  275. package/scripts/epic/epic-remove.ts +7 -5
  276. package/scripts/epic/epic-report.ts +18 -20
  277. package/scripts/epic/epic-run.ts +6 -5
  278. package/scripts/epic/epic-sections.ts +2 -2
  279. package/scripts/epic/epic-shape.ts +3 -3
  280. package/scripts/epic/epic-solo-stale.ts +3 -2
  281. package/scripts/epic/epic-solo.ts +8 -8
  282. package/scripts/epic/epic-triage.ts +5 -4
  283. package/scripts/epic/epic-validate.ts +8 -7
  284. package/scripts/epic/epic.ts +5 -5
  285. package/scripts/exports/unused-members-cli.ts +1 -1
  286. package/scripts/followup/followup-issue-number.ts +1 -2
  287. package/scripts/followup/git-followup-cleanup.ts +6 -7
  288. package/scripts/followup/git-followup-finish.ts +11 -13
  289. package/scripts/followup/git-followup-flush.ts +11 -7
  290. package/scripts/followup/git-followup-issue-close.ts +16 -13
  291. package/scripts/followup/git-followup-label.ts +9 -6
  292. package/scripts/followup/git-followup-merged.ts +1 -1
  293. package/scripts/followup/git-followup-pending.ts +7 -9
  294. package/scripts/followup/git-followup-stages.ts +28 -17
  295. package/scripts/followup/git-followup-workflow.ts +19 -21
  296. package/scripts/followup/git-pr-followup-checks.ts +13 -20
  297. package/scripts/followup/git-pr-followup-wrapup.ts +7 -7
  298. package/scripts/followup/git-pr-followup.ts +18 -17
  299. package/scripts/gate/core-admission.ts +2 -2
  300. package/scripts/gate/core-budget.ts +15 -26
  301. package/scripts/gate/gate-ledger.ts +114 -0
  302. package/scripts/gate/gate-log.ts +7 -9
  303. package/scripts/gate/gate-plan.ts +70 -35
  304. package/scripts/gate/gate-report.ts +14 -15
  305. package/scripts/gate/gate-skip.ts +11 -13
  306. package/scripts/gate/gate-steps.ts +5 -1
  307. package/scripts/gate/gate-tree.ts +3 -4
  308. package/scripts/gate/hook-gate-reuse.ts +9 -9
  309. package/scripts/gate/machine-capacity.ts +168 -30
  310. package/scripts/gate/pre-commit-type-check.ts +4 -4
  311. package/scripts/gate/project-checks.ts +12 -4
  312. package/scripts/gate/scoped-green.ts +11 -18
  313. package/scripts/gate/type-check-command.ts +2 -2
  314. package/scripts/gate/type-check-step.ts +4 -4
  315. package/scripts/gate/verification-gate.ts +53 -51
  316. package/scripts/gh/gh-spawn.ts +2 -2
  317. package/scripts/gh/git-ai-review-scan.ts +3 -2
  318. package/scripts/gh/git-gh-api-path.ts +10 -11
  319. package/scripts/gh/git-gh-exec.ts +43 -48
  320. package/scripts/gh/git-gh-failure.ts +6 -9
  321. package/scripts/gh/git-gh-helpers.ts +1 -1
  322. package/scripts/gh/git-gh-issue-list.ts +15 -19
  323. package/scripts/gh/git-gh-issue-read.ts +43 -60
  324. package/scripts/gh/git-gh-issue-rest.ts +14 -15
  325. package/scripts/gh/git-gh-issue-write.ts +52 -40
  326. package/scripts/gh/git-gh-issue.ts +23 -24
  327. package/scripts/gh/git-gh-pr-auto-merge.ts +3 -3
  328. package/scripts/gh/git-gh-pr-read.ts +46 -50
  329. package/scripts/gh/git-gh-pr-rest.ts +23 -26
  330. package/scripts/gh/git-gh-pr-review.ts +2 -2
  331. package/scripts/gh/git-gh-pr-rollup.ts +4 -4
  332. package/scripts/gh/git-gh-pr-snapshot.ts +8 -10
  333. package/scripts/gh/git-gh-pr.ts +16 -16
  334. package/scripts/gh/git-gh-reachability.ts +11 -12
  335. package/scripts/gh/git-gh-repo.ts +2 -3
  336. package/scripts/gh/git-gh-rest-state.ts +1 -1
  337. package/scripts/gh/git-pr-ai-review.ts +6 -5
  338. package/scripts/gh/git-pr-checks-eval.ts +28 -30
  339. package/scripts/gh/git-pr-checks-parse.ts +14 -16
  340. package/scripts/gh/git-pr-checks-watch.ts +17 -17
  341. package/scripts/gh/git-pr-checks.ts +20 -23
  342. package/scripts/gh/git-pr-coderabbit.ts +8 -6
  343. package/scripts/gh/git-pr-confirmation.ts +5 -5
  344. package/scripts/gh/git-pr-managed-config.ts +7 -9
  345. package/scripts/gh/git-pr-messages.ts +1 -1
  346. package/scripts/gh/git-pr.ts +15 -16
  347. package/scripts/gh/github-issue-url.ts +8 -9
  348. package/scripts/git/base-tree.ts +66 -0
  349. package/scripts/git/change-base.ts +42 -2
  350. package/scripts/git/changed-file-scope.ts +5 -5
  351. package/scripts/git/changed-paths.ts +1 -2
  352. package/scripts/git/constants.ts +2 -2
  353. package/scripts/git/git-branch.ts +1 -1
  354. package/scripts/git/git-closes-keyword.ts +3 -3
  355. package/scripts/git/git-command.ts +53 -41
  356. package/scripts/git/git-common-directory.ts +3 -3
  357. package/scripts/git/git-diff-reads.ts +14 -15
  358. package/scripts/git/git-error.ts +1 -1
  359. package/scripts/git/git-execa-error.ts +1 -2
  360. package/scripts/git/git-issue.ts +10 -8
  361. package/scripts/git/git-location-environment.ts +3 -4
  362. package/scripts/git/git-ls-remote.ts +6 -8
  363. package/scripts/git/git-pre-push-hook.ts +11 -10
  364. package/scripts/git/git-preflight.ts +5 -5
  365. package/scripts/git/git-push-transport.ts +2 -2
  366. package/scripts/git/git-remote-branch.ts +1 -2
  367. package/scripts/git/git-schemas.ts +16 -23
  368. package/scripts/git/git-spawn-sync.ts +1 -1
  369. package/scripts/git/git-spawn.ts +37 -14
  370. package/scripts/git/git-ssh-keepalive.ts +12 -5
  371. package/scripts/git/git-staging.ts +7 -8
  372. package/scripts/git/git-workflow.ts +1 -1
  373. package/scripts/git/git-worktree.ts +35 -27
  374. package/scripts/git/gone-branch.ts +2 -2
  375. package/scripts/git/listing-cutoff.ts +1 -2
  376. package/scripts/git/lockfile-sync.ts +65 -0
  377. package/scripts/git/main-merge-guard.ts +1 -2
  378. package/scripts/git/main-merge.ts +7 -7
  379. package/scripts/git/main-sync.ts +23 -8
  380. package/scripts/git/parse-json-array.ts +18 -23
  381. package/scripts/git/repository-lock.ts +34 -2
  382. package/scripts/git/stash/git-stash.ts +4 -5
  383. package/scripts/git/stash/stash-orphans.ts +5 -3
  384. package/scripts/git/stash/stash-pop-args.ts +1 -1
  385. package/scripts/git/stash/stash-pop-cli.ts +3 -3
  386. package/scripts/git/stash/stash-sweep-lock.ts +2 -2
  387. package/scripts/hooks/batch-guard.ts +11 -13
  388. package/scripts/hooks/check-commit-message.ts +12 -9
  389. package/scripts/hooks/codex-hook-adapter.ts +16 -10
  390. package/scripts/hooks/edited-cspell.ts +3 -4
  391. package/scripts/hooks/format-edited-cli.ts +1 -1
  392. package/scripts/hooks/format-edited-file.ts +11 -17
  393. package/scripts/hooks/format-rewrite-notice.ts +19 -17
  394. package/scripts/hooks/pre-push-unit.ts +10 -14
  395. package/scripts/hooks/pretool-guard-cli.ts +4 -4
  396. package/scripts/hooks/pretool-guard.ts +93 -18
  397. package/scripts/hooks/reserved-run.ts +2 -2
  398. package/scripts/hooks/step-zero-notice.ts +1 -1
  399. package/scripts/hooks/stop-guard.ts +21 -10
  400. package/scripts/init/basic-path-migration.ts +2 -2
  401. package/scripts/init/claude-kit-only-settings.ts +2 -2
  402. package/scripts/init/claude-plugin-config.ts +2 -2
  403. package/scripts/init/distributed-paths.ts +4 -4
  404. package/scripts/init/hook-command-rewrite.ts +3 -3
  405. package/scripts/init/hook-launch.ts +5 -5
  406. package/scripts/init/init-actions.ts +13 -0
  407. package/scripts/init/init-ai-copy.ts +11 -11
  408. package/scripts/init/init-bootstrap.ts +3 -3
  409. package/scripts/init/init-copy-content.ts +4 -4
  410. package/scripts/init/init-logic-json-merge.ts +7 -9
  411. package/scripts/init/init-logic-migrate.ts +1 -1
  412. package/scripts/init/init-logic-templates.ts +1 -1
  413. package/scripts/init/init-logic-workspace.ts +4 -4
  414. package/scripts/init/init-logic-yaml-merge.ts +2 -2
  415. package/scripts/init/init-logic.ts +19 -22
  416. package/scripts/init/init.ts +7 -7
  417. package/scripts/init/kit-base-preset.ts +1 -1
  418. package/scripts/init/kit-setup-state.ts +1 -1
  419. package/scripts/init/kit-written-paths.ts +1 -2
  420. package/scripts/init/package-manager-pin.ts +1 -1
  421. package/scripts/init/project-profile-cli.ts +1 -1
  422. package/scripts/init/project-profile.ts +3 -3
  423. package/scripts/init/session-language-environment.ts +1 -1
  424. package/scripts/init/start-exec.ts +3 -4
  425. package/scripts/init/start-plan.ts +2 -2
  426. package/scripts/init/start-setup-pr.ts +3 -2
  427. package/scripts/init/start-steps.ts +2 -2
  428. package/scripts/init/tsconfig-preset-migration.ts +1 -1
  429. package/scripts/init/vscode-tasks.ts +62 -0
  430. package/scripts/issue/baseline-measure.ts +2 -2
  431. package/scripts/issue/behavior-change-lint.ts +2 -2
  432. package/scripts/issue/defect-rate-cli.ts +6 -7
  433. package/scripts/issue/defect-rate.ts +37 -27
  434. package/scripts/issue/git-next-issues.ts +9 -8
  435. package/scripts/issue/issue-auto-ok.ts +24 -11
  436. package/scripts/issue/issue-backlinks-cli.ts +5 -5
  437. package/scripts/issue/issue-backlinks.ts +6 -6
  438. package/scripts/issue/issue-cite-cli.ts +20 -18
  439. package/scripts/issue/issue-cite.ts +18 -8
  440. package/scripts/issue/issue-closing-pr.ts +4 -4
  441. package/scripts/issue/issue-comment-cli.ts +6 -4
  442. package/scripts/issue/issue-file-cli.ts +52 -15
  443. package/scripts/issue/issue-file-fold.ts +155 -0
  444. package/scripts/issue/issue-file.ts +9 -6
  445. package/scripts/issue/issue-fold-cli.ts +14 -9
  446. package/scripts/issue/issue-fold.ts +23 -8
  447. package/scripts/issue/issue-labels.ts +34 -38
  448. package/scripts/issue/issue-lint-cli.ts +2 -2
  449. package/scripts/issue/issue-lint.ts +1 -1
  450. package/scripts/issue/issue-merged.ts +10 -4
  451. package/scripts/issue/issue-number-shape.ts +27 -0
  452. package/scripts/issue/issue-rank.ts +1 -1
  453. package/scripts/issue/issue-read-cli.ts +4 -5
  454. package/scripts/issue/issue-read.ts +4 -5
  455. package/scripts/issue/issue-reference.ts +5 -5
  456. package/scripts/issue/issue-release-cli.ts +17 -7
  457. package/scripts/issue/issue-release.ts +3 -3
  458. package/scripts/issue/issue-report-failures.ts +7 -4
  459. package/scripts/issue/issue-scout-cli.ts +11 -11
  460. package/scripts/issue/issue-scout-closed.ts +4 -4
  461. package/scripts/issue/issue-scout.ts +4 -5
  462. package/scripts/issue/issue-state-cli.ts +17 -10
  463. package/scripts/issue/issue-state.ts +12 -13
  464. package/scripts/issue/issue-wip.ts +7 -7
  465. package/scripts/issue/markdown-section.ts +3 -3
  466. package/scripts/issue/measure-rerun-cli.ts +10 -9
  467. package/scripts/issue/reproduction-measure.ts +3 -3
  468. package/scripts/issue/session-cite.ts +56 -0
  469. package/scripts/josh/agent-session-environment.ts +10 -8
  470. package/scripts/josh/cli-body.ts +2 -2
  471. package/scripts/josh/command-suggest.ts +1 -1
  472. package/scripts/josh/file-map-stamp.ts +20 -23
  473. package/scripts/josh/hook-decision.ts +24 -28
  474. package/scripts/josh/josh-command-map.ts +4 -1
  475. package/scripts/josh/josh-command-types.ts +30 -35
  476. package/scripts/josh/josh-commands-ai.ts +6 -6
  477. package/scripts/josh/josh-commands-backlog.ts +15 -3
  478. package/scripts/josh/josh-commands-clone.ts +1 -1
  479. package/scripts/josh/josh-commands-development.ts +25 -4
  480. package/scripts/josh/josh-commands-document.ts +3 -3
  481. package/scripts/josh/josh-commands-guard.ts +3 -3
  482. package/scripts/josh/josh-commands-issue.ts +4 -5
  483. package/scripts/josh/josh-commands-lane.ts +14 -4
  484. package/scripts/josh/josh-commands-lint.ts +1 -1
  485. package/scripts/josh/josh-commands-run.ts +21 -7
  486. package/scripts/josh/josh-commands-split.ts +1 -2
  487. package/scripts/josh/josh-commands-versioning.ts +5 -5
  488. package/scripts/josh/josh-commands-workflow.ts +30 -22
  489. package/scripts/josh/josh-environment-file.ts +1 -1
  490. package/scripts/josh/josh-in-process.ts +3 -3
  491. package/scripts/josh/josh-logic.ts +6 -7
  492. package/scripts/josh/josh-run.ts +3 -3
  493. package/scripts/josh/josh-verdict.ts +9 -12
  494. package/scripts/josh/josh.ts +3 -3
  495. package/scripts/josh/kit-only.ts +2 -2
  496. package/scripts/josh/path-decision.ts +3 -3
  497. package/scripts/josh/platform-temporary.ts +7 -5
  498. package/scripts/josh/process-identity.ts +24 -6
  499. package/scripts/josh/process-owner.ts +4 -4
  500. package/scripts/josh/session-language-cli.ts +53 -11
  501. package/scripts/josh/session-language.ts +1 -1
  502. package/scripts/josh/stamp-file.ts +48 -29
  503. package/scripts/josh/stamp-record.ts +57 -0
  504. package/scripts/lane/lane-await.ts +35 -11
  505. package/scripts/lane/lane-cache.ts +6 -6
  506. package/scripts/lane/lane-capacity.ts +32 -17
  507. package/scripts/lane/lane-child-invocation.ts +17 -15
  508. package/scripts/lane/lane-child-marker.ts +12 -12
  509. package/scripts/lane/lane-cli.ts +12 -13
  510. package/scripts/lane/lane-close.ts +6 -6
  511. package/scripts/lane/lane-dispatch.ts +61 -72
  512. package/scripts/lane/lane-environment.ts +5 -5
  513. package/scripts/lane/lane-guard-policy.ts +7 -21
  514. package/scripts/lane/lane-handoff.ts +2 -2
  515. package/scripts/lane/lane-install.ts +9 -10
  516. package/scripts/lane/lane-launch-cli.ts +13 -8
  517. package/scripts/lane/lane-ledger.ts +73 -11
  518. package/scripts/lane/lane-leftover.ts +2 -2
  519. package/scripts/lane/lane-limit-cli.ts +160 -0
  520. package/scripts/lane/lane-limit-override.ts +74 -0
  521. package/scripts/lane/lane-load.ts +19 -68
  522. package/scripts/lane/lane-measure-cli.ts +15 -25
  523. package/scripts/lane/lane-occupancy.ts +6 -4
  524. package/scripts/lane/lane-open.ts +20 -19
  525. package/scripts/lane/lane-output.ts +4 -3
  526. package/scripts/lane/lane-paths.ts +12 -11
  527. package/scripts/lane/lane-phase.ts +33 -0
  528. package/scripts/lane/lane-reap.ts +2 -2
  529. package/scripts/lane/lane-registry.ts +16 -15
  530. package/scripts/lane/lane-relaunch.ts +9 -9
  531. package/scripts/lane/lane-report.ts +5 -4
  532. package/scripts/lane/lane-resume.ts +2 -2
  533. package/scripts/lane/lane-sampler.ts +55 -0
  534. package/scripts/lane/lane-seed.ts +7 -7
  535. package/scripts/lane/lane-stage-stats.ts +135 -0
  536. package/scripts/lane/lane-start-point.ts +8 -11
  537. package/scripts/lane/lane-stats.ts +60 -15
  538. package/scripts/lane/lane-stray.ts +1 -1
  539. package/scripts/lane/lane-vacant.ts +1 -1
  540. package/scripts/lane/openai-lane-supervisor-decision.ts +3 -7
  541. package/scripts/lane/openai-lane-supervisor-owner.ts +3 -9
  542. package/scripts/lane/openai-review-broker.ts +2 -4
  543. package/scripts/lib/ancestor-directories.ts +1 -1
  544. package/scripts/lib/bounded-pool.ts +2 -2
  545. package/scripts/lib/buffered-process.ts +4 -6
  546. package/scripts/lib/caddy-logs.sh +0 -0
  547. package/scripts/lib/cli-flags.ts +39 -6
  548. package/scripts/lib/error-message.ts +1 -1
  549. package/scripts/lib/json-value.ts +17 -3
  550. package/scripts/lib/poll.ts +1 -1
  551. package/scripts/lib/status-icons.ts +3 -3
  552. package/scripts/lib/timed-fetch.ts +1 -1
  553. package/scripts/lib/timeouts.ts +1 -1
  554. package/scripts/lines/bytes-command.ts +3 -4
  555. package/scripts/lines/effective-limit.ts +25 -12
  556. package/scripts/lines/line-budget.ts +47 -55
  557. package/scripts/lines/line-targets.ts +6 -2
  558. package/scripts/lines/lines-command.ts +3 -3
  559. package/scripts/lint/cross-file-recheck.ts +155 -0
  560. package/scripts/lint/cspell-cached.ts +1 -1
  561. package/scripts/lint/format.ts +1 -2
  562. package/scripts/lint/lint-parallel.ts +35 -19
  563. package/scripts/lint/lint-related-scope.ts +25 -15
  564. package/scripts/lint/lint-related.ts +6 -7
  565. package/scripts/managed-marker/index.ts +1 -1
  566. package/scripts/managed-marker/managed-marker-logic.ts +1 -2
  567. package/scripts/notify/git-notify.ts +9 -7
  568. package/scripts/notify/telegram-notify.ts +53 -37
  569. package/scripts/notify/telegram-test-logic.ts +3 -3
  570. package/scripts/notify/telegram-test.ts +45 -30
  571. package/scripts/observations/observation-ledger-home.ts +14 -8
  572. package/scripts/observations/observation-ledger-line.ts +3 -2
  573. package/scripts/observations/observation-ledger-migrate.ts +3 -4
  574. package/scripts/observations/observation-ledger-prepare.ts +4 -4
  575. package/scripts/observations/observation-ledger.ts +14 -15
  576. package/scripts/observations/observation-record-cli.ts +83 -0
  577. package/scripts/observations/observation-record.ts +91 -0
  578. package/scripts/observations/observations-flush-cli.ts +1 -1
  579. package/scripts/observations/observations-flush-landing.ts +7 -6
  580. package/scripts/observations/observations-flush.ts +26 -27
  581. package/scripts/overrides/overrides-check.ts +18 -8
  582. package/scripts/package/package-scout-cli.ts +1 -1
  583. package/scripts/package/package-scout-format.ts +2 -2
  584. package/scripts/package/package-scout.ts +1 -1
  585. package/scripts/propagate/propagate-git-failure.ts +1 -1
  586. package/scripts/propagate/propagate-git.ts +7 -7
  587. package/scripts/propagate/propagate-plan.ts +2 -2
  588. package/scripts/propagate/propagate-publish.ts +2 -3
  589. package/scripts/propagate/propagate-run.ts +5 -7
  590. package/scripts/propagate/propagate-select.ts +1 -1
  591. package/scripts/propagate/propagate-steps.ts +19 -20
  592. package/scripts/propagate/propagate-targets.ts +6 -10
  593. package/scripts/propagate/propagate.ts +5 -5
  594. package/scripts/refactor/import-graph.ts +1 -1
  595. package/scripts/refactor/refactor-lint.ts +4 -10
  596. package/scripts/refactor/refactor-scan-cli.ts +1 -1
  597. package/scripts/refactor/refactor-scan.ts +2 -2
  598. package/scripts/refactor/refactor-targets.ts +1 -1
  599. package/scripts/release/github-release-cli.ts +25 -3
  600. package/scripts/release/github-release-runs.ts +1 -1
  601. package/scripts/release/release-cli.ts +21 -4
  602. package/scripts/release/release-history.ts +6 -10
  603. package/scripts/release/release-plan.ts +3 -3
  604. package/scripts/release/release-progress.ts +3 -4
  605. package/scripts/release/release-publish.ts +8 -9
  606. package/scripts/release/release-scope-cli.ts +8 -10
  607. package/scripts/release/release-tag.ts +6 -8
  608. package/scripts/release/release-worktree.ts +5 -5
  609. package/scripts/repo/auto-merge-setting-logic.ts +7 -9
  610. package/scripts/repo/auto-merge-setting.ts +1 -1
  611. package/scripts/repo/repo-setting.ts +4 -4
  612. package/scripts/repo/repository-labels.ts +1 -1
  613. package/scripts/repo/required-checks-logic.ts +3 -3
  614. package/scripts/repo/required-checks-report.ts +1 -1
  615. package/scripts/repo/ruleset-check-cli.ts +1 -1
  616. package/scripts/repo/ruleset-check.ts +1 -1
  617. package/scripts/report/report-format-reference.ts +26 -0
  618. package/scripts/report/report-lint-cli.ts +2 -2
  619. package/scripts/report/report-lint.ts +16 -2
  620. package/scripts/review/disposition-cli.ts +2 -2
  621. package/scripts/review/disposition-logic.ts +1 -1
  622. package/scripts/review/live-evidence.ts +9 -6
  623. package/scripts/review/review-attest-cli.ts +1 -2
  624. package/scripts/review/review-attest.ts +3 -3
  625. package/scripts/review/review-brief-cli.ts +19 -20
  626. package/scripts/review/review-brief.ts +29 -32
  627. package/scripts/review/review-checkout.ts +2 -2
  628. package/scripts/review/review-diff-parts.ts +3 -5
  629. package/scripts/review/review-diff-write.ts +1 -1
  630. package/scripts/review/review-finding-ledger.ts +7 -4
  631. package/scripts/review/review-findings-cli.ts +2 -2
  632. package/scripts/review/review-level.ts +4 -7
  633. package/scripts/review/review-record-cli.ts +73 -16
  634. package/scripts/review/review-record.ts +5 -4
  635. package/scripts/review/review-round2-cli.ts +2 -3
  636. package/scripts/review/review-round2.ts +13 -21
  637. package/scripts/review/review-stamps.ts +9 -71
  638. package/scripts/review/review-tree.ts +4 -5
  639. package/scripts/rules/bash-triggers.ts +4 -4
  640. package/scripts/rules/decision-oracle-batch.ts +6 -7
  641. package/scripts/rules/decision-oracle-stage.ts +1 -1
  642. package/scripts/rules/decision-oracle-tokens.ts +1 -2
  643. package/scripts/rules/decision-oracle.ts +2 -2
  644. package/scripts/rules/delivered-rules.ts +61 -406
  645. package/scripts/rules/destructive-command.ts +2 -2
  646. package/scripts/rules/direct-filing.ts +4 -4
  647. package/scripts/rules/direct-pr-create.ts +2 -2
  648. package/scripts/rules/early-heartbeat.ts +15 -19
  649. package/scripts/rules/file-body.ts +5 -6
  650. package/scripts/rules/filing-cap.ts +6 -7
  651. package/scripts/rules/filing-offer.ts +1 -1
  652. package/scripts/rules/firing-point.ts +6 -6
  653. package/scripts/rules/gh-api.ts +2 -2
  654. package/scripts/rules/git-argv.ts +3 -3
  655. package/scripts/rules/git-force.ts +2 -2
  656. package/scripts/rules/hook-context-line.ts +31 -0
  657. package/scripts/rules/implementation-cut-verdict.ts +5 -8
  658. package/scripts/rules/implementation-cut.ts +35 -32
  659. package/scripts/rules/index-guard.ts +2 -2
  660. package/scripts/rules/issue-citation.ts +7 -7
  661. package/scripts/rules/issue-comments.ts +21 -13
  662. package/scripts/rules/josh-git-bare.ts +2 -2
  663. package/scripts/rules/lane-background.ts +14 -16
  664. package/scripts/rules/lane-carry-conflict.ts +41 -5
  665. package/scripts/rules/lane-interactive-ask.ts +6 -9
  666. package/scripts/rules/lane-park.ts +12 -16
  667. package/scripts/rules/lane-split-park.ts +1 -2
  668. package/scripts/rules/lane-switch-main.ts +10 -13
  669. package/scripts/rules/last-prompt.ts +1 -1
  670. package/scripts/rules/oracle-consulted.ts +5 -5
  671. package/scripts/rules/oracle-firing.ts +6 -9
  672. package/scripts/rules/oracle-list-cli.ts +2 -2
  673. package/scripts/rules/permission-guards.ts +2 -2
  674. package/scripts/rules/piped-verification.ts +79 -9
  675. package/scripts/rules/poll-loop.ts +9 -11
  676. package/scripts/rules/pre-gate-cut.ts +33 -30
  677. package/scripts/rules/prior-comment-read.ts +3 -3
  678. package/scripts/rules/protected-files.ts +25 -13
  679. package/scripts/rules/raw-field-body.ts +3 -4
  680. package/scripts/rules/reply-language.ts +1 -1
  681. package/scripts/rules/rule-body-guard.ts +10 -12
  682. package/scripts/rules/rule-guard.ts +1 -1
  683. package/scripts/rules/rule-list.ts +51 -0
  684. package/scripts/rules/rule-registry-rows.ts +282 -0
  685. package/scripts/rules/rule-registry.ts +109 -0
  686. package/scripts/rules/rule-value-cache.ts +2 -2
  687. package/scripts/rules/rule-value-cli.ts +6 -4
  688. package/scripts/rules/rule-value.ts +61 -22
  689. package/scripts/rules/run-tail-rule.ts +11 -15
  690. package/scripts/rules/shell-body-trigger.ts +7 -7
  691. package/scripts/rules/shell-segments.ts +2 -4
  692. package/scripts/rules/stop-rules.ts +54 -41
  693. package/scripts/rules/tail-commands.ts +1 -1
  694. package/scripts/rules/test-declared-commit.ts +2 -2
  695. package/scripts/rules/third-party-write.ts +3 -3
  696. package/scripts/rules/worktree-guard.ts +12 -5
  697. package/scripts/run/add/run-add-cli.ts +165 -0
  698. package/scripts/run/add/run-add.ts +124 -0
  699. package/scripts/run/board/run-board-cli.ts +207 -0
  700. package/scripts/run/board/run-board-closed.ts +95 -0
  701. package/scripts/run/board/run-board-every.ts +60 -0
  702. package/scripts/run/board/run-board-fetch.ts +38 -0
  703. package/scripts/run/board/run-board-fit.ts +219 -0
  704. package/scripts/run/board/run-board-github.ts +162 -0
  705. package/scripts/run/board/run-board-header.ts +275 -0
  706. package/scripts/run/board/run-board-kind.ts +35 -0
  707. package/scripts/run/board/run-board-labels.ts +299 -0
  708. package/scripts/run/board/run-board-layout.ts +222 -0
  709. package/scripts/run/board/run-board-link.ts +31 -0
  710. package/scripts/run/board/run-board-machine.ts +198 -0
  711. package/scripts/run/board/run-board-notes.ts +103 -0
  712. package/scripts/run/board/run-board-phase.ts +136 -0
  713. package/scripts/run/board/run-board-plan.ts +129 -0
  714. package/scripts/run/board/run-board-read.ts +62 -0
  715. package/scripts/run/board/run-board-render-legend.ts +82 -0
  716. package/scripts/run/board/run-board-render-notes.ts +77 -0
  717. package/scripts/run/board/run-board-render-slot.ts +50 -0
  718. package/scripts/run/board/run-board-render.ts +407 -0
  719. package/scripts/run/board/run-board-scope.ts +17 -0
  720. package/scripts/run/board/run-board-screen.ts +43 -0
  721. package/scripts/run/board/run-board-span.ts +66 -0
  722. package/scripts/run/board/run-board-spin.ts +115 -0
  723. package/scripts/run/board/run-board-state.ts +113 -0
  724. package/scripts/run/board/run-board-status.ts +279 -0
  725. package/scripts/run/board/run-board-tick.ts +210 -0
  726. package/scripts/run/board/run-board-track.ts +22 -0
  727. package/scripts/run/board/run-board-usage-read.ts +255 -0
  728. package/scripts/run/board/run-board-usage-rusage.ts +124 -0
  729. package/scripts/run/board/run-board-usage-text.ts +80 -0
  730. package/scripts/run/board/run-board-usage.ts +165 -0
  731. package/scripts/run/carry/run-carry-added.ts +62 -0
  732. package/scripts/run/carry/run-carry-args.ts +25 -22
  733. package/scripts/run/carry/run-carry-change.ts +1 -1
  734. package/scripts/run/carry/run-carry-cli.ts +71 -48
  735. package/scripts/run/carry/run-carry-conversation.ts +6 -7
  736. package/scripts/run/carry/run-carry-ended.ts +85 -0
  737. package/scripts/run/carry/run-carry-reclaim.ts +1 -1
  738. package/scripts/run/carry/run-carry-stash.ts +3 -2
  739. package/scripts/run/carry/run-carry-streak.ts +8 -10
  740. package/scripts/run/carry/run-carry.ts +85 -89
  741. package/scripts/run/cut/run-cut-args.ts +7 -7
  742. package/scripts/run/cut/run-cut-cli.ts +54 -36
  743. package/scripts/run/cut/run-cut-handoff.ts +15 -15
  744. package/scripts/run/cut/run-cut-report.ts +37 -16
  745. package/scripts/run/cut/run-cut.ts +63 -77
  746. package/scripts/run/detached-launch.ts +35 -50
  747. package/scripts/run/entry/run-entry-cli.ts +48 -27
  748. package/scripts/run/entry/run-entry-stop.ts +7 -9
  749. package/scripts/run/entry/run-entry.ts +5 -6
  750. package/scripts/run/event/run-event-cli.ts +5 -6
  751. package/scripts/run/event/run-event-filed.ts +69 -0
  752. package/scripts/run/event/run-event-follow.ts +3 -3
  753. package/scripts/run/event/run-event-plan.ts +38 -0
  754. package/scripts/run/event/run-event-render.ts +9 -4
  755. package/scripts/run/event/run-event-scope.ts +47 -18
  756. package/scripts/run/event/run-event-stream-emit.ts +64 -11
  757. package/scripts/run/event/run-event-stream.ts +171 -46
  758. package/scripts/run/event/run-event-watch.ts +4 -6
  759. package/scripts/run/hold/run-hold-cli.ts +65 -62
  760. package/scripts/run/hold/run-hold.ts +88 -46
  761. package/scripts/run/merge/run-merge-cli.ts +116 -77
  762. package/scripts/run/merge/run-merge-collect.ts +107 -0
  763. package/scripts/run/merge/run-merge-steps.ts +112 -65
  764. package/scripts/run/merge/run-merge-token.ts +30 -0
  765. package/scripts/run/merge/run-merge.ts +31 -22
  766. package/scripts/run/progress/run-progress-args.ts +4 -4
  767. package/scripts/run/progress/run-progress-cli.ts +39 -50
  768. package/scripts/run/progress/run-progress-clock.ts +25 -32
  769. package/scripts/run/progress/run-progress-config.ts +6 -9
  770. package/scripts/run/progress/run-progress-read.ts +9 -10
  771. package/scripts/run/progress/run-progress.ts +48 -53
  772. package/scripts/run/review/run-review-cli.ts +6 -6
  773. package/scripts/run/review/run-review-steps.ts +6 -6
  774. package/scripts/run/review/run-review.ts +9 -11
  775. package/scripts/run/run-cli-fault.ts +29 -0
  776. package/scripts/run/run-ending-cli.ts +3 -3
  777. package/scripts/run/run-ending.ts +10 -14
  778. package/scripts/run/run-halfrun-resume.ts +6 -8
  779. package/scripts/run/run-headless.ts +26 -12
  780. package/scripts/run/run-invocation.ts +17 -22
  781. package/scripts/run/run-label.ts +7 -5
  782. package/scripts/run/run-liveness-cli.ts +19 -6
  783. package/scripts/run/run-liveness.ts +27 -38
  784. package/scripts/run/run-next-cli.ts +5 -9
  785. package/scripts/run/run-next.ts +4 -5
  786. package/scripts/run/run-parent-cut-hook.ts +10 -12
  787. package/scripts/run/run-preflight.ts +25 -29
  788. package/scripts/run/run-prep-cli.ts +17 -13
  789. package/scripts/run/run-prep-locate.ts +4 -5
  790. package/scripts/run/run-prep.ts +7 -10
  791. package/scripts/run/run-prrun-resume.ts +2 -2
  792. package/scripts/run/run-report-cli.ts +4 -4
  793. package/scripts/run/run-report.ts +9 -14
  794. package/scripts/run/run-retrospective.ts +3 -3
  795. package/scripts/run/run-section.ts +42 -0
  796. package/scripts/run/run-stage-read.ts +2 -2
  797. package/scripts/run/run-stage.ts +6 -4
  798. package/scripts/run/run-status-cli.ts +7 -5
  799. package/scripts/run/run-status.ts +6 -7
  800. package/scripts/run/run-step-cli.ts +64 -18
  801. package/scripts/run/run-step.ts +107 -51
  802. package/scripts/run/run-stop-notify.ts +7 -8
  803. package/scripts/run/run-stranded-cli.ts +1 -1
  804. package/scripts/run/run-stranded-detect.ts +4 -4
  805. package/scripts/run/run-stranded.ts +11 -13
  806. package/scripts/run/run-tail-cli.ts +15 -16
  807. package/scripts/run/run-tail.ts +14 -33
  808. package/scripts/run/run-watcher-guard-cli.ts +3 -4
  809. package/scripts/run/run-watcher-guard.ts +11 -12
  810. package/scripts/run/run-watcher-hook.ts +6 -12
  811. package/scripts/run/ship/run-ship-cli.ts +67 -33
  812. package/scripts/run/ship/run-ship-detach.ts +15 -13
  813. package/scripts/run/ship/run-ship-lock.ts +1 -1
  814. package/scripts/run/ship/run-ship-next.ts +7 -8
  815. package/scripts/run/ship/run-ship-pre-detach.ts +27 -11
  816. package/scripts/run/ship/run-ship-preflight.ts +10 -11
  817. package/scripts/run/ship/run-ship-probe.ts +4 -4
  818. package/scripts/run/ship/run-ship-return.ts +1 -1
  819. package/scripts/run/ship/run-ship-review-steps.ts +43 -24
  820. package/scripts/run/ship/run-ship-review.ts +12 -14
  821. package/scripts/run/ship/run-ship-scoped.ts +15 -6
  822. package/scripts/run/ship/run-ship-stage.ts +80 -26
  823. package/scripts/run/ship/run-ship-steps.ts +26 -16
  824. package/scripts/run/ship/run-ship-stop-text.ts +4 -2
  825. package/scripts/run/ship/run-ship-sync.ts +9 -8
  826. package/scripts/run/ship/run-ship.ts +17 -32
  827. package/scripts/run/tidy/run-tidy-cli.ts +9 -5
  828. package/scripts/run/tidy/run-tidy-lanes.ts +18 -7
  829. package/scripts/run/tidy/run-tidy-stashes.ts +8 -8
  830. package/scripts/run/tidy/run-tidy.ts +4 -3
  831. package/scripts/run/wake/run-wake-cli.ts +27 -32
  832. package/scripts/run/wake/run-wake-describe.ts +24 -28
  833. package/scripts/run/wake/run-wake-driver.ts +14 -14
  834. package/scripts/run/wake/run-wake-handoff.ts +6 -6
  835. package/scripts/run/wake/run-wake-loop.ts +9 -9
  836. package/scripts/run/wake/run-wake-restart.ts +4 -5
  837. package/scripts/run/wake/run-wake-session.ts +23 -27
  838. package/scripts/run/wake/run-wake.ts +57 -279
  839. package/scripts/safe-chain/ci-installer-pin.ts +3 -3
  840. package/scripts/safe-chain/pack-hook.ts +2 -2
  841. package/scripts/safe-chain/preinstall-command.ts +2 -2
  842. package/scripts/security/security-audit-logic.ts +1 -1
  843. package/scripts/security/security-audit-provision-logic.ts +1 -1
  844. package/scripts/security/security-audit-provision.ts +2 -2
  845. package/scripts/security/security-audit.ts +5 -5
  846. package/scripts/security/security-updates-logic.ts +2 -3
  847. package/scripts/security/security-updates.ts +2 -4
  848. package/scripts/self-sync-guard/index.ts +1 -1
  849. package/scripts/self-sync-guard/self-sync-guard-logic.ts +2 -2
  850. package/scripts/self-sync-guard/self-sync-refusal.ts +1 -1
  851. package/scripts/sonar/sonar-hotspots-cli.ts +1 -1
  852. package/scripts/sonar/sonar-hotspots.ts +1 -1
  853. package/scripts/sonar/sonar-new-code-cli.ts +1 -1
  854. package/scripts/sonar/sonar-new-code.ts +1 -1
  855. package/scripts/sonar/sonar-project.ts +1 -1
  856. package/scripts/split/split-assess-cli.ts +1 -1
  857. package/scripts/split/split-assess.ts +3 -3
  858. package/scripts/sync/directory-copy-guard.ts +2 -3
  859. package/scripts/sync/managed-config-scope-cli.ts +1 -2
  860. package/scripts/sync/managed-config-scope.ts +4 -4
  861. package/scripts/sync/plugin-skill-directories.ts +2 -2
  862. package/scripts/sync/reconcile-templates.ts +17 -8
  863. package/scripts/sync/removed-skill-manifest.ts +2 -3
  864. package/scripts/sync/sync-ai-files.ts +7 -7
  865. package/scripts/sync/sync-configs.ts +30 -3
  866. package/scripts/sync/sync-hook-safety.ts +2 -2
  867. package/scripts/sync/sync.ts +23 -10
  868. package/scripts/sync/synced-paths.ts +2 -1
  869. package/scripts/sync/workflow-pin-logic.ts +1 -1
  870. package/scripts/test/test-declared-changed.ts +4 -4
  871. package/scripts/test/test-declared-logic.ts +2 -3
  872. package/scripts/test/test-declared-match.ts +25 -4
  873. package/scripts/test/test-declared.ts +26 -9
  874. package/scripts/test/test-red-commit.ts +3 -2
  875. package/scripts/test/test-red-logic.ts +7 -14
  876. package/scripts/test/test-red.ts +12 -47
  877. package/scripts/test/test-related-scope.ts +2 -3
  878. package/scripts/test/test-related.ts +3 -3
  879. package/scripts/test/test-type-logic.ts +1 -2
  880. package/scripts/test/test-unit-guard.ts +13 -17
  881. package/scripts/test/unit-worker-share.ts +7 -8
  882. package/scripts/time-runtime/time-agent-bundles.ts +2 -4
  883. package/scripts/time-runtime/time-background.ts +17 -21
  884. package/scripts/time-runtime/time-batch-guard.ts +67 -342
  885. package/scripts/time-runtime/time-bundle-call.ts +26 -28
  886. package/scripts/time-runtime/time-bundles.ts +11 -12
  887. package/scripts/time-runtime/time-call-identity.ts +1 -1
  888. package/scripts/time-runtime/time-command-key.ts +2 -2
  889. package/scripts/time-runtime/time-density-hook.ts +8 -11
  890. package/scripts/time-runtime/time-density.ts +5 -5
  891. package/scripts/time-runtime/time-followup-stage.ts +7 -7
  892. package/scripts/time-runtime/time-format.ts +5 -5
  893. package/scripts/time-runtime/time-hook-transcript.ts +3 -3
  894. package/scripts/time-runtime/time-instant.ts +1 -1
  895. package/scripts/time-runtime/time-markers.ts +15 -19
  896. package/scripts/time-runtime/time-phase-names.ts +3 -3
  897. package/scripts/time-runtime/time-reported-failure.ts +15 -19
  898. package/scripts/time-runtime/time-round-trips.ts +20 -23
  899. package/scripts/time-runtime/time-shell.ts +8 -8
  900. package/scripts/time-runtime/time-single-check.ts +1 -2
  901. package/scripts/time-runtime/time-spans.ts +35 -40
  902. package/scripts/time-runtime/time-tool-call.ts +15 -16
  903. package/scripts/time-runtime/time-transcript-line.ts +53 -34
  904. package/scripts/time-runtime/time-writes.ts +5 -5
  905. package/scripts/ui/ui-routes-cli.ts +1 -2
  906. package/scripts/ui/ui-routes.ts +1 -2
  907. package/scripts/version/bump-version.ts +1 -1
  908. package/scripts/version/fresh-metadata-cache.ts +2 -2
  909. package/scripts/version/latest-corepack.ts +26 -26
  910. package/scripts/version/latest-lane-guard.ts +1 -1
  911. package/scripts/version/latest-scope-cli.ts +2 -2
  912. package/scripts/version/latest-stamp.ts +1 -2
  913. package/scripts/version/latest-update.ts +2 -2
  914. package/scripts/version/npm-registry.ts +2 -2
  915. package/scripts/version/package-manager-version.ts +18 -0
  916. package/scripts/version/publishable-range-check.ts +2 -1
  917. package/scripts/version/publishable-range.ts +1 -1
  918. package/scripts/version/release-age.ts +11 -11
  919. package/scripts/version/release-hold.ts +2 -2
  920. package/scripts/version/safe-chain-version-update.ts +3 -3
  921. package/scripts/version/version-check-logic.ts +2 -3
  922. package/scripts/version/version-check.ts +1 -2
  923. package/scripts/version/version-command-config.ts +2 -2
  924. package/scripts/version/version-commands.ts +3 -3
  925. package/scripts/version/version-remote.ts +4 -4
  926. package/scripts/version/version-targets.ts +2 -2
  927. package/templates/gitignore +7 -0
  928. package/dist/hooks/chunk-KHX4U3BG.js +0 -6400
  929. package/dist/hooks/chunk-RKUAD3I6.js +0 -90
  930. package/dist/hooks/chunk-WPALEIRX.js +0 -18
  931. package/scripts/backlog/backlog-restructure.ts +0 -152
  932. package/scripts/rules/issue-fold-rule.ts +0 -72
  933. package/scripts/rules/wip-cap.ts +0 -63
  934. package/scripts/run/run-issue-number.ts +0 -19
package/dist/josh.js CHANGED
@@ -82,10 +82,16 @@ function parse_or_undefined(text) {
82
82
  return void 0;
83
83
  }
84
84
  }
85
+ function parse_with(text, schema) {
86
+ const value = parse_or_undefined(text);
87
+ if (value === void 0) return void 0;
88
+ const parsed = schema.safeParse(value);
89
+ return parsed.success ? parsed.data : void 0;
90
+ }
85
91
  function is_record(value) {
86
92
  return typeof value === "object" && value !== null && !Array.isArray(value);
87
93
  }
88
- var json_value = { parse_or_undefined, is_record };
94
+ var json_value = { parse_or_undefined, parse_with, is_record };
89
95
 
90
96
  // scripts/lib/read-file.ts
91
97
  import { readFileSync } from "node:fs";
@@ -365,7 +371,10 @@ var BEACON_PREFIX = `josh-process-identity-${String(process.getuid?.() ?? "")}-`
365
371
  var BEACON_ID_LENGTH = 36;
366
372
  var BEACON_ID_PATTERN = /^[\da-f-]+$/u;
367
373
  var WINDOWS_PLATFORM3 = "win32";
368
- var SOCKET_PROBE_SOURCE = "const net=require('node:net');const socket=net.createConnection(process.argv[1]);socket.once('connect',()=>process.exit(0));socket.once('error',()=>process.exit(1));socket.setTimeout(1000,()=>process.exit(1));";
374
+ var BEACON_LIVE_STATUS = 0;
375
+ var BEACON_UNKNOWN_STATUS = 1;
376
+ var BEACON_GONE_STATUS = 2;
377
+ var SOCKET_PROBE_SOURCE = `const net=require('node:net');const socket=net.createConnection(process.argv[1]);socket.once('connect',()=>process.exit(${String(BEACON_LIVE_STATUS)}));socket.once('error',(error)=>process.exit(['ECONNREFUSED','ENOENT'].includes(error.code)?${String(BEACON_GONE_STATUS)}:${String(BEACON_UNKNOWN_STATUS)}));socket.setTimeout(1000,()=>process.exit(${String(BEACON_UNKNOWN_STATUS)}));`;
369
378
  var beacons = /* @__PURE__ */ new Map();
370
379
  var exit_cleanup = { is_registered: false };
371
380
  function is_live_pid(pid) {
@@ -469,11 +478,16 @@ function beacon_target(token) {
469
478
  if (path4.dirname(target) !== PLATFORM_TEMP_ROOT) return void 0;
470
479
  return is_valid_beacon_name(path4.basename(target)) ? target : void 0;
471
480
  }
472
- function is_live_beacon(target) {
481
+ function run_socket_probe(target) {
473
482
  return spawnSync(process.execPath, ["-e", SOCKET_PROBE_SOURCE, target], {
474
483
  stdio: "ignore",
475
484
  timeout: PROBE_TIMEOUT_MS
476
- }).status === 0;
485
+ }).status ?? void 0;
486
+ }
487
+ function is_live_beacon(target, probe = run_socket_probe) {
488
+ const status = probe(target);
489
+ if (status === BEACON_LIVE_STATUS) return true;
490
+ return status === BEACON_GONE_STATUS ? false : void 0;
477
491
  }
478
492
  function has_matching_start(pid, recorded_start, read2) {
479
493
  const observed = read2(pid);
@@ -502,6 +516,7 @@ function is_own_process(pid, recorded_start) {
502
516
  }
503
517
  var process_identity = {
504
518
  close_beacon,
519
+ is_live_beacon,
505
520
  is_live_pid,
506
521
  is_own_process,
507
522
  is_same_process,
@@ -554,19 +569,35 @@ function write_exclusively(target, content) {
554
569
  function write_stamp(target, payload) {
555
570
  return write_exclusively(target, JSON.stringify(payload));
556
571
  }
557
- function replace_stamp(target, payload) {
572
+ function is_own_regular_file(source) {
573
+ const stats = lstatSync(source);
574
+ if (!stats.isFile()) return false;
575
+ const uid = process.getuid?.();
576
+ return uid === void 0 || stats.uid === uid;
577
+ }
578
+ function is_foreign_file(target) {
579
+ try {
580
+ return lstatSync(target).isFile() && !is_own_regular_file(target);
581
+ } catch {
582
+ return false;
583
+ }
584
+ }
585
+ function replace_text_stamp(target, text) {
586
+ if (is_foreign_file(target)) {
587
+ throw new Error(`refusing to replace another account's file: ${target}`);
588
+ }
558
589
  const temporary = `${target}.${String(process.pid)}.${randomUUID2()}`;
559
590
  try {
560
- writeFileSync(temporary, JSON.stringify(payload), {
561
- flag: STAMP_CREATE_FLAG,
562
- mode: STAMP_FILE_MODE
563
- });
591
+ writeFileSync(temporary, text, { flag: STAMP_CREATE_FLAG, mode: STAMP_FILE_MODE });
564
592
  renameSync(temporary, target);
565
593
  return target;
566
594
  } finally {
567
595
  rmSync2(temporary, { force: true });
568
596
  }
569
597
  }
598
+ function replace_stamp(target, payload) {
599
+ return replace_text_stamp(target, JSON.stringify(payload));
600
+ }
570
601
  function write_text_stamp(target, text) {
571
602
  return write_exclusively(target, text);
572
603
  }
@@ -585,12 +616,6 @@ function create_stamp(target, payload) {
585
616
  function remove_stamp(target) {
586
617
  rmSync2(target, { force: true });
587
618
  }
588
- function is_own_regular_file(source) {
589
- const stats = lstatSync(source);
590
- if (!stats.isFile()) return false;
591
- const uid = process.getuid?.();
592
- return uid === void 0 || stats.uid === uid;
593
- }
594
619
  function read_stamp_text(source) {
595
620
  try {
596
621
  if (!is_own_regular_file(source)) return void 0;
@@ -605,6 +630,7 @@ var stamp_file = {
605
630
  is_own_regular_file,
606
631
  read_stamp_text,
607
632
  replace_stamp,
633
+ replace_text_stamp,
608
634
  remove_stamp,
609
635
  stamp_path,
610
636
  write_stamp,
@@ -794,9 +820,18 @@ var BYTES_PER_MB = 1048576;
794
820
  var KB_PER_MB = 1024;
795
821
  var PERCENT = 100;
796
822
  var MEMINFO_PATH = "/proc/meminfo";
823
+ var VMSTAT_PATH = "/proc/vmstat";
797
824
  var LINUX_AVAILABLE = /^MemAvailable:\s+(?<kb>\d+) kB/mu;
798
- var PRESSURE_ARGUMENTS = ["-n", "kern.memorystatus_level"];
799
- var PRESSURE_LEVEL = /^\s*(?<level>\d+)\s*$/u;
825
+ var LINUX_SWAP_IN = /^pswpin (?<pages>\d+)$/mu;
826
+ var LINUX_SWAP_OUT = /^pswpout (?<pages>\d+)$/mu;
827
+ var PAGE_SIZE_ARGUMENTS = ["PAGESIZE"];
828
+ var LEVEL_NAME = "kern.memorystatus_level";
829
+ var SWAP_IN_NAME = "vm.compressor.swapper.swapins_total";
830
+ var SWAP_OUT_NAME = "vm.compressor.swapper.swapouts_total";
831
+ var PAGE_SIZE_NAME = "hw.pagesize";
832
+ var PRESSURE_NAME = "kern.memorystatus_vm_pressure_level";
833
+ var SYSCTL_ARGUMENTS = [LEVEL_NAME, SWAP_IN_NAME, SWAP_OUT_NAME, PAGE_SIZE_NAME, PRESSURE_NAME];
834
+ var SYSCTL_LINE = /^(?<name>[\w.]+): (?<value>\d+)$/gmu;
800
835
  function cpu_times() {
801
836
  let busy = 0;
802
837
  let idle = 0;
@@ -806,31 +841,96 @@ function cpu_times() {
806
841
  }
807
842
  return { busy, total: busy + idle };
808
843
  }
809
- function busy_cores_between(before, after, cores) {
844
+ function busy_share_between(before, after) {
810
845
  const total = after.total - before.total;
811
846
  if (total <= 0) return void 0;
812
- return (after.busy - before.busy) / total * cores;
847
+ return (after.busy - before.busy) / total;
848
+ }
849
+ function busy_cores_between(before, after, cores) {
850
+ const share = busy_share_between(before, after);
851
+ return share === void 0 ? void 0 : share * cores;
852
+ }
853
+ function sysctl_values(output) {
854
+ const values = [...output.matchAll(SYSCTL_LINE)].map(
855
+ (match) => [match.groups?.["name"] ?? "", Number(match.groups?.["value"])]
856
+ );
857
+ return new Map(values);
813
858
  }
814
- function parse_darwin_pressure(output, total_bytes) {
815
- const level = PRESSURE_LEVEL.exec(output)?.groups?.["level"];
816
- if (level === void 0) return void 0;
817
- return Number(level) / PERCENT * (total_bytes / BYTES_PER_MB);
859
+ function swapped_pages(pages_in, pages_out) {
860
+ return pages_in === void 0 || pages_out === void 0 ? void 0 : pages_in + pages_out;
861
+ }
862
+ function swapped_mb(pages, page_bytes) {
863
+ if (pages === void 0 || page_bytes === void 0) return void 0;
864
+ return pages * page_bytes / BYTES_PER_MB;
865
+ }
866
+ function swapped_between(from, to) {
867
+ if (from === void 0 || to === void 0) return void 0;
868
+ return Math.max(0, to - from);
869
+ }
870
+ function parse_darwin_memory(output, total_bytes) {
871
+ const values = sysctl_values(output);
872
+ const level = values.get(LEVEL_NAME);
873
+ return {
874
+ available_mb: level === void 0 ? void 0 : level / PERCENT * (total_bytes / BYTES_PER_MB),
875
+ swapped_mb: swapped_mb(
876
+ swapped_pages(values.get(SWAP_IN_NAME), values.get(SWAP_OUT_NAME)),
877
+ values.get(PAGE_SIZE_NAME)
878
+ ),
879
+ pressure_level: values.get(PRESSURE_NAME)
880
+ };
818
881
  }
819
882
  function parse_linux_available(meminfo) {
820
883
  const kb = LINUX_AVAILABLE.exec(meminfo)?.groups?.["kb"];
821
884
  return kb === void 0 ? void 0 : Number(kb) / KB_PER_MB;
822
885
  }
823
- async function read_available_mb(platform2 = process.platform) {
886
+ function pages_of(pattern, vmstat) {
887
+ const pages = pattern.exec(vmstat)?.groups?.["pages"];
888
+ return pages === void 0 ? void 0 : Number(pages);
889
+ }
890
+ function parse_linux_swapped(vmstat, page_bytes) {
891
+ const pages = swapped_pages(pages_of(LINUX_SWAP_IN, vmstat), pages_of(LINUX_SWAP_OUT, vmstat));
892
+ return swapped_mb(pages, page_bytes);
893
+ }
894
+ async function settled(read2) {
824
895
  try {
825
- if (platform2 === "darwin") {
826
- const { stdout } = await execa("sysctl", PRESSURE_ARGUMENTS);
827
- return parse_darwin_pressure(stdout, totalmem());
828
- }
829
- return platform2 === "linux" ? parse_linux_available(await readFile(MEMINFO_PATH, "utf8")) : void 0;
896
+ return await read2();
830
897
  } catch {
831
898
  return void 0;
832
899
  }
833
900
  }
901
+ async function read_darwin_memory() {
902
+ const { stdout } = await execa("sysctl", SYSCTL_ARGUMENTS, {
903
+ reject: false,
904
+ timeout: PROBE_TIMEOUT_MS
905
+ });
906
+ return parse_darwin_memory(stdout, totalmem());
907
+ }
908
+ async function read_page_size() {
909
+ const { stdout } = await execa("getconf", PAGE_SIZE_ARGUMENTS, { timeout: PROBE_TIMEOUT_MS });
910
+ return stdout;
911
+ }
912
+ async function read_linux_memory() {
913
+ const [meminfo, vmstat, page_size] = await Promise.all([
914
+ settled(async () => await readFile(MEMINFO_PATH, "utf8")),
915
+ settled(async () => await readFile(VMSTAT_PATH, "utf8")),
916
+ settled(read_page_size)
917
+ ]);
918
+ const page_bytes = page_size === void 0 ? void 0 : Number(page_size);
919
+ return {
920
+ available_mb: meminfo === void 0 ? void 0 : parse_linux_available(meminfo),
921
+ swapped_mb: vmstat === void 0 || page_bytes === void 0 ? void 0 : parse_linux_swapped(vmstat, page_bytes),
922
+ pressure_level: void 0
923
+ };
924
+ }
925
+ var UNREAD_MEMORY = {
926
+ available_mb: void 0,
927
+ swapped_mb: void 0,
928
+ pressure_level: void 0
929
+ };
930
+ async function read_memory() {
931
+ if (process.platform === "darwin") return await settled(read_darwin_memory) ?? UNREAD_MEMORY;
932
+ return process.platform === "linux" ? await read_linux_memory() : UNREAD_MEMORY;
933
+ }
834
934
  function is_unquoted() {
835
935
  return cpus().length > 0 && cpus().length === availableParallelism2();
836
936
  }
@@ -841,9 +941,12 @@ async function default_sleep(ms) {
841
941
  }
842
942
  async function read_machine(sleep = default_sleep) {
843
943
  const before = cpu_times();
844
- const [available_mb] = await Promise.all([read_available_mb(), sleep(SAMPLE_WINDOW_MS)]);
944
+ const [memory] = await Promise.all([read_memory(), sleep(SAMPLE_WINDOW_MS)]);
845
945
  const busy_cores = is_unquoted() ? busy_cores_between(before, cpu_times(), cpus().length) : void 0;
846
- return { busy_cores, available_mb };
946
+ return { busy_cores, available_mb: memory.available_mb };
947
+ }
948
+ async function read_sample() {
949
+ return { cpu: cpu_times(), memory: await read_memory(), total_mb: totalmem() / BYTES_PER_MB };
847
950
  }
848
951
  function external_cores(busy_cores, ledger_cores) {
849
952
  if (busy_cores === void 0) return 0;
@@ -858,10 +961,16 @@ function machine_budget(cores, reading, ledger) {
858
961
  var machine_capacity = {
859
962
  BASELINE_CORES,
860
963
  busy_cores_between,
964
+ busy_share_between,
965
+ external_cores,
861
966
  machine_budget,
862
- parse_darwin_pressure,
967
+ parse_darwin_memory,
863
968
  parse_linux_available,
864
- read_machine
969
+ parse_linux_swapped,
970
+ read_machine,
971
+ read_memory,
972
+ read_sample,
973
+ swapped_between
865
974
  };
866
975
 
867
976
  // scripts/gate/core-budget.ts
@@ -900,12 +1009,7 @@ function is_running2(reservation) {
900
1009
  function read_reservation(source) {
901
1010
  const raw = stamp_file.read_stamp_text(source);
902
1011
  if (raw === void 0) return void 0;
903
- try {
904
- const parsed = reservation_schema.safeParse(JSON.parse(raw));
905
- return parsed.success ? parsed.data : void 0;
906
- } catch {
907
- return void 0;
908
- }
1012
+ return json_value.parse_with(raw, reservation_schema);
909
1013
  }
910
1014
  function sweep_marker2(source) {
911
1015
  try {
@@ -1136,6 +1240,17 @@ var CSPELL_CACHE_FLAGS = content_cache_flags(CSPELL_CACHE_FILE);
1136
1240
 
1137
1241
  // scripts/josh/josh-commands-backlog.ts
1138
1242
  var BACKLOG_COMMANDS = {
1243
+ // Started from a terminal: the `backlogrun` keyword's launcher, and the board.
1244
+ backlogrun: {
1245
+ script: "scripts/backlog/backlogrun-cli.ts",
1246
+ description: "Start a backlogrun in the background and show its board; with one already running, only show the board",
1247
+ category: "AI tools",
1248
+ reference: [
1249
+ "[#<n>...] [--only] [--max <n>] [--idle <minutes>] [--agent claude|codex]",
1250
+ "developer",
1251
+ ["files", "network", "processes"]
1252
+ ]
1253
+ },
1139
1254
  "backlog:next": {
1140
1255
  script: "scripts/backlog/backlog-next.ts",
1141
1256
  description: "Order the whole opted-in backlog: auto-ok issues and the descendants of auto-ok epics, transitively through nested epics",
@@ -1166,7 +1281,7 @@ var BACKLOG_COMMANDS = {
1166
1281
  },
1167
1282
  "backlog:stalled": {
1168
1283
  script: "scripts/backlog/backlog-stalled-cli.ts",
1169
- // A stall sends one Telegram warning (joshuafolkken/kit#3357). The `Stop` hook calls the detector
1284
+ // A stall sends one Telegram warning. The `Stop` hook calls the detector
1170
1285
  // directly, so this flag costs only the manual command its in-process dispatch.
1171
1286
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
1172
1287
  description: "Report whether ready backlog work is sitting undispatched with a free lane and no recent dispatch",
@@ -1261,7 +1376,7 @@ var ISSUE_COMMANDS = {
1261
1376
  },
1262
1377
  "defect:rate": {
1263
1378
  script: "scripts/issue/defect-rate-cli.ts",
1264
- description: "Print the defect rate of merged work: defects filed per behavior change completed",
1379
+ description: "Print the defect rate of merged work: defects filed per enhancement completed",
1265
1380
  category: "AI tools",
1266
1381
  reference: ["[--days <n>]", "automation", ["network"]]
1267
1382
  },
@@ -1291,10 +1406,10 @@ var ISSUE_COMMANDS = {
1291
1406
  },
1292
1407
  "issue:file": {
1293
1408
  script: "scripts/issue/issue-file-cli.ts",
1294
- description: "File an Issue with every filing step: lint, Origin, WIP cap, duplicate scout, labels, then epic:bundle",
1409
+ description: "File an Issue with every filing step: lint, Origin, fold, WIP cap, duplicate scout, labels, then epic:bundle",
1295
1410
  category: "AI tools",
1296
1411
  reference: [
1297
- "<title> --body-file <path> --depth <0|1|2> [--route <route>] [--label <name>] [--repo <owner/repo>] [--distinct <N,\u2026>] [--over-cap] [--no-auto-ok] [--release]",
1412
+ "<title> --body-file <path> --depth <0|1|2> [--route <route>] [--label <name>] [--repo <owner/repo>] [--distinct <N,\u2026>] [--over-cap] [--no-auto-ok] [--requested] [--release]",
1298
1413
  "automation",
1299
1414
  ["network"]
1300
1415
  ]
@@ -1371,18 +1486,27 @@ var LANE_COMMANDS = {
1371
1486
  category: "AI tools",
1372
1487
  reference: ["<issue> [--stash <message>]", "automation", ["files", "git", "processes"]]
1373
1488
  },
1374
- // The lane-limit measurement (joshuafolkken/kit#3355): `.env` is read so `lane:stats` labels the row
1489
+ // A live run's lane limit: `.env` is read so the bare form reports the
1490
+ // `JOSH_LANE_LIMIT` a person set there when no override stands.
1491
+ "lane:limit": {
1492
+ script: "scripts/lane/lane-limit-cli.ts",
1493
+ tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
1494
+ description: "Change a live backlogrun\u2019s lane limit without stopping it, or print the limit, lanes in use and free lanes",
1495
+ category: "AI tools",
1496
+ reference: ["[<limit>] [--reset]", "developer", ["files"]]
1497
+ },
1498
+ // The lane-limit measurement: `.env` is read so `lane:stats` labels the row
1375
1499
  // with the `JOSH_LANE_LIMIT` a person set there.
1376
1500
  "lane:sample": {
1377
1501
  ...MEASURE_ARGUMENTS,
1378
- description: "Record the machine load (load average, swap, free memory, working lanes) to the lane ledger",
1502
+ description: "Record the machine load (load average, swap, free memory, working lanes) to the lane ledger \u2014 a backlogrun samples itself, this is for a reading outside one",
1379
1503
  category: "AI tools",
1380
1504
  reference: ["[--every <seconds>]", "maintainer", ["files"]],
1381
1505
  default_script_arguments: ["sample"]
1382
1506
  },
1383
1507
  "lane:stats": {
1384
1508
  ...MEASURE_ARGUMENTS,
1385
- description: "Print one table row of lane throughput, gate duration and machine load over a period",
1509
+ description: "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",
1386
1510
  category: "AI tools",
1387
1511
  reference: ["--period <days> [--limit <lane-limit>]", "maintainer", ["none"]],
1388
1512
  default_script_arguments: ["stats"]
@@ -1414,12 +1538,18 @@ var RUN_COMMANDS = {
1414
1538
  "run:carry": {
1415
1539
  script: "scripts/run/carry/run-carry-cli.ts",
1416
1540
  // `--stopped` sends the stop confirmation, so the Telegram credentials come from `.env` as for
1417
- // `run:wake` below (joshuafolkken/kit#3357).
1541
+ // `run:wake` below.
1418
1542
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
1419
1543
  description: "Carry one invocation\u2019s budget across its own session cuts",
1420
1544
  category: "AI tools",
1421
1545
  reference: ["<operation> [arguments...]", "automation", ["files"]]
1422
1546
  },
1547
+ "run:add": {
1548
+ script: "scripts/run/add/run-add-cli.ts",
1549
+ description: "Add issues to a live backlogrun, ahead of the queue unless --no-priority",
1550
+ category: "AI tools",
1551
+ reference: ["<issue...> [--no-priority]", "automation", ["network", "files"]]
1552
+ },
1423
1553
  "run:wake": {
1424
1554
  script: "scripts/run/wake/run-wake-cli.ts",
1425
1555
  // `.env` rather than the ambient environment:
@@ -1458,18 +1588,26 @@ var RUN_COMMANDS = {
1458
1588
  ["files"]
1459
1589
  ]
1460
1590
  },
1591
+ "run:board": {
1592
+ script: "scripts/run/board/run-board-cli.ts",
1593
+ // `--every` pushes its frame as a Telegram, so the credentials come from `.env` as for `run:carry`.
1594
+ tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
1595
+ description: "Draw a live board of the running backlogrun, redrawn every second",
1596
+ category: "AI tools",
1597
+ reference: ["[--once | --chat | --every <minutes>]", "automation", ["files", "network"]]
1598
+ },
1461
1599
  "run:prep": {
1462
1600
  script: "scripts/run/run-prep-cli.ts",
1463
1601
  description: "Bundle a run\u2019s pre-edit reads: body, comments, state, dependency scope",
1464
1602
  category: "AI tools",
1465
1603
  reference: ["<issue>", "automation", ["network"]]
1466
1604
  },
1467
- // The entry sequence a lane opened on, folded into one call (joshuafolkken/kit#2372): claim the tree,
1605
+ // The entry sequence a lane opened on, folded into one call: claim the tree,
1468
1606
  // read the budget, gather the issue reads and decide the pre-implementation step. `run:hold`,
1469
1607
  // `cost --cut`, `run:prep` and `run:step` were four round trips re-billing a lane's full context each.
1470
1608
  "run:entry": {
1471
1609
  script: "scripts/run/entry/run-entry-cli.ts",
1472
- // A `busy` hold or an `over` budget sends the stop confirmation (joshuafolkken/kit#3357).
1610
+ // A `busy` hold or an `over` budget sends the stop confirmation.
1473
1611
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
1474
1612
  description: "Open a run in one call: claim the tree, read the budget, bundle the reads, decide the pre-implementation step",
1475
1613
  category: "AI tools",
@@ -1491,7 +1629,7 @@ var RUN_COMMANDS = {
1491
1629
  script: "scripts/run/run-step-cli.ts",
1492
1630
  description: "Print the run\u2019s next single action, computed from the event stream, carry record and issue state",
1493
1631
  category: "AI tools",
1494
- reference: ["<issue>", "automation", ["network", "files"]]
1632
+ reference: ["[<issue>]", "automation", ["network", "files"]]
1495
1633
  }
1496
1634
  };
1497
1635
 
@@ -1572,12 +1710,12 @@ var AI_COMMANDS = {
1572
1710
  reference: ["[options]", "maintainer", ["none"]],
1573
1711
  // Kit-only: it measures kit's own development runs and its report modules live under the
1574
1712
  // undistributed `scripts/time/`, so it means nothing in a consumer project and is dropped from a
1575
- // consumer's help (joshuafolkken/kit#1997). The runtime analysis hooks and guards rely on stays
1713
+ // consumer's help. The runtime analysis hooks and guards rely on stays
1576
1714
  // distributed under `scripts/time-runtime/`.
1577
1715
  is_kit_only: true
1578
1716
  },
1579
1717
  // The tool-calls-per-round-trip density the batching guard is measured on, aggregated across the
1580
- // recent lane sessions (joshuafolkken/kit#2405). Kit-only for the same reason `time` is: it reads
1718
+ // recent lane sessions. Kit-only for the same reason `time` is: it reads
1581
1719
  // kit's own lane transcripts and means nothing in a consumer project.
1582
1720
  "time:density": {
1583
1721
  script: "scripts/time/time-density-cli.ts",
@@ -1593,7 +1731,7 @@ var AI_COMMANDS = {
1593
1731
  reference: ["", "maintainer", ["none"]],
1594
1732
  // Kit-only: it reads kit's own development run — the transcript store, the review ledger and the
1595
1733
  // run event stream — so it means nothing in a consumer project and is dropped from a consumer's
1596
- // help (joshuafolkken/kit#2328), through the same declaration `josh time` uses for the same reason.
1734
+ // help, through the same declaration `josh time` uses for the same reason.
1597
1735
  is_kit_only: true
1598
1736
  },
1599
1737
  "review:brief": {
@@ -1645,7 +1783,7 @@ var AI_COMMANDS = {
1645
1783
  category: "AI tools",
1646
1784
  reference: ["[--join]", "automation", ["processes", "files"]]
1647
1785
  },
1648
- // The post-merge sequence a run closed on, folded into one call (joshuafolkken/kit#2372): commit the
1786
+ // The post-merge sequence a run closed on, folded into one call: commit the
1649
1787
  // observation ledger, read the completion citations and decide the release scope. `observations:flush`,
1650
1788
  // `issue:cite` and `release:scope` were three round trips re-billing the run's full context each.
1651
1789
  "run:tail": {
@@ -1654,7 +1792,7 @@ var AI_COMMANDS = {
1654
1792
  category: "AI tools",
1655
1793
  reference: ["[<issue> ...]", "automation", ["git", "network"]]
1656
1794
  },
1657
- // The commit-to-report region a run ships a change on, folded into one call (joshuafolkken/kit#2398):
1795
+ // The commit-to-report region a run ships a change on, folded into one call:
1658
1796
  // the gate, the commit/push/PR (`git -y`), the CI-wait merge (`followup`) and the report bookkeeping
1659
1797
  // (`run:tail`) were four round trips re-billing the run's full context each. It stops at the first
1660
1798
  // failed step and names it, so the run reads only the step to fix.
@@ -1714,7 +1852,7 @@ var AI_COMMANDS = {
1714
1852
  category: "AI tools",
1715
1853
  reference: ["[scenario...]", "maintainer", ["processes", "network"]],
1716
1854
  // Kit-only: it replays kit's own distributed rules against real Claude sessions, so it means
1717
- // nothing in a consumer project and is dropped from a consumer's help (joshuafolkken/kit#1988).
1855
+ // nothing in a consumer project and is dropped from a consumer's help.
1718
1856
  is_kit_only: true
1719
1857
  }
1720
1858
  };
@@ -1778,6 +1916,7 @@ var LINT_LABEL = "lint";
1778
1916
  var TYPE_CHECK_LABEL = "check";
1779
1917
  var UNIT_LABEL = "test:unit";
1780
1918
  var BEHAVIOR_LABEL = "behavior";
1919
+ var METRICS_LABEL = "metrics";
1781
1920
  var WARNING_CHECKER_LABELS = [LINT_LABEL, TYPE_CHECK_LABEL];
1782
1921
  var STATIC_CHECKS = [
1783
1922
  {
@@ -1799,18 +1938,31 @@ var STATIC_CHECKS = [
1799
1938
  memory_mb: core_budget.MEMORY_MB.spell_check
1800
1939
  },
1801
1940
  { label: BEHAVIOR_LABEL, target: BEHAVIOR_LABEL, reserved_cores: 0 },
1802
- // **The unused-member check reserves no core** (joshuafolkken/kit#2987): it builds one TypeScript
1941
+ // **The unused-member check reserves no core**: it builds one TypeScript
1803
1942
  // program and walks it for about 5s, and it is over well before lint and the type check. A
1804
1943
  // reservation would only take a place from the four-core CI runner's fan-out and a worker from the
1805
1944
  // unit suite for the whole gate.
1806
- { label: "exports", target: "exports:unused", reserved_cores: 0 }
1945
+ { label: "exports", target: "exports:unused", reserved_cores: 0 },
1946
+ // **The metrics ratchet is kit's own**: it holds kit's repository-wide
1947
+ // totals to the merge-base's. It is one in-process eslint pass with only `max-lines` enabled, over
1948
+ // in a few seconds, so it reserves no core for the reason the unused-member check above does not.
1949
+ // It times no startup here: beside the unit suite that reads the load, not josh.
1950
+ {
1951
+ label: METRICS_LABEL,
1952
+ target: METRICS_LABEL,
1953
+ args: ["--no-startup"],
1954
+ reserved_cores: 0,
1955
+ memory_mb: core_budget.MEMORY_MB.eslint_scan,
1956
+ is_kit_only: true
1957
+ }
1807
1958
  ];
1808
1959
  var GATE_CHECKS = [
1809
1960
  ...STATIC_CHECKS,
1810
1961
  { label: UNIT_LABEL, target: UNIT_LABEL, reserved_cores: 0 }
1811
1962
  ];
1812
- function select_gate_checks(is_unit_included) {
1813
- return is_unit_included ? GATE_CHECKS : STATIC_CHECKS;
1963
+ function select_gate_checks(is_unit_included, is_kit_repository = true) {
1964
+ const checks = is_unit_included ? GATE_CHECKS : STATIC_CHECKS;
1965
+ return is_kit_repository ? checks : checks.filter((check) => check.is_kit_only !== true);
1814
1966
  }
1815
1967
  function has_unit_check(checks) {
1816
1968
  return checks.some((check) => check.label === UNIT_LABEL);
@@ -1864,15 +2016,19 @@ function direct_unit_weight(available_cores = availableParallelism4(), live_runs
1864
2016
  function direct_unit_memory() {
1865
2017
  return unit_memory(direct_unit_weight());
1866
2018
  }
2019
+ function unit_cap_for(checks, available_cores, concurrent_runs) {
2020
+ if (!has_unit_check(checks)) return void 0;
2021
+ return resolve_unit_worker_cap(available_cores, concurrent_runs);
2022
+ }
1867
2023
  function plan_of(concurrency, unit_worker_cap, checks = GATE_CHECKS) {
1868
2024
  return { checks, concurrency, unit_worker_cap };
1869
2025
  }
1870
- function resolve_gate_plan(available_cores = availableParallelism4(), concurrent_runs = unit_worker_share.SOLO_RUNS, is_unit_included = true) {
1871
- const checks = select_gate_checks(is_unit_included);
2026
+ function resolve_gate_plan(available_cores = availableParallelism4(), concurrent_runs = unit_worker_share.SOLO_RUNS, is_unit_included = true, is_kit_repository = true) {
2027
+ const checks = select_gate_checks(is_unit_included, is_kit_repository);
1872
2028
  return {
1873
2029
  checks,
1874
2030
  concurrency: resolve_concurrency(available_cores, concurrent_runs, checks),
1875
- unit_worker_cap: is_unit_included ? resolve_unit_worker_cap(available_cores, concurrent_runs) : void 0
2031
+ unit_worker_cap: unit_cap_for(checks, available_cores, concurrent_runs)
1876
2032
  };
1877
2033
  }
1878
2034
  function format_machine(available_cores, concurrent_runs) {
@@ -1896,6 +2052,7 @@ var gate_plan = {
1896
2052
  GATE_CHECKS,
1897
2053
  LINT_LABEL,
1898
2054
  MEASURED_CORES,
2055
+ METRICS_LABEL,
1899
2056
  RESERVED_CORES,
1900
2057
  STATIC_CHECKS,
1901
2058
  TYPE_CHECK_LABEL,
@@ -1958,6 +2115,19 @@ var DEV_COMMANDS = {
1958
2115
  core_weight: core_budget.CORE_WEIGHTS.eslint_scan,
1959
2116
  memory_mb: core_budget.MEMORY_MB.eslint_scan
1960
2117
  },
2118
+ metrics: {
2119
+ script: "scripts/metrics/metrics-command.ts",
2120
+ description: "Print repository-wide quality totals and durations, and fail when a total grew past the merge-base or a duration past its baseline",
2121
+ category: "Development",
2122
+ reference: [
2123
+ '[--no-startup | --totals-only | --accept --reason "<why>"]',
2124
+ "developer",
2125
+ ["files"]
2126
+ ],
2127
+ core_weight: core_budget.CORE_WEIGHTS.eslint_scan,
2128
+ memory_mb: core_budget.MEMORY_MB.eslint_scan,
2129
+ is_kit_only: true
2130
+ },
1961
2131
  "refactor:scan": {
1962
2132
  script: "scripts/refactor/refactor-scan-cli.ts",
1963
2133
  description: "List refactoring candidates in the changed scope by category and answer clear/candidates",
@@ -1978,6 +2148,12 @@ var DEV_COMMANDS = {
1978
2148
  category: "AI tools",
1979
2149
  reference: ["[--refresh]", "developer", ["files"]]
1980
2150
  },
2151
+ "rule:list": {
2152
+ script: "scripts/rules/rule-list.ts",
2153
+ description: "Print the trigger-delivered rules \u2014 each one's source, firing call and silent turn \u2014 from the guard rows",
2154
+ category: "AI tools",
2155
+ reference: ["", "automation", ["none"]]
2156
+ },
1981
2157
  format: {
1982
2158
  script: "scripts/lint/format.ts",
1983
2159
  description: "Format code with prettier and eslint (skips a tool a basic project lacks)",
@@ -1998,8 +2174,8 @@ var DEV_COMMANDS = {
1998
2174
  // **No `tsx_arguments`, deliberately.** `JOSH_BATCH_GUARD` is a per-machine preference kept in
1999
2175
  // `.env`, which every other command reads through `OPTIONAL_ENV_FILE_FLAGS` — but declaring any
2000
2176
  // `tsx_arguments` disqualifies a command from in-process dispatch (`josh-in-process.ts`), and
2001
- // this one runs before every `Bash` call. That is the hot path joshuafolkken/kit#1342 took a
2002
- // second ~0.16 s tsx start off. The script calls `process.loadEnvFile` itself instead, which is
2177
+ // this one runs before every `Bash` call, where a second ~0.16 s tsx start is not affordable.
2178
+ // The script calls `process.loadEnvFile` itself instead, which is
2003
2179
  // node's own `--env-file` parser with node's own precedence.
2004
2180
  },
2005
2181
  "pretool:guard": {
@@ -2023,7 +2199,7 @@ var DEV_COMMANDS = {
2023
2199
  },
2024
2200
  "session:lang": {
2025
2201
  script: "scripts/josh/session-language-cli.ts",
2026
- description: "Claude Code hook: print the resolved JOSH_SESSION_LANG (defaults to ja) for the session context",
2202
+ description: "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)",
2027
2203
  category: "Development",
2028
2204
  reference: ["", "automation", ["none"]]
2029
2205
  // **No `tsx_arguments`, deliberately**, the same as `batch:guard` above: this runs on every
@@ -2036,7 +2212,7 @@ var DEV_COMMANDS = {
2036
2212
  category: "Development",
2037
2213
  reference: ["<pretool|posttool>", "automation", ["none"]]
2038
2214
  // The live-source fallback `scripts/hooks/run-hook.sh` derives from the `codex-hook-adapter`
2039
- // bundle name (joshuafolkken/kit#3184). **No `tsx_arguments`**, the same as `pretool:guard`
2215
+ // bundle name. **No `tsx_arguments`**, the same as `pretool:guard`
2040
2216
  // above: it runs before every guarded Codex call.
2041
2217
  },
2042
2218
  "cspell:dot": {
@@ -2390,16 +2566,16 @@ var VERSIONING_COMMANDS = {
2390
2566
  category: "Versioning",
2391
2567
  reference: ["", "developer", ["network"]]
2392
2568
  },
2393
- // The one place that decides a version (joshuafolkken/kit#1169). A `script` entry for the same
2569
+ // The one place that decides a version. A `script` entry for the same
2394
2570
  // reason `ranges` is one: script paths resolve against the kit package root, so it keeps working
2395
2571
  // from a consumer repository where the file lives under node_modules.
2396
2572
  release: {
2397
2573
  script: "scripts/release/release-cli.ts",
2398
2574
  description: "Release the merges main has taken since the version last changed",
2399
2575
  category: "Versioning",
2400
- reference: ["[version]", "maintainer", ["git", "network", "release"]]
2576
+ reference: ["[--dry-run]", "maintainer", ["git", "network", "release"]]
2401
2577
  },
2402
- // The read-only half of the one above (joshuafolkken/kit#1582). `release --dry-run` cannot
2578
+ // The read-only half of the one above. `release --dry-run` cannot
2403
2579
  // answer this question: it refuses off the default branch and on a dirty tree, which is every
2404
2580
  // position a run asks it from. A `script` entry for the same reason `release` is one.
2405
2581
  "release:scope": {
@@ -2408,8 +2584,8 @@ var VERSIONING_COMMANDS = {
2408
2584
  category: "Versioning",
2409
2585
  reference: ["[--json]", "automation", ["none"]]
2410
2586
  },
2411
- // Run by the release workflows, kit's and the one sync distributes, after a tag has published
2412
- // (joshuafolkken/kit#3007). Settings come from the environment, so the workflow decides them.
2587
+ // Run by the release workflows, kit's and the one sync distributes, after a tag has published.
2588
+ // Settings come from the environment, so the workflow decides them.
2413
2589
  "release:github": {
2414
2590
  script: "scripts/release/github-release-cli.ts",
2415
2591
  description: "Create the GitHub Release for a published tag, with generated notes",
@@ -2437,20 +2613,17 @@ var WORKFLOW_COMMANDS = {
2437
2613
  reference: ["<message>", "developer", ["network"]],
2438
2614
  default_script_arguments: ["-y", "--skip-commit", "--skip-push"]
2439
2615
  },
2440
- // **The optional form, on both** (joshuafolkken/kit#1564). These two were the last commands
2441
- // passing the mandatory `--env-file=.env`, which node resolves before the script's first line: on
2442
- // a machine with no `.env` they died as `.env: not found` with exit code 9, even where
2443
- // `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID` existed as real environment variables — a cloud
2444
- // session, and `followup` with them the merge step of every `fullrun` there. `doctor` was moved to
2445
- // this form for the same reason in joshuafolkken/kit#869.
2616
+ // **The optional form, on both**. The mandatory `--env-file=.env` is resolved by node before the
2617
+ // script's first line: on a machine with no `.env` it dies as `.env: not found` with exit code 9,
2618
+ // even where `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID` exist as real environment variables — a
2619
+ // cloud session, and `followup` with them the merge step of every `fullrun` there.
2446
2620
  //
2447
2621
  // Nothing is lost by relaxing it: both scripts already load `.env` through `josh_environment_file`
2448
2622
  // themselves, so the file is read either way and node's precedence — an existing environment
2449
2623
  // variable wins over the file — is node's own in both spellings.
2450
2624
  //
2451
- // **What the mandatory flag was accidentally providing was noise**, and that is replaced rather
2452
- // than dropped: `telegram_notify.send` now throws on missing credentials and on a failed send, so
2453
- // `josh notify` exits non-zero instead of warning and answering 0.
2625
+ // **A missing credential still fails loudly**: `telegram_notify.send` throws on missing credentials
2626
+ // and on a failed send, so `josh notify` exits non-zero instead of warning and answering 0.
2454
2627
  followup: {
2455
2628
  script: "scripts/followup/git-followup-workflow.ts",
2456
2629
  description: "Follow-up git workflow",
@@ -2466,11 +2639,23 @@ var WORKFLOW_COMMANDS = {
2466
2639
  script: "scripts/notify/telegram-test.ts",
2467
2640
  description: "Send Telegram notification",
2468
2641
  category: "Workflow",
2469
- reference: ["--task-type <type> --body <text>", "automation", ["notifications"]],
2642
+ reference: [
2643
+ "[--task-type <type>] [--body <text> | --body-file <path>] [--issue-url <url>] [--pr-url <url>] [--issue-title <text>] [--repo-name <name>]",
2644
+ "automation",
2645
+ ["notifications"]
2646
+ ],
2470
2647
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS
2471
2648
  },
2472
- // The observation ledger's commit path for the lines no run's own commit carried
2473
- // (joshuafolkken/kit#1756, joshuafolkken/kit#2763): a lane's lines sit in the primary checkout, which
2649
+ // One observation-ledger sighting: the key's count, the append and the second-sighting verdict,
2650
+ // which a run used to type as a `cat | grep -c` and judge by hand.
2651
+ "observation:record": {
2652
+ script: "scripts/observations/observation-record-cli.ts",
2653
+ description: "Record an observation sighting and answer whether it is now filed",
2654
+ category: "Workflow",
2655
+ reference: ["<key> <depth> <where> <what> [--checkout <path>]", "automation", ["files"]]
2656
+ },
2657
+ // The observation ledger's commit path for the lines no run's own commit carried:
2658
+ // a lane's lines sit in the primary checkout, which
2474
2659
  // its commit cannot see, and the recurrence count the promotion rule reads is a count of main.
2475
2660
  "observations:flush": {
2476
2661
  script: "scripts/observations/observations-flush-cli.ts",
@@ -2478,8 +2663,8 @@ var WORKFLOW_COMMANDS = {
2478
2663
  category: "Workflow",
2479
2664
  reference: ["", "automation", ["git", "network"]]
2480
2665
  },
2481
- // The one write path for a `/code-review` round's findings (joshuafolkken/kit#2325), plus the
2482
- // `--check` gate `followup` runs before it merges (joshuafolkken/kit#2343). It appends a `- rf:`
2666
+ // The one write path for a `/code-review` round's findings, plus the
2667
+ // `--check` gate `followup` runs before it merges. It appends a `- rf:`
2483
2668
  // line per finding — or one zero-finding line for a clean round — to the observation ledger, so
2484
2669
  // `observations:flush` commits them and the recurrence count survives the run.
2485
2670
  "review:record": {
@@ -2487,12 +2672,12 @@ var WORKFLOW_COMMANDS = {
2487
2672
  description: "Record a review round\u2019s findings, or check a round was recorded",
2488
2673
  category: "Workflow",
2489
2674
  reference: [
2490
- "--issue <N> [<category>:<severity>:<file> ...] | --check --issue <N>",
2675
+ "--issue <N> [--comment] [<category>:<severity>:<file> ...] | --check --issue <N>",
2491
2676
  "automation",
2492
- ["files"]
2677
+ ["files", "network"]
2493
2678
  ]
2494
2679
  },
2495
- // The reader over what `review:record` wrote (joshuafolkken/kit#2325): each recurring category’s
2680
+ // The reader over what `review:record` wrote: each recurring category’s
2496
2681
  // count, and the number of zero-finding rounds that distinguishes a quiet category from an unwatched one.
2497
2682
  "review:findings": {
2498
2683
  script: "scripts/review/review-findings-cli.ts",
@@ -2501,7 +2686,7 @@ var WORKFLOW_COMMANDS = {
2501
2686
  reference: ["", "developer", ["files"]]
2502
2687
  },
2503
2688
  // After a behavior-change Issue merges, re-run its declared baseline and print before/after; a value
2504
- // that did not move appends a refuted-premise line to the observation ledger (joshuafolkken/kit#2212).
2689
+ // that did not move appends a refuted-premise line to the observation ledger.
2505
2690
  "measure:rerun": {
2506
2691
  script: "scripts/issue/measure-rerun-cli.ts",
2507
2692
  description: "Re-run a merged issue\u2019s baseline command and print the before/after pair",
@@ -2509,7 +2694,7 @@ var WORKFLOW_COMMANDS = {
2509
2694
  reference: ["<issue-number>", "automation", ["network", "processes", "files"]]
2510
2695
  },
2511
2696
  // A script rather than an `sh -c` chain, because it has a precondition to enforce: run inside a
2512
- // linked work tree it would hijack the default branch from every other one (joshuafolkken/kit#1535).
2697
+ // linked work tree it would hijack the default branch from every other one.
2513
2698
  "main:sync": {
2514
2699
  script: "scripts/git/main-sync.ts",
2515
2700
  description: "Checkout default branch, pull latest, and prune merged remote-gone branches (refuses inside a lane)",
@@ -2517,9 +2702,8 @@ var WORKFLOW_COMMANDS = {
2517
2702
  reference: ["", "developer", ["git", "network"]]
2518
2703
  },
2519
2704
  // A script rather than an `sh -c` chain, because the strategy has to be named rather than left to
2520
- // the caller's git configuration: the `git pull` this replaced aborted with `Need to specify how
2521
- // to reconcile divergent branches` on exactly the diverged branch the command exists for
2522
- // (joshuafolkken/kit#1659).
2705
+ // the caller's git configuration: a bare `git pull` aborts with `Need to specify how to reconcile
2706
+ // divergent branches` on exactly the diverged branch the command exists for.
2523
2707
  "main:merge": {
2524
2708
  script: "scripts/git/main-merge.ts",
2525
2709
  description: "Merge origin default branch into the current branch",
@@ -2555,6 +2739,7 @@ var ALIASES = {
2555
2739
  lr: "lint:related",
2556
2740
  ln: "lines",
2557
2741
  by: "bytes",
2742
+ mt: "metrics",
2558
2743
  f: "format",
2559
2744
  sd: "cspell:dot",
2560
2745
  bh: "behavior",
@@ -2597,7 +2782,9 @@ var ALIASES = {
2597
2782
  ruv: "rule:value",
2598
2783
  ev: "eval",
2599
2784
  lsm: "lane:sample",
2600
- lst: "lane:stats"
2785
+ lst: "lane:stats",
2786
+ lli: "lane:limit",
2787
+ blr: "backlogrun"
2601
2788
  };
2602
2789
 
2603
2790
  // scripts/josh/josh-composite-arguments.ts