@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
@@ -5,8 +5,7 @@ import { propagate_targets, type Manifest } from '#scripts/propagate/propagate-t
5
5
  import { KIT_PACKAGE_NAME } from '#scripts/version/kit-descriptor'
6
6
  import { z } from 'zod'
7
7
 
8
- // Which `@joshuafolkken/*` toolkits `josh adopt` can upgrade in the repository it is run from
9
- // (joshuafolkken/kit#1085).
8
+ // Which `@joshuafolkken/*` toolkits `josh adopt` can upgrade in the repository it is run from.
10
9
  //
11
10
  // Discovery is a filesystem fact rather than a roster written here: a hardcoded list would go stale
12
11
  // the day a fourth toolkit is published, and a project that depends on only one of them would be
@@ -112,7 +111,7 @@ function resolve_toolkit(project_root: string, package_name: string): Release |
112
111
  // package turns out to be. A package that is installed perfectly well and simply ships **no** CLI is
113
112
  // a scoped *library* rather than a toolkit: nothing about it is broken, so it is not this, and it is
114
113
  // not misplaced either. The `@joshuafolkken/` prefix alone cannot tell the two apart, which is why
115
- // the question is asked of the installed `bin` field (joshuafolkken/kit#1540 review round 1).
114
+ // the question is asked of the installed `bin` field.
116
115
  function is_unreachable_toolkit(project_root: string, package_name: string): boolean {
117
116
  const installed = read_installed_manifest(project_root, package_name)
118
117
  if (installed === undefined) return true
@@ -153,8 +152,8 @@ function all_declared_toolkits(project_root: string): ReadonlyArray<string> {
153
152
  }
154
153
 
155
154
  // The other half of the same read: which declared packages the run cannot reach at all. Dropping
156
- // them silently is what let a partial install sync kit alone and revert the overlay tier
157
- // (joshuafolkken/kit#1540), so the caller refuses on this list rather than discovering it as a
155
+ // them silently is what let a partial install sync kit alone and revert the overlay tier,
156
+ // so the caller refuses on this list rather than discovering it as a
158
157
  // shorter plan. A scoped library that ships no CLI appears in neither list, because nothing about it
159
158
  // is broken.
160
159
  function unresolved_toolkits(project_root: string): ReadonlyArray<string> {
@@ -9,8 +9,7 @@ import { adopt_logic } from './adopt-logic'
9
9
  import { adopt_toolkits } from './adopt-toolkits'
10
10
 
11
11
  // `josh adopt` — upgrade every `@joshuafolkken/*` toolkit installed in this repository to latest,
12
- // sync each one's managed files, run the verification gate, and open the issue and pull request
13
- // (joshuafolkken/kit#1085).
12
+ // sync each one's managed files, run the verification gate, and open the issue and pull request.
14
13
  //
15
14
  // It is `josh propagate` seen from the other end: propagation stands in the supplier and pushes one
16
15
  // released version out to every consumer, adoption stands in the consumer and pulls whatever is
@@ -67,7 +66,7 @@ function run_sequence(target: PropagateTarget, plan: ReleasePlan | undefined): n
67
66
  }
68
67
 
69
68
  // A declared toolkit that cannot be carried stops the run, whichever of the two ways it fell out —
70
- // placed under `dependencies`, or declared with no runnable CLI here (joshuafolkken/kit#1540). The
69
+ // placed under `dependencies`, or declared with no runnable CLI here. The
71
70
  // refusal names each one and its cause, so the exclusion is still reported as it was before; what
72
71
  // changed is that it no longer leaves the run to sync kit alone and revert the overlay tier.
73
72
  //
@@ -16,8 +16,8 @@ interface AgentArgv {
16
16
  type AgentArgvResult =
17
17
  { kind: 'argv'; argv: AgentArgv; profile: AgentProfile } | { kind: 'rejected'; note: string }
18
18
 
19
- // **`session_id` forces the fresh session's id, and only the Claude path can honour it**
20
- // (joshuafolkken/kit#2407). Codex has no such flag, and the run-state report reads Claude transcripts
19
+ // **`session_id` forces the fresh session's id, and only the Claude path can honour it**.
20
+ // Codex has no such flag, and the run-state report reads Claude transcripts
21
21
  // alone, so an OpenAI scheduler simply builds as before; whiff attribution is a Claude-transcript
22
22
  // property, so nothing is lost by the omission.
23
23
  function build(
@@ -31,7 +31,7 @@ function build(
31
31
  : claude_agent_argv.build(invocation, profile, session_id, cwd)
32
32
  }
33
33
 
34
- // The resume counterpart of `build` (joshuafolkken/kit#2317). Only the Claude path resumes by session
34
+ // The resume counterpart of `build`. Only the Claude path resumes by session
35
35
  // id; an OpenAI lane carries no such id at the outage re-dispatch, so it falls back to a fresh build —
36
36
  // which is never reached in practice, because `lane-resume.ts` only plans a resume for an Anthropic
37
37
  // provider. The fallback keeps this total rather than throwing on a provider it was not handed.
@@ -47,7 +47,7 @@ function build_resume(
47
47
  }
48
48
 
49
49
  // **`session_id` threads to the Claude build, so a wake launched in a lane's work tree still forces
50
- // its transcript id** (joshuafolkken/kit#2407). It is optional, so every other caller of the
50
+ // its transcript id**. It is optional, so every other caller of the
51
51
  // cwd-scoped build is unchanged.
52
52
  function with_profile_in(
53
53
  invocation: string,
@@ -62,7 +62,7 @@ function with_profile_in(
62
62
  }
63
63
 
64
64
  // A resume build under the same profile diagnostics as `with_profile_in`, so a lane re-dispatch that
65
- // resumes a session runs the identical readiness check a fresh one does (joshuafolkken/kit#2317).
65
+ // resumes a session runs the identical readiness check a fresh one does.
66
66
  function with_resume_in(
67
67
  invocation: string,
68
68
  profile: AgentProfile,
@@ -92,8 +92,8 @@ function resolve(
92
92
  return resolved.kind === 'rejected' ? resolved : with_profile(invocation, resolved.profile)
93
93
  }
94
94
 
95
- // **A cut relaunch's profile, resolved for the phase the resumed child is entering**
96
- // (joshuafolkken/kit#2382). A stored lane profile keeps its model and takes only the phase's effort; a
95
+ // **A cut relaunch's profile, resolved for the phase the resumed child is entering**.
96
+ // A stored lane profile keeps its model and takes only the phase's effort; a
97
97
  // lane without one resolves the worker for the phase. An env override wins over the phase in either path.
98
98
  function resume_argv(
99
99
  invocation: string,
@@ -30,7 +30,7 @@ const PROVIDER_CLI_TABLE: Readonly<Record<AgentProvider, ProviderCli>> = {
30
30
  openai: { command: 'codex', name: 'Codex CLI', update: 'npm install -g @openai/codex@latest' },
31
31
  }
32
32
 
33
- // **The oldest CLI that can run each pinned model** (joshuafolkken/kit#2415). An older CLI either
33
+ // **The oldest CLI that can run each pinned model**. An older CLI either
34
34
  // rejects the id after the lane has started or quietly runs something else, so the launch is refused
35
35
  // here instead. A model with no entry — a lane's recorded pre-migration model, or a person's override —
36
36
  // is not version-checked, so an existing lane resumes on the CLI it already ran on.
@@ -106,7 +106,7 @@ function check_auth(cli: ProviderCli, ports: DiagnosticPorts): DiagnosticResult
106
106
  }
107
107
 
108
108
  // The model is checked as it was resolved: a refusal names the update and stops, and nothing here
109
- // retries or swaps in another model (joshuafolkken/kit#2415).
109
+ // retries or swaps in another model.
110
110
  function check(profile: AgentProfile, ports: DiagnosticPorts = default_ports): DiagnosticResult {
111
111
  const cli = PROVIDER_CLI_TABLE[profile.provider]
112
112
  const version = check_version(profile.model, cli, ports)
@@ -2,7 +2,7 @@ import { json_value } from '#scripts/lib/json-value'
2
2
  import { claude_result_event, type ClaudeResultEvent } from './claude-result-event'
3
3
 
4
4
  // The exit record of a dispatched lane child — the terminal `result` event a `claude -p` session
5
- // writes as the last line of its transcript (joshuafolkken/kit#2139). `run:ending` classifies how a
5
+ // writes as the last line of its transcript. `run:ending` classifies how a
6
6
  // child ended from it, so this reads the *record*, not the liveness state `agent-event.ts` folds a
7
7
  // transcript into: `subtype`, `num_turns` and `permission_denials` are dropped by that fold, and they
8
8
  // are exactly what a park comment has to name.
@@ -1,5 +1,5 @@
1
1
  // The mark every agent session kit launches itself carries — a lane child, a ship reviewer, a woken
2
- // `run:wake` session (joshuafolkken/kit#3245).
2
+ // `run:wake` session.
3
3
  //
4
4
  // **Those sessions run under `claude -p`, and nobody reads their replies.** Their output goes to a
5
5
  // stream-json log, and the only reader of the final text is the exit record's failure reason. So the
@@ -4,6 +4,7 @@ import { gh_cli_token } from '#scripts/gh/gh-cli-token'
4
4
  import { PLATFORM_TEMP_ROOT } from '#scripts/josh/platform-temporary'
5
5
  import { agent_headless } from './agent-headless'
6
6
  import { agent_role_profile, type AgentProfile } from './agent-role-profile'
7
+ import { agent_session_role } from './agent-session-role'
7
8
  import { codex_home_source } from './codex-home-source'
8
9
 
9
10
  const OPENAI_PROVIDER = 'openai'
@@ -60,7 +61,11 @@ function build(
60
61
  ): LaunchEnvironment {
61
62
  if (profile === undefined) return environment
62
63
 
63
- const marked = { ...agent_headless.environment(), ...environment }
64
+ const marked = {
65
+ ...agent_headless.environment(),
66
+ ...agent_session_role.env_for(profile.role),
67
+ ...environment,
68
+ }
64
69
  if (profile.provider !== OPENAI_PROVIDER) return marked
65
70
 
66
71
  const base = { ...openai_environment(), ...marked }
@@ -10,7 +10,7 @@ const MAX_VALUE_LENGTH = 4096
10
10
  const ROLE_SCHEMA = z.enum(['scheduler', 'worker', 'reviewer'])
11
11
  const PROVIDER_SCHEMA = z.enum(['anthropic', 'openai'])
12
12
  const EFFORT_SCHEMA = z.enum(['low', 'medium', 'high', 'xhigh', 'max'])
13
- // The run phases effort may vary by (joshuafolkken/kit#2382). They are the cut boundaries a lane child
13
+ // The run phases effort may vary by. They are the cut boundaries a lane child
14
14
  // resumes across — `run-cut.ts` imports these names for its own cut record, so the phase a run passes
15
15
  // and the phase this table is keyed on cannot drift. A phase-less call resolves the role default, which
16
16
  // is what keeps every existing caller unchanged.
@@ -31,7 +31,7 @@ type AgentEnvironment = Readonly<Record<string, string | undefined>>
31
31
  type ProfileResult = { kind: 'profile'; profile: AgentProfile } | { kind: 'rejected'; note: string }
32
32
  type Rejected = Extract<ProfileResult, { kind: 'rejected' }>
33
33
  type EffortResult = Rejected | { kind: 'effort'; effort: AgentEffort }
34
- type ProviderResult = Rejected | { kind: 'provider'; provider: AgentProvider }
34
+ type ProviderResult = Rejected | { kind: 'provider'; provider: AgentProvider; is_default?: true }
35
35
 
36
36
  const SCHEDULER: AgentRole = 'scheduler'
37
37
  const WORKER: AgentRole = 'worker'
@@ -40,7 +40,7 @@ const IMPLEMENTATION_PHASE: AgentPhase = 'implementation'
40
40
  const PRE_GATE_PHASE: AgentPhase = 'pre-gate'
41
41
  const ANTHROPIC_PROVIDER: AgentProvider = 'anthropic'
42
42
  const OPENAI_PROVIDER: AgentProvider = 'openai'
43
- // **Pinned model ids, never a floating alias** (joshuafolkken/kit#2415). An alias such as `opus` moves
43
+ // **Pinned model ids, never a floating alias**. An alias such as `opus` moves
44
44
  // whenever the CLI moves it, so a run log could not say which model produced it and a model migration
45
45
  // could not be measured apart from everything else. A new lane records the id it resolved; a lane
46
46
  // created before a migration keeps the model it recorded (`with_phase_effort` leaves it untouched).
@@ -72,7 +72,7 @@ const OPENAI_PROFILES: Readonly<Record<AgentRole, AgentProfile>> = {
72
72
 
73
73
  const PROVIDER_PROFILES = { anthropic: DEFAULT_PROFILES, openai: OPENAI_PROFILES }
74
74
 
75
- // **Effort as a function of the run phase, not the role alone** (joshuafolkken/kit#2382). For the first
75
+ // **Effort as a function of the run phase, not the role alone**. For the first
76
76
  // merge only the mechanical ship/bookkeeping region is lowered: the pre-gate resume drives the gate,
77
77
  // commit, PR and merge, applying fixes the gate has already named — work delegation.md calls the opposite
78
78
  // of judgement. The design-judgment implementation phases keep the role default, as does any role/phase
@@ -162,24 +162,32 @@ function has_session(environment: AgentEnvironment, keys: ReadonlyArray<string>)
162
162
  return keys.some((key) => trimmed(environment[key]) !== undefined)
163
163
  }
164
164
 
165
- function session_rejection(is_conflicting: boolean): Rejected {
166
- const note = is_conflicting
167
- ? 'both Codex and Claude Code sessions were detected'
168
- : 'no Codex or Claude Code session was detected'
169
-
170
- return { kind: 'rejected', note }
165
+ const CONFLICTING_SESSIONS: Rejected = {
166
+ kind: 'rejected',
167
+ note: 'both Codex and Claude Code sessions were detected',
171
168
  }
172
169
 
173
- // The provider a detached launcher hands a process that is not itself an agent session
174
- // (joshuafolkken/kit#2456). `detached_launch` strips the parent-session keys — the very keys the
170
+ // The provider a detached launcher hands a process that is not itself an agent session.
171
+ // `detached_launch` strips the parent-session keys — the very keys the
175
172
  // detection below reads — so a `josh ship --detach --review` supervisor could never resolve its reviewer.
176
173
  // **It is a fallback, read only when no session is detected**: the mark is inherited by everything the
177
174
  // supervisor starts, and a real session's own keys must keep deciding for that session.
178
175
  const HANDED_PROVIDER_KEY = 'JOSH_AGENT_PROVIDER'
179
176
 
177
+ // **Nothing named a provider, so Claude Code is the default** — a person typing `josh lane:launch` in a
178
+ // plain terminal has no session and no mark. Only silence defaults: two detected sessions and a mark
179
+ // naming no allowed provider still refuse. `is_default` lets a launch say so, and lets `josh cost` keep
180
+ // reading "no session of its own" rather than pricing another session's transcript.
181
+ const DEFAULT_PROVIDER: ProviderResult = {
182
+ kind: 'provider',
183
+ provider: ANTHROPIC_PROVIDER,
184
+ is_default: true,
185
+ }
186
+ const DEFAULT_NOTICE = ` No agent session or ${HANDED_PROVIDER_KEY} was found, so the provider defaulted to ${ANTHROPIC_PROVIDER} (Claude Code).`
187
+
180
188
  function handed_provider(environment: AgentEnvironment): ProviderResult {
181
189
  const value = trimmed(environment[HANDED_PROVIDER_KEY])
182
- if (value === undefined) return session_rejection(false)
190
+ if (value === undefined) return DEFAULT_PROVIDER
183
191
  const parsed = PROVIDER_SCHEMA.safeParse(value)
184
192
 
185
193
  return parsed.success
@@ -192,7 +200,7 @@ function detected_provider(environment: AgentEnvironment): ProviderResult | unde
192
200
  const has_codex = has_session(environment, [CODEX_SESSION_KEY])
193
201
  const has_claude = has_session(environment, agent_session_environment.PARENT_SESSION_KEYS)
194
202
 
195
- if (has_codex === has_claude) return has_codex ? session_rejection(true) : undefined
203
+ if (has_codex === has_claude) return has_codex ? CONFLICTING_SESSIONS : undefined
196
204
 
197
205
  return { kind: 'provider', provider: has_codex ? OPENAI_PROVIDER : ANTHROPIC_PROVIDER }
198
206
  }
@@ -201,18 +209,34 @@ function resolve_provider(environment: AgentEnvironment = process.env): Provider
201
209
  return detected_provider(environment) ?? handed_provider(environment)
202
210
  }
203
211
 
204
- // Whether this session is woken when a background command it started completes
205
- // (joshuafolkken/kit#2653). Claude Code re-invokes the session at the completion; a Codex session is not
212
+ // The sentence a launch appends when it ran on the default, so falling back is never silent; empty when
213
+ // a session or a mark decided.
214
+ function default_notice(environment: AgentEnvironment = process.env): string {
215
+ const selected = resolve_provider(environment)
216
+
217
+ return selected.kind === 'provider' && selected.is_default === true ? DEFAULT_NOTICE : ''
218
+ }
219
+
220
+ // The same sentence on stderr, for a launcher whose own line is a verdict or a brief another process
221
+ // reads: `run:wake --start`, `review:brief` and `ship --detach` default exactly as a dispatch does.
222
+ function warn_of_default(environment: AgentEnvironment = process.env): void {
223
+ const notice = default_notice(environment).trim()
224
+
225
+ if (notice !== '') console.error(notice)
226
+ }
227
+
228
+ // Whether this session is woken when a background command it started completes.
229
+ // Claude Code re-invokes the session at the completion; a Codex session is not
206
230
  // re-invoked, so a parent there can only wait by polling, each poll a model call over its whole context.
207
- // Only a resolved Codex session answers no — an unresolved one keeps the behavior it had before.
231
+ // Only a resolved Codex session answers no — a defaulted or conflicting one keeps the callback.
208
232
  function has_completion_callback(environment: AgentEnvironment = process.env): boolean {
209
233
  const selected = resolve_provider(environment)
210
234
 
211
235
  return selected.kind !== 'provider' || selected.provider !== OPENAI_PROVIDER
212
236
  }
213
237
 
214
- // The mark a detached launch sets on its child: the provider this session resolved, or nothing when it
215
- // resolved none — the child then fails the same way this session would have.
238
+ // The mark a detached launch sets on its child: the provider this session resolved, the default
239
+ // included, or nothing when it was refused — the child then fails the same way this session would have.
216
240
  function handoff_environment(
217
241
  environment: AgentEnvironment = process.env,
218
242
  ): Readonly<Record<string, string>> {
@@ -230,7 +254,7 @@ function validate(profile: AgentProfile, model_key: string): ProfileResult {
230
254
  }
231
255
 
232
256
  // The effort a phase resolves to before any env override: the phase's own value where the table names
233
- // one, otherwise the fallback (joshuafolkken/kit#2382). A phase-less or unrecognized call returns the
257
+ // one, otherwise the fallback. A phase-less or unrecognized call returns the
234
258
  // fallback unchanged, which is what keeps every existing caller reading the current default.
235
259
  function phase_effort(
236
260
  role: AgentRole,
@@ -244,7 +268,7 @@ function phase_effort(
244
268
  }
245
269
 
246
270
  // The effort a stored profile takes in a phase: an env override wins, then the phase value, then the
247
- // profile's own effort (joshuafolkken/kit#2382). A cut relaunch that keeps a lane's stored model resolves
271
+ // profile's own effort. A cut relaunch that keeps a lane's stored model resolves
248
272
  // the effort through this so a person's `JOSH_WORKER_EFFORT` is never overwritten by the phase value.
249
273
  function overridden_effort(
250
274
  profile: AgentProfile,
@@ -257,7 +281,7 @@ function overridden_effort(
257
281
  }
258
282
 
259
283
  // A stored profile with its effort resolved for the phase the run is entering, its model and provider
260
- // left as they were (joshuafolkken/kit#2382).
284
+ // left as they were.
261
285
  function with_phase_effort(
262
286
  profile: AgentProfile,
263
287
  phase: string,
@@ -301,6 +325,7 @@ function parse(value: unknown): AgentProfile | undefined {
301
325
  }
302
326
 
303
327
  const agent_role_profile = {
328
+ CODEX_SESSION_KEY,
304
329
  DEFAULT_PROFILES,
305
330
  HANDED_PROVIDER_KEY,
306
331
  IMPLEMENTATION_PHASE,
@@ -311,6 +336,7 @@ const agent_role_profile = {
311
336
  REVIEWER,
312
337
  SCHEDULER,
313
338
  WORKER,
339
+ default_notice,
314
340
  describe,
315
341
  handoff_environment,
316
342
  has_completion_callback,
@@ -318,6 +344,7 @@ const agent_role_profile = {
318
344
  parse,
319
345
  resolve,
320
346
  resolve_provider,
347
+ warn_of_default,
321
348
  with_phase_effort,
322
349
  }
323
350
 
@@ -0,0 +1,32 @@
1
+ import { agent_role_profile, type AgentRole } from './agent-role-profile'
2
+
3
+ // The role an agent session kit launched was launched in — the fact that tells a ship reviewer apart
4
+ // from the implementing child whose checkout it reads.
5
+ //
6
+ // **A reviewer inherits everything else its launcher carries.** The ship supervisor is started by a
7
+ // lane child, so the reviewer it launches in the same checkout carries that child's `JOSH_LANE_CHILD`
8
+ // mark and its run hold, and nothing in the environment said "this session reviews, it does not
9
+ // implement". The context cuts read it as the implementing child, refused its findings `Write`, and the
10
+ // cut it then took relaunched a second child beside the supervisor's own repair
11
+ // (joshuafolkken/kit#3623). A reviewer is a one-shot session its supervisor is waiting on, so there is
12
+ // no process to hand its work to.
13
+ //
14
+ // **It is set at the one place agent sessions are launched, and on every one of them.** Like
15
+ // `agent_headless`, it is composed in `agent_launch_environment.build`; because every profiled launch
16
+ // writes its own role, a value inherited from a launcher is always overwritten and a reviewer's mark
17
+ // cannot leak into a worker it did not start.
18
+ const KEY = 'JOSH_AGENT_ROLE'
19
+
20
+ type EnvironmentSource = Readonly<Record<string, string | undefined>>
21
+
22
+ function environment_for(role: AgentRole): Record<string, string> {
23
+ return { [KEY]: role }
24
+ }
25
+
26
+ function is_reviewer(source: EnvironmentSource = process.env): boolean {
27
+ return source[KEY] === agent_role_profile.REVIEWER
28
+ }
29
+
30
+ const agent_session_role = { KEY, env_for: environment_for, is_reviewer }
31
+
32
+ export { agent_session_role }
@@ -1,7 +1,7 @@
1
1
  import type { ClaudeResultEvent } from './claude-result-event'
2
2
 
3
3
  // Whether a dispatched lane child's exit record is an API-connection outage rather than a child that
4
- // stopped mid-implementation on its own (joshuafolkken/kit#2240). Measured twice: on 2026-09-15 four
4
+ // stopped mid-implementation on its own. Measured twice: on 2026-09-15 four
5
5
  // children ended `The socket connection was closed unexpectedly`, and on 2026-09-21 a child spent all
6
6
  // ten connection retries on `Unable to connect to API (ConnectionRefused)`. The parent read both as
7
7
  // ordinary failures — `in-progress` stripped, `needs-decision` applied, counted against the
@@ -11,16 +11,16 @@ const AGENT_COMMAND = 'claude'
11
11
  const AGENT_FLAGS: ReadonlyArray<string> = ['-p', '--verbose', '--output-format', 'stream-json']
12
12
  const MODEL_FLAG = '--model'
13
13
  const EFFORT_FLAG = '--effort'
14
- // Resumes a stored session by id (joshuafolkken/kit#2317). An `outage` re-dispatch passes the
14
+ // Resumes a stored session by id. An `outage` re-dispatch passes the
15
15
  // disconnected child's `session_id` so the relaunched process continues that conversation — its
16
16
  // accumulated context intact — rather than reading everything from scratch.
17
17
  const RESUME_FLAG = '--resume'
18
- // Forces a fresh session's id rather than resuming one (joshuafolkken/kit#2407). The wake supervisor
18
+ // Forces a fresh session's id rather than resuming one. The wake supervisor
19
19
  // generates the id, so it knows without asking the child which transcript that session will write —
20
20
  // `<session-id>.jsonl` — and can later attribute a whiff to a session it actually started rather than
21
21
  // to any transcript that happened to move while it was alive.
22
22
  const SESSION_ID_FLAG = '--session-id'
23
- // **A launched child carries only the tools a lane has ever used** (joshuafolkken/kit#2435). Every
23
+ // **A launched child carries only the tools a lane has ever used**. Every
24
24
  // tool definition and every user-side claude.ai connector rides on each request's cached preamble, and
25
25
  // across the lanes measured none of Artifact, Workflow or a connector was ever called, while
26
26
  // AskUserQuestion has nobody to answer it in an unattended lane. Narrowing them cut the preamble by
@@ -97,7 +97,7 @@ function build(
97
97
  }
98
98
 
99
99
  // The resume counterpart: the same vector with `--resume <session_id>` ahead of the model flags, so the
100
- // relaunched child continues the stored session rather than opening a new one (joshuafolkken/kit#2317).
100
+ // relaunched child continues the stored session rather than opening a new one.
101
101
  function build_resume(
102
102
  invocation: string,
103
103
  profile: AgentProfile,
@@ -19,21 +19,21 @@ const USAGE_SCHEMA = z.looseObject({
19
19
 
20
20
  interface ClaudeResultEvent {
21
21
  is_error: boolean
22
- // The exit-record fields a supervisor classifies a dispatched lane child's ending from
23
- // (joshuafolkken/kit#2139). `subtype` and `num_turns` describe how the turn ended, and
22
+ // The exit-record fields a supervisor classifies a dispatched lane child's ending from.
23
+ // `subtype` and `num_turns` describe how the turn ended, and
24
24
  // `permission_denials` is the count of tool calls the harness refused — the direct cause of a child
25
25
  // that stopped mid-implementation without parking, so a classifier can name it in the park comment.
26
26
  subtype: string | undefined
27
27
  num_turns: number | undefined
28
28
  permission_denials: number
29
- // The refused interactive ask lifted out of `permission_denials` (joshuafolkken/kit#2201). Where a
29
+ // The refused interactive ask lifted out of `permission_denials`. Where a
30
30
  // child reached for `AskUserQuestion` and was refused, its question and options are stranded in the
31
31
  // exit record; `run:ending` puts them into the park comment so a person can answer, instead of the
32
32
  // parent opening the JSONL by hand. Undefined when no denial was an interactive ask.
33
33
  refused_ask: string | undefined
34
34
  reason: string | undefined
35
35
  // The Claude Code session identifier the `-p --output-format stream-json` run wrote on its result
36
- // event (joshuafolkken/kit#2317). An `outage` re-dispatch reads it to resume the disconnected child's
36
+ // event. An `outage` re-dispatch reads it to resume the disconnected child's
37
37
  // stored session — recovering its accumulated context — rather than starting a fresh `fullrun`.
38
38
  // Undefined when the event carried none, which sends the re-dispatch down the fresh fallback.
39
39
  session_id: string | undefined
@@ -1,7 +1,7 @@
1
1
  import { hook_launch } from '#scripts/init/hook-launch'
2
2
 
3
- // `.codex/hooks.json` is derived from `.claude/settings.json`, never written by hand
4
- // (joshuafolkken/kit#2997). The hand copy carried every hook command twice, so a change to one side
3
+ // `.codex/hooks.json` is derived from `.claude/settings.json`, never written by hand.
4
+ // The hand copy carried every hook command twice, so a change to one side
5
5
  // left the other silently stale. Codex differs from Claude Code in three places only, and each is a
6
6
  // rule applied here rather than a line maintained in the copy:
7
7
  //
@@ -1,13 +1,10 @@
1
1
  import { z } from 'zod'
2
2
 
3
- // The tools a session uses to ask a person, and how to lift a refused ask out of an exit record
4
- // (joshuafolkken/kit#2201).
3
+ // The tools a session uses to ask a person, and how to lift a refused ask out of an exit record.
5
4
  //
6
5
  // **A dispatched lane child cannot ask a person.** It is a headless `claude -p` process, so an
7
- // interactive ask is refused — and with nowhere to route it the turn ends with nothing on the Issue,
8
- // the gap joshuafolkken/kit#2034 measured. Two consumers share the one notion of "an interactive ask":
9
- // the
10
- // `PreToolUse` rule that refuses it in a lane child (`scripts/rules/lane-interactive-ask.ts`), and
6
+ // interactive ask is refused — and with nowhere to route it the turn ends with nothing on the Issue.
7
+ // Two consumers share the one notion of "an interactive ask": the `PreToolUse` rule that refuses it in a lane child (`scripts/rules/lane-interactive-ask.ts`), and
11
8
  // `run:ending`, which reads the refused ask back out of the child's exit record so the parent can put
12
9
  // the question and its options into the park comment. Both read `INTERACTIVE_TOOLS`, so the set lives
13
10
  // here rather than in either.