@joshuafolkken/kit 1.1229.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 (939) 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 +24 -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 +27 -16
  27. package/.claude/skills/workflow-commands/latest-gate.md +18 -29
  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/.github/workflows/publish.yml +2 -0
  42. package/.vscode/tasks.json +14 -0
  43. package/CLAUDE.md +10 -61
  44. package/README.md +38 -57
  45. package/SECURITY.md +1 -1
  46. package/dist/CLAUDE.md +10 -61
  47. package/dist/commands/document-section-cli.js +42 -10
  48. package/dist/config-merge/index.js +11 -2
  49. package/dist/hooks/audit-provision.js +2 -2
  50. package/dist/hooks/batch-guard.js +7 -7
  51. package/dist/hooks/{chunk-FIVDHQGT.js → chunk-43G45XJF.js} +18 -20
  52. package/dist/hooks/{chunk-JUDKDCDP.js → chunk-4TW4MQUL.js} +284 -362
  53. package/dist/hooks/{chunk-5VMKCCC4.js → chunk-76RK6E3H.js} +13 -11
  54. package/dist/hooks/{chunk-RNWHN5BP.js → chunk-DZWZ3DKY.js} +4 -4
  55. package/dist/hooks/{chunk-5VNDSNG3.js → chunk-FZ6FUSBM.js} +1 -1
  56. package/dist/hooks/{chunk-VC3PZPZO.js → chunk-GG72ANKI.js} +1 -1
  57. package/dist/hooks/{chunk-6HJJXRBX.js → chunk-KPM4YIIX.js} +8 -44
  58. package/dist/hooks/chunk-MXVQMLDP.js +3705 -0
  59. package/dist/hooks/{chunk-ELCN5LCH.js → chunk-NEC4AT4Z.js} +34 -12
  60. package/dist/hooks/{chunk-TQNPDZNH.js → chunk-NZBHG6FW.js} +7 -5
  61. package/dist/hooks/chunk-NZN2UFI6.js +2409 -0
  62. package/dist/hooks/{chunk-F56MFS4B.js → chunk-R6CRQEAL.js} +4 -4
  63. package/dist/hooks/chunk-SYSRHRWU.js +1589 -0
  64. package/dist/hooks/{chunk-55HHG5PX.js → chunk-TLJYAGZK.js} +799 -903
  65. package/dist/hooks/chunk-Z5TMJIPW.js +45 -0
  66. package/dist/hooks/codex-hook-adapter.js +26 -21
  67. package/dist/hooks/duplicate-read-guard.js +8 -8
  68. package/dist/hooks/format-edited.js +4 -4
  69. package/dist/hooks/inputs.json +213 -197
  70. package/dist/hooks/investigation-guard.js +8 -8
  71. package/dist/hooks/pretool-guard.js +15 -15
  72. package/dist/hooks/session-lang.js +406 -8
  73. package/dist/hooks/stop-guard.js +122 -201
  74. package/dist/josh.js +540 -137
  75. package/dist/version/index.js +15 -13
  76. package/eslint/base.js +43 -5
  77. package/eslint/rules/english-only-prose.js +3 -3
  78. package/eslint/rules/import.js +12 -0
  79. package/eslint/rules/namespace-object-export.js +2 -2
  80. package/package.json +16 -10
  81. package/pnpm-workspace.yaml +2 -4
  82. package/prompts/coding-standards.md +14 -48
  83. package/prompts/collaboration-workflow/file-edits.md +1 -1
  84. package/prompts/collaboration-workflow/issue-citation.md +1 -1
  85. package/prompts/collaboration-workflow/issue-template.md +4 -10
  86. package/prompts/collaboration-workflow/operating-rules.md +7 -8
  87. package/prompts/collaboration-workflow/output-bounds.md +1 -1
  88. package/prompts/collaboration-workflow/overview.md +1 -1
  89. package/prompts/collaboration-workflow/plan-comment.md +2 -1
  90. package/prompts/collaboration-workflow/principles.md +21 -3
  91. package/prompts/collaboration-workflow/report-format.md +16 -29
  92. package/prompts/collaboration-workflow/residency.md +1 -1
  93. package/prompts/collaboration-workflow/rule-delivery.md +7 -95
  94. package/prompts/collaboration-workflow/shell-body.md +3 -23
  95. package/prompts/collaboration-workflow/turn-batching.md +4 -13
  96. package/prompts/collaboration-workflow/wip-cap.md +5 -11
  97. package/prompts/refactoring.md +1 -1
  98. package/prompts/review-rubric.md +3 -22
  99. package/prompts/review.md +15 -38
  100. package/prompts/testing-guide.md +2 -4
  101. package/scripts/adopt/adopt-logic.ts +5 -5
  102. package/scripts/adopt/adopt-toolkits.ts +4 -5
  103. package/scripts/adopt/adopt.ts +2 -3
  104. package/scripts/agent/agent-argv.ts +7 -7
  105. package/scripts/agent/agent-diagnostics.ts +2 -2
  106. package/scripts/agent/agent-exit-record.ts +1 -1
  107. package/scripts/agent/agent-headless.ts +1 -1
  108. package/scripts/agent/agent-launch-environment.ts +6 -1
  109. package/scripts/agent/agent-role-profile.ts +49 -22
  110. package/scripts/agent/agent-session-role.ts +32 -0
  111. package/scripts/agent/api-outage.ts +1 -1
  112. package/scripts/agent/claude-agent-argv.ts +4 -4
  113. package/scripts/agent/claude-result-event.ts +4 -4
  114. package/scripts/agent/codex-hooks.ts +2 -2
  115. package/scripts/agent/interactive-ask.ts +3 -6
  116. package/scripts/auto-ok/auto-ok-cli.ts +46 -60
  117. package/scripts/backlog/backlog-arrival-added.ts +34 -0
  118. package/scripts/backlog/backlog-arrival.ts +54 -17
  119. package/scripts/backlog/backlog-budget-cli.ts +34 -6
  120. package/scripts/backlog/backlog-budget.ts +17 -24
  121. package/scripts/backlog/backlog-defect-priority.ts +1 -1
  122. package/scripts/backlog/backlog-drive-args.ts +5 -4
  123. package/scripts/backlog/backlog-drive-cli.ts +14 -10
  124. package/scripts/backlog/backlog-drive-epic.ts +85 -0
  125. package/scripts/backlog/backlog-drive-launch.ts +1 -1
  126. package/scripts/backlog/backlog-drive-named-offer.ts +60 -9
  127. package/scripts/backlog/backlog-drive-named.ts +39 -9
  128. package/scripts/backlog/backlog-drive-offer-argv.ts +1 -1
  129. package/scripts/backlog/backlog-drive-restore.ts +1 -1
  130. package/scripts/backlog/backlog-drive-retrospective.ts +2 -2
  131. package/scripts/backlog/backlog-drive.ts +43 -28
  132. package/scripts/backlog/backlog-idle.ts +88 -0
  133. package/scripts/backlog/backlog-named.ts +11 -15
  134. package/scripts/backlog/backlog-next.ts +26 -30
  135. package/scripts/backlog/backlog-offer-cli.ts +28 -23
  136. package/scripts/backlog/backlog-offer.ts +7 -7
  137. package/scripts/backlog/backlog-overlap.ts +178 -0
  138. package/scripts/backlog/backlog-plan-cli.ts +14 -90
  139. package/scripts/backlog/backlog-plan-read.ts +111 -0
  140. package/scripts/backlog/backlog-plan.ts +11 -10
  141. package/scripts/backlog/backlog-pool.ts +13 -14
  142. package/scripts/backlog/backlog-rank.ts +11 -11
  143. package/scripts/backlog/backlog-ready.ts +15 -10
  144. package/scripts/backlog/backlog-scope.ts +14 -15
  145. package/scripts/backlog/backlog-stalled-cli.ts +2 -2
  146. package/scripts/backlog/backlog-stalled-detect.ts +4 -4
  147. package/scripts/backlog/backlog-stalled.ts +5 -6
  148. package/scripts/backlog/backlog-waves.ts +4 -4
  149. package/scripts/backlog/backlogrun-args.ts +74 -0
  150. package/scripts/backlog/backlogrun-cli.ts +113 -0
  151. package/scripts/backlog/backlogrun-launch.ts +178 -0
  152. package/scripts/behavior/behavior-assertion.ts +6 -8
  153. package/scripts/behavior/behavior-cli.ts +1 -1
  154. package/scripts/behavior/behavior-rules.ts +3 -3
  155. package/scripts/build/build-claude-md.ts +4 -4
  156. package/scripts/build/build-codex-hooks.ts +2 -2
  157. package/scripts/build/build-commands.ts +1 -1
  158. package/scripts/build/build-hooks.ts +5 -5
  159. package/scripts/build/build.ts +1 -1
  160. package/scripts/build/hook-bundle-stamp.ts +109 -7
  161. package/scripts/build/local-bin.ts +2 -2
  162. package/scripts/cases/cases-cli.ts +1 -1
  163. package/scripts/cases/cases-logic.ts +2 -2
  164. package/scripts/ci/composite-actions.ts +1 -2
  165. package/scripts/ci/pr-classification.ts +2 -2
  166. package/scripts/claude/workflow-destination.ts +1 -1
  167. package/scripts/clone/clone-aggregate.ts +1 -1
  168. package/scripts/clone/clone-fingerprint.ts +1 -1
  169. package/scripts/clone/clone-scan-cli.ts +1 -1
  170. package/scripts/clone/clone-scan.ts +1 -1
  171. package/scripts/config-merge/index.ts +1 -1
  172. package/scripts/config-merge/json-format.ts +1 -3
  173. package/scripts/config-merge/patch-json-array.ts +90 -0
  174. package/scripts/config-merge/patch-json-key.ts +6 -3
  175. package/scripts/config-merge/patch-json-list.ts +1 -1
  176. package/scripts/cost-runtime/codex-usage.ts +1 -1
  177. package/scripts/cost-runtime/context-cut-payback.ts +4 -5
  178. package/scripts/cost-runtime/context-cut-threshold.ts +4 -6
  179. package/scripts/cost-runtime/cost-attribute.ts +3 -3
  180. package/scripts/cost-runtime/cost-blocks.ts +3 -4
  181. package/scripts/cost-runtime/cost-cli.ts +14 -11
  182. package/scripts/cost-runtime/cost-corpus.ts +11 -11
  183. package/scripts/cost-runtime/cost-pricing.ts +4 -4
  184. package/scripts/cost-runtime/cost-tokens.ts +1 -2
  185. package/scripts/cost-runtime/cost-transcript.ts +29 -29
  186. package/scripts/cost-runtime/cost-usage.ts +6 -7
  187. package/scripts/cost-runtime/cost-verdict.ts +10 -11
  188. package/scripts/cost-runtime/own-session.ts +1 -1
  189. package/scripts/cost-runtime/transcript-cwd.ts +2 -2
  190. package/scripts/delegation/delegation-cli.ts +4 -4
  191. package/scripts/delegation/delegation-policy.ts +13 -15
  192. package/scripts/delegation/duplicate-read-guard.ts +9 -10
  193. package/scripts/delegation/fanout-cli.ts +1 -1
  194. package/scripts/delegation/fanout.ts +1 -1
  195. package/scripts/delegation/investigation-guard.ts +18 -22
  196. package/scripts/delegation/investigation-reads.ts +48 -238
  197. package/scripts/discovery/repo-discovery.ts +1 -1
  198. package/scripts/discovery/repo-map-logic.ts +1 -2
  199. package/scripts/discovery/repo-origin.ts +3 -3
  200. package/scripts/discovery/repo-party-cli.ts +2 -2
  201. package/scripts/discovery/repo-party.ts +2 -2
  202. package/scripts/doctor/doctor-consumer.ts +1 -1
  203. package/scripts/doctor/doctor-io.ts +6 -7
  204. package/scripts/doctor/doctor-logic.ts +1 -1
  205. package/scripts/doctor/doctor-ports.ts +1 -1
  206. package/scripts/doctor/doctor.ts +8 -9
  207. package/scripts/document/backlogrun-parent-read-set.ts +5 -6
  208. package/scripts/document/bash-output-cap.ts +5 -7
  209. package/scripts/document/capped-print-part.ts +1 -1
  210. package/scripts/document/capped-print.ts +1 -1
  211. package/scripts/document/document-byte-budget.ts +33 -64
  212. package/scripts/document/document-byte-check.ts +4 -4
  213. package/scripts/document/document-reachability.ts +7 -8
  214. package/scripts/document/document-read-cli.ts +2 -2
  215. package/scripts/document/document-scan.ts +26 -2
  216. package/scripts/document/document-section-cli.ts +6 -8
  217. package/scripts/document/document-section.ts +8 -12
  218. package/scripts/document/edit-files-cli.ts +3 -4
  219. package/scripts/document/entry-read-budget.ts +8 -70
  220. package/scripts/document/entry-read-set.ts +51 -34
  221. package/scripts/document/lane-child-read-set.ts +9 -9
  222. package/scripts/document/read-files-cli.ts +1 -2
  223. package/scripts/document/read-set-cli.ts +16 -19
  224. package/scripts/document/read-set-cost.ts +4 -4
  225. package/scripts/document/read-set-point-of-use.ts +28 -38
  226. package/scripts/document/read-set-pricing.ts +1 -1
  227. package/scripts/document/read-set-trim.ts +3 -3
  228. package/scripts/document/resident-budget.ts +8 -10
  229. package/scripts/epic/epic-add-body.ts +15 -18
  230. package/scripts/epic/epic-add-plan.ts +26 -28
  231. package/scripts/epic/epic-add.ts +32 -25
  232. package/scripts/epic/epic-audit-checks.ts +27 -37
  233. package/scripts/epic/epic-audit-cli.ts +21 -22
  234. package/scripts/epic/epic-audit-orphans.ts +16 -17
  235. package/scripts/epic/epic-audit-rationale.ts +10 -15
  236. package/scripts/epic/epic-audit-report.ts +2 -5
  237. package/scripts/epic/epic-audit.ts +18 -14
  238. package/scripts/epic/epic-body.ts +10 -10
  239. package/scripts/epic/epic-bundle-cli.ts +36 -34
  240. package/scripts/epic/epic-bundle-evidence.ts +5 -5
  241. package/scripts/epic/epic-bundle-gaps.ts +6 -9
  242. package/scripts/epic/epic-bundle-poll.ts +1 -1
  243. package/scripts/epic/epic-bundle-referenced.ts +11 -14
  244. package/scripts/epic/epic-bundle.ts +19 -20
  245. package/scripts/epic/epic-busy.ts +44 -21
  246. package/scripts/epic/epic-candidate-confirm.ts +15 -18
  247. package/scripts/epic/epic-chains.ts +18 -23
  248. package/scripts/epic/epic-classify.ts +11 -12
  249. package/scripts/epic/epic-cli-argv.ts +5 -6
  250. package/scripts/epic/epic-cli-remove.ts +9 -4
  251. package/scripts/epic/epic-cli.ts +38 -26
  252. package/scripts/epic/epic-close-comment.ts +14 -15
  253. package/scripts/epic/epic-close.ts +25 -29
  254. package/scripts/epic/epic-cross-repo.ts +18 -21
  255. package/scripts/epic/epic-decision.ts +14 -18
  256. package/scripts/epic/epic-fetch.ts +25 -31
  257. package/scripts/epic/epic-graph.ts +15 -17
  258. package/scripts/epic/epic-index.ts +14 -16
  259. package/scripts/epic/epic-issue.ts +9 -11
  260. package/scripts/epic/epic-label-age.ts +74 -0
  261. package/scripts/epic/epic-lane-offer.ts +35 -24
  262. package/scripts/epic/epic-nested.ts +1 -1
  263. package/scripts/epic/epic-next-read.ts +8 -8
  264. package/scripts/epic/epic-next-views.ts +12 -12
  265. package/scripts/epic/epic-next.ts +29 -33
  266. package/scripts/epic/epic-outside-blocker.ts +11 -10
  267. package/scripts/epic/epic-parse.ts +22 -24
  268. package/scripts/epic/epic-promote.ts +3 -2
  269. package/scripts/epic/epic-rank.ts +1 -1
  270. package/scripts/epic/epic-read.ts +10 -8
  271. package/scripts/epic/epic-reconcile.ts +8 -6
  272. package/scripts/epic/epic-reference.ts +5 -4
  273. package/scripts/epic/epic-relation-recheck.ts +10 -11
  274. package/scripts/epic/epic-relations.ts +9 -8
  275. package/scripts/epic/epic-remove-plan.ts +4 -5
  276. package/scripts/epic/epic-remove.ts +7 -5
  277. package/scripts/epic/epic-report.ts +18 -20
  278. package/scripts/epic/epic-run.ts +6 -5
  279. package/scripts/epic/epic-sections.ts +2 -2
  280. package/scripts/epic/epic-shape.ts +3 -3
  281. package/scripts/epic/epic-solo-stale.ts +3 -2
  282. package/scripts/epic/epic-solo.ts +8 -8
  283. package/scripts/epic/epic-triage.ts +5 -4
  284. package/scripts/epic/epic-validate.ts +8 -7
  285. package/scripts/epic/epic.ts +5 -5
  286. package/scripts/exports/unused-members-cli.ts +1 -1
  287. package/scripts/followup/followup-issue-number.ts +1 -2
  288. package/scripts/followup/git-followup-cleanup.ts +6 -7
  289. package/scripts/followup/git-followup-finish.ts +11 -13
  290. package/scripts/followup/git-followup-flush.ts +11 -7
  291. package/scripts/followup/git-followup-issue-close.ts +16 -13
  292. package/scripts/followup/git-followup-label.ts +9 -6
  293. package/scripts/followup/git-followup-merged.ts +1 -1
  294. package/scripts/followup/git-followup-pending.ts +7 -9
  295. package/scripts/followup/git-followup-stages.ts +28 -17
  296. package/scripts/followup/git-followup-workflow.ts +19 -21
  297. package/scripts/followup/git-pr-followup-checks.ts +13 -20
  298. package/scripts/followup/git-pr-followup-wrapup.ts +7 -7
  299. package/scripts/followup/git-pr-followup.ts +18 -17
  300. package/scripts/gate/core-admission.ts +162 -0
  301. package/scripts/gate/core-budget.ts +134 -91
  302. package/scripts/gate/gate-ledger.ts +114 -0
  303. package/scripts/gate/gate-log.ts +7 -9
  304. package/scripts/gate/gate-plan.ts +103 -35
  305. package/scripts/gate/gate-report.ts +39 -21
  306. package/scripts/gate/gate-skip.ts +11 -13
  307. package/scripts/gate/gate-steps.ts +5 -1
  308. package/scripts/gate/gate-tree.ts +3 -4
  309. package/scripts/gate/hook-gate-reuse.ts +9 -9
  310. package/scripts/gate/machine-capacity.ts +313 -0
  311. package/scripts/gate/pre-commit-type-check.ts +4 -4
  312. package/scripts/gate/project-checks.ts +12 -4
  313. package/scripts/gate/scoped-green.ts +11 -18
  314. package/scripts/gate/type-check-command.ts +2 -2
  315. package/scripts/gate/type-check-step.ts +4 -4
  316. package/scripts/gate/verification-gate.ts +60 -53
  317. package/scripts/gh/gh-spawn.ts +2 -2
  318. package/scripts/gh/git-ai-review-scan.ts +3 -2
  319. package/scripts/gh/git-gh-api-path.ts +10 -11
  320. package/scripts/gh/git-gh-exec.ts +43 -48
  321. package/scripts/gh/git-gh-failure.ts +6 -9
  322. package/scripts/gh/git-gh-helpers.ts +1 -1
  323. package/scripts/gh/git-gh-issue-list.ts +15 -19
  324. package/scripts/gh/git-gh-issue-read.ts +43 -60
  325. package/scripts/gh/git-gh-issue-rest.ts +14 -15
  326. package/scripts/gh/git-gh-issue-write.ts +52 -40
  327. package/scripts/gh/git-gh-issue.ts +23 -24
  328. package/scripts/gh/git-gh-pr-auto-merge.ts +3 -3
  329. package/scripts/gh/git-gh-pr-read.ts +46 -50
  330. package/scripts/gh/git-gh-pr-rest.ts +23 -26
  331. package/scripts/gh/git-gh-pr-review.ts +2 -2
  332. package/scripts/gh/git-gh-pr-rollup.ts +4 -4
  333. package/scripts/gh/git-gh-pr-snapshot.ts +8 -10
  334. package/scripts/gh/git-gh-pr.ts +16 -16
  335. package/scripts/gh/git-gh-reachability.ts +11 -12
  336. package/scripts/gh/git-gh-repo.ts +2 -3
  337. package/scripts/gh/git-gh-rest-state.ts +1 -1
  338. package/scripts/gh/git-pr-ai-review.ts +6 -5
  339. package/scripts/gh/git-pr-checks-eval.ts +28 -30
  340. package/scripts/gh/git-pr-checks-parse.ts +14 -16
  341. package/scripts/gh/git-pr-checks-watch.ts +17 -17
  342. package/scripts/gh/git-pr-checks.ts +20 -23
  343. package/scripts/gh/git-pr-coderabbit.ts +8 -6
  344. package/scripts/gh/git-pr-confirmation.ts +5 -5
  345. package/scripts/gh/git-pr-managed-config.ts +7 -9
  346. package/scripts/gh/git-pr-messages.ts +1 -1
  347. package/scripts/gh/git-pr.ts +15 -16
  348. package/scripts/gh/github-issue-url.ts +8 -9
  349. package/scripts/git/base-tree.ts +66 -0
  350. package/scripts/git/change-base.ts +42 -2
  351. package/scripts/git/changed-file-scope.ts +5 -5
  352. package/scripts/git/changed-paths.ts +1 -2
  353. package/scripts/git/constants.ts +2 -2
  354. package/scripts/git/git-branch.ts +1 -1
  355. package/scripts/git/git-closes-keyword.ts +3 -3
  356. package/scripts/git/git-command.ts +53 -41
  357. package/scripts/git/git-common-directory.ts +3 -3
  358. package/scripts/git/git-diff-reads.ts +14 -15
  359. package/scripts/git/git-error.ts +1 -1
  360. package/scripts/git/git-execa-error.ts +1 -2
  361. package/scripts/git/git-issue.ts +10 -8
  362. package/scripts/git/git-location-environment.ts +3 -4
  363. package/scripts/git/git-ls-remote.ts +6 -8
  364. package/scripts/git/git-pre-push-hook.ts +11 -10
  365. package/scripts/git/git-preflight.ts +5 -5
  366. package/scripts/git/git-push-transport.ts +2 -2
  367. package/scripts/git/git-remote-branch.ts +1 -2
  368. package/scripts/git/git-schemas.ts +16 -23
  369. package/scripts/git/git-spawn-sync.ts +1 -1
  370. package/scripts/git/git-spawn.ts +37 -14
  371. package/scripts/git/git-ssh-keepalive.ts +12 -5
  372. package/scripts/git/git-staging.ts +7 -8
  373. package/scripts/git/git-workflow.ts +1 -1
  374. package/scripts/git/git-worktree.ts +35 -27
  375. package/scripts/git/gone-branch.ts +2 -2
  376. package/scripts/git/listing-cutoff.ts +1 -2
  377. package/scripts/git/lockfile-sync.ts +65 -0
  378. package/scripts/git/main-merge-guard.ts +1 -2
  379. package/scripts/git/main-merge.ts +7 -7
  380. package/scripts/git/main-sync.ts +23 -8
  381. package/scripts/git/parse-json-array.ts +18 -23
  382. package/scripts/git/repository-lock.ts +34 -2
  383. package/scripts/git/stash/git-stash.ts +4 -5
  384. package/scripts/git/stash/stash-orphans.ts +5 -3
  385. package/scripts/git/stash/stash-pop-args.ts +1 -1
  386. package/scripts/git/stash/stash-pop-cli.ts +3 -3
  387. package/scripts/git/stash/stash-sweep-lock.ts +2 -2
  388. package/scripts/hooks/batch-guard.ts +11 -13
  389. package/scripts/hooks/check-commit-message.ts +12 -9
  390. package/scripts/hooks/codex-hook-adapter.ts +16 -10
  391. package/scripts/hooks/edited-cspell.ts +3 -4
  392. package/scripts/hooks/format-edited-cli.ts +1 -1
  393. package/scripts/hooks/format-edited-file.ts +11 -17
  394. package/scripts/hooks/format-rewrite-notice.ts +19 -17
  395. package/scripts/hooks/pre-push-unit.ts +10 -14
  396. package/scripts/hooks/pretool-guard-cli.ts +4 -4
  397. package/scripts/hooks/pretool-guard.ts +93 -18
  398. package/scripts/hooks/reserved-run.ts +2 -2
  399. package/scripts/hooks/step-zero-notice.ts +1 -1
  400. package/scripts/hooks/stop-guard.ts +21 -10
  401. package/scripts/init/basic-path-migration.ts +2 -2
  402. package/scripts/init/claude-kit-only-settings.ts +2 -2
  403. package/scripts/init/claude-plugin-config.ts +2 -2
  404. package/scripts/init/distributed-paths.ts +4 -4
  405. package/scripts/init/hook-command-rewrite.ts +3 -3
  406. package/scripts/init/hook-launch.ts +5 -5
  407. package/scripts/init/init-actions.ts +13 -0
  408. package/scripts/init/init-ai-copy.ts +11 -11
  409. package/scripts/init/init-bootstrap.ts +3 -3
  410. package/scripts/init/init-copy-content.ts +4 -4
  411. package/scripts/init/init-logic-json-merge.ts +7 -9
  412. package/scripts/init/init-logic-migrate.ts +1 -1
  413. package/scripts/init/init-logic-templates.ts +1 -1
  414. package/scripts/init/init-logic-workspace.ts +4 -4
  415. package/scripts/init/init-logic-yaml-merge.ts +2 -2
  416. package/scripts/init/init-logic.ts +19 -22
  417. package/scripts/init/init.ts +12 -8
  418. package/scripts/init/kit-base-preset.ts +1 -1
  419. package/scripts/init/kit-setup-state.ts +1 -1
  420. package/scripts/init/kit-written-paths.ts +1 -2
  421. package/scripts/init/package-manager-pin.ts +35 -0
  422. package/scripts/init/project-profile-cli.ts +1 -1
  423. package/scripts/init/project-profile.ts +3 -3
  424. package/scripts/init/session-language-environment.ts +1 -1
  425. package/scripts/init/start-exec.ts +3 -4
  426. package/scripts/init/start-plan.ts +2 -2
  427. package/scripts/init/start-setup-pr.ts +3 -2
  428. package/scripts/init/start-steps.ts +2 -2
  429. package/scripts/init/tsconfig-preset-migration.ts +1 -1
  430. package/scripts/init/vscode-tasks.ts +62 -0
  431. package/scripts/issue/baseline-measure.ts +2 -2
  432. package/scripts/issue/behavior-change-lint.ts +2 -2
  433. package/scripts/issue/defect-rate-cli.ts +6 -7
  434. package/scripts/issue/defect-rate.ts +37 -27
  435. package/scripts/issue/git-next-issues.ts +9 -8
  436. package/scripts/issue/issue-auto-ok.ts +49 -11
  437. package/scripts/issue/issue-backlinks-cli.ts +5 -5
  438. package/scripts/issue/issue-backlinks.ts +6 -6
  439. package/scripts/issue/issue-cite-cli.ts +20 -18
  440. package/scripts/issue/issue-cite.ts +18 -8
  441. package/scripts/issue/issue-closing-pr.ts +4 -4
  442. package/scripts/issue/issue-comment-cli.ts +6 -4
  443. package/scripts/issue/issue-file-cli.ts +75 -15
  444. package/scripts/issue/issue-file-fold.ts +155 -0
  445. package/scripts/issue/issue-file.ts +14 -6
  446. package/scripts/issue/issue-fold-cli.ts +14 -9
  447. package/scripts/issue/issue-fold.ts +23 -8
  448. package/scripts/issue/issue-labels.ts +46 -37
  449. package/scripts/issue/issue-lint-cli.ts +2 -2
  450. package/scripts/issue/issue-lint.ts +1 -1
  451. package/scripts/issue/issue-merged.ts +10 -4
  452. package/scripts/issue/issue-number-shape.ts +27 -0
  453. package/scripts/issue/issue-rank.ts +1 -1
  454. package/scripts/issue/issue-read-cli.ts +4 -5
  455. package/scripts/issue/issue-read.ts +4 -5
  456. package/scripts/issue/issue-reference.ts +5 -5
  457. package/scripts/issue/issue-release-cli.ts +165 -0
  458. package/scripts/issue/issue-release.ts +58 -0
  459. package/scripts/issue/issue-report-failures.ts +7 -4
  460. package/scripts/issue/issue-scout-cli.ts +11 -11
  461. package/scripts/issue/issue-scout-closed.ts +4 -4
  462. package/scripts/issue/issue-scout.ts +4 -5
  463. package/scripts/issue/issue-state-cli.ts +17 -10
  464. package/scripts/issue/issue-state.ts +12 -13
  465. package/scripts/issue/issue-wip.ts +7 -7
  466. package/scripts/issue/markdown-section.ts +3 -3
  467. package/scripts/issue/measure-rerun-cli.ts +10 -9
  468. package/scripts/issue/reproduction-measure.ts +3 -3
  469. package/scripts/issue/session-cite.ts +56 -0
  470. package/scripts/josh/agent-session-environment.ts +10 -8
  471. package/scripts/josh/cli-body.ts +2 -2
  472. package/scripts/josh/command-suggest.ts +1 -1
  473. package/scripts/josh/file-map-stamp.ts +20 -23
  474. package/scripts/josh/hook-decision.ts +24 -28
  475. package/scripts/josh/josh-command-map.ts +4 -1
  476. package/scripts/josh/josh-command-types.ts +32 -34
  477. package/scripts/josh/josh-commands-ai.ts +6 -6
  478. package/scripts/josh/josh-commands-backlog.ts +15 -3
  479. package/scripts/josh/josh-commands-clone.ts +1 -1
  480. package/scripts/josh/josh-commands-development.ts +33 -4
  481. package/scripts/josh/josh-commands-document.ts +3 -3
  482. package/scripts/josh/josh-commands-guard.ts +3 -3
  483. package/scripts/josh/josh-commands-issue.ts +11 -5
  484. package/scripts/josh/josh-commands-lane.ts +16 -5
  485. package/scripts/josh/josh-commands-lint.ts +1 -1
  486. package/scripts/josh/josh-commands-maintenance.ts +2 -2
  487. package/scripts/josh/josh-commands-run.ts +20 -6
  488. package/scripts/josh/josh-commands-split.ts +1 -2
  489. package/scripts/josh/josh-commands-versioning.ts +5 -5
  490. package/scripts/josh/josh-commands-workflow.ts +30 -22
  491. package/scripts/josh/josh-environment-file.ts +1 -1
  492. package/scripts/josh/josh-in-process.ts +3 -3
  493. package/scripts/josh/josh-logic.ts +10 -10
  494. package/scripts/josh/josh-run.ts +3 -3
  495. package/scripts/josh/josh-verdict.ts +9 -12
  496. package/scripts/josh/josh.ts +3 -3
  497. package/scripts/josh/kit-only.ts +2 -2
  498. package/scripts/josh/path-decision.ts +3 -3
  499. package/scripts/josh/platform-temporary.ts +7 -5
  500. package/scripts/josh/process-identity.ts +24 -6
  501. package/scripts/josh/process-owner.ts +4 -4
  502. package/scripts/josh/session-language-cli.ts +53 -11
  503. package/scripts/josh/session-language.ts +1 -1
  504. package/scripts/josh/stamp-file.ts +48 -29
  505. package/scripts/josh/stamp-record.ts +57 -0
  506. package/scripts/lane/lane-await.ts +35 -11
  507. package/scripts/lane/lane-cache.ts +6 -6
  508. package/scripts/lane/lane-capacity.ts +32 -17
  509. package/scripts/lane/lane-child-invocation.ts +17 -15
  510. package/scripts/lane/lane-child-marker.ts +12 -12
  511. package/scripts/lane/lane-cli.ts +20 -13
  512. package/scripts/lane/lane-close.ts +6 -6
  513. package/scripts/lane/lane-dispatch.ts +61 -72
  514. package/scripts/lane/lane-environment.ts +5 -5
  515. package/scripts/lane/lane-guard-policy.ts +7 -21
  516. package/scripts/lane/lane-handoff.ts +2 -2
  517. package/scripts/lane/lane-install.ts +9 -10
  518. package/scripts/lane/lane-launch-cli.ts +13 -8
  519. package/scripts/lane/lane-ledger.ts +73 -11
  520. package/scripts/lane/lane-leftover.ts +44 -30
  521. package/scripts/lane/lane-limit-cli.ts +160 -0
  522. package/scripts/lane/lane-limit-override.ts +74 -0
  523. package/scripts/lane/lane-load.ts +19 -68
  524. package/scripts/lane/lane-measure-cli.ts +15 -25
  525. package/scripts/lane/lane-occupancy.ts +6 -4
  526. package/scripts/lane/lane-open.ts +25 -24
  527. package/scripts/lane/lane-output.ts +4 -3
  528. package/scripts/lane/lane-paths.ts +22 -8
  529. package/scripts/lane/lane-phase.ts +33 -0
  530. package/scripts/lane/lane-reap.ts +2 -2
  531. package/scripts/lane/lane-registry.ts +27 -15
  532. package/scripts/lane/lane-relaunch.ts +9 -9
  533. package/scripts/lane/lane-report.ts +5 -4
  534. package/scripts/lane/lane-resume.ts +2 -2
  535. package/scripts/lane/lane-sampler.ts +55 -0
  536. package/scripts/lane/lane-seed.ts +7 -7
  537. package/scripts/lane/lane-stage-stats.ts +135 -0
  538. package/scripts/lane/lane-start-point.ts +8 -11
  539. package/scripts/lane/lane-stats.ts +60 -15
  540. package/scripts/lane/lane-stray.ts +140 -0
  541. package/scripts/lane/lane-vacant.ts +1 -1
  542. package/scripts/lane/openai-lane-supervisor-decision.ts +3 -7
  543. package/scripts/lane/openai-lane-supervisor-owner.ts +3 -9
  544. package/scripts/lane/openai-review-broker.ts +2 -4
  545. package/scripts/lib/ancestor-directories.ts +1 -1
  546. package/scripts/lib/bounded-pool.ts +2 -2
  547. package/scripts/lib/buffered-process.ts +4 -6
  548. package/scripts/lib/caddy-logs.sh +0 -0
  549. package/scripts/lib/cli-flags.ts +39 -6
  550. package/scripts/lib/error-message.ts +1 -1
  551. package/scripts/lib/json-value.ts +17 -3
  552. package/scripts/lib/poll.ts +1 -1
  553. package/scripts/lib/status-icons.ts +3 -3
  554. package/scripts/lib/timed-fetch.ts +1 -1
  555. package/scripts/lib/timeouts.ts +1 -1
  556. package/scripts/lines/bytes-command.ts +3 -4
  557. package/scripts/lines/effective-limit.ts +25 -12
  558. package/scripts/lines/line-budget.ts +47 -55
  559. package/scripts/lines/line-targets.ts +6 -2
  560. package/scripts/lines/lines-command.ts +3 -3
  561. package/scripts/lint/cspell-cached.ts +1 -1
  562. package/scripts/lint/cycle-recheck.ts +122 -0
  563. package/scripts/lint/format.ts +1 -2
  564. package/scripts/lint/lint-parallel.ts +34 -19
  565. package/scripts/lint/lint-related-scope.ts +25 -15
  566. package/scripts/lint/lint-related.ts +6 -7
  567. package/scripts/managed-marker/index.ts +1 -1
  568. package/scripts/managed-marker/managed-marker-logic.ts +1 -2
  569. package/scripts/notify/git-notify.ts +9 -7
  570. package/scripts/notify/telegram-notify.ts +53 -37
  571. package/scripts/notify/telegram-test-logic.ts +3 -3
  572. package/scripts/notify/telegram-test.ts +45 -30
  573. package/scripts/observations/observation-ledger-home.ts +14 -8
  574. package/scripts/observations/observation-ledger-line.ts +3 -2
  575. package/scripts/observations/observation-ledger-migrate.ts +3 -4
  576. package/scripts/observations/observation-ledger-prepare.ts +4 -4
  577. package/scripts/observations/observation-ledger.ts +14 -15
  578. package/scripts/observations/observation-record-cli.ts +83 -0
  579. package/scripts/observations/observation-record.ts +91 -0
  580. package/scripts/observations/observations-flush-cli.ts +1 -1
  581. package/scripts/observations/observations-flush-landing.ts +7 -6
  582. package/scripts/observations/observations-flush.ts +26 -27
  583. package/scripts/overrides/overrides-check.ts +18 -8
  584. package/scripts/package/package-scout-cli.ts +1 -1
  585. package/scripts/package/package-scout-format.ts +2 -2
  586. package/scripts/package/package-scout.ts +1 -1
  587. package/scripts/propagate/propagate-git-failure.ts +1 -1
  588. package/scripts/propagate/propagate-git.ts +7 -7
  589. package/scripts/propagate/propagate-plan.ts +2 -2
  590. package/scripts/propagate/propagate-publish.ts +2 -3
  591. package/scripts/propagate/propagate-run.ts +5 -7
  592. package/scripts/propagate/propagate-select.ts +1 -1
  593. package/scripts/propagate/propagate-steps.ts +19 -20
  594. package/scripts/propagate/propagate-targets.ts +6 -10
  595. package/scripts/propagate/propagate.ts +5 -5
  596. package/scripts/refactor/import-graph.ts +1 -1
  597. package/scripts/refactor/refactor-lint.ts +4 -10
  598. package/scripts/refactor/refactor-scan-cli.ts +1 -1
  599. package/scripts/refactor/refactor-scan.ts +2 -2
  600. package/scripts/refactor/refactor-targets.ts +1 -1
  601. package/scripts/release/github-release-cli.ts +25 -3
  602. package/scripts/release/github-release-environment.ts +1 -0
  603. package/scripts/release/github-release-runs.ts +115 -0
  604. package/scripts/release/github-release.ts +13 -67
  605. package/scripts/release/release-cli.ts +21 -4
  606. package/scripts/release/release-history.ts +6 -10
  607. package/scripts/release/release-plan.ts +3 -3
  608. package/scripts/release/release-progress.ts +3 -4
  609. package/scripts/release/release-publish.ts +8 -9
  610. package/scripts/release/release-scope-cli.ts +8 -10
  611. package/scripts/release/release-tag.ts +6 -8
  612. package/scripts/release/release-worktree.ts +5 -5
  613. package/scripts/repo/auto-merge-setting-logic.ts +7 -9
  614. package/scripts/repo/auto-merge-setting.ts +1 -1
  615. package/scripts/repo/repo-setting.ts +4 -4
  616. package/scripts/repo/repository-labels.ts +1 -1
  617. package/scripts/repo/required-checks-logic.ts +3 -3
  618. package/scripts/repo/required-checks-report.ts +1 -1
  619. package/scripts/repo/ruleset-check-cli.ts +1 -1
  620. package/scripts/repo/ruleset-check.ts +1 -1
  621. package/scripts/report/report-format-reference.ts +26 -0
  622. package/scripts/report/report-lint-cli.ts +2 -2
  623. package/scripts/report/report-lint.ts +16 -2
  624. package/scripts/review/disposition-cli.ts +2 -2
  625. package/scripts/review/disposition-logic.ts +1 -1
  626. package/scripts/review/live-evidence.ts +9 -6
  627. package/scripts/review/review-attest-cli.ts +1 -2
  628. package/scripts/review/review-attest.ts +3 -3
  629. package/scripts/review/review-brief-cli.ts +19 -20
  630. package/scripts/review/review-brief.ts +29 -32
  631. package/scripts/review/review-checkout.ts +2 -2
  632. package/scripts/review/review-diff-parts.ts +3 -5
  633. package/scripts/review/review-diff-write.ts +1 -1
  634. package/scripts/review/review-finding-ledger.ts +7 -4
  635. package/scripts/review/review-findings-cli.ts +2 -2
  636. package/scripts/review/review-level.ts +4 -7
  637. package/scripts/review/review-record-cli.ts +73 -16
  638. package/scripts/review/review-record.ts +5 -4
  639. package/scripts/review/review-round2-cli.ts +2 -3
  640. package/scripts/review/review-round2.ts +13 -21
  641. package/scripts/review/review-stamps.ts +9 -71
  642. package/scripts/review/review-tree.ts +4 -5
  643. package/scripts/rules/bash-triggers.ts +4 -4
  644. package/scripts/rules/decision-oracle-batch.ts +5 -6
  645. package/scripts/rules/decision-oracle-stage.ts +1 -1
  646. package/scripts/rules/decision-oracle-tokens.ts +1 -2
  647. package/scripts/rules/decision-oracle.ts +2 -2
  648. package/scripts/rules/delivered-rules.ts +61 -406
  649. package/scripts/rules/destructive-command.ts +2 -2
  650. package/scripts/rules/direct-filing.ts +4 -4
  651. package/scripts/rules/direct-pr-create.ts +2 -2
  652. package/scripts/rules/early-heartbeat.ts +15 -19
  653. package/scripts/rules/file-body.ts +5 -6
  654. package/scripts/rules/filing-cap.ts +6 -7
  655. package/scripts/rules/filing-offer.ts +1 -1
  656. package/scripts/rules/firing-point.ts +6 -6
  657. package/scripts/rules/gh-api.ts +2 -2
  658. package/scripts/rules/git-argv.ts +3 -3
  659. package/scripts/rules/git-force.ts +2 -2
  660. package/scripts/rules/hook-context-line.ts +31 -0
  661. package/scripts/rules/implementation-cut-verdict.ts +5 -8
  662. package/scripts/rules/implementation-cut.ts +35 -32
  663. package/scripts/rules/index-guard.ts +2 -2
  664. package/scripts/rules/issue-citation.ts +7 -7
  665. package/scripts/rules/issue-comments.ts +21 -13
  666. package/scripts/rules/josh-git-bare.ts +2 -2
  667. package/scripts/rules/lane-background.ts +14 -16
  668. package/scripts/rules/lane-carry-conflict.ts +41 -5
  669. package/scripts/rules/lane-interactive-ask.ts +6 -9
  670. package/scripts/rules/lane-park.ts +12 -16
  671. package/scripts/rules/lane-split-park.ts +1 -2
  672. package/scripts/rules/lane-switch-main.ts +10 -13
  673. package/scripts/rules/last-prompt.ts +1 -1
  674. package/scripts/rules/oracle-consulted.ts +5 -5
  675. package/scripts/rules/oracle-firing.ts +6 -9
  676. package/scripts/rules/oracle-list-cli.ts +2 -2
  677. package/scripts/rules/permission-guards.ts +2 -2
  678. package/scripts/rules/piped-verification.ts +79 -9
  679. package/scripts/rules/poll-loop.ts +9 -11
  680. package/scripts/rules/pre-gate-cut.ts +33 -30
  681. package/scripts/rules/prior-comment-read.ts +3 -3
  682. package/scripts/rules/protected-files.ts +25 -13
  683. package/scripts/rules/raw-field-body.ts +3 -4
  684. package/scripts/rules/reply-language.ts +1 -1
  685. package/scripts/rules/rule-body-guard.ts +10 -12
  686. package/scripts/rules/rule-guard.ts +1 -1
  687. package/scripts/rules/rule-list.ts +51 -0
  688. package/scripts/rules/rule-registry-rows.ts +282 -0
  689. package/scripts/rules/rule-registry.ts +109 -0
  690. package/scripts/rules/rule-value-cache.ts +2 -2
  691. package/scripts/rules/rule-value-cli.ts +6 -4
  692. package/scripts/rules/rule-value.ts +61 -22
  693. package/scripts/rules/run-tail-rule.ts +11 -15
  694. package/scripts/rules/shell-body-trigger.ts +7 -7
  695. package/scripts/rules/shell-segments.ts +2 -4
  696. package/scripts/rules/stop-rules.ts +54 -41
  697. package/scripts/rules/tail-commands.ts +1 -1
  698. package/scripts/rules/test-declared-commit.ts +2 -2
  699. package/scripts/rules/third-party-write.ts +3 -3
  700. package/scripts/rules/worktree-guard.ts +12 -5
  701. package/scripts/run/add/run-add-cli.ts +165 -0
  702. package/scripts/run/add/run-add.ts +124 -0
  703. package/scripts/run/board/run-board-cli.ts +207 -0
  704. package/scripts/run/board/run-board-closed.ts +95 -0
  705. package/scripts/run/board/run-board-every.ts +60 -0
  706. package/scripts/run/board/run-board-fetch.ts +38 -0
  707. package/scripts/run/board/run-board-fit.ts +219 -0
  708. package/scripts/run/board/run-board-github.ts +162 -0
  709. package/scripts/run/board/run-board-header.ts +275 -0
  710. package/scripts/run/board/run-board-kind.ts +35 -0
  711. package/scripts/run/board/run-board-labels.ts +299 -0
  712. package/scripts/run/board/run-board-layout.ts +222 -0
  713. package/scripts/run/board/run-board-link.ts +31 -0
  714. package/scripts/run/board/run-board-machine.ts +198 -0
  715. package/scripts/run/board/run-board-notes.ts +103 -0
  716. package/scripts/run/board/run-board-phase.ts +136 -0
  717. package/scripts/run/board/run-board-plan.ts +129 -0
  718. package/scripts/run/board/run-board-read.ts +62 -0
  719. package/scripts/run/board/run-board-render-legend.ts +82 -0
  720. package/scripts/run/board/run-board-render-notes.ts +77 -0
  721. package/scripts/run/board/run-board-render-slot.ts +50 -0
  722. package/scripts/run/board/run-board-render.ts +407 -0
  723. package/scripts/run/board/run-board-scope.ts +17 -0
  724. package/scripts/run/board/run-board-screen.ts +43 -0
  725. package/scripts/run/board/run-board-span.ts +66 -0
  726. package/scripts/run/board/run-board-spin.ts +115 -0
  727. package/scripts/run/board/run-board-state.ts +113 -0
  728. package/scripts/run/board/run-board-status.ts +279 -0
  729. package/scripts/run/board/run-board-tick.ts +210 -0
  730. package/scripts/run/board/run-board-track.ts +22 -0
  731. package/scripts/run/board/run-board-usage-read.ts +255 -0
  732. package/scripts/run/board/run-board-usage-rusage.ts +124 -0
  733. package/scripts/run/board/run-board-usage-text.ts +80 -0
  734. package/scripts/run/board/run-board-usage.ts +165 -0
  735. package/scripts/run/carry/run-carry-added.ts +62 -0
  736. package/scripts/run/carry/run-carry-args.ts +25 -22
  737. package/scripts/run/carry/run-carry-change.ts +1 -1
  738. package/scripts/run/carry/run-carry-cli.ts +71 -48
  739. package/scripts/run/carry/run-carry-conversation.ts +6 -7
  740. package/scripts/run/carry/run-carry-ended.ts +85 -0
  741. package/scripts/run/carry/run-carry-reclaim.ts +1 -1
  742. package/scripts/run/carry/run-carry-stash.ts +3 -2
  743. package/scripts/run/carry/run-carry-streak.ts +8 -10
  744. package/scripts/run/carry/run-carry.ts +85 -89
  745. package/scripts/run/cut/run-cut-args.ts +7 -7
  746. package/scripts/run/cut/run-cut-cli.ts +68 -37
  747. package/scripts/run/cut/run-cut-handoff.ts +15 -15
  748. package/scripts/run/cut/run-cut-report.ts +37 -16
  749. package/scripts/run/cut/run-cut.ts +63 -77
  750. package/scripts/run/detached-launch.ts +35 -50
  751. package/scripts/run/entry/run-entry-cli.ts +48 -27
  752. package/scripts/run/entry/run-entry-stop.ts +7 -9
  753. package/scripts/run/entry/run-entry.ts +5 -6
  754. package/scripts/run/event/run-event-cli.ts +5 -6
  755. package/scripts/run/event/run-event-filed.ts +69 -0
  756. package/scripts/run/event/run-event-follow.ts +3 -3
  757. package/scripts/run/event/run-event-plan.ts +38 -0
  758. package/scripts/run/event/run-event-render.ts +10 -4
  759. package/scripts/run/event/run-event-scope.ts +47 -18
  760. package/scripts/run/event/run-event-stream-emit.ts +64 -11
  761. package/scripts/run/event/run-event-stream.ts +172 -43
  762. package/scripts/run/event/run-event-watch.ts +4 -6
  763. package/scripts/run/hold/run-hold-cli.ts +65 -62
  764. package/scripts/run/hold/run-hold.ts +88 -46
  765. package/scripts/run/merge/run-merge-cli.ts +116 -77
  766. package/scripts/run/merge/run-merge-collect.ts +107 -0
  767. package/scripts/run/merge/run-merge-steps.ts +112 -65
  768. package/scripts/run/merge/run-merge-token.ts +30 -0
  769. package/scripts/run/merge/run-merge.ts +31 -22
  770. package/scripts/run/progress/run-progress-args.ts +4 -4
  771. package/scripts/run/progress/run-progress-cli.ts +39 -50
  772. package/scripts/run/progress/run-progress-clock.ts +25 -32
  773. package/scripts/run/progress/run-progress-config.ts +6 -9
  774. package/scripts/run/progress/run-progress-read.ts +9 -10
  775. package/scripts/run/progress/run-progress.ts +48 -53
  776. package/scripts/run/review/run-review-cli.ts +6 -6
  777. package/scripts/run/review/run-review-steps.ts +6 -6
  778. package/scripts/run/review/run-review.ts +9 -11
  779. package/scripts/run/run-cli-fault.ts +29 -0
  780. package/scripts/run/run-ending-cli.ts +3 -3
  781. package/scripts/run/run-ending.ts +10 -14
  782. package/scripts/run/run-halfrun-resume.ts +6 -8
  783. package/scripts/run/run-headless.ts +25 -12
  784. package/scripts/run/run-invocation.ts +17 -22
  785. package/scripts/run/run-label.ts +7 -5
  786. package/scripts/run/run-liveness-cli.ts +19 -6
  787. package/scripts/run/run-liveness.ts +27 -38
  788. package/scripts/run/run-next-cli.ts +5 -9
  789. package/scripts/run/run-next.ts +4 -5
  790. package/scripts/run/run-parent-cut-hook.ts +10 -12
  791. package/scripts/run/run-preflight.ts +25 -29
  792. package/scripts/run/run-prep-cli.ts +17 -13
  793. package/scripts/run/run-prep-locate.ts +4 -5
  794. package/scripts/run/run-prep.ts +7 -10
  795. package/scripts/run/run-prrun-resume.ts +2 -2
  796. package/scripts/run/run-report-cli.ts +4 -4
  797. package/scripts/run/run-report.ts +9 -14
  798. package/scripts/run/run-retrospective.ts +3 -3
  799. package/scripts/run/run-section.ts +42 -0
  800. package/scripts/run/run-stage-read.ts +2 -2
  801. package/scripts/run/run-stage.ts +6 -4
  802. package/scripts/run/run-status-cli.ts +7 -5
  803. package/scripts/run/run-status.ts +6 -7
  804. package/scripts/run/run-step-cli.ts +13 -15
  805. package/scripts/run/run-step.ts +62 -48
  806. package/scripts/run/run-stop-notify.ts +7 -8
  807. package/scripts/run/run-stranded-cli.ts +1 -1
  808. package/scripts/run/run-stranded-detect.ts +4 -4
  809. package/scripts/run/run-stranded.ts +11 -13
  810. package/scripts/run/run-tail-cli.ts +15 -16
  811. package/scripts/run/run-tail.ts +14 -33
  812. package/scripts/run/run-watcher-guard-cli.ts +3 -4
  813. package/scripts/run/run-watcher-guard.ts +11 -12
  814. package/scripts/run/run-watcher-hook.ts +6 -12
  815. package/scripts/run/ship/run-ship-cli.ts +67 -33
  816. package/scripts/run/ship/run-ship-detach.ts +15 -13
  817. package/scripts/run/ship/run-ship-lock.ts +1 -1
  818. package/scripts/run/ship/run-ship-next.ts +7 -8
  819. package/scripts/run/ship/run-ship-pre-detach.ts +27 -11
  820. package/scripts/run/ship/run-ship-preflight.ts +10 -11
  821. package/scripts/run/ship/run-ship-probe.ts +4 -4
  822. package/scripts/run/ship/run-ship-return.ts +1 -1
  823. package/scripts/run/ship/run-ship-review-steps.ts +43 -24
  824. package/scripts/run/ship/run-ship-review.ts +12 -14
  825. package/scripts/run/ship/run-ship-scoped.ts +15 -6
  826. package/scripts/run/ship/run-ship-stage.ts +80 -26
  827. package/scripts/run/ship/run-ship-steps.ts +26 -16
  828. package/scripts/run/ship/run-ship-stop-text.ts +4 -2
  829. package/scripts/run/ship/run-ship-sync.ts +9 -8
  830. package/scripts/run/ship/run-ship.ts +17 -32
  831. package/scripts/run/tidy/run-tidy-cli.ts +9 -5
  832. package/scripts/run/tidy/run-tidy-lanes.ts +18 -7
  833. package/scripts/run/tidy/run-tidy-stashes.ts +8 -8
  834. package/scripts/run/tidy/run-tidy.ts +4 -3
  835. package/scripts/run/wake/run-wake-cli.ts +27 -33
  836. package/scripts/run/wake/run-wake-describe.ts +76 -29
  837. package/scripts/run/wake/run-wake-driver.ts +14 -14
  838. package/scripts/run/wake/run-wake-handoff.ts +6 -6
  839. package/scripts/run/wake/run-wake-loop.ts +13 -21
  840. package/scripts/run/wake/run-wake-restart.ts +4 -5
  841. package/scripts/run/wake/run-wake-session.ts +23 -27
  842. package/scripts/run/wake/run-wake.ts +57 -328
  843. package/scripts/safe-chain/ci-installer-pin.ts +3 -3
  844. package/scripts/safe-chain/pack-hook.ts +2 -2
  845. package/scripts/safe-chain/preinstall-command.ts +2 -2
  846. package/scripts/security/security-audit-logic.ts +1 -1
  847. package/scripts/security/security-audit-provision-logic.ts +1 -1
  848. package/scripts/security/security-audit-provision.ts +2 -2
  849. package/scripts/security/security-audit.ts +5 -5
  850. package/scripts/security/security-updates-logic.ts +2 -3
  851. package/scripts/security/security-updates.ts +2 -4
  852. package/scripts/self-sync-guard/index.ts +1 -1
  853. package/scripts/self-sync-guard/self-sync-guard-logic.ts +2 -2
  854. package/scripts/self-sync-guard/self-sync-refusal.ts +1 -1
  855. package/scripts/sonar/sonar-hotspots-cli.ts +1 -1
  856. package/scripts/sonar/sonar-hotspots.ts +1 -1
  857. package/scripts/sonar/sonar-new-code-cli.ts +1 -1
  858. package/scripts/sonar/sonar-new-code.ts +1 -1
  859. package/scripts/sonar/sonar-project.ts +1 -1
  860. package/scripts/split/split-assess-cli.ts +1 -1
  861. package/scripts/split/split-assess.ts +3 -3
  862. package/scripts/sync/directory-copy-guard.ts +2 -3
  863. package/scripts/sync/managed-config-scope-cli.ts +1 -2
  864. package/scripts/sync/managed-config-scope.ts +4 -4
  865. package/scripts/sync/plugin-skill-directories.ts +2 -2
  866. package/scripts/sync/reconcile-templates.ts +17 -8
  867. package/scripts/sync/removed-skill-manifest.ts +2 -3
  868. package/scripts/sync/sync-ai-files.ts +7 -7
  869. package/scripts/sync/sync-configs.ts +30 -3
  870. package/scripts/sync/sync-hook-safety.ts +2 -2
  871. package/scripts/sync/sync.ts +23 -10
  872. package/scripts/sync/synced-paths.ts +2 -1
  873. package/scripts/sync/workflow-pin-logic.ts +1 -1
  874. package/scripts/test/test-declared-changed.ts +4 -4
  875. package/scripts/test/test-declared-logic.ts +2 -3
  876. package/scripts/test/test-declared-match.ts +25 -4
  877. package/scripts/test/test-declared.ts +26 -9
  878. package/scripts/test/test-red-commit.ts +3 -2
  879. package/scripts/test/test-red-logic.ts +7 -14
  880. package/scripts/test/test-red.ts +12 -47
  881. package/scripts/test/test-related-scope.ts +2 -3
  882. package/scripts/test/test-related.ts +3 -3
  883. package/scripts/test/test-type-logic.ts +1 -2
  884. package/scripts/test/test-unit-guard.ts +13 -17
  885. package/scripts/test/unit-worker-share.ts +7 -8
  886. package/scripts/time-runtime/time-agent-bundles.ts +2 -4
  887. package/scripts/time-runtime/time-background.ts +17 -21
  888. package/scripts/time-runtime/time-batch-guard.ts +67 -342
  889. package/scripts/time-runtime/time-bundle-call.ts +26 -28
  890. package/scripts/time-runtime/time-bundles.ts +11 -12
  891. package/scripts/time-runtime/time-call-identity.ts +1 -1
  892. package/scripts/time-runtime/time-command-key.ts +2 -2
  893. package/scripts/time-runtime/time-density-hook.ts +8 -11
  894. package/scripts/time-runtime/time-density.ts +5 -5
  895. package/scripts/time-runtime/time-followup-stage.ts +7 -7
  896. package/scripts/time-runtime/time-format.ts +5 -5
  897. package/scripts/time-runtime/time-hook-transcript.ts +3 -3
  898. package/scripts/time-runtime/time-instant.ts +1 -1
  899. package/scripts/time-runtime/time-markers.ts +15 -19
  900. package/scripts/time-runtime/time-phase-names.ts +3 -3
  901. package/scripts/time-runtime/time-reported-failure.ts +15 -19
  902. package/scripts/time-runtime/time-round-trips.ts +20 -23
  903. package/scripts/time-runtime/time-shell.ts +8 -8
  904. package/scripts/time-runtime/time-single-check.ts +1 -2
  905. package/scripts/time-runtime/time-spans.ts +35 -40
  906. package/scripts/time-runtime/time-tool-call.ts +15 -16
  907. package/scripts/time-runtime/time-transcript-line.ts +53 -34
  908. package/scripts/time-runtime/time-writes.ts +5 -5
  909. package/scripts/ui/ui-routes-cli.ts +1 -2
  910. package/scripts/ui/ui-routes.ts +1 -2
  911. package/scripts/version/bump-version.ts +1 -1
  912. package/scripts/version/fresh-metadata-cache.ts +2 -2
  913. package/scripts/version/latest-corepack.ts +129 -98
  914. package/scripts/version/latest-lane-guard.ts +1 -1
  915. package/scripts/version/latest-scope-cli.ts +2 -2
  916. package/scripts/version/latest-stamp.ts +1 -2
  917. package/scripts/version/latest-update.ts +2 -2
  918. package/scripts/version/npm-registry.ts +2 -2
  919. package/scripts/version/package-manager-version.ts +18 -0
  920. package/scripts/version/publishable-range-check.ts +2 -1
  921. package/scripts/version/publishable-range.ts +1 -1
  922. package/scripts/version/release-age.ts +11 -11
  923. package/scripts/version/release-hold.ts +2 -2
  924. package/scripts/version/safe-chain-version-update.ts +3 -3
  925. package/scripts/version/version-check-logic.ts +2 -3
  926. package/scripts/version/version-check.ts +1 -2
  927. package/scripts/version/version-command-config.ts +2 -2
  928. package/scripts/version/version-commands.ts +3 -3
  929. package/scripts/version/version-remote.ts +4 -4
  930. package/scripts/version/version-targets.ts +2 -2
  931. package/templates/gitignore +7 -0
  932. package/templates/workflows/github-release.yml +4 -0
  933. package/dist/hooks/chunk-NV2JRZZO.js +0 -6385
  934. package/dist/hooks/chunk-RKUAD3I6.js +0 -90
  935. package/dist/hooks/chunk-WPALEIRX.js +0 -18
  936. package/scripts/backlog/backlog-restructure.ts +0 -152
  937. package/scripts/rules/issue-fold-rule.ts +0 -72
  938. package/scripts/rules/wip-cap.ts +0 -63
  939. package/scripts/run/run-issue-number.ts +0 -19
@@ -6,9 +6,9 @@ When this run files a new Issue, file it with `pnpm josh issue:file`, which lint
6
6
  implements the change and runs the full verification gate, then **stops before commit** — nothing is
7
7
  committed, pushed, or opened as a PR — so a person verifies the working tree by hand. Use it when a change needs human eyes before shipping.
8
8
 
9
- **This file is the manifest** (joshuafolkken/kit#2189). The entry sequence and the stop branches are
10
- `entry-sequence.md`, shared with `fullrun` and `prrun` (joshuafolkken/kit#3174); this file names only
11
- what is `halfrun`'s own.
9
+ **This file is the manifest.** The entry sequence and the stop branches are `entry-sequence.md`,
10
+ shared with `fullrun` and `prrun`; this file names only what is `halfrun`'s own. History:
11
+ `docs/maintainers/halfrun-rationale.md` → "Where each rule came from".
12
12
 
13
13
  ## The difference — the entry
14
14
 
@@ -20,7 +20,7 @@ what is `halfrun`'s own.
20
20
  ## The step list
21
21
 
22
22
  `halfrun #<N>`: read Issue #N and its comments → **normalize the title** (same as
23
- `fullrun`) → post the agreed plan only if the body is blank → `git switch main && git pull`, then `pnpm
23
+ `fullrun`) → post the agreed plan only if the body is blank → `pnpm josh ms`, then `pnpm
24
24
  josh latest:scope` and update dependencies only on `required` (`latest-gate.md`; the
25
25
  `dependency-update` skill) → implement → run the **full verification gate** (refactor →
26
26
  start `pnpm josh gate` beside a subagent `/code-review` with the brief `pnpm josh review:brief` prints,
@@ -30,7 +30,7 @@ skip is the answer where the project has no suite) → **mark the stop: `pnpm jo
30
30
  --halfrun-stop`** (the record `fullrun #<N>` adopts; `new` passes the filed number) → send a
31
31
  `confirmation` Telegram with the resume commands in the body → **stop**. Plan comments are in the session language. The `confirmation` Telegram
32
32
  body MUST include the exact resume commands — **the `Next:` line first**, since that is how a verified
33
- `halfrun` ships (joshuafolkken/kit#2796): its `run:entry` adopts this stop's marked hold and resumes at
33
+ `halfrun` ships: its `run:entry` adopts this stop's marked hold and resumes at
34
34
  the gate. The direct commands follow for shipping without an agent:
35
35
  `pnpm josh notify --task-type confirmation --issue-url "<issue-url>" --body=$'halfrun ready for manual
36
36
  verification\nNext: prrun #<N> | fullrun #<N>\nWithout an agent: pnpm josh git -y "<title> #<N>" && pnpm josh
@@ -42,11 +42,12 @@ back with fixes, treat each as a new round: implement, re-run `pnpm josh gate`,
42
42
 
43
43
  `halfrun new` or `halfrun new "<title>"`: `kickoff new` + `halfrun #<N>` (no Issue exists yet). Steps
44
44
  mirror `fullrun new` (1)–(8): derive an English title (or use the provided one) → create the Issue
45
- (`pnpm josh issue:file "<title>" --body-file <body-file> --depth <n>`, body per
45
+ (`pnpm josh issue:file "<title>" --body-file <body-file> --depth <n> --requested`, with the labels
46
+ `kickoff.md` → "Words typed after `new`" maps, body per
46
47
  `prompts/collaboration-workflow/issue-template.md`; its duplicate scan is read per `issue-scout.md`) → add `in-progress` (as `fullrun new` (3)) → post the agreed plan → stash
47
48
  any pre-existing changes with `git stash push -m "halfrun new: pre-existing changes" -- ':!.josh/observations'`
48
- (the pathspec keeps the observation ledger in the tree for this run's commit; joshuafolkken/kit#2919), popped by
49
+ (the pathspec keeps the observation ledger in the tree for this run's commit), popped by
49
50
  message with `pnpm josh stash:pop "halfrun new: pre-existing changes"`, never a positional `git stash pop` →
50
- `git switch main && git pull` → `pnpm josh latest:scope` → implement → run the gate (as above, `pnpm
51
+ `pnpm josh ms` → `pnpm josh latest:scope` → implement → run the gate (as above, `pnpm
51
52
  josh test:e2e` run by **you**) → `pnpm josh run:hold <N> --halfrun-stop` → send the `confirmation`
52
53
  Telegram and **stop**.
@@ -1,31 +1,26 @@
1
1
  # The `into <target>` suffix — where the new Issue lands
2
2
 
3
3
  **This file is the suffix's single source, read at its point of use — the moment a `new` entry is
4
- typed with an `into <target>` suffix, not at any entry** (joshuafolkken/kit#2161). A run given a `#N`
5
- or a bare `new` never reaches it, so it costs a workflow entry nothing to leave it here. `SKILL.md` →
6
- §2's table keeps the trigger and points here.
4
+ typed with an `into <target>` suffix, not at any entry.** A run given a `#N` or a bare `new` never
5
+ reaches it. `SKILL.md` → §2's table keeps the trigger and points here. Rationale:
6
+ `docs/maintainers/into-target-rationale.md` → "Why the suffix reads as it does".
7
7
 
8
8
  `kickoff new` / `fullrun new` / `halfrun new` accept a suffix naming the epic the run's artifact
9
9
  belongs to. Without it the artifact belongs to no epic, and `epic:next` only ever offers an epic's
10
10
  children — so a forgotten instruction parks that Issue permanently rather than losing it visibly.
11
11
 
12
12
  ```
13
- kickoff new into #909
14
- fullrun new into #909
15
- halfrun new into #909
16
- kickoff new "<title>" into #909
17
- kickoff new into joshuafolkken/kit#909
13
+ kickoff new into #<E>
14
+ fullrun new into #<E>
15
+ halfrun new into #<E>
16
+ kickoff new "<title>" into #<E>
17
+ kickoff new into joshuafolkken/kit#<E>
18
18
  ```
19
19
 
20
- `into` is the spelling because the alternatives collide with forms that already mean something else:
21
- `kickoff new #909` reads as the existing `kickoff #N`, and `kickoff new epic #909` reads as "create a
22
- new epic" when what gets created is often a single Issue.
23
-
24
20
  - **One artifact goes in: the top-level one this run created.** No split, and it is the Issue; a
25
21
  split, and it is the epic. The children belong to that epic, not to the target.
26
22
  - **Insert as soon as the artifact exists** — before implementation in `fullrun new`, before the plan
27
- comment in `kickoff new`. Left until the end, a run that stops halfway leaves behind exactly the
28
- orphaned Issue this suffix exists to prevent.
23
+ comment in `kickoff new`.
29
24
  - **The insertion always goes through `pnpm josh epic --add <E> <N> [--before <M> | --after <M>]`.**
30
25
  Never hand-edit the epic body: the declaration and the `blocked-by` relations then disagree,
31
26
  `epic:next` answers `error`, and an unattended run stops.
@@ -35,8 +30,7 @@ new epic" when what gets created is often a single Issue.
35
30
  ahead of.
36
31
  - **A target that is not an epic is refused, and the refusal names both ways out**:
37
32
  `pnpm josh epic --promote <N> <N...>` when it is a request, a discussion or a container, or a new
38
- epic over both when it is itself one of the deliverables. Never promote on your own — which arm
39
- applies depends on what the target is, and promoting rewrites someone else's Issue into a container.
33
+ epic over both when it is itself one of the deliverables. Never promote on your own.
40
34
  - **A cross-repository target is written `owner/repo#N`** and inserted from that repository's
41
35
  checkout; run there, since `epic --add` reads and writes only the repository it runs from
42
36
  (`.claude/skills/epic-commands/SKILL.md` → "Epics that span repositories"). A bare `#N` resolves to this repository's
@@ -44,5 +38,5 @@ new epic" when what gets created is often a single Issue.
44
38
  - **No suffix leaves the behavior exactly as it was.**
45
39
 
46
40
  **It is not `epic:bundle`, and both still run.** `epic:bundle` *recommends* an epic for a newly filed
47
- Issue and does nothing when the signal is weak; `into` is a person naming one explicitly. They are
48
- separate routes, so the `epic:bundle` call that follows a filing happens exactly as before.
41
+ Issue and does nothing when the signal is weak; `into` is a person naming one explicitly. The
42
+ `epic:bundle` call that follows a filing happens exactly as before.
@@ -1,15 +1,11 @@
1
1
  # An Issue's comments are part of the Issue
2
2
 
3
- **This file is the single source, so the entry read carries the trigger and the pointer, not the
4
- procedure** (joshuafolkken/kit#2189). `SKILL.md` → §2's table keeps the trigger, and every `#N` entry
5
- file routes here for the definition. It is read at its point of use — before implementing a
6
- `#N` Issue.
3
+ **The single source of the comment read**, read at its point of use — before implementing a `#N`
4
+ Issue. Rationale and history: `docs/maintainers/issue-comments-rationale.md` → "Why comments are read".
7
5
 
8
6
  **Every `#N` entry point reads the Issue's comments before it implements** — `fullrun`, `halfrun` and
9
- `kickoff`. A `backlogrun` named issue and a `backlogrun` epic child inherit it rather than restate it: each runs in a
10
- delegated unit executing `fullrun`'s procedure, and the hook keys its once-per-run record on the
11
- *fork's* transcript, so every child is delivered to in its own right. The read is one call, made in the
12
- same turn as whatever else the run already needs:
7
+ `kickoff`; a `backlogrun` named issue and epic child inherit it through `fullrun`'s procedure. The read
8
+ is one call, made in the same turn as whatever else the run already needs:
13
9
 
14
10
  ```bash
15
11
  pnpm josh issue:read <N> [<N> ...] # body and comments, one call per batch
@@ -18,21 +14,12 @@ gh api repos/{owner}/{repo}/issues/<N>/comments --jq '.[] | {user: .user.login,
18
14
 
19
15
  **The first line is the one to type**; `pnpm josh issue:read` answers the body and the comments for
20
16
  every number named, in one call, and **says when a comment listing could not be read rather than
21
- showing no comments** — which matters here, because the rule below is that the later text wins and a
22
- comment nobody read cannot win anything. The `gh api` form stays for a **cross-repository** read: the
23
- command takes no `--repo`.
17
+ showing no comments**. The `gh api` form stays for a **cross-repository** read: the command takes no
18
+ `--repo`. Never `gh issue view <N> --comments` — it is GraphQL-backed and a cloud session is answered
19
+ `403`.
24
20
 
25
- `gh issue view <N> --comments` is GraphQL-backed, a cloud session is answered `403`, and
26
- `scripts/gh/gh-document-guard.test.ts` refuses it in a runnable block. The REST call above is the portable
27
- form.
28
-
29
- **This repository writes its agreements into comments and then reads only bodies.** A Tier A decision
30
- is logged as an Issue comment; the review round cap records a dropped finding's disposition; the
31
- backlog's decision pass writes each decision to a comment on the child; a stash left behind is recorded on the Issue. **The
32
- place a run is told to write is the place it was never told to read**, and nothing in a body says it
33
- has been superseded, so the mistake is silent.
34
-
35
- **What the reading is for**, so it is not skimmed: the boundary of the scope — work a comment moved to
21
+ **This repository writes its agreements into comments and then reads only bodies.** **What the
22
+ reading is for**, so it is not skimmed: the boundary of the scope — work a comment moved to
36
23
  another Issue, or added to this one; the record of an auto-decision already made; a split or epic
37
24
  agreement reached after filing; a recorded stash or an in-flight branch; and a **correction of the
38
25
  body's own diagnosis**.
@@ -102,7 +89,5 @@ brief a delegated unit to return **the agreements in force plus the comment URLs
102
89
  never the comment text.
103
90
 
104
91
  **`pnpm josh rule:guard` refuses the body-only read** and hands over the reissue and the conflict rule
105
- at the moment they bind (`prompts/collaboration-workflow/rule-delivery.md`,
106
- `scripts/rules/delivered-rules.test.ts`). The refusal reaches Claude Code alone and repeats until the comments are read,
107
- so **this file is the rule and the hook is what makes it hard to walk past** — a session that runs
108
- no hooks still owes the read.
92
+ at the moment they bind (`prompts/collaboration-workflow/rule-delivery.md`). **This file is the rule,
93
+ not the hook** — a session that runs no hooks still owes the read.
@@ -24,32 +24,27 @@
24
24
  / `failure` ❌ / `kickoff_retry` 🔄 / `confirmation` ⏸️). `--repo-name` and `--issue-title` are
25
25
  auto-fetched from `gh` when not supplied. The Issue URL must be included.
26
26
 
27
- **`kickoff` does not claim the working-tree hold, and does not release one.** What that guard protects
28
- is one branch, one index and one uncommitted diff; this command reads the Issue, normalizes the title,
29
- posts the plan, notifies and stops — every one of those against GitHub, none against the tree. So a
30
- `fullrun` running in this checkout never stops a `kickoff`, and a `kickoff` never touches the record
31
- that run is holding. It claims nothing, so it must not release anything either. `working-tree-hold.md` is the
32
- single source.
27
+ **`kickoff` does not claim the working-tree hold, and does not release one** — it touches GitHub, never
28
+ the tree. `working-tree-hold.md` is the single source.
33
29
 
34
30
  **The target repository is named in front of the Issue reference** — `kickoff kit#new`,
35
- `kickoff joshuafolkken/kit#412`. The definition is `target-repository.md`, whose body is `target-repository.md`. `kickoff` is the entry that needs
31
+ `kickoff joshuafolkken/kit#<N>`. The definition is `target-repository.md`. `kickoff` is the entry that needs
36
32
  no checkout: name the target repository in the path of every `gh api` call — reads included — and never
37
33
  clone. The one exception is the split path's epic, since `pnpm josh epic` writes only the repository it
38
34
  runs in — and the promote arm has no remote fallback at all, so it stops when that repository is not
39
35
  checked out here. A target whose owner is not this session's is third-party: Tier C, so it stops rather
40
36
  than filing.
41
37
 
42
- **Read `split-assessment.md` → "The question" first.** It is the split decision every entry point
43
- applies, including this one — `kickoff #N` assesses scope exactly as `kickoff new` does. Its default is
44
- not to split: separability and a scope that clearly exceeds what one verification gate can confirm in
45
- one pass (the size guide is stated there) have to hold **together**.
46
- The rest of `split-assessment.md` — what each entry does with the answer — is read on demand when a
47
- split is found.
38
+ **Read `split-assessment.md` → "The question" first** — `kickoff #N` assesses scope exactly as
39
+ `kickoff new` does. Its default is not to split: separability and a scope that clearly exceeds what one
40
+ verification gate can confirm in one pass have to hold **together**. The rest of `split-assessment.md`
41
+ is read on demand when a split is found.
48
42
 
49
43
  - `kickoff new` or `kickoff new "<title>"`: No Issue exists yet. Steps: (0) **Scope assessment** per
50
44
  `split-assessment.md`. If multiple → the **multi-issue split path**; if single → the **single-issue
51
45
  path**. **Single-issue path**: (1) Derive an English title from the conversation, or use the provided
52
- title. (2) Create Issue: `pnpm josh issue:file "<title>" --body-file <body-file> --depth <n>` (body
46
+ title. (2) Create Issue: `pnpm josh issue:file "<title>" --body-file <body-file> --depth <n>
47
+ --requested` plus the labels the words typed after `new` name ("Words typed after `new`", below) (body
53
48
  per `prompts/collaboration-workflow/issue-template.md`) — its duplicate scan runs first, and a
54
49
  candidate that covers the same work stops the run rather than filing a second Issue (`SKILL.md` →
55
50
  `issue-scout.md`). Capture `<N>`. (3)
@@ -57,7 +52,7 @@ split is found.
57
52
  Telegram notification. (5) **Stop** — do not implement. **Multi-issue split path**: (1) For each
58
53
  independent deliverable, derive a focused English title and create a separate Issue with the
59
54
  `route:split` label (its duplicate scan is read per `issue-scout.md`): `pnpm josh issue:file
60
- "<sub-title>" --body-file <body-file> --depth <n> --route split`. Capture each Issue number. **When the split is filed into a repository other than
55
+ "<sub-title>" --body-file <body-file> --depth <n> --route split --requested` plus the labels the words typed after `new` name. Capture each Issue number. **When the split is filed into a repository other than
61
56
  the one this session is running in**, every child body gets the `## Origin` backlink described in the
62
57
  cross-package rule the AI documents keep resident, the epic body carries the same link as prose or a
63
58
  plain bullet (never as a checkbox row, which would disable its auto-close), and the originating Issue
@@ -77,7 +72,7 @@ split is found.
77
72
  write `None — the children are independent; any execution order works.` under `Dependencies`. **The
78
73
  epic itself is never implemented** — a `backlogrun` takes a named epic and runs its *children*. `pnpm josh
79
74
  followup` closes it automatically once every child is closed. **Only when the execution order
80
- matters**, record it natively: `pnpm josh epic --ordered` treats the argument order as the dependency
75
+ matters** — the criterion is `execution-waves.md` → "When a wave may be declared" — record it natively: `pnpm josh epic --ordered` treats the argument order as the dependency
81
76
  order; on the manual fallback path, after the child Issues exist, `gh api
82
77
  repos/{owner}/{repo}/issues/<N2>/dependencies/blocked_by -F issue_id="$(gh api
83
78
  repos/{owner}/{repo}/issues/<N1> --jq .id)"` for each dependent pair (the endpoint takes the blocker's
@@ -86,3 +81,19 @@ split is found.
86
81
  `backlogrun #<E> --only`. (5) **Stop** — do not implement.
87
82
 
88
83
  `pnpm josh issue:file` lints the body and applies the classification labels it declares, following `prompts/collaboration-workflow/issue-template.md` for classification (`docs/josh-commands-backlog.md` → `josh issue:file`).
84
+ An Issue a consumer can use only once it is published is filed with `--release` (`kickoff new`), or linked with `pnpm josh issue:release <N>` (`kickoff #N`) — either makes it a blocker of the repository's `release` Issue, which never gets `auto-ok` on its own.
85
+
86
+ ## Words typed after `new`
87
+
88
+ **An Issue a person asked for is filed with `--requested`** — every `new` entry (each child of its
89
+ multi-issue split included), and a request in conversation. A live carry record or an `auto-ok` branch Issue then does not opt it in, so no lane takes
90
+ it before the person picks the run; `auto-ok` comes only from the words below (`issue-auto-ok.ts`). A
91
+ filing the run decides on its own — observation, retrospective, a split the run finds itself, routed — never declares it.
92
+
93
+ **Words after `new`** (`kickoff new auto ok high`) are read like `into <target>`, never inferred. Each
94
+ adds its labels to the `--requested` filing; a word not in the table is asked about:
95
+
96
+ | Typed | Added to `pnpm josh issue:file` |
97
+ | --------- | ---------------------------------- |
98
+ | `auto ok` | `--label auto-ok --label run:lane` |
99
+ | `high` | `--label priority:high` |
@@ -1,11 +1,9 @@
1
1
  # The dependency update — when `josh latest` runs
2
2
 
3
- `josh latest` updates corepack, every dependency, the published ranges and `pnpm audit`, in that
4
- order and over the network. Until joshuafolkken/kit#1215 every entry point put it at the head of
5
- every run and called it **mandatory, never skip** — so a standalone `fullrun` paid 60–120 seconds
6
- for it before touching the issue, and a batch that ran ten children paid it ten times unless the
7
- entry's own file happened to hoist it by hand. This file is that rule's **single source**; every
8
- entry point references it and none restates it.
3
+ `josh latest` updates every dependency, the published ranges, `pnpm audit` and pnpm, in that
4
+ order and over the network. This file is the **single source** of when it runs; every entry point
5
+ references it and none restates it. History: `docs/maintainers/latest-gate-rationale.md` → "Where
6
+ each rule came from".
9
7
 
10
8
  ## Ask the command; do not decide
11
9
 
@@ -15,10 +13,8 @@ pnpm josh latest:scope # → required | skip ; the reason on stderr
15
13
 
16
14
  **`required` means run it. `skip` means the update is already current and this run does not.**
17
15
 
18
- **The input is when `josh latest` last finished in this checkout, and nothing else.** "The
19
- dependencies are probably still fresh" is a judgement made under time pressure, and time pressure
20
- resolves it toward `skip` exactly when a stale dependency is most likely to matter — the same reason
21
- `pnpm josh review:brief --level-only` took the review level out of an agent's hands.
16
+ **The input is when `josh latest` last finished in this checkout, and nothing else** — never a
17
+ judgement that the dependencies are probably still fresh.
22
18
 
23
19
  - **No record answers `required`.** A fresh checkout, a cleared temp directory, a run that fell over
24
20
  halfway — every one of them lands there, and none of them is evidence that anything is current.
@@ -26,43 +22,38 @@ resolves it toward `skip` exactly when a stale dependency is most likely to matt
26
22
  failed leaves nothing behind and the next run updates again.
27
23
  - **The window is 12 hours**, moved in either direction by `JOSH_LATEST_MAX_AGE_HOURS`. A value that
28
24
  is not a positive number falls back to the default rather than disabling the update.
29
- - **The record is per checkout.** An epic that spans repositories therefore updates each one on its
30
- own schedule, which is what the old "once per session, not once per run" wording was reaching for.
25
+ - **The record is per checkout.** An epic that spans repositories updates each one on its own
26
+ schedule.
31
27
 
32
28
  ## What runs when the answer is `required`
33
29
 
34
30
  ```bash
35
31
  git stash push -u -m "josh latest" # only if the working tree has staged or modified files
36
- git switch main && git pull
32
+ pnpm josh ms
37
33
  pnpm josh latest # on `required` only
38
34
  pnpm josh stash:pop "josh latest" # only if you stashed above — by message, never a positional pop
39
35
  ```
40
36
 
41
- **The pop is by message, never a bare `git stash pop`.** The stash is a repository-wide stack every
42
- work tree shares, so a positional pop would take whichever lane last pushed rather than the one this
43
- step saved (joshuafolkken/kit#2050).
37
+ **The pop is by message, never a bare `git stash pop`** — the stash is a repository-wide stack every
38
+ work tree shares.
44
39
 
45
40
  Then **load the `dependency-update` skill and follow its procedure** — the overrides in **both**
46
- `pnpm-workspace.yaml` and `package.json`, and the one expected `devEngines` pnpm bump. That condition
47
- is unchanged and unconditional: it applies to every run in which `josh latest` actually ran, and
48
- never reports the pins intact without having been run.
41
+ `pnpm-workspace.yaml` and `package.json`, and the one expected `devEngines` pnpm bump — in every run in
42
+ which `josh latest` actually ran; never report the pins intact without having run it.
49
43
 
50
44
  **On `skip`, one line of that block goes away and no more.** `pnpm josh latest` does not run, and
51
45
  the `dependency-update` skill is not read, because nothing rewrote a pin for it to check.
52
46
 
53
47
  **Two of those steps are not this gate's, and making either conditional breaks something.**
54
- `git switch main && git pull` runs per issue and per child either way: it is what brings the previous
55
- merge into the tree, and an issue that skips it starts implementing on a stale default branch. The
56
- stash before it is the branch switch's, not the update's — a dirty tree stops `git switch` whatever
57
- this command answered — so it is conditional on the **tree**, never on the answer.
48
+ `pnpm josh ms` runs per issue and per child either way — it brings the previous merge into the tree.
49
+ The stash before it is the branch switch's, not the update's, so it is conditional on the **tree**,
50
+ never on the answer.
58
51
 
59
52
  ## The vulnerability net is not what moved
60
53
 
61
54
  `pnpm audit` runs inside `josh latest`, so a `skip` skips that reading too. **What still covers every
62
55
  merge is CI**: the `Security Audit` job runs on every pull request and is one of the required checks
63
- `pnpm josh followup` waits on, so nothing reaches the default branch without a fresh audit —
64
- whatever this gate answered locally. The local reading is a head start on a failure CI would catch
65
- anyway; it was never the only net.
56
+ `pnpm josh followup` waits on.
66
57
 
67
58
  ## The lock file lands with the issue that ran the update
68
59
 
@@ -72,6 +63,4 @@ CI on a bump rather than on its own change, fix it forward before parking the is
72
63
  for the elapsed-time window: `docs/maintainers/latest-gate-rationale.md` → "Why an elapsed-time
73
64
  window rather than once per batch".
74
65
 
75
- This file is the single source of the rule. `fullrun.md`, `halfrun.md`, `backlogrun.md` and `backlogrun.md`
76
- each name `pnpm josh latest:scope` at the point their procedure reaches it and route here for
77
- everything else; `docs/josh-commands-automation.md` documents the command itself.
66
+ `docs/josh-commands-automation.md` documents the command itself.
@@ -1,16 +1,11 @@
1
1
  # `needs-human-review` — the child that stops before its commit
2
2
 
3
- **This file is the single source, so the entry read carries the trigger and the pointer, not the
4
- procedure** (joshuafolkken/kit#2189). `SKILL.md` → §2's table keeps the trigger;
5
- `entry-sequence.md` and `backlogrun.md` route here for the definition. It is read at its point
6
- of use — the moment `pnpm josh issue:state <N>` answers `human_review: yes`.
3
+ **The single source of the label**, read at its point of use — the moment `pnpm josh issue:state <N>`
4
+ answers `human_review: yes`. Rationale and history: `docs/maintainers/needs-human-review-rationale.md`
5
+ → "Why the label exists".
7
6
 
8
7
  An issue carrying **`needs-human-review`** is degraded to a `halfrun`-shaped stop, whichever entry
9
- point reached it — `fullrun` or `backlogrun`. It is `auto-ok`'s opposite: that label widens
10
- unattended execution past an epic's edge, this one withholds its last step, and this one may be
11
- applied **only by a person**. It exists because some work's quality is not something a test can judge — a
12
- **published artifact** whose unit tests say nothing about the writing, or **a choice that was a
13
- person's to make** such as picking one of several generated candidates.
8
+ point reached it — `fullrun` or `backlogrun` — and the label may be applied **only by a person**.
14
9
 
15
10
  - **Implementation and the verification gate run normally** — refactor, `pnpm josh gate`,
16
11
  `/code-review`, exactly as for any other child.
@@ -28,15 +23,11 @@ person's to make** such as picking one of several generated candidates.
28
23
  carries on from the commit themselves. The stop report carries that resume command too, not only the
29
24
  Telegram.
30
25
 
31
- **Stopping is the specification, not a failure.** The label's job is to stop a batch walking past a
32
- decision that was a person's to make.
26
+ **Stopping is the specification, not a failure.**
33
27
 
34
- **Read the answer from `pnpm josh issue:state <N>`, never by matching the label string yourself.** It
35
- prints a `human_review: yes` / `human_review: no` line beside the state and the labels, through the
36
- same case-insensitive comparison every other workflow label goes through — so `Needs-Human-Review` is
37
- not missed. **Ask once, before implementing**: `epic:next` prints a bare issue number and `fullrun`
38
- and a batch child are handed one, so the check is one call of its own, made the moment the number is in
39
- hand and before the plan.
28
+ **Read the answer from `pnpm josh issue:state <N>`, never by matching the label string yourself** — it
29
+ compares case-insensitively. **Ask once, before implementing**: one call of its own, made the moment
30
+ the number is in hand and before the plan.
40
31
 
41
32
  ```bash
42
33
  pnpm josh issue:state <N> # state, labels, and human_review
@@ -52,13 +43,11 @@ repository, by a person:
52
43
  gh api repos/{owner}/{repo}/labels -f name=needs-human-review -f color=d93f0b -f description="Implement and verify, but stop before committing so a person can look"
53
44
  ```
54
45
 
55
- **It is not `needs-decision`, and reading it as one breaks two things.** `needs-decision` withholds a
56
- run's *start*; this withholds its *end*. So a `needs-human-review` issue is still offered — excluded,
57
- the artifact a person is meant to look at would never be produced — and a child stopped by it **goes on
58
- holding its repository**, because the uncommitted work is still in the checkout; read as parked there,
59
- the next child would start `git switch main && git pull` on top of it. The code encodes both halves by
60
- leaving the label out of two sets: `scripts/issue/issue-labels.ts` keeps it out of
61
- `NOT_DIRECTLY_RUNNABLE_LABELS` and `scripts/epic/epic-busy.ts` keeps it out of the parked set.
46
+ **It is not `needs-decision`**: `needs-decision` withholds a run's *start*; this withholds its *end*.
47
+ So a `needs-human-review` issue is still offered, and a child stopped by it **goes on holding its
48
+ repository** — `scripts/issue/issue-labels.ts` keeps it out of `NOT_DIRECTLY_RUNNABLE_LABELS` and
49
+ `scripts/epic/epic-busy.ts` keeps it out of the parked set (`docs/maintainers/needs-human-review-rationale.md`
50
+ → "Why it is not `needs-decision`").
62
51
 
63
52
  Each entry point's own branch stays in its own file — `fullrun.md`, `halfrun.md`,
64
53
  `backlogrun.md` — and routes here for the definition.
@@ -1,37 +1,48 @@
1
1
  # The observation filing procedure
2
2
 
3
- **Read when an observation turns up — not at the entry** (joshuafolkken/kit#1797). `SKILL.md` → §2's
4
- table keeps the rule itself: file it without asking, apply the depth test, record what the test turns
5
- away, and carry the run on. This file is the depth table, the `issue:file` flags and what a delegated
6
- child does instead. **An observation the depth test turns away, and the kind of miss behind a
3
+ **Read when an observation turns up — not at the entry.** `SKILL.md` → §2's
4
+ table points here for the rule itself: who is asked before a filing, the depth test, what the test
5
+ turns away, and carrying the run on. This file is that rule, the depth table, the `issue:file` flags
6
+ and what a delegated child does instead. **An observation the depth test turns away, and the kind of miss behind a
7
7
  user-reported bug, are recorded by `observation-ledger.md` — read it only then**, in the turn that
8
- appends (joshuafolkken/kit#3176).
8
+ appends.
9
+
10
+ **An unattended run files without asking; an interactive session asks first.** Unattended is a session kit launched under `claude -p` (a lane child, a woken session), a dispatched
11
+ lane child, or the `backlogrun` parent — nobody is there to answer, so an offer to file is sent back
12
+ by the `Stop` hook. In an interactive session, propose the Issue and file it
13
+ once the user confirms; the hook lets the offer through. A current-turn instruction to file, and a
14
+ typed command whose own procedure files (a split, a prerequisite, an upstream interrupt), are that
15
+ confirmation already.
9
16
 
10
17
  **The trigger is the judgement, not the run's progress** — an ended run, a `kickoff` and a mid-talk
11
- turn all file; an offer to file is sent back by the `Stop` hook (joshuafolkken/kit#2422).
18
+ turn all file or propose.
12
19
 
13
- **A run that judges something worth filing files it, and does not ask.** An upstream defect stops the
20
+ **An unattended run that judges something worth filing files it, and does not ask.** An upstream defect stops the
14
21
  run, a split replaces it, and a prerequisite goes in front of it (`prerequisite.md`). An ordinary
15
22
  observation changes none of those: it carries no `route:` label, causes no stash or park, and the run
16
23
  continues. A first-party target is Tier A, decided by `pnpm josh repo:party`; a third-party target is
17
24
  Tier C (`CLAUDE.md`). Name what was filed in the completion report. An observation nobody would act
18
25
  on is dropped rather than filed.
19
26
 
27
+ **Below the filing bar, a line that could still change a person's judgement is a board note**:
28
+ `pnpm josh run:event --append note "#<N> <text>"`, shown by `pnpm josh run:board`
29
+ (`docs/josh-commands-run.md` → "`josh run:board`").
30
+
20
31
  **The filing ceilings still apply.** Count this filing in the ten-Issue limit for the run. An
21
32
  observation is discretionary, so above the WIP cap in the target repository, close one first or do
22
33
  not file (`prompts/collaboration-workflow/wip-cap.md`). File it with `pnpm josh issue:file`
23
34
  (`issue-scout.md`), which lints the body against `prompts/collaboration-workflow/issue-template.md`,
24
35
  applies the classification labels it declares, runs the duplicate scan, and runs `epic:bundle` on the
25
36
  new Issue so it is offered by its epic; an `auto-ok` epic adds it to the backlog pool
26
- (`backlogrun-steps.md` → "What one invocation approves"). When it is the second filing of the run, run
27
- `pnpm josh issue:fold` first; the guard refuses that filing without the fold
37
+ (`backlogrun-steps.md` → "What one invocation approves"). When it is the second filing of the run, the
38
+ command asks the fold question itself and holds a `fold`
28
39
  (`split-assessment.md` → "The same two questions decide the filing-time fold").
29
40
 
30
41
  The marker suite pins the rules below.
31
42
 
32
43
  ### The depth test — a discretionary filing cites the product work it blocked
33
44
 
34
- **Depth is read off the subject rather than judged** (joshuafolkken/kit#1698):
45
+ **Depth is read off the subject rather than judged:**
35
46
 
36
47
  | Depth | The subject | Where it lives |
37
48
  | --- | --- | --- |
@@ -39,8 +50,8 @@ The marker suite pins the rules below.
39
50
  | **1** | The run orchestration that executes an Issue | `fullrun` / `backlogrun`, lanes, the `epic:*` commands, the filing routes themselves |
40
51
  | **2** | What measures a run | `josh cost` and the run-timing report |
41
52
 
42
- **The depth is recorded on the Issue as a label, and the label is applied when the Issue is filed**
43
- (joshuafolkken/kit#1729). `depth:0`, `depth:1` and `depth:2` are the three, defined once in
53
+ **The depth is recorded on the Issue as a label, and the label is applied when the Issue is filed.**
54
+ `depth:0`, `depth:1` and `depth:2` are the three, defined once in
44
55
  `scripts/issue/issue-labels.ts` and carrying no definition of their own — **the table above is the
45
56
  single source**, and a label description that paraphrased it would be a second copy of the rule.
46
57
  **Every filing route applies one**, this route and the other three of `prerequisite.md`'s table alike: a `new`
@@ -55,7 +66,7 @@ gh api repos/{owner}/{repo}/issues/<N>/labels -f 'labels[]=depth:1' # an Issue
55
66
 
56
67
  **A repository missing the three gets them from `issue:file` itself** — it creates any missing
57
68
  workflow label, with the color and description `DEPTH_LABELS` in `scripts/issue/issue-labels.ts`
58
- defines, before the create call (joshuafolkken/kit#3176).
69
+ defines, before the create call.
59
70
 
60
71
  - **It is read off the subject, exactly as the table is** — so applying it is not a judgement and not
61
72
  a person's to make, which is what separates it from `auto-ok` and `needs-human-review`. Those two
@@ -81,7 +92,7 @@ Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why the depth
81
92
  - **`route:tier-a` and `route:interrupt` do not take it either**, at any depth: a filing the run
82
93
  cannot proceed without is already citing its own blockage.
83
94
  - **A depth-2 filing — one whose subject is what measures a run — carries a further requirement, on
84
- top of the depth-0 citation above rather than in place of it** (joshuafolkken/kit#1975). A
95
+ top of the depth-0 citation above rather than in place of it.** A
85
96
  discretionary depth-2 filing states two things the depth-0 citation does not force:
86
97
  - **The decision the number would change, named** — the Issue number holding the choice it is
87
98
  waiting on, or a decision a person is about to make. "Slow", "large" and "worth knowing" are not a
@@ -106,21 +117,16 @@ drop the one kind of finding both documents agree is never dropped. **That bar i
106
117
  subject's depth is not.** Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why a
107
118
  review branch-2 filing skips the depth test".
108
119
 
109
- **This is not the count cap that was rejected.** A cap is rationing — past the number the finding is
110
- lost, and nothing about it says which findings were worth having. This changes what counts as a
111
- finding at all, so what it excludes is excluded for a reason a reader can check.
112
-
113
120
  **And a PR that *adds* a measurement names its reader in the same way.** The requirement above binds
114
121
  a depth-2 Issue that *proposes* a measurement; a pull request that *adds* one — a new report column,
115
122
  section, scope or subcommand, a diagnostic step — states in its body the reader that consumes it: the
116
123
  Issue number that read the value to decide something, or the path of the rule that reads it. **A
117
- measurement with no reader is not added** (joshuafolkken/kit#2012). `route:tier-a` and
124
+ measurement with no reader is not added.** `route:tier-a` and
118
125
  `route:interrupt` carry over unchanged.
119
126
 
120
127
  ### The depth-0 share — what is counted
121
128
 
122
- **The depth-0 share is the share of open Issues at depth 0** (joshuafolkken/kit#1698,
123
- joshuafolkken/kit#1729).
129
+ **The depth-0 share is the share of open Issues at depth 0.**
124
130
 
125
131
  **The denominator is a rule, not a choice, and this is it:**
126
132
 
@@ -136,8 +142,8 @@ counter's judgement.
136
142
  Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why the depth-0 denominator is fixed".
137
143
 
138
144
  **What the number is for is not decided here.** Changing what `backlog:next` offers on the strength
139
- of it, and setting a target value, are both deliberately out of scope until the current value has
140
- been measured the same way more than once (joshuafolkken/kit#1729 → 範囲外).
145
+ of it, and setting a target value, are both out of scope until the current value has
146
+ been measured the same way more than once.
141
147
 
142
148
  ### A delegated child does not take this route
143
149
 
@@ -147,13 +153,16 @@ could bite later" line (`backlogrun-child.md` → "What the summary carries, and
147
153
  parent files what survives — under the depth test above, and inside the run's ceiling.
148
154
 
149
155
  **A delegated child does not append to the ledger either — the parent collapses the duplicates and
150
- appends what is left.** The child's route is unchanged and is the only one it has —
151
- the summary's "Observations that could bite later" line — and the parent chooses the key, checks the
152
- count and writes the line. **The 10-per-run ceiling for this route is the parent's to count.**
156
+ appends what is left.** The child's only route is the summary's "Observations that could bite later"
157
+ line; the parent chooses the key, checks the count and writes the line. **The 10-per-run ceiling for this route is the parent's to
158
+ count.** **Lines its own `review:record` and `measure:rerun` write are not this route** — they go to
159
+ its issue's file in its lane (`observation-ledger.md` → "The ledger — where an observation that
160
+ cannot cite a blockage goes").
153
161
 
154
162
  Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why a delegated child neither files
155
163
  nor appends".
156
164
 
157
165
  **This file is the single source of every procedure above**, and `SKILL.md` → §2's table carries the
158
- trigger of the rule they carry out; nothing under `prompts/collaboration-workflow/` restates either
159
- (joshuafolkken/kit#1649, joshuafolkken/kit#1797).
166
+ trigger of the rule they carry out; nothing under `prompts/collaboration-workflow/` restates either.
167
+
168
+ Provenance: `docs/maintainers/observation-filing-rationale.md` → "Where each rule came from".