@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
@@ -6,18 +6,16 @@ import { capped_output } from './capped-print'
6
6
  import { document_section } from './document-section'
7
7
  import { entry_read_set } from './entry-read-set'
8
8
 
9
- // `josh doc:section` — print one section of a markdown document (joshuafolkken/kit#1776).
9
+ // `josh doc:section` — print one section of a markdown document.
10
10
  //
11
- // **It exists because the documents already cite each other by section and the reader could only
12
- // fetch files.** `` `backlogrun-progress.md` → "The hand-off" `` names 249 lines; opening
13
- // `backlogrun-progress.md` costs far more. Every entry point pays that difference at the moment it
14
- // starts, before anything has been implemented.
11
+ // **It exists because the documents cite each other by section.** `` `backlogrun-progress.md` →
12
+ // "The hand-off" `` names one section; opening `backlogrun-progress.md` costs far more. Every entry
13
+ // point would pay that difference at the moment it starts, before anything has been implemented.
15
14
  //
16
15
  // **What it is not is a summary.** The section is printed verbatim, headings and all, so a run that
17
16
  // reads a section has read the same words a run that opened the file would have. Nothing is deferred
18
17
  // and nothing is condensed — the extent of the read changes, not its content, which is why this is
19
- // not the "read it later" scheme joshuafolkken/kit#1344 and joshuafolkken/kit#1460 each measured
20
- // never firing.
18
+ // not a "read it later" scheme, which never fires.
21
19
  //
22
20
  // **A heading that does not resolve is a refusal, not an empty answer.** A pointer whose target was
23
21
  // renamed would otherwise print nothing and read as a section with nothing in it — the one outcome
@@ -36,7 +34,7 @@ const USAGE = 'Usage: josh doc:section <file.md> "<heading>"'
36
34
  // **Every branch resolves against `root`, including the first.** Left relative to the process's own
37
35
  // directory, a bare name that happened to exist beside the caller would beat the document under
38
36
  // `root` and print a section of the wrong file — silently, which is the failure this command exists
39
- // to refuse (joshuafolkken/kit#1776 review round 2).
37
+ // to refuse.
40
38
  function resolve_document(name: string, root: string = process.cwd()): string {
41
39
  const named = path.resolve(root, name)
42
40
 
@@ -1,16 +1,13 @@
1
1
  // Reading one **section** of a markdown document, because a section is the unit these documents
2
- // cross-reference each other in (joshuafolkken/kit#1776).
2
+ // cross-reference each other in.
3
3
  //
4
- // **The reference form was already a section reference, and only the reader was missing.** Every
5
- // workflow document points at another one as `` `backlogrun-progress.md` → "The hand-off" `` — a file
6
- // *and* a heading. A reader with no way to fetch a heading has one move left, which is to open the
7
- // file, so a pointer at 249 lines was costing 2,121. `backlogrun.md` and its point-of-use phase
8
- // documents are opened for many such references and are among the largest items an entry reads.
4
+ // **The reference form is a section reference.** Every workflow document points at another one as
5
+ // `` `backlogrun-progress.md` → "The hand-off" `` — a file *and* a heading. A reader with no way to
6
+ // fetch a heading has one move left, which is to open the whole file.
9
7
  //
10
8
  // **Nothing here defers a read.** The section is fetched in the same turn, in the main line, by the
11
- // run that has to obey it — what changes is the extent of the fetch, never whether it happens. That
12
- // is the distinction joshuafolkken/kit#1344 and joshuafolkken/kit#1460 were written after: a rule
13
- // moved to "read it later" is a rule that measurably never fires, and this moves nothing to later.
9
+ // run that has to obey it — what changes is the extent of the fetch, never whether it happens. A rule
10
+ // moved to "read it later" is a rule that never fires, and this moves nothing to later.
14
11
 
15
12
  import { file_reader } from '#scripts/lib/read-file'
16
13
  import { document_scan } from './document-scan'
@@ -54,8 +51,7 @@ function to_heading(line: string, index: number): Heading | undefined {
54
51
  if (groups === undefined) return undefined
55
52
 
56
53
  // Destructured rather than read as properties: `noPropertyAccessFromIndexSignature` refuses
57
- // `groups.title`. The bracket form was refused too, until joshuafolkken/kit#1783 switched off the
58
- // `dot-notation` fix that rewrote it back — so this is a choice now rather than the only spelling.
54
+ // `groups.title`.
59
55
  const { hashes = '', title = '' } = groups
60
56
 
61
57
  return { level: hashes.length, title: title.trim(), line: index }
@@ -109,7 +105,7 @@ function line_of(starts: ReadonlyArray<number>, offset: number): number {
109
105
  return starts.filter((start) => start <= offset).length
110
106
  }
111
107
 
112
- // **A bold label is an anchor too** (joshuafolkken/kit#3248). The documents cite
108
+ // **A bold label is an anchor too**. The documents cite
113
109
  // `- **Output language follows …**` exactly as they cite a heading, and the reference tests accepted
114
110
  // both while this reader found only headings — so a green suite promised a section the command then
115
111
  // refused. A label may wrap across lines, so the scan runs over the whole text, not line by line.
@@ -4,8 +4,7 @@ import path from 'node:path'
4
4
  import { fileURLToPath } from 'node:url'
5
5
  import { document_section } from './document-section'
6
6
 
7
- // `josh edit:files <plan-path>` — apply several content-addressed edits in one call
8
- // (joshuafolkken/kit#2366).
7
+ // `josh edit:files <plan-path>` — apply several content-addressed edits in one call.
9
8
  //
10
9
  // **This is the write-side counterpart of `read:files`, and it reverses what kit#2202 rejected.**
11
10
  // kit#2202 folded the pre-edit *reads* into one call and left the edits to native multiple `Edit`
@@ -25,12 +24,12 @@ import { document_section } from './document-section'
25
24
  // order against the running text; if any of them fails to match, that file is left exactly as it was
26
25
  // and its failures are named. So a partial plan never leaves a file half-edited.
27
26
  //
28
- // **Only independent edits are folded (joshuafolkken/kit#2493).** An edit whose original range overlaps
27
+ // **Only independent edits are folded.** An edit whose original range overlaps
29
28
  // an earlier edit's of the same file, or whose match count that earlier edit changed, depends on it — it
30
29
  // addresses text that edit rewrote, removed or duplicated — and is refused as `dependent`. Such an edit is
31
30
  // issued on its own after the batch, so a fold never hides an ordering the author did not see.
32
31
  //
33
- // **`-` reads the plan from standard input (joshuafolkken/kit#2493)**, so a lane child passes its edits
32
+ // **`-` reads the plan from standard input**, so a lane child passes its edits
34
33
  // in the one call as a quoted heredoc (`pnpm josh edit:files - <<'EDITS'`) instead of writing a plan file
35
34
  // first — the quoted delimiter expands nothing, and the call carries the old/new pairs an `Edit` would.
36
35
 
@@ -1,5 +1,5 @@
1
1
  // The byte ceiling on what each workflow entry reads before it starts — the primary budget, a
2
- // ratchet like the per-document one (joshuafolkken/kit#2257).
2
+ // ratchet like the per-document one.
3
3
  //
4
4
  // **The per-document ceiling was a proxy for a run's cost, not the cost.** A run does not pay "one
5
5
  // document's size"; it pays the total its entry reads — the mandated skill files, the sections they
@@ -10,7 +10,7 @@
10
10
  // documents no entry reads (`document-reachability.ts` draws the line). A document an entry reads is
11
11
  // held by the entry total and carries no per-document ceiling, so neither budget holds it twice.
12
12
  //
13
- // THE CEILING IS BLOCK-QUANTIZED, exactly as the per-document one is (joshuafolkken/kit#2231): an
13
+ // THE CEILING IS BLOCK-QUANTIZED, exactly as the per-document one is: an
14
14
  // entry total is one number, so recording its raw size would make every lane that nudges a covered
15
15
  // document bump this shared line. The recorded ceiling is the smallest `BLOCK_BYTES` multiple at or
16
16
  // above the measured total, so growth within a block needs no edit and a crossing bumps to the same
@@ -44,74 +44,12 @@ interface EntryBudget {
44
44
  // size. Names exactly the entries `known_entries` offers: the test fails on a stale entry and on an
45
45
  // entry with no row, so the definition cannot rot as entries are added or removed.
46
46
  const ENTRY_READ_BUDGET: ReadonlyArray<EntryBudget> = [
47
- // Raised in joshuafolkken/kit#2289 when `pre-gate-cut.md` joined the point-of-use set: its ~29KB
48
- // read is a point-of-use read every entry's total now counts, a correction of an under-count rather
49
- // than new reading. Raised again in joshuafolkken/kit#2282 when the same document grew by its
50
- // status-quo decision record, and once more in joshuafolkken/kit#2295 when it recorded the
51
- // recent-context hand-off. Lowered in joshuafolkken/kit#2294 — the FIRST downward move on this
52
- // ratchet — when `pre-gate-cut.md` was compressed (37,786 B → ~20,300 B): every entry that reads it
53
- // crossed a block downward, so the recorded ceilings drop to the block multiples the stale-ratchet
54
- // message named rather than staying loose above the reduction. `kickoff` and the lane child rose one
55
- // block again in joshuafolkken/kit#2312 when `pre-gate-cut.md` recorded the resume-side cost the
56
- // conditional cut is built on; the other entries stayed within their block. `backlogrun` rose one
57
- // block in joshuafolkken/kit#2317 when `backlogrun-child.md`'s outage section recorded the
58
- // session-resume re-dispatch and the outage-fold window.
59
- // Raised in joshuafolkken/kit#2328 when `retrospective.md` joined the point-of-use set and `SKILL.md`
60
- // grew by `retrospective.md`: every entry that reads `SKILL.md` discovers the retrospective document, so its ~5KB
61
- // and the new section crossed a block for each. The lane child is exempt — it never runs the
62
- // retrospective (`run:step` answers `stop` for a child at the stop position), so it skips both.
63
- // joshuafolkken/kit#2335 recorded the drain-time firing with the operational detail in
64
- // `retrospective.md` (which the lane child skips) and a one-line pointer in `backlogrun-steps.md`, so
65
- // every entry stayed within its block rather than climbing back to a pre-#2294 ceiling the downward
66
- // ratchet holds shut. joshuafolkken/kit#2342 added the `--summary` close to `retrospective.md` in a
67
- // single sentence, kept short so every entry that reads it stays within its block.
68
- // Lowered for the lane child in joshuafolkken/kit#2357 — a downward move on this ratchet — when
69
- // `backlogrun-steps.md` left the child's point-of-use set: the child never opened the scheduler's step
70
- // list, so its ~48KB read crossed a block downward and the recorded ceiling drops to the block multiple
71
- // the stale-ratchet message named. The other entries still read it, so their rows hold.
72
- // joshuafolkken/kit#2345 added the `implementation-unit` delegation row (full fan-out procedure in
73
- // `docs/josh-commands-backlog.md` → "`josh fanout`"); `delegation.md` gained only a one-clause mention and a
74
- // pointer, folded into the existing enumeration and offset by tightening `delegation.md` prose, so every entry
75
- // stayed within its block (kickoff has no block of headroom — its pre-#2294 ceiling is the next
76
- // multiple, which the downward ratchet holds shut).
77
- // joshuafolkken/kit#2353 wired the watcher-guard note into `backlogrun-progress.md` (read by the three
78
- // planning entries): kickoff has no headroom, so the addition was offset by tightening that file's
79
- // heartbeat prose, keeping every entry within its existing block.
80
- // joshuafolkken/kit#2762 moved the rationale of five point-of-use documents to
81
- // `docs/maintainers/*-rationale.md`, and the ratchet holds the reduction. joshuafolkken/kit#2895 did
82
- // the same for eight more, lowering fullrun, halfrun and backlogrun one block each.
83
- // joshuafolkken/kit#2998 split the command reference, so every reference to an automation command
84
- // now names `josh-commands-automation.md`; the longer path tipped backlogrun one block over.
85
- // joshuafolkken/kit#2994 moved `CLAUDE.md`'s explanations to `docs/maintainers/claude-md-history.md`,
86
- // lowering backlogrun one block; kickoff's reduction was offset by joshuafolkken/kit#3024's longer
87
- // `wip-cap.md`, so its ceiling stays.
88
- // joshuafolkken/kit#3023 added the `prrun` keyword to `SKILL.md` and `CLAUDE.md`, tipping backlogrun
89
- // one block over; `prrun` reads `fullrun`'s set plus its own short manifest.
90
- // Lowered in joshuafolkken/kit#3078 — a correction of an over-count, not a trim: every entry was
91
- // charged for every global point-of-use document, so `kickoff` paid for `followup.md` and the
92
- // `backlogrun-*` phase documents it never opens. Each total now counts only what its path reaches.
93
- // joshuafolkken/kit#3077 trimmed non-resident rule bodies from `CLAUDE.md`, lowering fullrun, prrun
94
- // and backlogrun one block each.
95
- // Lowered in joshuafolkken/kit#3172: the heartbeat left `backlogrun-progress.md` for its own
96
- // `progress-watcher.md`, and `pre-gate-cut.md` became the lane child's alone, so fullrun, halfrun
97
- // and prrun stop paying for ~50KB of batch and lane procedure; backlogrun lost the moved prose.
98
- // Lowered in joshuafolkken/kit#3174: `SKILL.md` was cut to a manifest (~21KB → ~11KB) and the entry
99
- // sequence `fullrun`, `halfrun` and `prrun` shared moved into one `entry-sequence.md`.
100
- // Lowered in joshuafolkken/kit#3175: the loop became the driver's hand-backs, the supervisor and
101
- // provider prose moved to `docs/josh-commands-automation.md`, and the failure-only sections moved to
102
- // `backlogrun-recovery.md`, which the parent's reach still charges whole.
103
- // joshuafolkken/kit#3171 cut `CLAUDE.md` to triggers and pointers (~12 KB), lowering every entry.
104
- // joshuafolkken/kit#3256 moved `CLAUDE.md`'s residency prose to `residency.md`, lowering kickoff and
105
- // halfrun one block each.
106
- { entry: 'kickoff', bytes: 40_960 },
107
- // Raised in joshuafolkken/kit#3177: #3173, #3181 and #3183 merged in parallel and together tipped
108
- // fullrun 12 bytes over its block; none of #3177's documents are in its read set.
109
- // Lowered back in joshuafolkken/kit#3180: the history and lint-settled proofs left its read set.
110
- { entry: 'fullrun', bytes: 57_344 },
111
- { entry: 'halfrun', bytes: 53_248 },
112
- { entry: 'prrun', bytes: 61_440 },
113
- { entry: 'backlogrun', bytes: 176_128 },
114
- { entry: LANE_CHILD, bytes: 57_344 },
47
+ { entry: 'kickoff', bytes: 36_864 },
48
+ { entry: 'fullrun', bytes: 53_248 },
49
+ { entry: 'halfrun', bytes: 49_152 },
50
+ { entry: 'prrun', bytes: 57_344 },
51
+ { entry: 'backlogrun', bytes: 90_112 },
52
+ { entry: LANE_CHILD, bytes: 49_152 },
115
53
  ]
116
54
 
117
55
  function byte_size(root: string, relative_path: string): number {
@@ -1,5 +1,4 @@
1
- // What a workflow entry point reads before it does anything, and what that costs
2
- // (joshuafolkken/kit#1776).
1
+ // What a workflow entry point reads before it does anything, and what that costs.
3
2
  //
4
3
  // **The entry read was the largest fixed cost a run had, and nothing measured it.** Measured on the
5
4
  // `queue` parent of 2026-09-11: 159,323 billed input tokens per request at 16 requests, with the
@@ -28,13 +27,15 @@ const SKILL_DIRECTORY = path.join('.claude', 'skills', 'workflow-commands')
28
27
  const SKILL_FILE = 'SKILL.md'
29
28
  const TABLE_SECTION = '1. Which file to read'
30
29
  const NOTHING = 0
30
+ // How `read:set` names the union a point-of-use document is charged at: `file → "A" + "B"`.
31
+ const HEADING_JOINER = '" + "'
31
32
 
32
33
  // The point-of-use classification — which documents an entry names but reads only at a later step —
33
- // is its own concern, split into `read-set-point-of-use.ts` in joshuafolkken/kit#2289. This file
34
+ // is its own concern, held in `read-set-point-of-use.ts`. This file
34
35
  // reads that classification to drop those files from the entry read and to cost them separately.
35
36
 
36
37
  // The fetch cap a `cat` truncates at, and the harness default it falls back to, are read from
37
- // `bash-output-cap.ts` — split out in joshuafolkken/kit#2161 to keep this file under its line ceiling.
38
+ // `bash-output-cap.ts`.
38
39
  // `section()` hands back a `##` heading's `###` children with it, so the table parse has to say
39
40
  // where it stops — see `table_rows`.
40
41
  const SUBSECTION_PREFIX = '### '
@@ -120,12 +121,6 @@ function unique(names: ReadonlyArray<string>): Array<string> {
120
121
 
121
122
  // **Scanned with `exec` rather than collected from `matchAll`.** A fresh `RegExp` rather than the
122
123
  // shared one, so the caller's `lastIndex` is never carried between two scans of different documents.
123
- //
124
- // This spelling used to be forced rather than chosen: `unicorn/prefer-iterator-to-array` rejected
125
- // the spread while the `--fix` for a `for…of` push loop put the spread straight back, so neither
126
- // form was green. joshuafolkken/kit#1783 removed that contradiction — the spread is accepted now —
127
- // and rewriting this helper was left outside that Issue's scope, so the loop stands on the
128
- // `lastIndex` isolation above alone.
129
124
  function all_matches(text: string, pattern: RegExp): Array<RegExpExecArray> {
130
125
  const scanner = new RegExp(pattern.source, pattern.flags)
131
126
  const found: Array<RegExpExecArray> = []
@@ -153,8 +148,7 @@ function columns_of(line: string): { entry: string; files: string } | undefined
153
148
  if (groups === undefined) return undefined
154
149
 
155
150
  // Destructured rather than read as properties: `noPropertyAccessFromIndexSignature` refuses
156
- // `groups.entry`. The bracket form was refused too, until joshuafolkken/kit#1783 switched off the
157
- // `dot-notation` fix that rewrote it back — so this is a choice now rather than the only spelling.
151
+ // `groups.entry`.
158
152
  const { entry = '', files = '' } = groups
159
153
 
160
154
  return { entry, files }
@@ -181,11 +175,9 @@ function push_row(rows: Map<string, ReadonlyArray<string>>, line: string): void
181
175
  // section: every other table in the document would otherwise contribute rows of its own.
182
176
  //
183
177
  // **And it stops at the section's first subsection.** `section()` returns a `##` heading's `###`
184
- // children with it, and joshuafolkken/kit#1797 put a second two-column table under one of them — the
185
- // point-of-use triggers. Its rows parse as entry rows, and only the "no `.md` in the second column"
186
- // guard kept `latest`, `eval` and `followup` out of the keyword set; one edit adding a document name
187
- // to a trigger cell would have registered them as entry points. The stop makes that explicit rather
188
- // than incidental.
178
+ // children with it, and one of them holds a second two-column table — the point-of-use triggers.
179
+ // Its rows would parse as entry rows, and one edit adding a document name to a trigger cell would
180
+ // register them as entry points. The stop makes that explicit rather than incidental.
189
181
  function table_rows(root: string): Map<string, ReadonlyArray<string>> {
190
182
  const rows = new Map<string, ReadonlyArray<string>>()
191
183
  const found = document_section.section(read_document(root, SKILL_FILE), TABLE_SECTION)
@@ -226,7 +218,7 @@ function is_sibling_document(root: string, name: string): boolean {
226
218
  // resident on every request already, and one at a `prompts/` topic names a file reached on its own
227
219
  // step rather than at the entry.
228
220
  //
229
- // **A pointer into a point-of-use document is not an entry cost either** (joshuafolkken/kit#1797).
221
+ // **A pointer into a point-of-use document is not an entry cost either**.
230
222
  // Counting one would put `followup.md` straight back into the entry figure under another name, when
231
223
  // the whole point is that the run reaches it half an hour later — and then only by fetching it whole
232
224
  // at that moment, which is a cost of that step rather than of the entry.
@@ -327,38 +319,62 @@ function file_costs(root: string, names: ReadonlyArray<string>): Array<FileCost>
327
319
  return names.map((file) => ({ file, cost: cost_of(read_document(root, file)) }))
328
320
  }
329
321
 
322
+ // **A point-of-use document is charged at the union of the sections its entry's path names, and whole
323
+ // only where nothing names a section**. `SKILL.md` → §1 makes a pointer
324
+ // written `` `X.md` → "Heading" `` a read of that section alone, so a route table whose every row names
325
+ // one section reads those sections, never the file — and charging the file anyway made a router that
326
+ // trims its routes measure exactly as heavy as one that reads everything.
330
327
  function point_of_use_cost(
331
328
  root: string,
332
329
  file: string,
333
330
  references: ReadonlyArray<SectionReference>,
334
331
  ): SectionCost {
335
- const reference = references.find((one) => one.file === file)
332
+ const markdown = read_document(root, file)
333
+ const headings = unique(references.filter((one) => one.file === file).map((one) => one.heading))
336
334
 
337
- if (reference !== undefined) return section_cost(root, reference)
335
+ if (headings.length === NOTHING) {
336
+ return { file, heading: '', cost: cost_of(markdown), is_resolved: true }
337
+ }
338
338
 
339
- return { file, heading: '', cost: cost_of(read_document(root, file)), is_resolved: true }
339
+ return {
340
+ file,
341
+ heading: headings.join(HEADING_JOINER),
342
+ cost: scoped_file_cost(markdown, headings),
343
+ is_resolved: headings.every(
344
+ (heading) => document_section.section(markdown, heading) !== undefined,
345
+ ),
346
+ }
340
347
  }
341
348
 
342
- // **What an entry's path names: its own manifests, and the §1 trigger rows that name the entry**
343
- // (joshuafolkken/kit#3078). `SKILL.md`'s other text is left out for the reason `sections_for` gives —
349
+ // **What an entry's path names: its own manifests, and the §1 trigger rows that name the entry**.
350
+ // `SKILL.md`'s other text is left out for the reason `sections_for` gives —
344
351
  // §2 names every document, so counting it would charge a `kickoff` for `followup.md`. One hop only:
345
352
  // the point-of-use documents cite one another, and following them would reach the whole set again.
346
- // `also` is what a role reaches beside its base entry's path (`read-set-trim.ts`).
347
- function cited_by(
348
- root: string,
349
- entry: string,
350
- table_text: string,
351
- also: ReadonlySet<string>,
352
- ): Set<string> {
353
+ function path_texts(root: string, entry: string, table_text: string): Array<string> {
353
354
  const manifests = files_for(root, entry).filter((file) => file !== SKILL_FILE)
354
355
  const rows = table_text
355
356
  .split('\n')
356
357
  .filter((line) => line.startsWith('|') && line.includes(`\`${entry}\``))
357
- const texts = [...manifests.map((file) => read_document(root, file)), ...rows]
358
358
 
359
- return new Set([...also, ...texts.flatMap((text) => names_in(text))])
359
+ return [...manifests.map((file) => read_document(root, file)), ...rows]
360
360
  }
361
361
 
362
+ // The sections a point-of-use document is read by: every pointer in §1's table, and every one the
363
+ // entry's own manifests carry — the route a run follows into that document.
364
+ function point_of_use_references(
365
+ root: string,
366
+ entry: string,
367
+ table_text: string,
368
+ ): Array<SectionReference> {
369
+ const manifests = files_for(root, entry).filter((file) => file !== SKILL_FILE)
370
+ const texts = [table_text, ...manifests.map((file) => read_document(root, file))]
371
+
372
+ return texts.flatMap((text) =>
373
+ all_matches(text, SECTION_REFERENCE).map((match) => to_reference(match)),
374
+ )
375
+ }
376
+
377
+ // `also` is what a role reaches beside its base entry's path (`read-set-trim.ts`).
362
378
  function point_of_use_costs(
363
379
  root: string,
364
380
  entry: string,
@@ -366,8 +382,9 @@ function point_of_use_costs(
366
382
  ): Array<SectionCost> {
367
383
  const table_text =
368
384
  document_section.section(read_document(root, SKILL_FILE), TABLE_SECTION)?.text ?? ''
369
- const references = all_matches(table_text, SECTION_REFERENCE).map((match) => to_reference(match))
370
- const cited = cited_by(root, entry, table_text, also)
385
+ const references = point_of_use_references(root, entry, table_text)
386
+ const named = path_texts(root, entry, table_text).flatMap((text) => names_in(text))
387
+ const cited = new Set([...also, ...named])
371
388
 
372
389
  return point_of_use_files(entry, cited).map((file) => point_of_use_cost(root, file, references))
373
390
  }
@@ -1,7 +1,7 @@
1
- // What a dispatched lane child reads, and what that costs (joshuafolkken/kit#2021).
1
+ // What a dispatched lane child reads, and what that costs.
2
2
  //
3
3
  // **A lane child is the largest fixed cost a `backlogrun` has.** Measured on the batch of
4
- // 2026-09-13, the lane child sessions were 72% of the run's whole input (joshuafolkken/kit#1936),
4
+ // 2026-09-13, the lane child sessions were 72% of the run's whole input,
5
5
  // and each `claude -p fullrun #N` child read the `fullrun` entry set in full — around 227KB. Most of
6
6
  // that is spent on procedure a leaf child never carries out: it dispatches no child of its own, opens
7
7
  // no lane, runs no progress watcher and performs no hand-off, so the point-of-use documents that
@@ -10,7 +10,7 @@
10
10
  // **This models the child as a trimmed `fullrun`, derived rather than transcribed.** The set is the
11
11
  // `fullrun` entry read with two subtractions — the `SKILL.md` sections a child never uses read at the
12
12
  // section level, and the point-of-use documents a leaf never reaches dropped — applied by the shared
13
- // `read-set-trim`, which the `backlogrun` parent trim uses too (joshuafolkken/kit#2256).
13
+ // `read-set-trim`, which the `backlogrun` parent trim uses too.
14
14
 
15
15
  import type { ReadSetCost } from './entry-read-set'
16
16
  import { read_set_trim } from './read-set-trim'
@@ -22,7 +22,7 @@ const FULLRUN = 'fullrun'
22
22
  // than in full. A child never edits these documents (§3), and its dispatch is already an explicit
23
23
  // workflow invocation, so §0 cannot decide anything for it either. The other rules it never uses — the
24
24
  // `into` target, delegation, the repository prefix, the scout, observation filing, the retrospective —
25
- // are single rows of §2's table since joshuafolkken/kit#3174, so no section of them is left to trim.
25
+ // are single rows of §2's table, so no section of them is left to trim.
26
26
  const UNUSED_SKILL_SECTIONS: ReadonlyArray<string> = [
27
27
  '0. The rule that fires before any of them — explicit invocation',
28
28
  '3. What stays resident, and what is read from here',
@@ -30,15 +30,15 @@ const UNUSED_SKILL_SECTIONS: ReadonlyArray<string> = [
30
30
 
31
31
  // **The point-of-use documents a leaf child never reaches**: child dispatch, lane opening and the
32
32
  // progress watcher / hand-off are the parent's, so their single-source documents are dropped from
33
- // the child's read. **`latest-gate.md` is the parent's too** (joshuafolkken/kit#2189): the dependency
33
+ // the child's read. **`latest-gate.md` is the parent's too**: the dependency
34
34
  // update runs once per session in the outermost run, never in a dispatched lane child (`latest:scope`
35
35
  // answers `skip` in a lane via the lane guard), so the child never opens `latest-gate.md`. The gate documents
36
36
  // (`chain-rule.md`, `background-commands.md`), `followup.md` and `backlogrun-park.md` stay — a child
37
37
  // runs the gate, opens its PR, and may park on a decision, so it does reach every one of those.
38
- // **`retrospective.md` is the parent's too** (joshuafolkken/kit#2328): the end-of-run retrospective
38
+ // **`retrospective.md` is the parent's too**: the end-of-run retrospective
39
39
  // runs once at the batch's own end, never in a leaf child, so `run:step` answers `stop` for a child at
40
40
  // the stop position and the child never opens it.
41
- // **`backlogrun-steps.md` is the parent's too** (joshuafolkken/kit#2357): it is the scheduler's step
41
+ // **`backlogrun-steps.md` is the parent's too**: it is the scheduler's step
42
42
  // list — what one invocation approves, the named-issue order, the session-cut record, the loop and the
43
43
  // once-per-session tail — none of which a leaf child performs. Every reference to it lives in a
44
44
  // document the child never reads (`backlogrun.md`, `backlogrun-progress.md`, `retrospective.md`) or in a
@@ -46,7 +46,7 @@ const UNUSED_SKILL_SECTIONS: ReadonlyArray<string> = [
46
46
  // that opens it. It was the child's single largest read — ~16,000 tokens read whole — charged for a
47
47
  // document it never reaches, so dropping it is a correction of an over-count, not a loss of any rule the
48
48
  // child needs. The parent still reads it in full.
49
- // **`progress-watcher.md` is the parent's too** (joshuafolkken/kit#3172): a dispatched child is refused
49
+ // **`progress-watcher.md` is the parent's too**: a dispatched child is refused
50
50
  // a watcher by its `JOSH_LANE_CHILD` mark, so it never opens the watcher's document.
51
51
  const SKIPPED_POINT_OF_USE: ReadonlySet<string> = new Set([
52
52
  'backlogrun-child.md',
@@ -62,7 +62,7 @@ const SKIPPED_POINT_OF_USE: ReadonlySet<string> = new Set([
62
62
 
63
63
  // **A child that parks reads `backlogrun-park.md`** (`SKILL.md` §1, "A lane child that parks"), a
64
64
  // document a standalone `fullrun`'s path never names — so the child's reach adds it to its base
65
- // entry's (joshuafolkken/kit#3078). **`pre-gate-cut.md` is the child's alone** (joshuafolkken/kit#3172):
65
+ // entry's. **`pre-gate-cut.md` is the child's alone**:
66
66
  // only a lane child resumes or takes the pre-gate cut, so `fullrun.md` stopped naming it and the
67
67
  // child's reach carries it instead.
68
68
  const REACHED_POINT_OF_USE: ReadonlySet<string> = new Set(['backlogrun-park.md', 'pre-gate-cut.md'])
@@ -4,8 +4,7 @@ import { fileURLToPath } from 'node:url'
4
4
  import { bash_output_cap_reader } from './bash-output-cap'
5
5
  import { document_section } from './document-section'
6
6
 
7
- // `josh read:files <path> [<path> ...]` — read several files in one call
8
- // (joshuafolkken/kit#2202).
7
+ // `josh read:files <path> [<path> ...]` — read several files in one call.
9
8
  //
10
9
  // **This is the mid-implementation counterpart of `run:prep`.** `run:prep` folds a run's pre-edit
11
10
  // reads into one call at a *pre-determined* point (before implementing), and kit#2165 / kit#2162
@@ -5,14 +5,11 @@ import { entry_read_set, type ReadSetCost, type SectionCost } from './entry-read
5
5
  import { lane_child_read_set } from './lane-child-read-set'
6
6
  import { read_set_pricing } from './read-set-pricing'
7
7
 
8
- // `josh read:set` — what this entry point reads before it starts, and what that costs
9
- // (joshuafolkken/kit#1776).
8
+ // `josh read:set` — what this entry point reads before it starts, and what that costs.
10
9
  //
11
- // **The entry cost had no reading of its own.** It could be inferred after the fact from
12
- // `josh cost`, which measures a whole session and cannot say which part of it was the mandated read;
13
- // so the baseline for joshuafolkken/kit#1776 could only be written by hand, once, from one
14
- // transcript. This prints it per entry point, from the documents themselves, as often as anyone
15
- // wants to ask.
10
+ // **The entry cost has a reading of its own.** `josh cost` measures a whole session and cannot say
11
+ // which part of it was the mandated read; this prints it per entry point, from the documents
12
+ // themselves, as often as anyone wants to ask.
16
13
  //
17
14
  // **Two figures under one definition, which is what makes a before and an after comparable.**
18
15
  // `whole` is every file in the set read in full — what a run pays with no way to fetch a heading.
@@ -34,7 +31,7 @@ const DOLLAR_WIDTH = 7
34
31
  const DOLLAR_DECIMALS = 2
35
32
  // The premise the dollar column is read against: each figure is what that read costs *per run of this
36
33
  // size*, because an entry-read token rides every request as cached context. Printed rather than
37
- // assumed, so a reader checks the assumption instead of guessing it (joshuafolkken/kit#2289).
34
+ // assumed, so a reader checks the assumption instead of guessing it.
38
35
  const PREMISE = ` $ = cost per run, assuming a ${String(read_set_pricing.ASSUMED_REQUESTS)}-request run (each entry-read token re-read from cache per request)`
39
36
  const USAGE = 'Usage: josh read:set [<entry>] [--json]'
40
37
  const WHOLE_LABEL = 'whole — every referenced file read in full'
@@ -44,15 +41,15 @@ const SECTION_LABEL = '-- sections referenced out of the set --'
44
41
  const POINT_OF_USE_LABEL = '-- read at the point of use, not at the entry --'
45
42
  // **The dispatched lane child reads a trimmed `fullrun` set** — the point-of-use documents the parent
46
43
  // owns are dropped and the entry-only `SKILL.md` sections are read section by section, so `total read`
47
- // falls well below a normal `fullrun`'s (joshuafolkken/kit#2021).
44
+ // falls well below a normal `fullrun`'s.
48
45
  const LANE_CHILD_NOTE: ReadonlyArray<string> = [
49
46
  ' a dispatched lane child (`JOSH_LANE_CHILD`) reads this trimmed set:',
50
47
  ' - skips the point-of-use documents the parent owns — child dispatch, lane opening, the progress watcher and the hand-off',
51
48
  ' - omits SKILL.md §0/§3 — dispatch already authorized the run and a leaf child edits no rule',
52
49
  ]
53
50
  // **The `backlogrun` parent reads a trimmed set of its own** — a scheduler that never implements, so
54
- // the implementer-only `SKILL.md` sections are read section by section rather than whole
55
- // (joshuafolkken/kit#2256). A *different* trim from the lane child's: the parent keeps §0, which is the
51
+ // the implementer-only `SKILL.md` sections are read section by section rather than whole.
52
+ // A *different* trim from the lane child's: the parent keeps §0, which is the
56
53
  // scheduler's own, and drops no point-of-use document.
57
54
  const BACKLOGRUN_PARENT_NOTE: ReadonlyArray<string> = [
58
55
  ' the backlogrun parent (scheduler) reads this trimmed set:',
@@ -70,7 +67,7 @@ function to_number(value: number): string {
70
67
 
71
68
  // The per-run dollar cost of a row, from its token count. Priced by `read-set-pricing`, which reads
72
69
  // `cost-pricing.ts`'s rates rather than carrying its own, so this column never becomes a second price
73
- // list (joshuafolkken/kit#2289).
70
+ // list.
74
71
  function to_dollars(tokens: number): string {
75
72
  return `$${read_set_pricing.dollars_per_run(tokens).toFixed(DOLLAR_DECIMALS)}`.padStart(
76
73
  DOLLAR_WIDTH,
@@ -78,8 +75,8 @@ function to_dollars(tokens: number): string {
78
75
  }
79
76
 
80
77
  // The column is sized from the longest label in this report rather than from a constant: the section
81
- // labels carry a file name *and* a heading, so a fixed width pushed them past it and the `tok` / `B`
82
- // columns stopped lining up with the file rows above (joshuafolkken/kit#1776 review round 1).
78
+ // labels carry a file name *and* a heading, so a fixed width would push them past it and the `tok` /
79
+ // `B` columns would stop lining up with the file rows above.
83
80
  function row(
84
81
  label: string,
85
82
  cost: { tokens: number; bytes: number },
@@ -92,7 +89,7 @@ function row(
92
89
  // **The tool is printed per file rather than left to be judged, and it is `Read` on every row.** A
93
90
  // file larger than the Bash output cap cannot be delivered by `cat` at all — what comes back is a
94
91
  // middle-truncated preview, which is how one measured entry paid for the same five files twice
95
- // (joshuafolkken/kit#1797) — and a file under the cap is still fetched with `Read`, because the rule
92
+ // — and a file under the cap is still fetched with `Read`, because the rule
96
93
  // beneath the report is one `Read` per file rather than a size judgement made row by row. Printing
97
94
  // `cat` as an option for the small rows would have the report contradict its own closing line the
98
95
  // first time anyone raised `BASH_MAX_OUTPUT_LENGTH` past the smallest document in the set.
@@ -129,7 +126,7 @@ function labels_of(report: ReadSetCost): Array<string> {
129
126
 
130
127
  // **The total the entry actually reads**: the scoped entry plus each point-of-use section (or whole
131
128
  // file where no section is named). It is the figure a before/after compares — a lane
132
- // child's set is smaller here, not in `scoped` alone (joshuafolkken/kit#2021).
129
+ // child's set is smaller here, not in `scoped` alone.
133
130
  function total_read(report: ReadSetCost): { tokens: number; bytes: number } {
134
131
  return entry_read_set.total([report.scoped, ...report.point_of_use.map((one) => one.cost)])
135
132
  }
@@ -230,10 +227,10 @@ function wanted_entries(argv: ReadonlyArray<string>, root: string): Array<string
230
227
  return named.length > NOTHING ? named : known_entries(root)
231
228
  }
232
229
 
233
- // **An unrecognized keyword is refused, never reported on.** Left to fall through it produced a
230
+ // **An unrecognized keyword is refused, never reported on.** Left to fall through it would produce a
234
231
  // complete, plausible report — the skill file, the gate documents, `whole` equal to `scoped` and a
235
- // saving of zero — and exited 0, answering "nothing to save" instead of
236
- // "no such entry" for a mistyped keyword (joshuafolkken/kit#1776 review round 1). That is the silent wrong answer
232
+ // saving of zero — and exit 0, answering "nothing to save" instead of "no such entry" for a mistyped
233
+ // keyword. That is the silent wrong answer
237
234
  // `doc:section` refuses for an unresolvable heading, and this is the same refusal.
238
235
  function unknown_entries(wanted: ReadonlyArray<string>, root: string): Array<string> {
239
236
  const known = known_entries(root)
@@ -2,7 +2,7 @@ import { cost_tokens } from '#scripts/cost-runtime/cost-tokens'
2
2
  import { document_section, type Section } from './document-section'
3
3
 
4
4
  // What a read costs, and the scoped union that charges one file's cited sections once — split out
5
- // of `entry-read-set.ts` when it reached its line limit (joshuafolkken/kit#3264). `entry_read_set`
5
+ // of `entry-read-set.ts` when it reached its line limit. `entry_read_set`
6
6
  // re-exports `cost_of`, `total` and `Cost` under the names they always had, so the move changed no
7
7
  // call site.
8
8
 
@@ -52,8 +52,8 @@ function charged_lines(markdown: string, headings: ReadonlyArray<string>): Set<n
52
52
  // **The union's charged lines are split into contiguous runs, and each run is costed on its own
53
53
  // natural text.** Joining non-adjacent lines with `\n` into one string fabricates a token boundary at
54
54
  // every gap the union skipped, so the estimate could drift a token *above* the per-reference sum even
55
- // with no real overlap — a false negative saving the measurement must never print
56
- // (joshuafolkken/kit#1934). A run is a maximal stretch of consecutive charged lines, which is exactly
55
+ // with no real overlap — a false negative saving the measurement must never print.
56
+ // A run is a maximal stretch of consecutive charged lines, which is exactly
57
57
  // the contiguous text a reader of that section actually reads, so summing the runs both mirrors the
58
58
  // real read and keeps `scoped` at or below the per-reference sum by construction.
59
59
  function extend_or_start(runs: Array<Array<number>>, index: number): void {
@@ -81,7 +81,7 @@ function run_text(lines: ReadonlyArray<string>, run: ReadonlyArray<number>): str
81
81
  // unresolved headings each charged at the whole file, and a `##` section cited beside one of its own
82
82
  // `###` children, which `section()` already returns inside the parent. Either one could push the
83
83
  // scoped figure above the whole one and print a *negative* saving, which is the single direction this
84
- // measurement must not be able to move (joshuafolkken/kit#1776 review round 1).
84
+ // measurement must not be able to move.
85
85
  function scoped_file_cost(markdown: string, headings: ReadonlyArray<string>): Cost {
86
86
  const charged = charged_lines(markdown, headings)
87
87