@joshuafolkken/kit 1.1240.0 → 1.1373.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/investigator.md +1 -0
- package/.claude/settings.json +4 -0
- package/.claude/skills/dependency-update/SKILL.md +5 -3
- package/.claude/skills/epic-commands/SKILL.md +82 -113
- package/.claude/skills/epic-commands/epic-bundle.md +38 -63
- package/.claude/skills/epic-commands/execution-waves.md +30 -51
- package/.claude/skills/verify-ui/SKILL.md +13 -20
- package/.claude/skills/workflow-commands/SKILL.md +10 -10
- package/.claude/skills/workflow-commands/background-commands.md +4 -4
- package/.claude/skills/workflow-commands/backlogrun-child.md +30 -105
- package/.claude/skills/workflow-commands/backlogrun-handoff-report.md +29 -0
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +45 -131
- package/.claude/skills/workflow-commands/backlogrun-park.md +36 -53
- package/.claude/skills/workflow-commands/backlogrun-progress.md +81 -331
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +29 -83
- package/.claude/skills/workflow-commands/backlogrun-steps.md +105 -424
- package/.claude/skills/workflow-commands/backlogrun.md +52 -61
- package/.claude/skills/workflow-commands/chain-rule.md +36 -40
- package/.claude/skills/workflow-commands/entry-sequence.md +6 -6
- package/.claude/skills/workflow-commands/followup.md +19 -20
- package/.claude/skills/workflow-commands/fullrun-steps.md +23 -27
- package/.claude/skills/workflow-commands/fullrun.md +10 -10
- package/.claude/skills/workflow-commands/halfrun.md +9 -8
- package/.claude/skills/workflow-commands/into-target.md +12 -18
- package/.claude/skills/workflow-commands/issue-comments.md +11 -26
- package/.claude/skills/workflow-commands/kickoff.md +26 -16
- package/.claude/skills/workflow-commands/latest-gate.md +17 -28
- package/.claude/skills/workflow-commands/needs-human-review.md +13 -24
- package/.claude/skills/workflow-commands/observation-filing.md +37 -28
- package/.claude/skills/workflow-commands/observation-ledger.md +48 -38
- package/.claude/skills/workflow-commands/pre-gate-cut.md +9 -9
- package/.claude/skills/workflow-commands/prerequisite.md +23 -15
- package/.claude/skills/workflow-commands/progress-watcher.md +17 -11
- package/.claude/skills/workflow-commands/prrun.md +3 -3
- package/.claude/skills/workflow-commands/retrospective.md +13 -18
- package/.claude/skills/workflow-commands/split-assessment.md +6 -4
- package/.claude/skills/workflow-commands/target-repository.md +25 -28
- package/.claude/skills/workflow-commands/working-tree-hold.md +11 -17
- package/.gitattributes +2 -1
- package/.github/workflows/ci.yml +14 -0
- package/.vscode/tasks.json +14 -0
- package/CLAUDE.md +10 -61
- package/README.md +23 -66
- package/SECURITY.md +1 -1
- package/dist/CLAUDE.md +10 -61
- package/dist/commands/document-section-cli.js +43 -11
- package/dist/config-merge/index.js +11 -2
- package/dist/hooks/audit-provision.js +2 -2
- package/dist/hooks/batch-guard.js +7 -7
- package/dist/hooks/{chunk-KHGB5S3Y.js → chunk-7UBFU3CL.js} +18 -20
- package/dist/hooks/{chunk-ZQGD4GBY.js → chunk-7WKYHEGU.js} +8 -44
- package/dist/hooks/{chunk-4TZVB44A.js → chunk-AKGCP4LX.js} +285 -363
- package/dist/hooks/{chunk-QVSWU24O.js → chunk-BZMPVFDY.js} +7 -5
- package/dist/hooks/{chunk-5VNDSNG3.js → chunk-FZ6FUSBM.js} +1 -1
- package/dist/hooks/{chunk-GPTFMK5E.js → chunk-GG72ANKI.js} +1 -1
- package/dist/hooks/{chunk-XZYKEM6J.js → chunk-JCRDBQXB.js} +13 -11
- package/dist/hooks/{chunk-F3ELQ2AF.js → chunk-JGW24KKM.js} +4 -4
- package/dist/hooks/{chunk-ELCN5LCH.js → chunk-NEC4AT4Z.js} +34 -12
- package/dist/hooks/chunk-NZN2UFI6.js +2409 -0
- package/dist/hooks/{chunk-WK2XSHSI.js → chunk-SLSFIWTX.js} +550 -875
- package/dist/hooks/chunk-UTHMB4O2.js +1590 -0
- package/dist/hooks/{chunk-KRBERBBI.js → chunk-V4TKZHER.js} +4 -4
- package/dist/hooks/chunk-YLBBSSTF.js +3705 -0
- package/dist/hooks/chunk-Z5TMJIPW.js +45 -0
- package/dist/hooks/codex-hook-adapter.js +26 -21
- package/dist/hooks/duplicate-read-guard.js +8 -8
- package/dist/hooks/format-edited.js +4 -4
- package/dist/hooks/inputs.json +195 -181
- package/dist/hooks/investigation-guard.js +8 -8
- package/dist/hooks/pretool-guard.js +15 -15
- package/dist/hooks/session-lang.js +406 -8
- package/dist/hooks/stop-guard.js +122 -187
- package/dist/josh.js +282 -95
- package/dist/version/index.js +15 -13
- package/eslint/base.js +43 -5
- package/eslint/rules/english-only-prose.js +3 -3
- package/eslint/rules/import.js +12 -0
- package/eslint/rules/namespace-object-export.js +2 -2
- package/package.json +17 -11
- package/pnpm-workspace.yaml +2 -4
- package/prompts/coding-standards.md +14 -48
- package/prompts/collaboration-workflow/file-edits.md +1 -1
- package/prompts/collaboration-workflow/issue-citation.md +1 -1
- package/prompts/collaboration-workflow/issue-template.md +3 -10
- package/prompts/collaboration-workflow/operating-rules.md +7 -8
- package/prompts/collaboration-workflow/output-bounds.md +1 -1
- package/prompts/collaboration-workflow/overview.md +1 -1
- package/prompts/collaboration-workflow/plan-comment.md +2 -1
- package/prompts/collaboration-workflow/principles.md +21 -3
- package/prompts/collaboration-workflow/report-format.md +16 -29
- package/prompts/collaboration-workflow/residency.md +1 -1
- package/prompts/collaboration-workflow/rule-delivery.md +7 -95
- package/prompts/collaboration-workflow/shell-body.md +3 -23
- package/prompts/collaboration-workflow/turn-batching.md +4 -13
- package/prompts/collaboration-workflow/wip-cap.md +5 -11
- package/prompts/refactoring.md +1 -1
- package/prompts/review-rubric.md +3 -22
- package/prompts/review.md +15 -38
- package/prompts/testing-guide.md +2 -4
- package/scripts/adopt/adopt-logic.ts +5 -5
- package/scripts/adopt/adopt-toolkits.ts +4 -5
- package/scripts/adopt/adopt.ts +2 -3
- package/scripts/agent/agent-argv.ts +7 -7
- package/scripts/agent/agent-diagnostics.ts +2 -2
- package/scripts/agent/agent-exit-record.ts +1 -1
- package/scripts/agent/agent-headless.ts +1 -1
- package/scripts/agent/agent-launch-environment.ts +6 -1
- package/scripts/agent/agent-role-profile.ts +49 -22
- package/scripts/agent/agent-session-role.ts +32 -0
- package/scripts/agent/api-outage.ts +1 -1
- package/scripts/agent/claude-agent-argv.ts +4 -4
- package/scripts/agent/claude-result-event.ts +4 -4
- package/scripts/agent/codex-hooks.ts +2 -2
- package/scripts/agent/interactive-ask.ts +3 -6
- package/scripts/auto-ok/auto-ok-cli.ts +46 -60
- package/scripts/backlog/backlog-arrival-added.ts +34 -0
- package/scripts/backlog/backlog-arrival.ts +54 -17
- package/scripts/backlog/backlog-budget-cli.ts +34 -6
- package/scripts/backlog/backlog-budget.ts +17 -24
- package/scripts/backlog/backlog-defect-priority.ts +1 -1
- package/scripts/backlog/backlog-drive-args.ts +5 -4
- package/scripts/backlog/backlog-drive-cli.ts +14 -10
- package/scripts/backlog/backlog-drive-epic.ts +85 -0
- package/scripts/backlog/backlog-drive-launch.ts +1 -1
- package/scripts/backlog/backlog-drive-named-offer.ts +60 -9
- package/scripts/backlog/backlog-drive-named.ts +39 -9
- package/scripts/backlog/backlog-drive-offer-argv.ts +1 -1
- package/scripts/backlog/backlog-drive-restore.ts +1 -1
- package/scripts/backlog/backlog-drive-retrospective.ts +2 -2
- package/scripts/backlog/backlog-drive.ts +43 -28
- package/scripts/backlog/backlog-idle.ts +88 -0
- package/scripts/backlog/backlog-named.ts +11 -15
- package/scripts/backlog/backlog-next.ts +26 -30
- package/scripts/backlog/backlog-offer-cli.ts +28 -23
- package/scripts/backlog/backlog-offer.ts +7 -7
- package/scripts/backlog/backlog-overlap.ts +178 -0
- package/scripts/backlog/backlog-plan-cli.ts +14 -90
- package/scripts/backlog/backlog-plan-read.ts +111 -0
- package/scripts/backlog/backlog-plan.ts +11 -10
- package/scripts/backlog/backlog-pool.ts +13 -14
- package/scripts/backlog/backlog-rank.ts +11 -11
- package/scripts/backlog/backlog-ready.ts +15 -10
- package/scripts/backlog/backlog-scope.ts +14 -15
- package/scripts/backlog/backlog-stalled-cli.ts +2 -2
- package/scripts/backlog/backlog-stalled-detect.ts +4 -4
- package/scripts/backlog/backlog-stalled.ts +5 -6
- package/scripts/backlog/backlog-waves.ts +4 -4
- package/scripts/backlog/backlogrun-args.ts +74 -0
- package/scripts/backlog/backlogrun-cli.ts +113 -0
- package/scripts/backlog/backlogrun-launch.ts +178 -0
- package/scripts/behavior/behavior-assertion.ts +6 -8
- package/scripts/behavior/behavior-cli.ts +1 -1
- package/scripts/behavior/behavior-rules.ts +3 -3
- package/scripts/build/build-claude-md.ts +4 -4
- package/scripts/build/build-codex-hooks.ts +2 -2
- package/scripts/build/build-commands.ts +1 -1
- package/scripts/build/build-hooks.ts +5 -5
- package/scripts/build/build.ts +1 -1
- package/scripts/build/hook-bundle-stamp.ts +109 -7
- package/scripts/build/local-bin.ts +2 -2
- package/scripts/cases/cases-cli.ts +1 -1
- package/scripts/cases/cases-logic.ts +2 -2
- package/scripts/ci/composite-actions.ts +1 -2
- package/scripts/ci/pr-classification.ts +2 -2
- package/scripts/claude/workflow-destination.ts +1 -1
- package/scripts/clone/clone-aggregate.ts +1 -1
- package/scripts/clone/clone-fingerprint.ts +1 -1
- package/scripts/clone/clone-scan-cli.ts +1 -1
- package/scripts/clone/clone-scan.ts +1 -1
- package/scripts/config-merge/index.ts +1 -1
- package/scripts/config-merge/json-format.ts +1 -3
- package/scripts/config-merge/patch-json-array.ts +90 -0
- package/scripts/config-merge/patch-json-key.ts +6 -3
- package/scripts/config-merge/patch-json-list.ts +1 -1
- package/scripts/cost-runtime/codex-usage.ts +1 -1
- package/scripts/cost-runtime/context-cut-payback.ts +4 -5
- package/scripts/cost-runtime/context-cut-threshold.ts +4 -6
- package/scripts/cost-runtime/cost-attribute.ts +3 -3
- package/scripts/cost-runtime/cost-blocks.ts +3 -4
- package/scripts/cost-runtime/cost-cli.ts +14 -11
- package/scripts/cost-runtime/cost-corpus.ts +11 -11
- package/scripts/cost-runtime/cost-pricing.ts +4 -4
- package/scripts/cost-runtime/cost-tokens.ts +1 -2
- package/scripts/cost-runtime/cost-transcript.ts +29 -29
- package/scripts/cost-runtime/cost-usage.ts +6 -7
- package/scripts/cost-runtime/cost-verdict.ts +10 -11
- package/scripts/cost-runtime/own-session.ts +1 -1
- package/scripts/cost-runtime/transcript-cwd.ts +2 -2
- package/scripts/delegation/delegation-cli.ts +4 -4
- package/scripts/delegation/delegation-policy.ts +13 -15
- package/scripts/delegation/duplicate-read-guard.ts +9 -10
- package/scripts/delegation/fanout-cli.ts +1 -1
- package/scripts/delegation/fanout.ts +1 -1
- package/scripts/delegation/investigation-guard.ts +18 -22
- package/scripts/delegation/investigation-reads.ts +48 -238
- package/scripts/discovery/repo-discovery.ts +1 -1
- package/scripts/discovery/repo-map-logic.ts +1 -2
- package/scripts/discovery/repo-origin.ts +3 -3
- package/scripts/discovery/repo-party-cli.ts +2 -2
- package/scripts/discovery/repo-party.ts +2 -2
- package/scripts/doctor/doctor-consumer.ts +1 -1
- package/scripts/doctor/doctor-io.ts +6 -7
- package/scripts/doctor/doctor-logic.ts +1 -1
- package/scripts/doctor/doctor-ports.ts +1 -1
- package/scripts/doctor/doctor.ts +8 -9
- package/scripts/document/backlogrun-parent-read-set.ts +5 -6
- package/scripts/document/bash-output-cap.ts +5 -7
- package/scripts/document/capped-print-part.ts +1 -1
- package/scripts/document/capped-print.ts +1 -1
- package/scripts/document/document-byte-budget.ts +33 -64
- package/scripts/document/document-byte-check.ts +4 -4
- package/scripts/document/document-reachability.ts +7 -8
- package/scripts/document/document-read-cli.ts +2 -2
- package/scripts/document/document-scan.ts +30 -5
- package/scripts/document/document-section-cli.ts +6 -8
- package/scripts/document/document-section.ts +8 -12
- package/scripts/document/edit-files-cli.ts +3 -4
- package/scripts/document/entry-read-budget.ts +8 -70
- package/scripts/document/entry-read-set.ts +51 -34
- package/scripts/document/lane-child-read-set.ts +9 -9
- package/scripts/document/read-files-cli.ts +1 -2
- package/scripts/document/read-set-cli.ts +16 -19
- package/scripts/document/read-set-cost.ts +4 -4
- package/scripts/document/read-set-point-of-use.ts +28 -38
- package/scripts/document/read-set-pricing.ts +1 -1
- package/scripts/document/read-set-trim.ts +3 -3
- package/scripts/document/resident-budget.ts +8 -10
- package/scripts/epic/epic-add-body.ts +15 -18
- package/scripts/epic/epic-add-plan.ts +26 -28
- package/scripts/epic/epic-add.ts +32 -25
- package/scripts/epic/epic-audit-checks.ts +27 -37
- package/scripts/epic/epic-audit-cli.ts +21 -22
- package/scripts/epic/epic-audit-orphans.ts +16 -17
- package/scripts/epic/epic-audit-rationale.ts +10 -15
- package/scripts/epic/epic-audit-report.ts +2 -5
- package/scripts/epic/epic-audit.ts +18 -14
- package/scripts/epic/epic-body.ts +10 -10
- package/scripts/epic/epic-bundle-cli.ts +36 -34
- package/scripts/epic/epic-bundle-evidence.ts +5 -5
- package/scripts/epic/epic-bundle-gaps.ts +6 -9
- package/scripts/epic/epic-bundle-poll.ts +1 -1
- package/scripts/epic/epic-bundle-referenced.ts +11 -14
- package/scripts/epic/epic-bundle.ts +19 -20
- package/scripts/epic/epic-busy.ts +44 -21
- package/scripts/epic/epic-candidate-confirm.ts +15 -18
- package/scripts/epic/epic-chains.ts +18 -23
- package/scripts/epic/epic-classify.ts +11 -12
- package/scripts/epic/epic-cli-argv.ts +5 -6
- package/scripts/epic/epic-cli-remove.ts +9 -4
- package/scripts/epic/epic-cli.ts +38 -26
- package/scripts/epic/epic-close-comment.ts +14 -15
- package/scripts/epic/epic-close.ts +25 -29
- package/scripts/epic/epic-cross-repo.ts +18 -21
- package/scripts/epic/epic-decision.ts +14 -18
- package/scripts/epic/epic-fetch.ts +25 -31
- package/scripts/epic/epic-graph.ts +15 -17
- package/scripts/epic/epic-index.ts +14 -16
- package/scripts/epic/epic-issue.ts +9 -11
- package/scripts/epic/epic-label-age.ts +74 -0
- package/scripts/epic/epic-lane-offer.ts +35 -24
- package/scripts/epic/epic-nested.ts +1 -1
- package/scripts/epic/epic-next-read.ts +8 -8
- package/scripts/epic/epic-next-views.ts +12 -12
- package/scripts/epic/epic-next.ts +29 -33
- package/scripts/epic/epic-outside-blocker.ts +11 -10
- package/scripts/epic/epic-parse.ts +22 -24
- package/scripts/epic/epic-promote.ts +3 -2
- package/scripts/epic/epic-rank.ts +1 -1
- package/scripts/epic/epic-read.ts +10 -8
- package/scripts/epic/epic-reconcile.ts +8 -6
- package/scripts/epic/epic-reference.ts +5 -4
- package/scripts/epic/epic-relation-recheck.ts +10 -11
- package/scripts/epic/epic-relations.ts +9 -8
- package/scripts/epic/epic-remove-plan.ts +4 -5
- package/scripts/epic/epic-remove.ts +7 -5
- package/scripts/epic/epic-report.ts +18 -20
- package/scripts/epic/epic-run.ts +6 -5
- package/scripts/epic/epic-sections.ts +2 -2
- package/scripts/epic/epic-shape.ts +3 -3
- package/scripts/epic/epic-solo-stale.ts +3 -2
- package/scripts/epic/epic-solo.ts +8 -8
- package/scripts/epic/epic-triage.ts +5 -4
- package/scripts/epic/epic-validate.ts +8 -7
- package/scripts/epic/epic.ts +5 -5
- package/scripts/exports/unused-members-cli.ts +1 -1
- package/scripts/followup/followup-issue-number.ts +1 -2
- package/scripts/followup/git-followup-cleanup.ts +6 -7
- package/scripts/followup/git-followup-finish.ts +11 -13
- package/scripts/followup/git-followup-flush.ts +11 -7
- package/scripts/followup/git-followup-issue-close.ts +16 -13
- package/scripts/followup/git-followup-label.ts +9 -6
- package/scripts/followup/git-followup-merged.ts +1 -1
- package/scripts/followup/git-followup-pending.ts +7 -9
- package/scripts/followup/git-followup-stages.ts +28 -17
- package/scripts/followup/git-followup-workflow.ts +19 -21
- package/scripts/followup/git-pr-followup-checks.ts +13 -20
- package/scripts/followup/git-pr-followup-wrapup.ts +7 -7
- package/scripts/followup/git-pr-followup.ts +18 -17
- package/scripts/gate/core-admission.ts +2 -2
- package/scripts/gate/core-budget.ts +15 -26
- package/scripts/gate/gate-ledger.ts +114 -0
- package/scripts/gate/gate-log.ts +7 -9
- package/scripts/gate/gate-plan.ts +70 -35
- package/scripts/gate/gate-report.ts +14 -15
- package/scripts/gate/gate-skip.ts +11 -13
- package/scripts/gate/gate-steps.ts +5 -1
- package/scripts/gate/gate-tree.ts +3 -4
- package/scripts/gate/hook-gate-reuse.ts +9 -9
- package/scripts/gate/machine-capacity.ts +168 -30
- package/scripts/gate/pre-commit-type-check.ts +4 -4
- package/scripts/gate/project-checks.ts +12 -4
- package/scripts/gate/scoped-green.ts +11 -18
- package/scripts/gate/type-check-command.ts +2 -2
- package/scripts/gate/type-check-step.ts +4 -4
- package/scripts/gate/verification-gate.ts +53 -51
- package/scripts/gh/gh-spawn.ts +2 -2
- package/scripts/gh/git-ai-review-scan.ts +3 -2
- package/scripts/gh/git-gh-api-path.ts +10 -11
- package/scripts/gh/git-gh-exec.ts +43 -48
- package/scripts/gh/git-gh-failure.ts +6 -9
- package/scripts/gh/git-gh-helpers.ts +1 -1
- package/scripts/gh/git-gh-issue-list.ts +15 -19
- package/scripts/gh/git-gh-issue-read.ts +43 -60
- package/scripts/gh/git-gh-issue-rest.ts +14 -15
- package/scripts/gh/git-gh-issue-write.ts +52 -40
- package/scripts/gh/git-gh-issue.ts +23 -24
- package/scripts/gh/git-gh-pr-auto-merge.ts +3 -3
- package/scripts/gh/git-gh-pr-read.ts +46 -50
- package/scripts/gh/git-gh-pr-rest.ts +23 -26
- package/scripts/gh/git-gh-pr-review.ts +2 -2
- package/scripts/gh/git-gh-pr-rollup.ts +4 -4
- package/scripts/gh/git-gh-pr-snapshot.ts +8 -10
- package/scripts/gh/git-gh-pr.ts +16 -16
- package/scripts/gh/git-gh-reachability.ts +11 -12
- package/scripts/gh/git-gh-repo.ts +2 -3
- package/scripts/gh/git-gh-rest-state.ts +1 -1
- package/scripts/gh/git-pr-ai-review.ts +6 -5
- package/scripts/gh/git-pr-checks-eval.ts +28 -30
- package/scripts/gh/git-pr-checks-parse.ts +14 -16
- package/scripts/gh/git-pr-checks-watch.ts +17 -17
- package/scripts/gh/git-pr-checks.ts +20 -23
- package/scripts/gh/git-pr-coderabbit.ts +8 -6
- package/scripts/gh/git-pr-confirmation.ts +5 -5
- package/scripts/gh/git-pr-managed-config.ts +7 -9
- package/scripts/gh/git-pr-messages.ts +1 -1
- package/scripts/gh/git-pr.ts +15 -16
- package/scripts/gh/github-issue-url.ts +8 -9
- package/scripts/git/base-tree.ts +66 -0
- package/scripts/git/change-base.ts +42 -2
- package/scripts/git/changed-file-scope.ts +5 -5
- package/scripts/git/changed-paths.ts +1 -2
- package/scripts/git/constants.ts +2 -2
- package/scripts/git/git-branch.ts +1 -1
- package/scripts/git/git-closes-keyword.ts +3 -3
- package/scripts/git/git-command.ts +53 -41
- package/scripts/git/git-common-directory.ts +3 -3
- package/scripts/git/git-diff-reads.ts +14 -15
- package/scripts/git/git-error.ts +1 -1
- package/scripts/git/git-execa-error.ts +1 -2
- package/scripts/git/git-issue.ts +10 -8
- package/scripts/git/git-location-environment.ts +3 -4
- package/scripts/git/git-ls-remote.ts +6 -8
- package/scripts/git/git-pre-push-hook.ts +11 -10
- package/scripts/git/git-preflight.ts +5 -5
- package/scripts/git/git-push-transport.ts +2 -2
- package/scripts/git/git-remote-branch.ts +1 -2
- package/scripts/git/git-schemas.ts +16 -23
- package/scripts/git/git-spawn-sync.ts +1 -1
- package/scripts/git/git-spawn.ts +37 -14
- package/scripts/git/git-ssh-keepalive.ts +12 -5
- package/scripts/git/git-staging.ts +7 -8
- package/scripts/git/git-workflow.ts +1 -1
- package/scripts/git/git-worktree.ts +35 -27
- package/scripts/git/gone-branch.ts +2 -2
- package/scripts/git/listing-cutoff.ts +1 -2
- package/scripts/git/lockfile-sync.ts +65 -0
- package/scripts/git/main-merge-guard.ts +1 -2
- package/scripts/git/main-merge.ts +7 -7
- package/scripts/git/main-sync.ts +23 -8
- package/scripts/git/parse-json-array.ts +18 -23
- package/scripts/git/repository-lock.ts +34 -2
- package/scripts/git/stash/git-stash.ts +4 -5
- package/scripts/git/stash/stash-orphans.ts +5 -3
- package/scripts/git/stash/stash-pop-args.ts +1 -1
- package/scripts/git/stash/stash-pop-cli.ts +3 -3
- package/scripts/git/stash/stash-sweep-lock.ts +2 -2
- package/scripts/hooks/batch-guard.ts +11 -13
- package/scripts/hooks/check-commit-message.ts +12 -9
- package/scripts/hooks/codex-hook-adapter.ts +16 -10
- package/scripts/hooks/edited-cspell.ts +3 -4
- package/scripts/hooks/format-edited-cli.ts +1 -1
- package/scripts/hooks/format-edited-file.ts +11 -17
- package/scripts/hooks/format-rewrite-notice.ts +19 -17
- package/scripts/hooks/pre-push-unit.ts +10 -14
- package/scripts/hooks/pretool-guard-cli.ts +4 -4
- package/scripts/hooks/pretool-guard.ts +93 -18
- package/scripts/hooks/reserved-run.ts +2 -2
- package/scripts/hooks/step-zero-notice.ts +1 -1
- package/scripts/hooks/stop-guard.ts +21 -10
- package/scripts/init/basic-path-migration.ts +2 -2
- package/scripts/init/claude-kit-only-settings.ts +2 -2
- package/scripts/init/claude-plugin-config.ts +2 -2
- package/scripts/init/distributed-paths.ts +4 -4
- package/scripts/init/hook-command-rewrite.ts +3 -3
- package/scripts/init/hook-launch.ts +5 -5
- package/scripts/init/init-actions.ts +13 -0
- package/scripts/init/init-ai-copy.ts +11 -11
- package/scripts/init/init-bootstrap.ts +3 -3
- package/scripts/init/init-copy-content.ts +4 -4
- package/scripts/init/init-logic-json-merge.ts +7 -9
- package/scripts/init/init-logic-migrate.ts +1 -1
- package/scripts/init/init-logic-templates.ts +1 -1
- package/scripts/init/init-logic-workspace.ts +4 -4
- package/scripts/init/init-logic-yaml-merge.ts +2 -2
- package/scripts/init/init-logic.ts +19 -22
- package/scripts/init/init.ts +7 -7
- package/scripts/init/kit-base-preset.ts +1 -1
- package/scripts/init/kit-setup-state.ts +1 -1
- package/scripts/init/kit-written-paths.ts +1 -2
- package/scripts/init/package-manager-pin.ts +1 -1
- package/scripts/init/project-profile-cli.ts +1 -1
- package/scripts/init/project-profile.ts +3 -3
- package/scripts/init/session-language-environment.ts +1 -1
- package/scripts/init/start-exec.ts +3 -4
- package/scripts/init/start-plan.ts +2 -2
- package/scripts/init/start-setup-pr.ts +3 -2
- package/scripts/init/start-steps.ts +2 -2
- package/scripts/init/tsconfig-preset-migration.ts +1 -1
- package/scripts/init/vscode-tasks.ts +62 -0
- package/scripts/issue/baseline-measure.ts +2 -2
- package/scripts/issue/behavior-change-lint.ts +2 -2
- package/scripts/issue/defect-rate-cli.ts +6 -7
- package/scripts/issue/defect-rate.ts +37 -27
- package/scripts/issue/git-next-issues.ts +9 -8
- package/scripts/issue/issue-auto-ok.ts +24 -11
- package/scripts/issue/issue-backlinks-cli.ts +5 -5
- package/scripts/issue/issue-backlinks.ts +6 -6
- package/scripts/issue/issue-cite-cli.ts +20 -18
- package/scripts/issue/issue-cite.ts +18 -8
- package/scripts/issue/issue-closing-pr.ts +4 -4
- package/scripts/issue/issue-comment-cli.ts +6 -4
- package/scripts/issue/issue-file-cli.ts +52 -15
- package/scripts/issue/issue-file-fold.ts +155 -0
- package/scripts/issue/issue-file.ts +9 -6
- package/scripts/issue/issue-fold-cli.ts +14 -9
- package/scripts/issue/issue-fold.ts +23 -8
- package/scripts/issue/issue-labels.ts +34 -38
- package/scripts/issue/issue-lint-cli.ts +2 -2
- package/scripts/issue/issue-lint.ts +1 -1
- package/scripts/issue/issue-merged.ts +10 -4
- package/scripts/issue/issue-number-shape.ts +27 -0
- package/scripts/issue/issue-rank.ts +1 -1
- package/scripts/issue/issue-read-cli.ts +4 -5
- package/scripts/issue/issue-read.ts +4 -5
- package/scripts/issue/issue-reference.ts +5 -5
- package/scripts/issue/issue-release-cli.ts +17 -7
- package/scripts/issue/issue-release.ts +3 -3
- package/scripts/issue/issue-report-failures.ts +7 -4
- package/scripts/issue/issue-scout-cli.ts +11 -11
- package/scripts/issue/issue-scout-closed.ts +4 -4
- package/scripts/issue/issue-scout.ts +4 -5
- package/scripts/issue/issue-state-cli.ts +17 -10
- package/scripts/issue/issue-state.ts +12 -13
- package/scripts/issue/issue-wip.ts +7 -7
- package/scripts/issue/markdown-section.ts +3 -3
- package/scripts/issue/measure-rerun-cli.ts +10 -9
- package/scripts/issue/reproduction-measure.ts +3 -3
- package/scripts/issue/session-cite.ts +56 -0
- package/scripts/josh/agent-session-environment.ts +10 -8
- package/scripts/josh/cli-body.ts +2 -2
- package/scripts/josh/command-suggest.ts +1 -1
- package/scripts/josh/file-map-stamp.ts +20 -23
- package/scripts/josh/hook-decision.ts +24 -28
- package/scripts/josh/josh-command-map.ts +4 -1
- package/scripts/josh/josh-command-types.ts +30 -35
- package/scripts/josh/josh-commands-ai.ts +6 -6
- package/scripts/josh/josh-commands-backlog.ts +15 -3
- package/scripts/josh/josh-commands-clone.ts +1 -1
- package/scripts/josh/josh-commands-development.ts +25 -4
- package/scripts/josh/josh-commands-document.ts +3 -3
- package/scripts/josh/josh-commands-guard.ts +3 -3
- package/scripts/josh/josh-commands-issue.ts +4 -5
- package/scripts/josh/josh-commands-lane.ts +14 -4
- package/scripts/josh/josh-commands-lint.ts +1 -1
- package/scripts/josh/josh-commands-run.ts +21 -7
- package/scripts/josh/josh-commands-split.ts +1 -2
- package/scripts/josh/josh-commands-versioning.ts +5 -5
- package/scripts/josh/josh-commands-workflow.ts +30 -22
- package/scripts/josh/josh-environment-file.ts +1 -1
- package/scripts/josh/josh-in-process.ts +3 -3
- package/scripts/josh/josh-logic.ts +6 -7
- package/scripts/josh/josh-run.ts +3 -3
- package/scripts/josh/josh-verdict.ts +9 -12
- package/scripts/josh/josh.ts +3 -3
- package/scripts/josh/kit-only.ts +2 -2
- package/scripts/josh/path-decision.ts +3 -3
- package/scripts/josh/platform-temporary.ts +7 -5
- package/scripts/josh/process-identity.ts +24 -6
- package/scripts/josh/process-owner.ts +4 -4
- package/scripts/josh/session-language-cli.ts +53 -11
- package/scripts/josh/session-language.ts +1 -1
- package/scripts/josh/stamp-file.ts +48 -29
- package/scripts/josh/stamp-record.ts +57 -0
- package/scripts/lane/lane-await.ts +35 -11
- package/scripts/lane/lane-cache.ts +6 -6
- package/scripts/lane/lane-capacity.ts +32 -17
- package/scripts/lane/lane-child-invocation.ts +17 -15
- package/scripts/lane/lane-child-marker.ts +12 -12
- package/scripts/lane/lane-cli.ts +12 -13
- package/scripts/lane/lane-close.ts +6 -6
- package/scripts/lane/lane-dispatch.ts +61 -72
- package/scripts/lane/lane-environment.ts +5 -5
- package/scripts/lane/lane-guard-policy.ts +7 -21
- package/scripts/lane/lane-handoff.ts +2 -2
- package/scripts/lane/lane-install.ts +9 -10
- package/scripts/lane/lane-launch-cli.ts +13 -8
- package/scripts/lane/lane-ledger.ts +73 -11
- package/scripts/lane/lane-leftover.ts +2 -2
- package/scripts/lane/lane-limit-cli.ts +160 -0
- package/scripts/lane/lane-limit-override.ts +74 -0
- package/scripts/lane/lane-load.ts +19 -68
- package/scripts/lane/lane-measure-cli.ts +15 -25
- package/scripts/lane/lane-occupancy.ts +6 -4
- package/scripts/lane/lane-open.ts +20 -19
- package/scripts/lane/lane-output.ts +4 -3
- package/scripts/lane/lane-paths.ts +12 -11
- package/scripts/lane/lane-phase.ts +33 -0
- package/scripts/lane/lane-reap.ts +2 -2
- package/scripts/lane/lane-registry.ts +16 -15
- package/scripts/lane/lane-relaunch.ts +9 -9
- package/scripts/lane/lane-report.ts +5 -4
- package/scripts/lane/lane-resume.ts +2 -2
- package/scripts/lane/lane-sampler.ts +55 -0
- package/scripts/lane/lane-seed.ts +7 -7
- package/scripts/lane/lane-stage-stats.ts +135 -0
- package/scripts/lane/lane-start-point.ts +8 -11
- package/scripts/lane/lane-stats.ts +60 -15
- package/scripts/lane/lane-stray.ts +1 -1
- package/scripts/lane/lane-vacant.ts +1 -1
- package/scripts/lane/openai-lane-supervisor-decision.ts +3 -7
- package/scripts/lane/openai-lane-supervisor-owner.ts +3 -9
- package/scripts/lane/openai-review-broker.ts +2 -4
- package/scripts/lib/ancestor-directories.ts +1 -1
- package/scripts/lib/bounded-pool.ts +2 -2
- package/scripts/lib/buffered-process.ts +4 -6
- package/scripts/lib/caddy-logs.sh +0 -0
- package/scripts/lib/cli-flags.ts +39 -6
- package/scripts/lib/error-message.ts +1 -1
- package/scripts/lib/json-value.ts +17 -3
- package/scripts/lib/poll.ts +1 -1
- package/scripts/lib/status-icons.ts +3 -3
- package/scripts/lib/timed-fetch.ts +1 -1
- package/scripts/lib/timeouts.ts +1 -1
- package/scripts/lines/bytes-command.ts +3 -4
- package/scripts/lines/effective-limit.ts +25 -12
- package/scripts/lines/line-budget.ts +47 -55
- package/scripts/lines/line-targets.ts +6 -2
- package/scripts/lines/lines-command.ts +3 -3
- package/scripts/lint/cross-file-recheck.ts +155 -0
- package/scripts/lint/cspell-cached.ts +1 -1
- package/scripts/lint/format.ts +1 -2
- package/scripts/lint/lint-parallel.ts +35 -19
- package/scripts/lint/lint-related-scope.ts +25 -15
- package/scripts/lint/lint-related.ts +6 -7
- package/scripts/managed-marker/index.ts +1 -1
- package/scripts/managed-marker/managed-marker-logic.ts +1 -2
- package/scripts/notify/git-notify.ts +9 -7
- package/scripts/notify/telegram-notify.ts +53 -37
- package/scripts/notify/telegram-test-logic.ts +3 -3
- package/scripts/notify/telegram-test.ts +45 -30
- package/scripts/observations/observation-ledger-home.ts +14 -8
- package/scripts/observations/observation-ledger-line.ts +3 -2
- package/scripts/observations/observation-ledger-migrate.ts +3 -4
- package/scripts/observations/observation-ledger-prepare.ts +4 -4
- package/scripts/observations/observation-ledger.ts +14 -15
- package/scripts/observations/observation-record-cli.ts +83 -0
- package/scripts/observations/observation-record.ts +91 -0
- package/scripts/observations/observations-flush-cli.ts +1 -1
- package/scripts/observations/observations-flush-landing.ts +7 -6
- package/scripts/observations/observations-flush.ts +26 -27
- package/scripts/overrides/overrides-check.ts +18 -8
- package/scripts/package/package-scout-cli.ts +1 -1
- package/scripts/package/package-scout-format.ts +2 -2
- package/scripts/package/package-scout.ts +1 -1
- package/scripts/propagate/propagate-git-failure.ts +1 -1
- package/scripts/propagate/propagate-git.ts +7 -7
- package/scripts/propagate/propagate-plan.ts +2 -2
- package/scripts/propagate/propagate-publish.ts +2 -3
- package/scripts/propagate/propagate-run.ts +5 -7
- package/scripts/propagate/propagate-select.ts +1 -1
- package/scripts/propagate/propagate-steps.ts +19 -20
- package/scripts/propagate/propagate-targets.ts +6 -10
- package/scripts/propagate/propagate.ts +5 -5
- package/scripts/refactor/import-graph.ts +1 -1
- package/scripts/refactor/refactor-lint.ts +4 -10
- package/scripts/refactor/refactor-scan-cli.ts +1 -1
- package/scripts/refactor/refactor-scan.ts +2 -2
- package/scripts/refactor/refactor-targets.ts +1 -1
- package/scripts/release/github-release-cli.ts +25 -3
- package/scripts/release/github-release-runs.ts +1 -1
- package/scripts/release/release-cli.ts +21 -4
- package/scripts/release/release-history.ts +6 -10
- package/scripts/release/release-plan.ts +3 -3
- package/scripts/release/release-progress.ts +3 -4
- package/scripts/release/release-publish.ts +8 -9
- package/scripts/release/release-scope-cli.ts +8 -10
- package/scripts/release/release-tag.ts +6 -8
- package/scripts/release/release-worktree.ts +5 -5
- package/scripts/repo/auto-merge-setting-logic.ts +7 -9
- package/scripts/repo/auto-merge-setting.ts +1 -1
- package/scripts/repo/repo-setting.ts +4 -4
- package/scripts/repo/repository-labels.ts +1 -1
- package/scripts/repo/required-checks-logic.ts +3 -3
- package/scripts/repo/required-checks-report.ts +1 -1
- package/scripts/repo/ruleset-check-cli.ts +1 -1
- package/scripts/repo/ruleset-check.ts +1 -1
- package/scripts/report/report-format-reference.ts +26 -0
- package/scripts/report/report-lint-cli.ts +2 -2
- package/scripts/report/report-lint.ts +16 -2
- package/scripts/review/disposition-cli.ts +2 -2
- package/scripts/review/disposition-logic.ts +1 -1
- package/scripts/review/live-evidence.ts +9 -6
- package/scripts/review/review-attest-cli.ts +1 -2
- package/scripts/review/review-attest.ts +3 -3
- package/scripts/review/review-brief-cli.ts +19 -20
- package/scripts/review/review-brief.ts +29 -32
- package/scripts/review/review-checkout.ts +2 -2
- package/scripts/review/review-diff-parts.ts +3 -5
- package/scripts/review/review-diff-write.ts +1 -1
- package/scripts/review/review-finding-ledger.ts +7 -4
- package/scripts/review/review-findings-cli.ts +2 -2
- package/scripts/review/review-level.ts +4 -7
- package/scripts/review/review-record-cli.ts +73 -16
- package/scripts/review/review-record.ts +5 -4
- package/scripts/review/review-round2-cli.ts +2 -3
- package/scripts/review/review-round2.ts +13 -21
- package/scripts/review/review-stamps.ts +9 -71
- package/scripts/review/review-tree.ts +4 -5
- package/scripts/rules/bash-triggers.ts +4 -4
- package/scripts/rules/decision-oracle-batch.ts +6 -7
- package/scripts/rules/decision-oracle-stage.ts +1 -1
- package/scripts/rules/decision-oracle-tokens.ts +1 -2
- package/scripts/rules/decision-oracle.ts +2 -2
- package/scripts/rules/delivered-rules.ts +61 -406
- package/scripts/rules/destructive-command.ts +2 -2
- package/scripts/rules/direct-filing.ts +4 -4
- package/scripts/rules/direct-pr-create.ts +2 -2
- package/scripts/rules/early-heartbeat.ts +15 -19
- package/scripts/rules/file-body.ts +5 -6
- package/scripts/rules/filing-cap.ts +6 -7
- package/scripts/rules/filing-offer.ts +1 -1
- package/scripts/rules/firing-point.ts +6 -6
- package/scripts/rules/gh-api.ts +2 -2
- package/scripts/rules/git-argv.ts +3 -3
- package/scripts/rules/git-force.ts +2 -2
- package/scripts/rules/hook-context-line.ts +31 -0
- package/scripts/rules/implementation-cut-verdict.ts +5 -8
- package/scripts/rules/implementation-cut.ts +35 -32
- package/scripts/rules/index-guard.ts +2 -2
- package/scripts/rules/issue-citation.ts +7 -7
- package/scripts/rules/issue-comments.ts +21 -13
- package/scripts/rules/josh-git-bare.ts +2 -2
- package/scripts/rules/lane-background.ts +14 -16
- package/scripts/rules/lane-carry-conflict.ts +41 -5
- package/scripts/rules/lane-interactive-ask.ts +6 -9
- package/scripts/rules/lane-park.ts +12 -16
- package/scripts/rules/lane-split-park.ts +1 -2
- package/scripts/rules/lane-switch-main.ts +10 -13
- package/scripts/rules/last-prompt.ts +1 -1
- package/scripts/rules/oracle-consulted.ts +5 -5
- package/scripts/rules/oracle-firing.ts +6 -9
- package/scripts/rules/oracle-list-cli.ts +2 -2
- package/scripts/rules/permission-guards.ts +2 -2
- package/scripts/rules/piped-verification.ts +79 -9
- package/scripts/rules/poll-loop.ts +9 -11
- package/scripts/rules/pre-gate-cut.ts +33 -30
- package/scripts/rules/prior-comment-read.ts +3 -3
- package/scripts/rules/protected-files.ts +25 -13
- package/scripts/rules/raw-field-body.ts +3 -4
- package/scripts/rules/reply-language.ts +1 -1
- package/scripts/rules/rule-body-guard.ts +10 -12
- package/scripts/rules/rule-guard.ts +1 -1
- package/scripts/rules/rule-list.ts +51 -0
- package/scripts/rules/rule-registry-rows.ts +282 -0
- package/scripts/rules/rule-registry.ts +109 -0
- package/scripts/rules/rule-value-cache.ts +2 -2
- package/scripts/rules/rule-value-cli.ts +6 -4
- package/scripts/rules/rule-value.ts +61 -22
- package/scripts/rules/run-tail-rule.ts +11 -15
- package/scripts/rules/shell-body-trigger.ts +7 -7
- package/scripts/rules/shell-segments.ts +2 -4
- package/scripts/rules/stop-rules.ts +54 -41
- package/scripts/rules/tail-commands.ts +1 -1
- package/scripts/rules/test-declared-commit.ts +2 -2
- package/scripts/rules/third-party-write.ts +3 -3
- package/scripts/rules/worktree-guard.ts +12 -5
- package/scripts/run/add/run-add-cli.ts +165 -0
- package/scripts/run/add/run-add.ts +124 -0
- package/scripts/run/board/run-board-cli.ts +207 -0
- package/scripts/run/board/run-board-closed.ts +95 -0
- package/scripts/run/board/run-board-every.ts +60 -0
- package/scripts/run/board/run-board-fetch.ts +38 -0
- package/scripts/run/board/run-board-fit.ts +219 -0
- package/scripts/run/board/run-board-github.ts +162 -0
- package/scripts/run/board/run-board-header.ts +275 -0
- package/scripts/run/board/run-board-kind.ts +35 -0
- package/scripts/run/board/run-board-labels.ts +299 -0
- package/scripts/run/board/run-board-layout.ts +222 -0
- package/scripts/run/board/run-board-link.ts +31 -0
- package/scripts/run/board/run-board-machine.ts +198 -0
- package/scripts/run/board/run-board-notes.ts +103 -0
- package/scripts/run/board/run-board-phase.ts +136 -0
- package/scripts/run/board/run-board-plan.ts +129 -0
- package/scripts/run/board/run-board-read.ts +62 -0
- package/scripts/run/board/run-board-render-legend.ts +82 -0
- package/scripts/run/board/run-board-render-notes.ts +77 -0
- package/scripts/run/board/run-board-render-slot.ts +50 -0
- package/scripts/run/board/run-board-render.ts +407 -0
- package/scripts/run/board/run-board-scope.ts +17 -0
- package/scripts/run/board/run-board-screen.ts +43 -0
- package/scripts/run/board/run-board-span.ts +66 -0
- package/scripts/run/board/run-board-spin.ts +115 -0
- package/scripts/run/board/run-board-state.ts +113 -0
- package/scripts/run/board/run-board-status.ts +279 -0
- package/scripts/run/board/run-board-tick.ts +210 -0
- package/scripts/run/board/run-board-track.ts +22 -0
- package/scripts/run/board/run-board-usage-read.ts +255 -0
- package/scripts/run/board/run-board-usage-rusage.ts +124 -0
- package/scripts/run/board/run-board-usage-text.ts +80 -0
- package/scripts/run/board/run-board-usage.ts +165 -0
- package/scripts/run/carry/run-carry-added.ts +62 -0
- package/scripts/run/carry/run-carry-args.ts +25 -22
- package/scripts/run/carry/run-carry-change.ts +1 -1
- package/scripts/run/carry/run-carry-cli.ts +71 -48
- package/scripts/run/carry/run-carry-conversation.ts +6 -7
- package/scripts/run/carry/run-carry-ended.ts +85 -0
- package/scripts/run/carry/run-carry-reclaim.ts +1 -1
- package/scripts/run/carry/run-carry-stash.ts +3 -2
- package/scripts/run/carry/run-carry-streak.ts +8 -10
- package/scripts/run/carry/run-carry.ts +85 -89
- package/scripts/run/cut/run-cut-args.ts +7 -7
- package/scripts/run/cut/run-cut-cli.ts +54 -36
- package/scripts/run/cut/run-cut-handoff.ts +15 -15
- package/scripts/run/cut/run-cut-report.ts +37 -16
- package/scripts/run/cut/run-cut.ts +63 -77
- package/scripts/run/detached-launch.ts +35 -50
- package/scripts/run/entry/run-entry-cli.ts +48 -27
- package/scripts/run/entry/run-entry-stop.ts +7 -9
- package/scripts/run/entry/run-entry.ts +5 -6
- package/scripts/run/event/run-event-cli.ts +5 -6
- package/scripts/run/event/run-event-filed.ts +69 -0
- package/scripts/run/event/run-event-follow.ts +3 -3
- package/scripts/run/event/run-event-plan.ts +38 -0
- package/scripts/run/event/run-event-render.ts +9 -4
- package/scripts/run/event/run-event-scope.ts +47 -18
- package/scripts/run/event/run-event-stream-emit.ts +64 -11
- package/scripts/run/event/run-event-stream.ts +171 -46
- package/scripts/run/event/run-event-watch.ts +4 -6
- package/scripts/run/hold/run-hold-cli.ts +65 -62
- package/scripts/run/hold/run-hold.ts +88 -46
- package/scripts/run/merge/run-merge-cli.ts +116 -77
- package/scripts/run/merge/run-merge-collect.ts +107 -0
- package/scripts/run/merge/run-merge-steps.ts +112 -65
- package/scripts/run/merge/run-merge-token.ts +30 -0
- package/scripts/run/merge/run-merge.ts +31 -22
- package/scripts/run/progress/run-progress-args.ts +4 -4
- package/scripts/run/progress/run-progress-cli.ts +39 -50
- package/scripts/run/progress/run-progress-clock.ts +25 -32
- package/scripts/run/progress/run-progress-config.ts +6 -9
- package/scripts/run/progress/run-progress-read.ts +9 -10
- package/scripts/run/progress/run-progress.ts +48 -53
- package/scripts/run/review/run-review-cli.ts +6 -6
- package/scripts/run/review/run-review-steps.ts +6 -6
- package/scripts/run/review/run-review.ts +9 -11
- package/scripts/run/run-cli-fault.ts +29 -0
- package/scripts/run/run-ending-cli.ts +3 -3
- package/scripts/run/run-ending.ts +10 -14
- package/scripts/run/run-halfrun-resume.ts +6 -8
- package/scripts/run/run-headless.ts +26 -12
- package/scripts/run/run-invocation.ts +17 -22
- package/scripts/run/run-label.ts +7 -5
- package/scripts/run/run-liveness-cli.ts +19 -6
- package/scripts/run/run-liveness.ts +27 -38
- package/scripts/run/run-next-cli.ts +5 -9
- package/scripts/run/run-next.ts +4 -5
- package/scripts/run/run-parent-cut-hook.ts +10 -12
- package/scripts/run/run-preflight.ts +25 -29
- package/scripts/run/run-prep-cli.ts +17 -13
- package/scripts/run/run-prep-locate.ts +4 -5
- package/scripts/run/run-prep.ts +7 -10
- package/scripts/run/run-prrun-resume.ts +2 -2
- package/scripts/run/run-report-cli.ts +4 -4
- package/scripts/run/run-report.ts +9 -14
- package/scripts/run/run-retrospective.ts +3 -3
- package/scripts/run/run-section.ts +42 -0
- package/scripts/run/run-stage-read.ts +2 -2
- package/scripts/run/run-stage.ts +6 -4
- package/scripts/run/run-status-cli.ts +7 -5
- package/scripts/run/run-status.ts +6 -7
- package/scripts/run/run-step-cli.ts +64 -18
- package/scripts/run/run-step.ts +107 -51
- package/scripts/run/run-stop-notify.ts +7 -8
- package/scripts/run/run-stranded-cli.ts +1 -1
- package/scripts/run/run-stranded-detect.ts +4 -4
- package/scripts/run/run-stranded.ts +11 -13
- package/scripts/run/run-tail-cli.ts +15 -16
- package/scripts/run/run-tail.ts +14 -33
- package/scripts/run/run-watcher-guard-cli.ts +3 -4
- package/scripts/run/run-watcher-guard.ts +11 -12
- package/scripts/run/run-watcher-hook.ts +6 -12
- package/scripts/run/ship/run-ship-cli.ts +67 -33
- package/scripts/run/ship/run-ship-detach.ts +15 -13
- package/scripts/run/ship/run-ship-lock.ts +1 -1
- package/scripts/run/ship/run-ship-next.ts +7 -8
- package/scripts/run/ship/run-ship-pre-detach.ts +27 -11
- package/scripts/run/ship/run-ship-preflight.ts +10 -11
- package/scripts/run/ship/run-ship-probe.ts +4 -4
- package/scripts/run/ship/run-ship-return.ts +1 -1
- package/scripts/run/ship/run-ship-review-steps.ts +43 -24
- package/scripts/run/ship/run-ship-review.ts +12 -14
- package/scripts/run/ship/run-ship-scoped.ts +15 -6
- package/scripts/run/ship/run-ship-stage.ts +80 -26
- package/scripts/run/ship/run-ship-steps.ts +26 -16
- package/scripts/run/ship/run-ship-stop-text.ts +4 -2
- package/scripts/run/ship/run-ship-sync.ts +9 -8
- package/scripts/run/ship/run-ship.ts +17 -32
- package/scripts/run/tidy/run-tidy-cli.ts +9 -5
- package/scripts/run/tidy/run-tidy-lanes.ts +18 -7
- package/scripts/run/tidy/run-tidy-stashes.ts +8 -8
- package/scripts/run/tidy/run-tidy.ts +4 -3
- package/scripts/run/wake/run-wake-cli.ts +27 -32
- package/scripts/run/wake/run-wake-describe.ts +24 -28
- package/scripts/run/wake/run-wake-driver.ts +14 -14
- package/scripts/run/wake/run-wake-handoff.ts +6 -6
- package/scripts/run/wake/run-wake-loop.ts +9 -9
- package/scripts/run/wake/run-wake-restart.ts +4 -5
- package/scripts/run/wake/run-wake-session.ts +23 -27
- package/scripts/run/wake/run-wake.ts +57 -279
- package/scripts/safe-chain/ci-installer-pin.ts +3 -3
- package/scripts/safe-chain/pack-hook.ts +2 -2
- package/scripts/safe-chain/preinstall-command.ts +2 -2
- package/scripts/security/security-audit-logic.ts +1 -1
- package/scripts/security/security-audit-provision-logic.ts +1 -1
- package/scripts/security/security-audit-provision.ts +2 -2
- package/scripts/security/security-audit.ts +5 -5
- package/scripts/security/security-updates-logic.ts +2 -3
- package/scripts/security/security-updates.ts +2 -4
- package/scripts/self-sync-guard/index.ts +1 -1
- package/scripts/self-sync-guard/self-sync-guard-logic.ts +2 -2
- package/scripts/self-sync-guard/self-sync-refusal.ts +1 -1
- package/scripts/sonar/sonar-hotspots-cli.ts +1 -1
- package/scripts/sonar/sonar-hotspots.ts +1 -1
- package/scripts/sonar/sonar-new-code-cli.ts +1 -1
- package/scripts/sonar/sonar-new-code.ts +1 -1
- package/scripts/sonar/sonar-project.ts +1 -1
- package/scripts/split/split-assess-cli.ts +1 -1
- package/scripts/split/split-assess.ts +3 -3
- package/scripts/sync/directory-copy-guard.ts +2 -3
- package/scripts/sync/managed-config-scope-cli.ts +1 -2
- package/scripts/sync/managed-config-scope.ts +4 -4
- package/scripts/sync/plugin-skill-directories.ts +2 -2
- package/scripts/sync/reconcile-templates.ts +17 -8
- package/scripts/sync/removed-skill-manifest.ts +2 -3
- package/scripts/sync/sync-ai-files.ts +7 -7
- package/scripts/sync/sync-configs.ts +30 -3
- package/scripts/sync/sync-hook-safety.ts +2 -2
- package/scripts/sync/sync.ts +23 -10
- package/scripts/sync/synced-paths.ts +2 -1
- package/scripts/sync/workflow-pin-logic.ts +1 -1
- package/scripts/test/test-declared-changed.ts +4 -4
- package/scripts/test/test-declared-logic.ts +2 -3
- package/scripts/test/test-declared-match.ts +25 -4
- package/scripts/test/test-declared.ts +26 -9
- package/scripts/test/test-red-commit.ts +3 -2
- package/scripts/test/test-red-logic.ts +7 -14
- package/scripts/test/test-red.ts +12 -47
- package/scripts/test/test-related-scope.ts +2 -3
- package/scripts/test/test-related.ts +3 -3
- package/scripts/test/test-type-logic.ts +1 -2
- package/scripts/test/test-unit-guard.ts +13 -17
- package/scripts/test/unit-worker-share.ts +7 -8
- package/scripts/time-runtime/time-agent-bundles.ts +2 -4
- package/scripts/time-runtime/time-background.ts +17 -21
- package/scripts/time-runtime/time-batch-guard.ts +67 -342
- package/scripts/time-runtime/time-bundle-call.ts +26 -28
- package/scripts/time-runtime/time-bundles.ts +11 -12
- package/scripts/time-runtime/time-call-identity.ts +1 -1
- package/scripts/time-runtime/time-command-key.ts +2 -2
- package/scripts/time-runtime/time-density-hook.ts +8 -11
- package/scripts/time-runtime/time-density.ts +5 -5
- package/scripts/time-runtime/time-followup-stage.ts +7 -7
- package/scripts/time-runtime/time-format.ts +5 -5
- package/scripts/time-runtime/time-hook-transcript.ts +3 -3
- package/scripts/time-runtime/time-instant.ts +1 -1
- package/scripts/time-runtime/time-markers.ts +15 -19
- package/scripts/time-runtime/time-phase-names.ts +3 -3
- package/scripts/time-runtime/time-reported-failure.ts +15 -19
- package/scripts/time-runtime/time-round-trips.ts +20 -23
- package/scripts/time-runtime/time-shell.ts +8 -8
- package/scripts/time-runtime/time-single-check.ts +1 -2
- package/scripts/time-runtime/time-spans.ts +35 -40
- package/scripts/time-runtime/time-tool-call.ts +15 -16
- package/scripts/time-runtime/time-transcript-line.ts +53 -34
- package/scripts/time-runtime/time-writes.ts +5 -5
- package/scripts/ui/ui-routes-cli.ts +1 -2
- package/scripts/ui/ui-routes.ts +1 -2
- package/scripts/version/bump-version.ts +1 -1
- package/scripts/version/fresh-metadata-cache.ts +2 -2
- package/scripts/version/latest-corepack.ts +26 -26
- package/scripts/version/latest-lane-guard.ts +1 -1
- package/scripts/version/latest-scope-cli.ts +2 -2
- package/scripts/version/latest-stamp.ts +1 -2
- package/scripts/version/latest-update.ts +2 -2
- package/scripts/version/npm-registry.ts +2 -2
- package/scripts/version/package-manager-version.ts +18 -0
- package/scripts/version/publishable-range-check.ts +2 -1
- package/scripts/version/publishable-range.ts +1 -1
- package/scripts/version/release-age.ts +11 -11
- package/scripts/version/release-hold.ts +2 -2
- package/scripts/version/safe-chain-version-update.ts +3 -3
- package/scripts/version/version-check-logic.ts +2 -3
- package/scripts/version/version-check.ts +1 -2
- package/scripts/version/version-command-config.ts +2 -2
- package/scripts/version/version-commands.ts +3 -3
- package/scripts/version/version-remote.ts +4 -4
- package/scripts/version/version-targets.ts +2 -2
- package/templates/gitignore +7 -0
- package/dist/hooks/chunk-KHX4U3BG.js +0 -6400
- package/dist/hooks/chunk-RKUAD3I6.js +0 -90
- package/dist/hooks/chunk-WPALEIRX.js +0 -18
- package/scripts/backlog/backlog-restructure.ts +0 -152
- package/scripts/rules/issue-fold-rule.ts +0 -72
- package/scripts/rules/wip-cap.ts +0 -63
- package/scripts/run/run-issue-number.ts +0 -19
|
@@ -1,65 +1,30 @@
|
|
|
1
1
|
# `backlogrun` — lanes and concurrency
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
`pnpm josh lane:open`. It is a point-of-use document, never an entry read: the entry procedure is
|
|
5
|
-
`backlogrun.md`, which points here at that step. This file is the single source of the per-repository
|
|
6
|
-
lane ceiling, the lane lifecycle, and how a merge conflict between lanes is resolved.
|
|
3
|
+
Point-of-use, read one section at a time from `backlogrun.md` → "The route table".
|
|
7
4
|
|
|
8
5
|
## Concurrency: as many children per repository as it has free lanes
|
|
9
6
|
|
|
10
|
-
**
|
|
11
|
-
|
|
7
|
+
**One session per repository**, each running only its own repository's children; the per-repository
|
|
8
|
+
lane ceiling (`JOSH_LANE_LIMIT`, counted from the `in-progress` listing by `epic:next`) is
|
|
9
|
+
`.claude/skills/epic-commands/SKILL.md` → "An `in-progress` issue occupies a lane", and a dependency that crosses a
|
|
10
|
+
repository is `.claude/skills/epic-commands/SKILL.md` → "Epics that span repositories". Rationale:
|
|
11
|
+
`docs/maintainers/backlogrun-lanes-rationale.md` → "Why the lane ceiling is shaped the way it is".
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
# In the kit checkout
|
|
15
|
-
pnpm josh epic:next 858 --repo joshuafolkken/kit
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
A child in another repository is read against that repository through `gh api`, so no clone is needed
|
|
19
|
-
to learn its state — only to implement it. A repository with no checkout here says so rather than being
|
|
20
|
-
cloned.
|
|
21
|
-
|
|
22
|
-
**A dependency that crosses a repository is not satisfied when the blocking issue closes.** Merging
|
|
23
|
-
kit's issue does not publish kit, so such a dependency resolves only once the blocker is closed *and*
|
|
24
|
-
its release has appeared in the registry — and while the blocker is still open the registry is never
|
|
25
|
-
consulted. **Unless that repository publishes nothing** — no `package.json` on its default branch, or
|
|
26
|
-
one declaring `private` — in which case a closed blocker there resolves. The answer is read from the
|
|
27
|
-
blocker repository's manifest, never from the registry.
|
|
28
|
-
|
|
29
|
-
**The lane count is per repository, and `epic:next` is what applies it.** When it has a child to offer,
|
|
30
|
-
it first asks that repository **how many of its lanes are already running something**: every open issue
|
|
31
|
-
carrying `in-progress` and not parked counts for one — whichever epic it belongs to. What is left of
|
|
32
|
-
`JOSH_LANE_LIMIT` (**default 6**) is what gets offered, and at zero the answer is `wait`. It is asked
|
|
33
|
-
**only when there is a candidate**. A **parked** issue does not hold a lane: `needs-decision` outranks
|
|
34
|
-
`in-progress` here exactly as in the classification. A child stopped by `needs-human-review` is
|
|
35
|
-
deliberately not parked and goes on holding its lane.
|
|
36
|
-
|
|
37
|
-
**It is advisory and not atomic.** The label is applied when a child is dispatched — the parent claims
|
|
38
|
-
it in `lane:dispatch` before the child process starts, and a standalone `fullrun` / `halfrun` claims it
|
|
39
|
-
the moment `run:hold` answers `hold` — *after* this read. It is a guard, not a mutex.
|
|
40
|
-
|
|
41
|
-
**It is scoped to the resource, not the epic.** A lane is its own checkout with its own branch and
|
|
42
|
-
ports, so the repository-wide number is a **ceiling on how many lanes run at once**. How a session
|
|
43
|
-
drives more than one child at a time is "Lanes — running more than one child at a time" below.
|
|
44
|
-
|
|
45
|
-
**A stale label holds a lane, so the stale rule reaches past this epic's own children** — `backlogrun-park.md` →
|
|
46
|
-
"`in-progress` is removed by whoever finds it stale" applies to **any** open issue in the repository. `epic:next`
|
|
47
|
-
names the holders on standard error, and the 90-minute stale window bounds the wait.
|
|
48
|
-
|
|
49
|
-
**A listing it could not read is not an idle repository.** `epic:next` answers `wait` there rather than
|
|
50
|
-
offering the child. **A listing that was *cut short* is the same answer**: a short one with no visible
|
|
51
|
-
holder is `wait`, with its own message.
|
|
13
|
+
## A solo run
|
|
52
14
|
|
|
53
|
-
**
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
15
|
+
**One kind of child takes no lane beside anything: a defect in kit's own verification that makes
|
|
16
|
+
unrelated PRs answer wrongly on `main` today.** It runs alone, and the batch resumes only once it has
|
|
17
|
+
merged. **Decide it from three conditions that must all hold, never from how serious it looks** — is
|
|
18
|
+
it a defect (not an improvement, refactor, removal or feature)? Is it in kit's own verification gate
|
|
19
|
+
(lint / type check / spell check / unit tests), the code review, the pre-push hook, or the merge
|
|
20
|
+
checks — not a consumer repository's CI or template? Does it, on `main` now, make unrelated PRs
|
|
21
|
+
answer wrongly (a false green or a false red)? All three, and the issue carries `run:solo`; any one
|
|
22
|
+
missing, and it carries `run:lane`. `backlog:next` and `epic:next --lanes` answer `triage` for an issue
|
|
23
|
+
with neither, so an issue a run files carries one of the two from its
|
|
24
|
+
filing. **It stops the other lanes for one reason only: a batch run on broken verification leaves
|
|
25
|
+
nobody's result trustworthy.** This section is the rule's single source; rationale:
|
|
26
|
+
`docs/maintainers/wip-cap-rationale.md` → "Why a solo run"; provenance:
|
|
27
|
+
`docs/maintainers/backlogrun-lanes-rationale.md` → "Where each rule came from".
|
|
63
28
|
|
|
64
29
|
## Lanes — running more than one child at a time
|
|
65
30
|
|
|
@@ -76,21 +41,6 @@ verification are `pre-gate-cut.md`, the single source. **The child is told apart
|
|
|
76
41
|
resume stage is handed to it, by a mark the dispatch sets** — `JOSH_LANE_CHILD`, the lane's issue
|
|
77
42
|
number (`pre-gate-cut.md` → "The dispatch mark" and "The stage is passed to the resumed child").
|
|
78
43
|
|
|
79
|
-
**One kind of child takes no lane beside anything: a defect in kit's own verification that makes
|
|
80
|
-
unrelated PRs answer wrongly on `main` today.** It runs alone, and the batch resumes only once it has
|
|
81
|
-
merged. **Decide it from three conditions that must all hold, never from how serious it looks** — is
|
|
82
|
-
it a defect (not an improvement, refactor, removal or feature)? Is it in kit's own verification gate
|
|
83
|
-
(lint / type check / spell check / unit tests), the code review, the pre-push hook, or the merge
|
|
84
|
-
checks — not a consumer repository's CI or template? Does it, on `main` now, make unrelated PRs
|
|
85
|
-
answer wrongly (a false green or a false red)? All three, and the issue carries `run:solo`; any one
|
|
86
|
-
missing, and it carries `run:lane` and fills a lane like any other child. `backlog:next` and `epic:next --lanes` enforce both (joshuafolkken/kit#2776,
|
|
87
|
-
#2779), and an issue a run files (an interrupt, a split child, a prerequisite) carries one of the
|
|
88
|
-
two from its filing, because an issue with neither answers `triage` and nothing starts. **It stops
|
|
89
|
-
the other lanes for one reason only: a batch run on broken verification leaves nobody's result
|
|
90
|
-
trustworthy** — that the issue's own verification sits under the defect is the issue's own concern,
|
|
91
|
-
checked by the verification after the fix. This paragraph is the rule's single source; rationale:
|
|
92
|
-
`docs/maintainers/wip-cap-rationale.md` → "Why a solo run".
|
|
93
|
-
|
|
94
44
|
**A lane's review does not inherit the lane, and `pnpm josh review:brief` is what closes that.**
|
|
95
45
|
`pnpm josh review:brief` prints the lane's absolute root, branch and HEAD, hands over targets written
|
|
96
46
|
`git -C <root> …`, and prints a nonce the review attests with `pnpm josh review:attest <nonce>` from
|
|
@@ -112,69 +62,36 @@ costs a resolution, a re-run gate and a review (`backlogrun-recovery.md` → "Co
|
|
|
112
62
|
|
|
113
63
|
### Once per repository, before the first lane opens
|
|
114
64
|
|
|
115
|
-
In the **primary checkout**, in this order,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
2. `pnpm josh latest:scope`, and the update on `required` — `backlogrun-child.md` → "`josh latest`
|
|
119
|
-
runs once per session, not once per child".
|
|
120
|
-
3. `pnpm josh lane:prune` — closes lanes left without a work tree, sweeps unregistered leftovers.
|
|
121
|
-
4. `pnpm josh run:tidy` — sweeps merged lanes and stashes (as `run:hold` does).
|
|
122
|
-
|
|
123
|
-
**`pnpm josh latest` is never run inside a lane, whatever `latest:scope` answers there** — the command
|
|
124
|
-
enforces it: `latest:scope` answers `skip` in a lane and `pnpm josh latest` refuses outright, fronted
|
|
125
|
-
by `pnpm josh latest:guard`. Ask it in the primary checkout, per step 2 above.
|
|
126
|
-
|
|
127
|
-
**The rewritten lock file still has to reach a pull request**, and with lanes no child runs in the
|
|
128
|
-
primary checkout to carry it. `git stash` is a repository-level ref shared by every work tree:
|
|
65
|
+
In the **primary checkout**, in this order, never again per lane: `pnpm josh ms`; `pnpm josh
|
|
66
|
+
latest:scope` and the update on `required` (`backlogrun-child.md` → "`josh latest` runs once per
|
|
67
|
+
session, not once per child"); `pnpm josh lane:prune`; `pnpm josh run:tidy`.
|
|
129
68
|
|
|
130
|
-
|
|
131
|
-
git stash push -u -m "backlogrun: josh latest before lanes"
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
by message, after `lane:open`'s own install** — never a positional `git -C "$dir" stash pop`: the stash
|
|
137
|
-
is a repository-wide stack every lane shares, so a positional pop would take whichever lane last pushed.
|
|
138
|
-
**Under the supervisor's `backlog:drive` the driver passes it, never you**:
|
|
139
|
-
each launch asks whether a stash under that message is on the stack and, if one is, hands it to
|
|
140
|
-
`lane:launch --stash` — the pop consumes it, so the first lane takes it and every later one launches
|
|
141
|
-
without. The push above stays the parent's, before the driver starts.
|
|
69
|
+
**The rewritten lock file reaches a pull request through the first lane.** In the primary checkout,
|
|
70
|
+
only if the update rewrote anything, `git stash push -u -m "backlogrun: josh latest before lanes"`, and
|
|
71
|
+
record it on that first child's Issue. **The first lane's `pnpm josh lane:launch "$n" --stash
|
|
72
|
+
"backlogrun: josh latest before lanes"` pops it by message** — never a positional `stash pop` on the
|
|
73
|
+
shared stack. **Under `backlog:drive` the driver passes `--stash`, never you**; the push stays the
|
|
74
|
+
parent's, before the driver starts.
|
|
142
75
|
|
|
143
76
|
### Opening one lane and dispatching its child
|
|
144
77
|
|
|
145
|
-
**One command opens the lane, prepares it, and dispatches the child — `pnpm josh lane:launch
|
|
146
|
-
|
|
147
|
-
|
|
78
|
+
**One command opens the lane, prepares it, and dispatches the child — `pnpm josh lane:launch`** (over
|
|
79
|
+
`lane:open`, `stash:pop` and `lane:dispatch`, each guard unchanged; rationale:
|
|
80
|
+
`docs/maintainers/backlogrun-lanes-rationale.md` → "Why `lane:launch` folds the lane steps into one"):
|
|
148
81
|
|
|
149
82
|
```bash
|
|
150
83
|
pid=$(pnpm josh lane:launch "$n") || exit 1 # the child's pid on stdout, nothing else
|
|
151
|
-
pid=$(pnpm josh lane:launch "$n" --stash "backlogrun: josh latest before lanes") || exit 1 # the first lane only, and only if `josh latest` stashed
|
|
152
84
|
```
|
|
153
85
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
`lane:open`, a pop that refused, or a failed re-install each **stop the launch before the child is
|
|
164
|
-
dispatched**.
|
|
165
|
-
- **`lane:open` installs; the `--stash` lane re-installs, and only that lane needs it.** A failed
|
|
166
|
-
install fails `lane:open`, so `lane:launch` reaching `lane:dispatch` is the guarantee the lane runs.
|
|
167
|
-
**A pop that fails stops the lane** rather than re-installing anyway.
|
|
168
|
-
- **A `<N>-lane` that already exists is attached to, and `lane:open` says so on standard error** — the
|
|
169
|
-
way back to a child parked after it pushed: a local branch of that name gets the work tree put on it,
|
|
170
|
-
and where there is none the **remote** is asked (`ls-remote`, fetched first) and the lane cut from
|
|
171
|
-
`origin/<N>-lane` where the branch survives — otherwise from the default branch. **A reused branch is
|
|
172
|
-
not a fresh lane.** Nothing deletes a branch to open a lane, so a reopen cannot cost the pushed work.
|
|
173
|
-
- **Nothing switches the lane's branch.**
|
|
174
|
-
- **`pnpm josh run:hold`'s preflight check is not asked in a lane; `lane:open`'s own answer replaces it.**
|
|
175
|
-
What a leftover looks like here is `lane:open` answering `already-open`.
|
|
176
|
-
- **`pnpm josh run:hold` is unchanged, and is claimed inside the lane** — it keys on
|
|
177
|
-
`git rev-parse --absolute-git-dir` (`.git/worktrees/<name>`), so each lane holds independently.
|
|
86
|
+
| It answers | What the run does |
|
|
87
|
+
| --- | --- |
|
|
88
|
+
| a pid | The child runs; poll it |
|
|
89
|
+
| empty, non-zero, `full` | No free lane; wait for one |
|
|
90
|
+
| empty, non-zero, `already-open` or a failed install | **Park that child and name `pnpm josh lane:close <N>`** — a lock the lane cannot build is a person's to fix |
|
|
91
|
+
| `lane:open` reports a reused `<N>-lane` on stderr | The way back to a child parked after it pushed — **a reused branch is not a fresh lane** |
|
|
92
|
+
|
|
93
|
+
**Nothing switches the lane's branch.** In a lane `lane:open`'s answer replaces `pnpm josh run:hold`'s
|
|
94
|
+
preflight, and the child claims `run:hold` inside the lane, keyed on its own git directory.
|
|
178
95
|
|
|
179
96
|
### Handing the child over
|
|
180
97
|
|
|
@@ -200,14 +117,11 @@ The bullets below describe that dispatch:
|
|
|
200
117
|
`.claude/settings.json` to decide; a headless child reaches `gh` and merges through `pnpm josh
|
|
201
118
|
followup` without the flag, and the run reports what stopped rather than loosening it.
|
|
202
119
|
|
|
203
|
-
**Start each child without blocking on it, and poll them all
|
|
204
|
-
delegated unit that stopped without reporting"
|
|
205
|
-
|
|
206
|
-
`pgrep -laf "(fullrun|run-ship-cli\.ts .*) #<N>$"` first and pass what it found** — `alive` where the
|
|
207
|
-
child is there, `none` where it is not, and never `alive` merely because the child was dispatched. The
|
|
208
|
-
command line carries no path; the `$` anchor keeps `#12` from matching a running `#123`.
|
|
120
|
+
**Start each child without blocking on it, and poll them all** — a silent one is
|
|
121
|
+
`backlogrun-recovery.md` → "A delegated unit that stopped without reporting", read in that child's
|
|
122
|
+
lane.
|
|
209
123
|
|
|
210
|
-
**`
|
|
124
|
+
**`pnpm josh ms` is the parent's now, not the child's.** No lane can switch to the
|
|
211
125
|
default branch, so the refresh moves to the primary checkout **before each `lane:open`** — the ref the
|
|
212
126
|
lane is cut from.
|
|
213
127
|
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
**Read this file in full when a child cannot finish** — before parking it, before a
|
|
4
4
|
`needs-human-review` stop, or before recording a mid-run prerequisite or split. It is a point-of-use
|
|
5
5
|
document, never an entry read: the entry procedure is `backlogrun.md`, which points here at that
|
|
6
|
-
moment
|
|
6
|
+
moment. This file is the single source of park-and-continue, the
|
|
7
7
|
`needs-human-review` stop, a stale `in-progress`, a prerequisite discovered mid-run, and a mid-run
|
|
8
|
-
split.
|
|
8
|
+
split. Provenance of each rule: `docs/maintainers/backlogrun-park-rationale.md` → "Where each rule came from".
|
|
9
9
|
|
|
10
10
|
## What happens to a child that cannot finish
|
|
11
11
|
|
|
@@ -16,11 +16,9 @@ authorization, whether it came from a named epic or from the opted-in pool:
|
|
|
16
16
|
and continue", which is that rule's single source, including what happens to the issue's lane.
|
|
17
17
|
- **A prerequisite discovered mid-run is recorded as a dependency rather than parked** —
|
|
18
18
|
→ "A prerequisite discovered mid-run", and `prerequisite.md` for the three-way
|
|
19
|
-
distinction between a prerequisite, a split and an upstream defect.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
naming it. The parked issue returns to the pool when a person clears the label, and the
|
|
23
|
-
prerequisite is offered on the next ask if it carries `auto-ok`.
|
|
19
|
+
distinction between a prerequisite, a split and an upstream defect. With no epic there is no
|
|
20
|
+
`pnpm josh epic --add` to record the ordering into, so the `blocked-by` relation is written on the
|
|
21
|
+
issue itself (step 3 below) — still a dependency, never a `needs-decision` park.
|
|
24
22
|
- **A split found mid-run** files the children and the epic and does not stop the batch, because the
|
|
25
23
|
keyword already authorized a batch — `split-assessment.md` for the assessment, → "Splitting a child
|
|
26
24
|
mid-run" for the branch. The split child is not parked or counted as a failure; its new children
|
|
@@ -28,15 +26,15 @@ authorization, whether it came from a named epic or from the opted-in pool:
|
|
|
28
26
|
- **`in-progress` left behind by an interrupted run** is → "`in-progress` is removed by
|
|
29
27
|
whoever finds it stale".
|
|
30
28
|
- **A child released from `needs-decision` is re-dispatched to a lane, never implemented by the
|
|
31
|
-
parent.** The parent is an orchestrator: → "
|
|
32
|
-
|
|
33
|
-
is Tier A" carries the re-dispatch itself. A released child takes a lane exactly as any batch child
|
|
29
|
+
parent.** The parent is an orchestrator: `backlogrun.md` → "Claim nothing at the entry — this
|
|
30
|
+
parent orchestrates and never implements" is the single source, and "Removing the label
|
|
31
|
+
is Tier A" below carries the re-dispatch itself. A released child takes a lane exactly as any batch child
|
|
34
32
|
does.
|
|
35
33
|
|
|
36
34
|
## The parent does not investigate a lane failure itself
|
|
37
35
|
|
|
38
36
|
**A lane failure whose reason is not on its Issue is read by a unit** — `pnpm josh delegate
|
|
39
|
-
lane-failure-investigation
|
|
37
|
+
lane-failure-investigation`; the parent checks the cited lines and
|
|
40
38
|
`pnpm josh issue:state` before it parks, re-dispatches or files.
|
|
41
39
|
|
|
42
40
|
## `needs-human-review` — the one stop that is not a park
|
|
@@ -46,17 +44,14 @@ there** — implementation and the verification gate run, nothing is committed,
|
|
|
46
44
|
dirty and unstashed, a `confirmation` Telegram carrying the resume command goes out, and the remaining
|
|
47
45
|
children are not started.
|
|
48
46
|
|
|
49
|
-
**This is the exception to park-and-continue below
|
|
50
|
-
|
|
51
|
-
person has to look at — which is why the alternative that kept the batch running (commit, open a PR,
|
|
52
|
-
merge nothing) was rejected: it satisfies "a person approves publication" and fails "a person chooses".
|
|
47
|
+
**This is the exception to park-and-continue below** — rationale:
|
|
48
|
+
`docs/maintainers/backlogrun-park-rationale.md` → "Why `needs-human-review` ends the run instead of parking".
|
|
53
49
|
|
|
54
50
|
**The child goes on holding its repository.** `needs-decision` outranks `in-progress` in the
|
|
55
51
|
per-repository exclusion so a parked child releases the checkout; this label deliberately does not,
|
|
56
52
|
because releasing it would start the next child on top of uncommitted work. **Its lane is left open and
|
|
57
|
-
untouched**, for the same reason. **Name the lane directory in the stop report and in the Telegram
|
|
58
|
-
|
|
59
|
-
flight finish; no new lane is opened.
|
|
53
|
+
untouched**, for the same reason. **Name the lane directory in the stop report and in the Telegram.** The lanes
|
|
54
|
+
already in flight finish; no new lane is opened.
|
|
60
55
|
|
|
61
56
|
**Never apply or remove the label** — a person's alone. Full definition and the
|
|
62
57
|
`needs-decision` comparison: `needs-human-review.md`, which is the single source.
|
|
@@ -75,37 +70,25 @@ pnpm josh issue:comment <N> --body-file <path> # what needs deciding, and the
|
|
|
75
70
|
`needs-decision` precedence over `in-progress`, so the next child is offered normally. Then return to
|
|
76
71
|
step 1; the other children are unaffected unless they depend on this one.
|
|
77
72
|
|
|
78
|
-
**A parked child's lane is kept, whether or not it had committed
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
local branch the resume needs. **A lost merge race is not one of
|
|
82
|
-
these rows** — it resolves in its lane (`backlogrun-recovery.md` → "Conflicts are not predicted"), and parks only under that
|
|
83
|
-
section's four conditions, which take the after-commit row. Both rows and the `pnpm josh run:release
|
|
84
|
-
<N>` every parked ending owes are "What happens to a lane" above, the single source.
|
|
73
|
+
**A parked child's lane is kept, whether or not it had committed**, and every parked ending owes
|
|
74
|
+
`pnpm josh run:release <N>` — `backlogrun-lanes.md` → "What happens to a lane", the single source. A
|
|
75
|
+
lost merge race resolves in its lane instead (`backlogrun-recovery.md` → "Conflicts are not predicted").
|
|
85
76
|
|
|
86
|
-
**Parking replaces stopping the session, not the rule that produced the stop
|
|
87
|
-
still filed
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
and record the decision on both the new Issue and that epic's `## Decisions`. What remains a park is a
|
|
91
|
-
genuine toss-up between two equally apt epics, and that is rare.
|
|
77
|
+
**Parking replaces stopping the session, not the rule that produced the stop** — an upstream defect is
|
|
78
|
+
still filed at once, and a workaround is still forbidden. `epic:bundle`'s `ask` is Tier A, not a park:
|
|
79
|
+
add the epic you recommend with `pnpm josh epic --add <E> <N> --after <M>` and record it on both
|
|
80
|
+
Issues' `## Decisions`.
|
|
92
81
|
|
|
93
|
-
**Removing the label is Tier A — do it without asking
|
|
94
|
-
|
|
82
|
+
**Removing the label is Tier A — do it without asking**, once the decision is recorded; without it the
|
|
83
|
+
parked child never runs again:
|
|
95
84
|
|
|
96
85
|
```bash
|
|
97
86
|
gh api -X DELETE repos/{owner}/{repo}/issues/<N>/labels/needs-decision 2>/dev/null || true
|
|
98
87
|
```
|
|
99
88
|
|
|
100
|
-
**The released child goes back to a lane, never into the parent's own context
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
park kept, or opens one where none is. A
|
|
104
|
-
parent that implements the released child inline is the failure the orchestrator rule is written against:
|
|
105
|
-
"The parent orchestrates and never implements a child in its own context" above.
|
|
106
|
-
|
|
107
|
-
Without removing the label the parked child never runs again — it is the second half of the
|
|
108
|
-
human-in-the-loop cycle, not an optional tidy-up.
|
|
89
|
+
**The released child goes back to a lane, never into the parent's own context** — `pnpm josh
|
|
90
|
+
lane:launch <N>` (`backlogrun.md` → "Claim nothing at the entry — this parent orchestrates and never
|
|
91
|
+
implements").
|
|
109
92
|
|
|
110
93
|
## Only a person's judgement carries `needs-decision`
|
|
111
94
|
|
|
@@ -123,10 +106,10 @@ It never carries:
|
|
|
123
106
|
- a defect in the running repository's own run tooling — the run fixes it and resumes
|
|
124
107
|
(`prompts/collaboration-workflow/upstream-interrupt.md` → "実行中のリポジトリ自身のラン機構の不具合").
|
|
125
108
|
|
|
126
|
-
**When in doubt, it is Tier A**: decide, comment the decision, and continue. A label a
|
|
127
|
-
clear for nothing spends their attention and stalls the child. **A label a mechanical step applied** — a
|
|
109
|
+
**When in doubt, it is Tier A**: decide, comment the decision, and continue. **A label a mechanical step applied** — a
|
|
128
110
|
failed or abandoned child, a lost merge race's four conditions — is read against this list once its
|
|
129
|
-
reason is known, and removed (Tier A, above) when the reason is not on it.
|
|
111
|
+
reason is known, and removed (Tier A, above) when the reason is not on it. Rationale:
|
|
112
|
+
`docs/maintainers/backlogrun-park-rationale.md` → "Why a run spends no attention on a non-finding".
|
|
130
113
|
|
|
131
114
|
## `in-progress` is removed by whoever finds it stale
|
|
132
115
|
|
|
@@ -150,9 +133,7 @@ start a second child on top of that work.
|
|
|
150
133
|
|
|
151
134
|
**A closed issue's labels are neither a finding nor something to clean up.** A closed issue holds no lane
|
|
152
135
|
(`epic-busy.ts` counts holders from the open listing alone) and `epic:next` never offers it, so
|
|
153
|
-
`in-progress` left behind on one changes nothing. **Do not report it, and do not strip it
|
|
154
|
-
read as something that needs attention, so a run that lists non-findings is a run whose real findings are
|
|
155
|
-
harder to see.
|
|
136
|
+
`in-progress` left behind on one changes nothing. **Do not report it, and do not strip it.**
|
|
156
137
|
|
|
157
138
|
```bash
|
|
158
139
|
gh api -X DELETE repos/{owner}/{repo}/issues/<N>/labels/in-progress 2>/dev/null || true
|
|
@@ -170,7 +151,7 @@ source; what follows is this entry's branch.
|
|
|
170
151
|
1. File the prerequisite Issue `<N>` with the `route:tier-a` label — Tier A for a first-party
|
|
171
152
|
repository, no confirmation. It is filed **first** because the next step names it.
|
|
172
153
|
2. **Stash the work in progress.** A child is implemented on the default branch with an uncommitted tree,
|
|
173
|
-
so `<M>`'s half-finished edits are sitting there, and the next child's `
|
|
154
|
+
so `<M>`'s half-finished edits are sitting there, and the next child's `pnpm josh ms`
|
|
174
155
|
would refuse or carry them into the prerequisite's branch and PR.
|
|
175
156
|
|
|
176
157
|
```bash
|
|
@@ -181,22 +162,24 @@ source; what follows is this entry's branch.
|
|
|
181
162
|
**`-u` is not optional** (a new `*.test.ts` is untracked). The comment makes the paused state
|
|
182
163
|
auditable and tells the session that resumes `<M>` a stash is waiting. **Pop it by message, never by
|
|
183
164
|
position** — `pnpm josh stash:pop "backlogrun: paused #<M> for prerequisite #<N>"` — when `epic:next`
|
|
184
|
-
offers `<M>` again, after its `
|
|
165
|
+
offers `<M>` again, after its `pnpm josh ms`. The stash is a repository-wide stack
|
|
185
166
|
every lane shares, so a bare `git stash pop` would take whichever lane last pushed; the message
|
|
186
167
|
targets this one. The prerequisite has merged by then, so expect to resolve conflicts.
|
|
187
168
|
|
|
188
169
|
3. `pnpm josh epic --add <E> <N> --before <M>` — one command writes the task-list row, the declaration
|
|
189
170
|
and the `blocked-by` relation together. Never edit the body by hand: the declaration and the relations
|
|
190
171
|
then disagree, `epic:next` returns `error`, and the unattended run stops.
|
|
172
|
+
**With no epic** (a pool child), record the relation alone, `<M>` blocked by `<N>`, with the
|
|
173
|
+
`gh api …/dependencies/blocked_by` call in `prompts/collaboration-workflow/issue-template.md` →
|
|
174
|
+
"複数 Issue に分割するときの epic Issue", step 4.
|
|
191
175
|
4. **Remove `in-progress` from `<M>`** — `pnpm josh run:release <M>`, which removes the label with the hold.
|
|
192
176
|
This is what lets `<M>` run again: `epic:next` classifies a child carrying `in-progress` as waiting on
|
|
193
177
|
time **before** it looks at any blocker, so a child left labelled is never offered again.
|
|
194
178
|
5. **Do not park.** Go back to step 1 of the loop. `epic:next` classifies the original child as resolving
|
|
195
179
|
on its own and hands back the prerequisite first, so the order is kept with no human input.
|
|
196
180
|
|
|
197
|
-
**
|
|
198
|
-
|
|
199
|
-
expressed inverts the whole point: `needs-decision` is cleared by a person.
|
|
181
|
+
**A stop a dependency can express is never parked**, and a defect in this repository's own gate or run
|
|
182
|
+
tooling is such a stop — `prerequisite.md` holds that rule and what the driver does with it.
|
|
200
183
|
|
|
201
184
|
## Splitting a child mid-run
|
|
202
185
|
|