@joshuafolkken/kit 1.1240.0 → 1.1370.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +50 -61
  18. package/.claude/skills/workflow-commands/chain-rule.md +36 -40
  19. package/.claude/skills/workflow-commands/entry-sequence.md +6 -6
  20. package/.claude/skills/workflow-commands/followup.md +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 +29 -47
  44. package/SECURITY.md +1 -1
  45. package/dist/CLAUDE.md +10 -61
  46. package/dist/commands/document-section-cli.js +42 -10
  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-43G45XJF.js} +18 -20
  51. package/dist/hooks/{chunk-4TZVB44A.js → chunk-4TW4MQUL.js} +284 -362
  52. package/dist/hooks/{chunk-XZYKEM6J.js → chunk-76RK6E3H.js} +13 -11
  53. package/dist/hooks/{chunk-F3ELQ2AF.js → chunk-DZWZ3DKY.js} +4 -4
  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-ZQGD4GBY.js → chunk-KPM4YIIX.js} +8 -44
  57. package/dist/hooks/chunk-MXVQMLDP.js +3705 -0
  58. package/dist/hooks/{chunk-ELCN5LCH.js → chunk-NEC4AT4Z.js} +34 -12
  59. package/dist/hooks/{chunk-QVSWU24O.js → chunk-NZBHG6FW.js} +7 -5
  60. package/dist/hooks/chunk-NZN2UFI6.js +2409 -0
  61. package/dist/hooks/{chunk-KRBERBBI.js → chunk-R6CRQEAL.js} +4 -4
  62. package/dist/hooks/chunk-SYSRHRWU.js +1589 -0
  63. package/dist/hooks/{chunk-WK2XSHSI.js → chunk-TLJYAGZK.js} +549 -874
  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 +216 -202
  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 +281 -94
  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 +16 -10
  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 +26 -2
  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 +20 -6
  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/cspell-cached.ts +1 -1
  560. package/scripts/lint/cycle-recheck.ts +122 -0
  561. package/scripts/lint/format.ts +1 -2
  562. package/scripts/lint/lint-parallel.ts +34 -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 +5 -6
  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 +25 -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 +13 -15
  801. package/scripts/run/run-step.ts +58 -47
  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
@@ -2,6 +2,7 @@
2
2
  name: investigator
3
3
  description: Read-only investigation unit for the pre-implementation reading — finds out how an Issue's subject currently works and returns the conclusion with its `file:line` citations, never the file text. Dispatch it when `pnpm josh investigation:guard` asks for a delegated unit, or when `pnpm josh delegate investigation` answers `delegate`.
4
4
  tools: Read, Grep, Glob, Bash
5
+ model: sonnet
5
6
  effort: low
6
7
  ---
7
8
 
@@ -10,6 +10,10 @@
10
10
  "Bash(gh repo archive*)",
11
11
  "Bash(gh pr close*)",
12
12
  "Read(./.env)",
13
+ "Read(./.env.*)",
14
+ "Read(!.env.example)",
15
+ "Read(!.env.test)",
16
+ "Read(./.dev.vars)",
13
17
  "Bash(git push --force*)",
14
18
  "Bash(git push -f*)",
15
19
  "Bash(git push *--force*)",
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: dependency-update
3
- description: The verification procedure that runs after `pnpm update`, `josh latest`, `pnpm josh overrides` or any other dependency-update command — how to confirm the `overrides` entries in both `pnpm-workspace.yaml` and `package.json` survived, and which single `devEngines` change is the expected one rather than a violation. Read it before reporting that a dependency update left the pins intact, and whenever a bump has to be resolved forward or pinned back.
3
+ description: Checks after `pnpm update`, `josh latest`, `pnpm josh overrides` or any dependency update — the `overrides` survived, the one expected `devEngines` change. Read it before reporting the pins intact or pinning a bump back.
4
4
  ---
5
5
 
6
6
  # After a dependency-update command
7
7
 
8
- `CLAUDE.md` keeps the two prohibitions resident — never touch `overrides`
8
+ `CLAUDE.md` → "Decision autonomy" keeps both prohibitions resident as Tier C — never touch `overrides`
9
9
  in either file, never touch `devEngines`, without explicit user approval. This skill is the other
10
10
  half: what you actually run to find out whether a command already touched them, and how to read the
11
11
  one change that is expected. It applies after `pnpm update`, `josh latest`, `pnpm josh overrides`,
@@ -65,7 +65,9 @@ intent.
65
65
  **Restore + ask only** when `devEngines` changed in some OTHER way: its version no longer matches
66
66
  `packageManager` (a dropped, stale, or truncated integrity suffix counts as a mismatch), its
67
67
  structure changed (`name` / `onFail` / fields added or removed), or it was touched by something other
68
- than `josh latest`.
68
+ than `josh latest`. The one structural change that is expected is `josh sync` moving
69
+ `devEngines.packageManager.onFail` from `"error"` to `"download"` — a user-approved migration that
70
+ leaves `name` and `version` untouched; keep it.
69
71
 
70
72
  ## 4. When the bump breaks something — fix forward
71
73
 
@@ -1,14 +1,15 @@
1
1
  ---
2
2
  name: epic-commands
3
- description: The procedures for the `josh epic:*` commands that make an epic runnable without a person watching — `epic:audit` (find contradictions across the children), `epic:next` (what is runnable, per repository), and `epic:bundle` (does a newly filed issue belong with one already in the backlog). Also how an epic spans repositories and why a cross-repository dependency waits for a publish. Read this before running any of those commands, before writing an epic that tracks a child in another repository, and when `epic:bundle` places a filed issue (anything but `Nothing to bundle.`).
3
+ description: Procedures for `josh epic:audit`, `epic:next` and `epic:bundle`. Read it before running one, before an epic tracks a child in another repository, when `epic:bundle` places a filed issue, and when recording a decision on a `needs-decision` child.
4
4
  ---
5
5
 
6
6
  # The `josh epic:*` commands
7
7
 
8
8
  These three commands are what turn an epic from a list of issue numbers into something a run can
9
- execute unattended. **This skill is their single source**, and the history behind the rules is `docs/maintainers/epic-commands-rationale.md` (joshuafolkken/kit#2892).
9
+ execute unattended. **This skill is their single source**; where each rule came from is
10
+ `docs/maintainers/epic-commands-rationale.md` → "Where each rule came from".
10
11
 
11
- The workflow keywords themselves — `kickoff`, `fullrun`, `halfrun`, `backlogrun` — live in the
12
+ The workflow keywords themselves — `kickoff`, `fullrun`, `halfrun`, `prrun`, `backlogrun` — live in the
12
13
  `workflow-commands` skill.
13
14
 
14
15
  ## The order they run in
@@ -36,19 +37,16 @@ the label-clearing rule itself is `backlogrun-park.md` → "park and continue".
36
37
  - **A decision taken *as* a child joins the epic** goes through `pnpm josh epic --add … --decision-file`
37
38
  — `epic-bundle.md` is that flag's single source, and it writes both halves at once.
38
39
  - **A decision about a child the epic already tracks** cannot use that flag: an insertion with nothing
39
- to add is refused outright. Until joshuafolkken/kit#1162 adds an entry point for already-tracked
40
- children, write the child comments with
41
- `pnpm josh issue:comment <N> --body-file <path>` on each child the answer
42
- applies to, and **say in the report that the epic's `## Decisions` entry is still pending** — the
43
- entry going unwritten is how two of the four most recent placements in joshuafolkken/kit#1262 ended
44
- up with a child comment and nothing on the epic.
40
+ to add is refused outright. Until an entry point for already-tracked children exists, write the
41
+ child comments with `pnpm josh issue:comment <N> --body-file <path>` on each child the answer
42
+ applies to, and **say in the report that the epic's `## Decisions` entry is still pending**.
45
43
 
46
44
  ```md
47
45
  ## Decisions
48
46
 
49
47
  ### <the point that was decided>
50
48
 
51
- - 対象: #101, #102
49
+ - 対象: #<N1>, #<N2>
52
50
  - 採用: <the option taken>
53
51
  - 却下: <the option rejected>
54
52
  - 理由: <why the taken option is clearly better>
@@ -74,9 +72,7 @@ reasons and the history: `docs/maintainers/epic-commands-rationale.md` → "Crea
74
72
 
75
73
  ## `josh epic:audit <E>` — contradictions across the children
76
74
 
77
- `epic:check` verifies one epic's *format*. Nothing verified that the children agree, and a hand audit
78
- of a real epic found two contradictions that would have stalled the implementation while
79
- `epic:check` reported every requirement as passing.
75
+ `epic:check` verifies one epic's *format*; this verifies that the children agree.
80
76
 
81
77
  Run it **without being asked**: when a `backlogrun` starts a named epic's children, and right
82
78
  after a child is added or a dependency changed.
@@ -87,38 +83,27 @@ adds is reading *inside* the children:
87
83
  | Check | Level |
88
84
  | --- | --- |
89
85
  | A child's body names another child, nothing orders the two | warning |
90
- | A child's **acceptance criteria** name another child, nothing orders the two | **error**; a warning once both children are closed, and a warning when the pair is in two repositories (joshuafolkken/kit#1128 — such an order only became recordable with joshuafolkken/kit#1126, so an error would stop every epic written before it). A warning there does **not** mean the pair is safe: the child is still offered as runnable, and recording the relation is what clears it |
86
+ | A child's **acceptance criteria** name another child, nothing orders the two | **error**; a warning once both children are closed, and a warning when the pair is in two repositories. A warning there does **not** mean the pair is safe: the child is still offered as runnable, and recording the relation is what clears it |
91
87
  | A body cites a missing or already-closed issue | warning |
92
- | A task-list row points at another **epic** | warning — `epic:next` withholds the row, so the batch is already safe; what is left is a thing a person has to look at (joshuafolkken/kit#1476) |
88
+ | A task-list row points at another **epic** | warning — `epic:next` withholds the row, so the batch is already safe; what is left is a thing a person has to look at |
93
89
  | An issue names this epic as parent that the task list does not track | warning |
94
90
  | The search for those issues could not read the open backlog | **error** |
95
91
  | That search stopped before the end of the backlog | warning |
96
92
 
97
- **Only errors fail it** (exit 1); a warning leaves the exit code alone. The first check fires on a
98
- legitimate forward reference as readily as on a real missing dependency; failing on both would make
99
- design notes unwritable, so the reader judges and the machine only keeps it from being missed. A
100
- forward reference the other child *already depends on* is not reported at all. Acceptance criteria
101
- that require what a child free to run later produces cannot be met however anyone decides, which is
102
- why that check is an error.
103
-
104
- **A pair with either child closed is a warning, not an error.** What makes an undeclared order a
105
- contradiction is that the criteria's child *can run first*, and one end closing is enough to make
106
- that false: a closed naming child has already run, and a closed named child has already delivered
107
- what the criteria ask for — so an epic that once forgot to declare an order would otherwise fail its
108
- audit forever, which stops every future run of that epic at the first step. It is demoted rather than
109
- dropped because dropping it hands the same pair to the first check, which reports it as an implicit
110
- dependency instead: the same one line, minus the detail that the name is in the acceptance criteria
111
- (joshuafolkken/kit#1010, widened from both-closed to either-closed by joshuafolkken/kit#1597 after a
112
- closed child citing an open sibling **as evidence** held an epic red at step one). **The demotion
113
- needs the closed state confirmed**: `epic_issue.normalize_state` maps every state but `CLOSED`
114
- (`MERGED` included) to `OPEN`, so a state that could not be confirmed stays an error.
93
+ **Only errors fail it** (exit 1); a warning leaves the exit code alone and is for the reader to judge
94
+ — the first check fires on a legitimate forward reference as readily as on a missing dependency. A
95
+ forward reference the other child *already depends on* is not reported at all.
96
+
97
+ **A pair with either child closed is a warning, not an error**, and **the demotion needs the closed
98
+ state confirmed**: `epic_issue.normalize_state` maps every state but `CLOSED` (`MERGED` included) to
99
+ `OPEN`, so a state that could not be confirmed stays an error.
115
100
 
116
101
  **Fixing what it finds is Tier A** — re-pointing a dependency or correcting prose is reversible and
117
102
  will otherwise stall the work, so fix it without asking and record why on the issue. Park with
118
103
  `needs-decision` only when the contradiction is a design choice nobody has made.
119
104
 
120
105
  **The two `orphan search` findings are the exception, because neither is a contradiction.** They are
121
- about the search itself rather than about anything the children say (joshuafolkken/kit#1033):
106
+ about the search itself rather than about anything the children say:
122
107
 
123
108
  - `✖ orphan search: Could not list the open issues…` — the search never ran, so "no orphans" would
124
109
  be a claim about a listing that never arrived. It fails the audit, which stops the epic's run at its
@@ -140,55 +125,44 @@ History: `docs/maintainers/epic-commands-rationale.md` → "`epic:audit` — why
140
125
  Returns **every** runnable child, bundled per repository with the local checkout to run it in.
141
126
  `--repo <owner/repo>` narrows to one and prints a single token: the issue number, or the verdict.
142
127
  `--lanes` beside it prints one issue number per line instead, **up to the number of free lanes in
143
- that repository** — so a caller that reads one token keeps reading one token
144
- (joshuafolkken/kit#1491).
145
-
146
- **It takes more than one epic, and they answer as one** (joshuafolkken/kit#1493). Every leading
147
- argument is an epic reference — the split is on the first flag, so `epic:next 858 909 --repo X
148
- --lanes` reads two — and their runnable children merge into one candidate pool per repository, so six
149
- free lanes fill from every named epic rather than from whichever was typed first.
150
- **The priority order is the order the epics were named**: dependency
151
- depth does not compare across graphs, since depth is measured inside one epic and there is no
152
- relation between two epics to normalize against, while argument order is the one ranking a person
153
- typed and can change. **Inside one epic the order is that epic's own task list**
154
- (joshuafolkken/kit#1583): its declared chain still decides which children are *runnable*, and among
155
- those, the order the task list names them is the order they are offered — so an epic says "do this
156
- one first" by moving the row, not by declaring a chain, which would stop every child behind a stuck
157
- one. It was the lowest issue number until then, on the premise that number order is split order —
158
- false for any epic that gains children as work is found.
159
- **`pnpm josh epic --add <E> <N> --order-before <M>` is what moves that row**
160
- (joshuafolkken/kit#1738): the row goes where the flag names, and the declaration and the `blocked-by`
161
- relations are left exactly as they stood — so "moving the row" is a command rather than the hand edit
162
- `epic --add` exists to prevent. `--order-after <M>` is its other direction, and both work on a child
163
- the epic already tracks, which is a pure reorder. **A child a chain still holds is not freed by
164
- moving its row**: `epic:next` filters by `blocked-by` before it applies task-list order, so the
165
- command prints a ⚠️ line naming that child rather than reporting a reordering nothing can observe. **A child two epics both track enters once**, keyed by
166
- `owner/repo#number` and kept by the epic named earlier; withheld there, it stays withheld, because a
167
- `blocked-by` relation belongs to the issue rather than to the epic listing it. **One unusable graph
168
- refuses the whole answer**, and **one reference that does not parse fails the read** rather than
169
- being dropped. `docs/josh-commands-backlog.md` → "`josh epic:next`" carries the worked form.
128
+ that repository** — so a caller that reads one token keeps reading one token.
129
+
130
+ **It takes more than one epic, and they answer as one.** Every leading argument is an epic
131
+ reference — the split is on the first flag, so `epic:next 858 909 --repo X --lanes` reads two — and
132
+ their runnable children merge into one candidate pool per repository, so six free lanes fill from
133
+ every named epic rather than from whichever was typed first. **The priority order is the order the
134
+ epics were named.** **Inside one epic the order is that epic's own task list**: its declared chain
135
+ still decides which children are *runnable*, and among those, the order the task list names them is
136
+ the order they are offered — so an epic says "do this one first" by moving the row, not by declaring
137
+ a chain, which would stop every child behind a stuck one.
138
+ **`pnpm josh epic --add <E> <N> --order-before <M>` is what moves that row**: the row goes where the
139
+ flag names, and the declaration and the `blocked-by` relations are left exactly as they stood — so
140
+ "moving the row" is a command rather than the hand edit `epic --add` exists to prevent.
141
+ `--order-after <M>` is its other direction, and both work on a child the epic already tracks, which
142
+ is a pure reorder. **A child a chain still holds is not freed by moving its row**: `epic:next`
143
+ filters by `blocked-by` before it applies task-list order, so the command prints a ⚠️ line naming
144
+ that child rather than reporting a reordering nothing can observe. **A child two epics both track
145
+ enters once**, keyed by `owner/repo#number` and kept by the epic named earlier; withheld there, it
146
+ stays withheld, because a `blocked-by` relation belongs to the issue rather than to the epic listing
147
+ it. **One unusable graph refuses the whole answer**, and **one reference that does not parse fails
148
+ the read** rather than being dropped. `docs/josh-commands-backlog.md` → "`josh epic:next`" carries the
149
+ worked form.
170
150
 
171
151
  **An `in-progress` issue occupies a lane rather than the whole repository.** The occupancy is counted
172
- from that repository's own `in-progress` listing — never from anything the session remembers, since
173
- two sessions counting to the limit in their own memory would double it — and what is left of
174
- `JOSH_LANE_LIMIT` (**default 6**) is what gets offered. At zero the answer is `wait` and the holders
175
- are named on standard error. A parked child releases its lane; one stopped by `needs-human-review`
176
- goes on holding one, because its uncommitted work is still in that checkout. It is an advisory guard
177
- rather than a mutex: the label is applied after the read, so what it closes is the window that
178
- actually occurs — a lane holding the label for minutes.
179
-
180
- **A child that is itself an epic is never offered** (joshuafolkken/kit#1476). An epic is not a unit of
181
- work, so a run handed one has nothing to implement — before this the row fell through to the
182
- dependency reading, which makes anything unblocked runnable, and `backlogrun` passed the epic to
183
- `fullrun` as an ordinary issue. It waits on a *person*, because no amount of waiting turns an epic
184
- into work. **The test is the child's `epic` label, never how its task-list row is written**: a row
185
- naming `owner/repo#N` is a different property and a legitimate one — it disables the epic auto-close
186
- by design, which is why a cross-repository backlink is prose rather than a row — so a
187
- cross-repository child that is not an epic stays runnable, and one that is an epic is withheld
188
- exactly like a local one. **A parent epic over another epic never auto-closes**: the auto-close
189
- evaluates only the epics whose own task list holds the issue a merge just closed, and a grandchild
190
- merging never reaches the grandparent. `epic:audit` reports the same row, with that consequence in
191
- the finding.
152
+ from that repository's own `in-progress` listing — never from anything the session remembers — and
153
+ what is left of `JOSH_LANE_LIMIT` (**default 6**) is what gets offered. At zero the answer is `wait`
154
+ and the holders are named on standard error. A parked child releases its lane; one stopped by
155
+ `needs-human-review` goes on holding one, because its uncommitted work is still in that checkout.
156
+
157
+ **A child that is itself an epic is never offered** — an epic is not a unit of work. It waits on a
158
+ *person*, because no amount of waiting turns an epic into work. **The test is the child's `epic`
159
+ label, never how its task-list row is written**: a row naming `owner/repo#N` is a different property
160
+ and a legitimate one — it disables the epic auto-close by design, which is why a cross-repository
161
+ backlink is prose rather than a row — so a cross-repository child that is not an epic stays
162
+ runnable, and one that is an epic is withheld exactly like a local one. **A parent epic over another
163
+ epic never auto-closes**: the auto-close evaluates only the epics whose own task list holds the issue
164
+ a merge just closed, and a grandchild merging never reaches the grandparent. `epic:audit` reports the
165
+ same row, with that consequence in the finding.
192
166
 
193
167
  Children that are not runnable are sorted by **whether waiting helps**, never by label:
194
168
 
@@ -198,17 +172,13 @@ Children that are not runnable are sorted by **whether waiting helps**, never by
198
172
  | Waiting on time | Wait and ask again |
199
173
  | Waiting on a person | Stop and report |
200
174
 
201
- Reading labels instead fails in an ordinary state: when one repository's child has closed and
202
- another's is waiting for a release to publish, nothing carries `in-progress` or `needs-decision` —
203
- and a label-based reading calls that "done" in the one moment it must wait.
204
-
205
- **A blocker outside every named epic is weighed, not ignored** (joshuafolkken/kit#1943). Closed, it
206
- resolves (a cross-repository one still waits for its release); open and tracked by any epic named in
207
- the same call, the child waits on time unless that blocker itself waits on a person, which the child
208
- inherits; open and tracked by none, the child waits on a person and the
209
- blocker is named on standard error; a state the relation did not carry reads as waiting. **So an order
210
- between two epics is recorded with a native `blocked-by` relation and honoured by naming both epics**
211
- — `epic:next 1936 1931`, or `backlog:next`, whose set is the whole opted-in backlog. The table is
175
+ **A blocker outside every named epic is weighed, not ignored.** Closed, it resolves (a
176
+ cross-repository one still waits for its release); open and tracked by any epic named in the same
177
+ call, the child waits on time unless that blocker itself waits on a person, which the child
178
+ inherits; open and tracked by none, the child waits on a person and the blocker is named on standard
179
+ error; a state the relation did not carry reads as waiting. **So an order between two epics is
180
+ recorded with a native `blocked-by` relation and honoured by naming both epics** — `epic:next <E1>
181
+ <E2>`, or `backlog:next`, whose set is the whole opted-in backlog. The table is
212
182
  `docs/josh-commands-backlog.md` → "`josh epic:next`".
213
183
 
214
184
  Two things stop the command rather than being worked around: a **circular dependency**, and a
@@ -216,6 +186,8 @@ Two things stop the command rather than being worked around: a **circular depend
216
186
  recorded them, a recording that failed, or a relation hand-added since). Only a line that is
217
187
  *nothing but* a chain counts as a declaration — a prose line recommending an execution order is a suggestion, not a dependency.
218
188
 
189
+ Why it orders and counts as it does: `docs/maintainers/epic-commands-rationale.md` → "`epic:next` — why it answers as it does".
190
+
219
191
  ## Epics that span repositories
220
192
 
221
193
  Write cross-repository children in the task list as `owner/repo#N` or a full issue URL. Their state
@@ -227,34 +199,29 @@ to implement.
227
199
  - **The epic auto-closes only when every cross-repository child's state could actually be read.** One
228
200
  unreadable child leaves it open, exactly as before.
229
201
  - **An epic in another repository must be referenced as `owner/repo#N`** — `backlogrun
230
- joshuafolkken/kit#858 --only`, `epic:next joshuafolkken/kit#858 --repo joshuafolkken/app-kit`. A
202
+ joshuafolkken/kit#<E> --only`, `epic:next joshuafolkken/kit#<E> --repo joshuafolkken/app-kit`. A
231
203
  bare `#N` resolves to *this* repository's issue of that number. A cross-repository epic exists in
232
204
  one repository only.
233
- - **`epic:next` prints each candidate's repository and local checkout** from joshuafolkken/kit#869's
205
+ - **`epic:next` prints each candidate's repository and local checkout** from the repository discovery
234
206
  map; a repository with no checkout prints `(no local checkout)` and is **never cloned on its own**.
235
207
 
236
- **A dependency that crosses a repository is not satisfied by the blocking issue closing.** Merging
237
- does not publish: the merge, the auto-tag and the publish run one after another, so a consumer told
238
- it may start at that moment installs the previous release or fails outright — "it breaks sometimes",
239
- the hardest kind to diagnose. It resolves only when the blocker is closed **and** the version its
240
- default branch declares has appeared in the registry.
208
+ **A dependency that crosses a repository is not satisfied by the blocking issue closing** — merging
209
+ does not publish. It resolves only when the blocker is closed **and** the version its default branch
210
+ declares has appeared in the registry.
241
211
 
242
- **Unless that repository publishes nothing** (joshuafolkken/kit#1129). A repository with no
243
- `package.json` on its default branch, or one declaring `private`, ships no release for the check to
244
- wait on — so a closed blocker there resolves rather than waiting until the run's own eight-hour
245
- timeout with nothing an operator can edit to clear it. The answer is read from the blocker
246
- repository's own manifest and never from the registry: a registry 404 also means "this token may not
247
- see it", so resolving on one would start a consumer child before its blocker's release existed. A
248
- manifest read that fails (rather than answering 404) is told apart by HTTP status and still waits.
212
+ **Unless that repository publishes nothing.** A repository with no `package.json` on its default
213
+ branch, or one declaring `private`, ships no release for the check to wait on, so a closed blocker
214
+ there resolves. The answer is read from the blocker repository's own manifest and never from the
215
+ registry (a registry 404 also means "this token may not see it"). A manifest read that fails (rather
216
+ than answering 404) is told apart by HTTP status and still waits.
249
217
 
250
218
  **The evaluation is an AND in that order.** While the blocker is open the registry is never
251
219
  consulted, so a run never stalls on a publish from the moment it starts. The target is that exact
252
- version, never "something newer" — a consumer several releases behind would otherwise be satisfied by
253
- a publish that predates the change. **A child no longer bumps the version** (joshuafolkken/kit#1486):
254
- the version moves only when `pnpm josh release` runs, so the target is the release that includes the
255
- blocker, and the default branch's version just after its merge is the previous release, which would
256
- satisfy the wait at once. The publish check shares `josh propagate`'s implementation; it is not
257
- defined twice. History: `docs/maintainers/epic-commands-rationale.md` → "Cross-repository epics".
220
+ version, never "something newer". **A child no longer bumps the version**: the version moves only
221
+ when `pnpm josh release` runs, so the target is the release that includes the blocker, not the
222
+ default branch's version just after its merge (the previous release). The publish check shares
223
+ `josh propagate`'s implementation; it is not defined twice. History:
224
+ `docs/maintainers/epic-commands-rationale.md` → "Cross-repository epics".
258
225
 
259
226
  ## `josh epic:bundle <N>` — does this new issue belong with one already filed?
260
227
 
@@ -276,4 +243,6 @@ run it by hand only when that step printed `⚠`. **It recommends; it writes not
276
243
  choosing between epics, and the `--decision-file` record that pays for the choice. `Nothing to
277
244
  bundle.` needs no further read.
278
245
 
279
- History: `docs/maintainers/epic-commands-rationale.md` → "`epic:bundle` — why issues filed apart are bundled afterwards".
246
+ History: `docs/maintainers/epic-commands-rationale.md` → "`epic:bundle` — why issues filed apart are bundled afterwards";
247
+ the reasons behind `epic-bundle.md`: `docs/maintainers/epic-commands-rationale.md` → "`epic:bundle` — why each answer reads as it does";
248
+ behind `execution-waves.md`: `docs/maintainers/epic-commands-rationale.md` → "Execution waves — why a wave is not a mechanism".
@@ -5,60 +5,40 @@ or a choice between epics — or when the answer is one the summary in the `epic
5
5
  (`SKILL.md` → "`josh epic:bundle <N>` — does this new issue belong with one already filed?") does not
6
6
  settle. `Nothing to bundle.` needs neither.
7
7
 
8
- "Two or more always means an epic" only fires when one request is split on the spot. Two issues filed
9
- days apart that turn out to be the front and back of one job are executed separately, in whatever
10
- order, with the reasoning recorded nowhere.
11
-
12
8
  **Only two things count as a signal**: the issues referring to each other in prose, or a `blocked-by`
13
9
  already recorded between them. **A similar title never counts on its own** — "related" expands
14
10
  without limit, and the threshold is what keeps an unrelated issue out.
15
11
 
16
12
  **The search is not limited to the open backlog.** Every issue number the subject's body names is read
17
- on its own, whatever its state — otherwise the command answers correctly only in the minutes between
18
- a follow-up issue being filed and its parent closing (joshuafolkken/kit#947). A **closed** reference
19
- counts only when an open epic already tracks it, since the answer worth recovering is `add_to_epic`;
20
- an epic created over a closed issue has nothing left to run. An **open** reference counts either way.
21
- A read that fails — and a reference the per-issue cap never reached — is reported as a gap, never
22
- folded into "no strong signal". A number that answers with a **pull request** is not a candidate at
23
- all: `repos/{owner}/{repo}/issues/<N>` serves one too, and a merged PR does not report `CLOSED`.
13
+ on its own, whatever its state. A **closed** reference counts only when an open epic already tracks
14
+ it, since the answer worth recovering is `add_to_epic`; an epic created over a closed issue has
15
+ nothing left to run. An **open** reference counts either way. A read that fails — and a reference the
16
+ per-issue cap never reached — is reported as a gap, never folded into "no strong signal". A number
17
+ that answers with a **pull request** is not a candidate at all: `repos/{owner}/{repo}/issues/<N>`
18
+ serves one too, and a merged PR does not report `CLOSED`.
24
19
 
25
20
  **A number that does not exist is not a gap.** A typo, or another repository's number quoted in
26
21
  prose, is dropped in silence — neither a candidate nor something the command reports it could not
27
- read. Reported as a gap it puts `⚠ Could not read #N.` above the verdict, and the could-not-answer rule
28
- (`prompts/review.md` → "Three-way disposition after the cap") stops an unattended run on exactly that, for a reference that never existed (joshuafolkken/kit#957). **The two
29
- are told apart by HTTP status, never by `gh`'s wording**: 404 is nothing at that number, 403 and 429
30
- are a rate limit. GitHub answers 404 for an issue the token may not see as well, so as not to leak
31
- its existence — which does not reach this command, because it probes the repository whose open issues
32
- it has just listed. The probe costs one REST request and runs **only** when a read has already
33
- failed, and only on the path that needs the distinction: the backlog's own relation reads, up to two
34
- hundred of them, never pay it, and the referenced-number reads are capped at twenty. **Only the
35
- subject's own body is followed** — the reverse direction would scan every closed issue, and a
36
- follow-up already names its parent. The reference parsing is the same implementation as
37
- `epic:audit`'s implicit-dependency check, applied to the backlog instead of one epic. The open backlog
38
- is small enough to scan whole, so there is no index or cache.
22
+ read. **The two are told apart by HTTP status, never by `gh`'s wording**: 404 is nothing at that
23
+ number, 403 and 429 are a rate limit. The referenced-number reads are capped at twenty, and **only
24
+ the subject's own body is followed**.
39
25
 
40
26
  **`none` is a legitimate answer** — a self-review outside any workflow has no current issue to point
41
27
  at, so the issue stays in the backlog: what the procedure requires is running the command and
42
28
  following its answer, not landing every issue in an epic. The review-cap follow-up's filing and the
43
29
  answer table it acts on are `prompts/review.md` → "Three-way disposition after the cap".
44
30
 
45
- **Every row that *places* the issue asserts a negative, so a cut epic listing withholds all of them**
46
- (joshuafolkken/kit#1697). "No epic already tracks this issue" — which `create_epic` asserts about the
47
- candidates too — is only as good as the listing it was read from, and an epic past the cut tracks its
48
- children invisibly. **`add_to_epic` rests on it as much as `create_epic` does**: adding the issue to
49
- the epic a *candidate* sits in, while an unseen epic already tracks the issue itself, is the same
50
- duplicate by another route. The cut was already on standard error
51
- (`⚠ The epic listing …`) while standard output went on printing an executable
52
- instruction such as `Create an epic for these (Tier A — do it).` — and the rule that reads a warning as "could not answer" (`prompts/review.md` → "Three-way
53
- disposition after the cap") is written for one above
54
- `Nothing to bundle.`, so it never reached this verdict. Acted on as Tier A, that is a **second epic
55
- over an already-tracked issue**, which the auto-close and `epic:next` cannot both be right about
56
- (joshuafolkken/kit#943). The verdict now says so itself:
31
+ **Every row that *places* the issue asserts a negative, so a cut epic listing withholds all of them.**
32
+ "No epic already tracks this issue" — which `create_epic` asserts about the candidates too — is only
33
+ as good as the listing it was read from, and an epic past the cut tracks its children invisibly.
34
+ **`add_to_epic` rests on it as much as `create_epic` does**: adding the issue to the epic a
35
+ *candidate* sits in, while an unseen epic already tracks the issue itself, is the same duplicate by
36
+ another route. The verdict says so itself:
57
37
 
58
38
  ```text
59
39
  Could not confirm which epic already tracks these — do not place this issue in one.
60
40
  the epics were not read in full, so an epic already tracking one of these may never have been seen
61
- Related: #1662
41
+ Related: #<N>
62
42
  ```
63
43
 
64
44
  **The children and the order are deliberately absent** — they are the recipe for the placement that
@@ -66,31 +46,26 @@ line says not to make. The exit code stays `0`, as it does for every other "do n
66
46
  survives the cut is a membership that *was* found**: the table's first row names the epic it read
67
47
  tracking the issue, and epics past the cut cannot unseat it.
68
48
 
69
- **Placing an issue is not merging epics, and reading it as one is what used to stop runs.** Bundling
70
- is reversible — one `epic --add` moves an issue to a different epic — so choosing between two
71
- candidate epics is Tier A: take the one you recommend, and write the decision (what was taken, what
72
- was rejected, why, and the date) on **both** the issue and the epic's `## Decisions`. **Merging two
73
- epics is a different action, and nothing here proposes it.**
74
-
75
- **An epic and its own parent no longer produce the spread verdict at all** (joshuafolkken/kit#1079).
76
- They were never two peers to choose between — the parent already contains the child — so the pair is
77
- narrowed to the inner epic and the issue is added there. The verdict had recorded three such false
78
- positives, one of which stopped a whole batch over an issue whose implementation was finished and
79
- whose pull request was mergeable. **The narrowing drops parents, never peers**: one unrelated epic
80
- beside a nested chain still asks, and so does a cyclic declaration, where there is no inner epic to
81
- pick. Stop only where the epics left are genuinely too close to separate, which is the toss-up
82
- Tier B is for and is rare.
83
-
84
- **The decision record is what pays for the autonomy.** Skipping it is not a shortcut past a
85
- formality — it is the half that makes an unattended choice auditable, and without it the run has
86
- simply taken a decision nobody can find afterwards.
49
+ **Placing an issue is not merging epics.** Bundling is reversible — one `epic --add` moves an issue
50
+ to a different epic — so choosing between two candidate epics is Tier A: take the one you recommend,
51
+ and write the decision (what was taken, what was rejected, why, and the date) on **both** the issue
52
+ and the epic's `## Decisions`. **Merging two epics is a different action, and nothing here proposes
53
+ it.**
54
+
55
+ **An epic and its own parent do not produce the spread verdict at all.** The parent already contains
56
+ the child, so the pair is narrowed to the inner epic and the issue is added there. **The narrowing
57
+ drops parents, never peers**: one unrelated epic beside a nested chain still asks, and so does a
58
+ cyclic declaration, where there is no inner epic to pick. Stop only where the epics left are
59
+ genuinely too close to separate, which is the toss-up Tier B is for and is rare.
60
+
61
+ **The decision record is what pays for the autonomy** — without it the run has taken a decision
62
+ nobody can find afterwards.
87
63
 
88
64
  **Write both halves in the one call that places the issue: `pnpm josh epic --add <E> <N...>
89
- --decision-file <path|->`** (joshuafolkken/kit#1350). It appends the record to the epic's
90
- `## Decisions` inside the body edit the insertion already makes — so the epic half costs no round trip
91
- — and posts the same text as a comment on each child added. **Never hand-edit the epic body to add the
92
- entry**: that is the operation `--add` exists to remove, and paying for it by hand is why the entry got
93
- skipped. Two constraints on the record's own text, both refused before anything is written:
65
+ --decision-file <path|->`.** It appends the record to the epic's `## Decisions` inside the body edit
66
+ the insertion already makes, and posts the same text as a comment on each child added. **Never
67
+ hand-edit the epic body to add the entry** — that is the operation `--add` exists to remove. Two
68
+ constraints on the record's own text, both refused before anything is written:
94
69
 
95
70
  - **No line that is *nothing but* a `#A -> #B` chain.** Such a line is read as part of the epic's
96
71
  declaration wherever it sits in the body, so the record would declare an order nobody decided. Quote
@@ -105,10 +80,10 @@ decision" says what to do instead.
105
80
  **Its sibling runs before the filing, not after it: `pnpm josh issue:scout "<title>"`.** That command
106
81
  answers the same epic question for an issue that does not exist yet — this decision, called rather
107
82
  than restated — and beside it the one thing this one deliberately refuses: whether the work has
108
- already been filed, from a title comparison (joshuafolkken/kit#1252). **Both run**, and neither
109
- replaces the other: `pnpm josh issue:file` runs the scout before it creates the issue, and
110
- `epic:bundle` afterwards, from the real number and the relations recorded against it.
111
- Full behavior: `docs/josh-commands-backlog.md` → "`josh issue:file`".
83
+ already been filed, from a title comparison. **Both run**, and neither replaces the other:
84
+ `pnpm josh issue:file` runs the scout before it creates the issue, and `epic:bundle` afterwards, from
85
+ the real number and the relations recorded against it. Full behavior:
86
+ `docs/josh-commands-backlog.md` → "`josh issue:file`".
112
87
 
113
88
  **When the relation carries an order, record it** in `blocked-by` and in the epic's `Dependencies` —
114
89
  on an addition as much as on a new epic. Without it the batch survives and the reason for it does