@joshuafolkken/kit 1.1471.0 → 1.1784.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 -1
- package/.claude/settings.json +6 -6
- package/.claude/skills/epic-commands/SKILL.md +26 -77
- package/.claude/skills/epic-commands/epic-bundle.md +12 -6
- package/.claude/skills/epic-commands/execution-waves.md +1 -2
- package/.claude/skills/verify-ui/SKILL.md +1 -2
- package/.claude/skills/workflow-commands/SKILL.md +12 -14
- package/.claude/skills/workflow-commands/background-commands.md +8 -12
- package/.claude/skills/workflow-commands/backlogrun-child.md +13 -18
- package/.claude/skills/workflow-commands/backlogrun-handoff-report.md +7 -25
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +23 -28
- package/.claude/skills/workflow-commands/backlogrun-park.md +16 -31
- package/.claude/skills/workflow-commands/backlogrun-progress.md +12 -21
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +12 -12
- package/.claude/skills/workflow-commands/backlogrun-steps.md +12 -20
- package/.claude/skills/workflow-commands/backlogrun.md +32 -51
- package/.claude/skills/workflow-commands/chain-rule.md +18 -11
- package/.claude/skills/workflow-commands/delegation.md +13 -8
- package/.claude/skills/workflow-commands/entry-sequence.md +10 -12
- package/.claude/skills/workflow-commands/followup.md +10 -35
- package/.claude/skills/workflow-commands/fullrun-steps.md +38 -49
- package/.claude/skills/workflow-commands/fullrun.md +6 -8
- package/.claude/skills/workflow-commands/halfrun.md +20 -32
- package/.claude/skills/workflow-commands/into-target.md +1 -2
- package/.claude/skills/workflow-commands/issue-comments.md +19 -15
- package/.claude/skills/workflow-commands/issue-scout.md +5 -4
- package/.claude/skills/workflow-commands/kickoff.md +24 -23
- package/.claude/skills/workflow-commands/latest-gate.md +9 -18
- package/.claude/skills/workflow-commands/needs-human-review.md +11 -19
- package/.claude/skills/workflow-commands/observation-filing.md +4 -50
- package/.claude/skills/workflow-commands/observation-ledger.md +5 -10
- package/.claude/skills/workflow-commands/pre-gate-cut.md +22 -44
- package/.claude/skills/workflow-commands/prerequisite.md +11 -18
- package/.claude/skills/workflow-commands/progress-watcher.md +3 -8
- package/.claude/skills/workflow-commands/prrun.md +6 -12
- package/.claude/skills/workflow-commands/retrospective.md +5 -5
- package/.claude/skills/workflow-commands/split-assessment.md +14 -4
- package/.claude/skills/workflow-commands/target-repository.md +1 -2
- package/.claude/skills/workflow-commands/working-tree-hold.md +11 -13
- package/.codex/hooks.json +6 -6
- package/.github/actions/setup-node/action.yml +10 -1
- package/.github/actions/setup-pnpm/action.yml +1 -1
- package/.github/dependabot.yml +16 -0
- package/.github/release.yml +0 -2
- package/.github/workflows/ci.yml +121 -11
- package/.github/workflows/publish.yml +10 -3
- package/.github/workflows/sonar-qube.yml +1 -0
- package/.prettierignore +2 -0
- package/.vscode/tasks.json +1 -2
- package/CLAUDE.md +4 -8
- package/README.md +4 -2
- package/SECURITY.md +1 -1
- package/cspell/index.yaml +7 -0
- package/dist/CLAUDE.md +4 -8
- package/dist/commands/document-read-cli.js +882 -0
- package/dist/commands/{document-section-cli.js → document-section-main.js} +137 -62
- package/dist/commands/read-set-cli.js +1867 -0
- package/dist/commands/run-prep-main.js +21653 -0
- package/dist/commands/run-step-cli.js +23880 -0
- package/dist/config-merge/index.js +5 -1
- package/dist/hooks/audit-provision.js +20 -35
- package/dist/hooks/{chunk-DGT54IH5.js → chunk-AZX4FGQ3.js} +63 -17
- package/dist/hooks/chunk-CWMBGKYW.js +6483 -0
- package/dist/hooks/chunk-O2YBIDSI.js +4306 -0
- package/dist/hooks/{chunk-AS74OU3D.js → chunk-PT5R6UJD.js} +4582 -2118
- package/dist/hooks/chunk-TUIFS5E7.js +72 -0
- package/dist/hooks/{chunk-723HKZO5.js → chunk-VWWCFGWK.js} +1 -1
- package/dist/hooks/{chunk-E7OIKX5Z.js → chunk-WR2KQAYZ.js} +1863 -382
- package/dist/hooks/{chunk-KC5AK2GF.js → chunk-XGBNSWEI.js} +248 -46
- package/dist/hooks/chunk-YCDOIR3I.js +3456 -0
- package/dist/hooks/codex-hook-adapter.js +10 -19
- package/dist/hooks/format-edited.js +5 -5
- package/dist/hooks/inputs.json +436 -257
- package/dist/hooks/pretool-guard.js +7 -22
- package/dist/hooks/session-lang.js +380 -42
- package/dist/hooks/stop-guard.js +8711 -782
- package/dist/josh.js +5263 -997
- package/dist/self-sync-guard/index.js +74 -10
- package/dist/version/index.js +115 -406
- package/eslint/base.js +1 -1
- package/lefthook/base.yml +8 -4
- package/package.json +17 -53
- package/pnpm-workspace.yaml +4 -2
- package/prompts/coding-standards.md +1 -1
- package/prompts/collaboration-workflow/file-edits.md +1 -9
- package/prompts/collaboration-workflow/gh-rest.md +1 -2
- package/prompts/collaboration-workflow/issue-citation.md +2 -4
- package/prompts/collaboration-workflow/issue-template.md +42 -17
- package/prompts/collaboration-workflow/lane-instructions.md +34 -0
- package/prompts/collaboration-workflow/measurement.md +37 -0
- package/prompts/collaboration-workflow/operating-rules.md +6 -12
- package/prompts/collaboration-workflow/output-bounds.md +4 -9
- package/prompts/collaboration-workflow/overview.md +1 -1
- package/prompts/collaboration-workflow/plan-comment.md +3 -42
- package/prompts/collaboration-workflow/principles.md +19 -8
- package/prompts/collaboration-workflow/report-format.md +37 -57
- package/prompts/collaboration-workflow/residency.md +12 -8
- package/prompts/collaboration-workflow/rule-delivery.md +3 -11
- package/prompts/collaboration-workflow/shell-body.md +8 -18
- package/prompts/collaboration-workflow/turn-batching.md +4 -6
- package/prompts/collaboration-workflow/upstream-interrupt.md +16 -6
- package/prompts/collaboration-workflow/wip-cap.md +7 -7
- package/prompts/collaboration-workflow.md +4 -7
- package/prompts/refactoring.md +1 -1
- package/prompts/review-rubric.md +1 -2
- package/prompts/review.md +45 -26
- package/prompts/testing-guide.md +10 -45
- package/scripts/agent/agent-argv.ts +20 -4
- package/scripts/agent/agent-event.ts +15 -15
- package/scripts/agent/agent-exit-record.ts +13 -1
- package/scripts/agent/agent-role-profile.ts +101 -45
- package/scripts/agent/agent-safe-text.ts +60 -0
- package/scripts/agent/api-auth.ts +41 -0
- package/scripts/agent/api-outage.ts +1 -1
- package/scripts/agent/claude-agent-argv.ts +14 -0
- package/scripts/agent/codex-agent-argv.ts +2 -0
- package/scripts/agent/lane-instructions.ts +144 -0
- package/scripts/auto-ok/auto-ok-cli.ts +14 -16
- package/scripts/auto-ok/auto-ok-judge-read.ts +12 -3
- package/scripts/auto-ok/auto-ok-judge-write.ts +46 -19
- package/scripts/auto-ok/auto-ok-judge.ts +13 -2
- package/scripts/auto-ok/auto-ok-main.ts +17 -0
- package/scripts/backlog/backlog-arrival.ts +14 -3
- package/scripts/backlog/backlog-budget-cli.ts +7 -33
- package/scripts/backlog/backlog-budget-main.ts +16 -0
- package/scripts/backlog/backlog-budget.ts +6 -7
- package/scripts/backlog/backlog-defect-priority.ts +4 -3
- package/scripts/backlog/backlog-drive-adopt.ts +67 -0
- package/scripts/backlog/backlog-drive-args.ts +4 -5
- package/scripts/backlog/backlog-drive-cli.ts +113 -28
- package/scripts/backlog/backlog-drive-hold.ts +162 -0
- package/scripts/backlog/backlog-drive-idle.ts +151 -0
- package/scripts/backlog/backlog-drive-judge.ts +25 -0
- package/scripts/backlog/backlog-drive-memory.ts +126 -0
- package/scripts/backlog/backlog-drive-named-offer.ts +5 -10
- package/scripts/backlog/backlog-drive-named.ts +54 -7
- package/scripts/backlog/backlog-drive-offer-argv.ts +3 -8
- package/scripts/backlog/backlog-drive-paused.ts +169 -0
- package/scripts/backlog/backlog-drive-restore.ts +39 -8
- package/scripts/backlog/backlog-drive-seats.ts +18 -8
- package/scripts/backlog/backlog-drive-token-handling.ts +38 -0
- package/scripts/backlog/backlog-drive.ts +79 -75
- package/scripts/backlog/backlog-next-main.ts +16 -0
- package/scripts/backlog/backlog-next-shared.ts +73 -0
- package/scripts/backlog/backlog-next.ts +48 -16
- package/scripts/backlog/backlog-occupied.ts +69 -0
- package/scripts/backlog/backlog-offer-cli.ts +6 -21
- package/scripts/backlog/backlog-offer-exclude.ts +15 -0
- package/scripts/backlog/backlog-offer-main.ts +12 -0
- package/scripts/backlog/backlog-offer.ts +36 -3
- package/scripts/backlog/backlog-overlap.ts +22 -4
- package/scripts/backlog/backlog-plan-read.ts +6 -2
- package/scripts/backlog/backlog-plan.ts +18 -4
- package/scripts/backlog/backlog-pool.ts +10 -10
- package/scripts/backlog/backlog-rank.ts +10 -2
- package/scripts/backlog/backlog-ready.ts +137 -18
- package/scripts/backlog/backlog-stalled-detect.ts +109 -36
- package/scripts/backlog/backlog-stalled.ts +52 -16
- package/scripts/backlog/backlog-wait-cause.ts +86 -0
- package/scripts/backlog/backlog-waves.ts +39 -13
- package/scripts/backlog/backlogrun-args.ts +19 -7
- package/scripts/backlog/backlogrun-cli.ts +19 -5
- package/scripts/backlog/backlogrun-launch.ts +6 -0
- package/scripts/backlog/backlogrun-restart.ts +97 -0
- package/scripts/backlog/backlogrun-stop.ts +79 -7
- package/scripts/behavior/behavior-cli.ts +2 -2
- package/scripts/behavior/behavior-rules.ts +47 -24
- package/scripts/build/build-bin.ts +2 -16
- package/scripts/build/build-claude-md.ts +0 -7
- package/scripts/build/build-commands.ts +0 -13
- package/scripts/build/build-hooks.ts +49 -48
- package/scripts/build/hook-bundle-stamp.ts +29 -11
- package/scripts/build/local-bin.ts +1 -1
- package/scripts/cases/cases-cli.ts +25 -13
- package/scripts/cases/cases-interaction-scan.ts +134 -0
- package/scripts/cases/cases-interaction.ts +183 -0
- package/scripts/cases/cases-logic.ts +39 -6
- package/scripts/ci/pr-classification-main.ts +18 -0
- package/scripts/ci/pr-classification.ts +10 -17
- package/scripts/clone/clone-scan.ts +1 -1
- package/scripts/cost-runtime/cost-blocks.ts +22 -37
- package/scripts/cost-runtime/cost-cli.ts +31 -14
- package/scripts/cost-runtime/cost-main.ts +12 -0
- package/scripts/cost-runtime/cost-transcript.ts +1 -0
- package/scripts/delegation/delegation-policy.ts +17 -4
- package/scripts/delegation/duplicate-read-guard.ts +2 -10
- package/scripts/delegation/investigation-guard.ts +15 -73
- package/scripts/delegation/investigation-reads.ts +3 -5
- package/scripts/dependabot/dependabot-cooldown.ts +194 -0
- package/scripts/discovery/repo-discovery.ts +24 -6
- package/scripts/doctor/doctor-consumer.ts +2 -5
- package/scripts/document/document-byte-budget.ts +9 -6
- package/scripts/document/document-scan.ts +1 -1
- package/scripts/document/document-section-cli.ts +17 -13
- package/scripts/document/document-section-main.ts +12 -0
- package/scripts/document/entry-read-budget.ts +2 -2
- package/scripts/document/read-set-cli.ts +4 -1
- package/scripts/epic/epic-audit-cli.ts +12 -6
- package/scripts/epic/epic-audit-orphans.ts +5 -8
- package/scripts/epic/epic-audit.ts +52 -1
- package/scripts/epic/epic-bundle-apply.ts +137 -0
- package/scripts/epic/epic-bundle-cli.ts +32 -121
- package/scripts/epic/epic-bundle-evidence.ts +49 -26
- package/scripts/epic/epic-bundle-format.ts +116 -0
- package/scripts/epic/epic-bundle-main.ts +17 -0
- package/scripts/epic/epic-bundle-referenced.ts +14 -3
- package/scripts/epic/epic-bundle.ts +17 -9
- package/scripts/epic/epic-busy.ts +5 -12
- package/scripts/epic/epic-classify.ts +24 -15
- package/scripts/epic/epic-cli-argv.ts +31 -0
- package/scripts/epic/epic-cli-decide.ts +42 -0
- package/scripts/epic/epic-cli.ts +6 -38
- package/scripts/epic/epic-close.ts +112 -55
- package/scripts/epic/epic-cross-repo.ts +4 -7
- package/scripts/epic/epic-decide.ts +119 -0
- package/scripts/epic/epic-decision.ts +9 -0
- package/scripts/epic/epic-fetch.ts +4 -0
- package/scripts/epic/epic-graph.ts +2 -0
- package/scripts/epic/epic-issue.ts +5 -1
- package/scripts/epic/epic-label-age.ts +1 -1
- package/scripts/epic/epic-lane-offer.ts +39 -4
- package/scripts/epic/epic-next-main.ts +24 -0
- package/scripts/epic/epic-next.ts +6 -24
- package/scripts/epic/epic-outside-blocker.ts +6 -2
- package/scripts/epic/epic-parse.ts +9 -3
- package/scripts/epic/epic-read.ts +1 -0
- package/scripts/epic/epic-reconcile.ts +39 -0
- package/scripts/epic/epic-run.ts +10 -1
- package/scripts/epic/epic-solo.ts +50 -14
- package/scripts/epic/epic.ts +41 -7
- package/scripts/exports/unused-members-cli.ts +2 -2
- package/scripts/followup/followup-checks-event.ts +8 -3
- package/scripts/followup/followup-coderabbit-wait.ts +82 -0
- package/scripts/followup/followup-review-gates.ts +81 -0
- package/scripts/followup/git-followup-stages.ts +13 -3
- package/scripts/followup/git-followup-workflow.ts +31 -60
- package/scripts/followup/git-pr-followup-wrapup.ts +9 -14
- package/scripts/followup/git-pr-followup.ts +36 -8
- package/scripts/fresh-machine/fresh-machine-cli.ts +1 -1
- package/scripts/fresh-machine/fresh-machine-run.ts +8 -8
- package/scripts/fresh-machine/specs/kit-test-backlogrun.json +1 -1
- package/scripts/gate/busy-average.ts +58 -0
- package/scripts/gate/check-cpu.ts +60 -0
- package/scripts/gate/check-inputs.ts +73 -0
- package/scripts/gate/check-reuse.ts +141 -0
- package/scripts/gate/command-memory.ts +192 -0
- package/scripts/gate/core-admission.ts +218 -28
- package/scripts/gate/core-budget-timing.ts +37 -0
- package/scripts/gate/core-budget.ts +150 -119
- package/scripts/gate/core-wait-record.ts +48 -0
- package/scripts/gate/core-wait.ts +162 -0
- package/scripts/gate/core-weights.ts +86 -0
- package/scripts/gate/free-cores.ts +72 -0
- package/scripts/gate/gate-ledger.ts +49 -7
- package/scripts/gate/gate-plan.ts +44 -15
- package/scripts/gate/gate-report.ts +29 -4
- package/scripts/gate/gate-run-steps.ts +195 -0
- package/scripts/gate/gate-skip.ts +12 -2
- package/scripts/gate/gate-steps.ts +12 -1
- package/scripts/gate/held-mark.ts +55 -0
- package/scripts/gate/input-fingerprint.ts +42 -0
- package/scripts/gate/machine-capacity.ts +124 -31
- package/scripts/gate/moved-paths.ts +67 -0
- package/scripts/gate/pre-commit-type-check.ts +14 -1
- package/scripts/gate/project-checks.ts +5 -12
- package/scripts/gate/scoped-green.ts +12 -8
- package/scripts/gate/since-green.ts +62 -0
- package/scripts/gate/toolchain-inputs.ts +115 -0
- package/scripts/gate/verification-gate.ts +65 -129
- package/scripts/gate/verification-inputs.ts +250 -0
- package/scripts/gh/gh-author-association.ts +96 -9
- package/scripts/gh/git-ai-review-scan.ts +4 -2
- package/scripts/gh/git-gh-api-path.ts +15 -0
- package/scripts/gh/git-gh-branch-rules.ts +73 -0
- package/scripts/gh/git-gh-conditional.ts +5 -2
- package/scripts/gh/git-gh-issue-read.ts +5 -1
- package/scripts/gh/git-gh-issue-rest.ts +1 -0
- package/scripts/gh/git-gh-issue-write.ts +77 -17
- package/scripts/gh/git-gh-issue.ts +7 -3
- package/scripts/gh/git-gh-poll-read.ts +89 -0
- package/scripts/gh/git-gh-pr-auto-merge.ts +8 -3
- package/scripts/gh/git-gh-pr-rest.ts +1 -1
- package/scripts/gh/git-gh-pr-snapshot.ts +33 -20
- package/scripts/gh/git-gh-pr.ts +27 -15
- package/scripts/gh/git-pr-checks-eval.ts +39 -7
- package/scripts/gh/git-pr-checks-parse.ts +39 -9
- package/scripts/gh/git-pr-merge-checked.ts +80 -0
- package/scripts/gh/git-pr.ts +13 -1
- package/scripts/git/base-tree.ts +19 -2
- package/scripts/git/changed-file-scope.ts +6 -4
- package/scripts/git/changed-paths.ts +18 -1
- package/scripts/git/git-diff-reads.ts +27 -2
- package/scripts/git/git-grep-hits.ts +85 -0
- package/scripts/git/git-location-environment.ts +1 -1
- package/scripts/git/git-merge-conflicts.ts +83 -0
- package/scripts/git/git-preflight.ts +37 -12
- package/scripts/git/git-push-transport.ts +1 -2
- package/scripts/git/git-schemas.ts +17 -7
- package/scripts/git/git-spawn.ts +1 -2
- package/scripts/git/git-status.ts +4 -4
- package/scripts/git/main-merge-main.ts +12 -0
- package/scripts/git/main-merge-regenerate.ts +78 -0
- package/scripts/git/main-merge.ts +39 -14
- package/scripts/git/main-sync-main.ts +12 -0
- package/scripts/git/main-sync.ts +0 -9
- package/scripts/git/stash/git-stash.ts +27 -4
- package/scripts/git/stash/{stash-pop-args.ts → stash-args.ts} +13 -10
- package/scripts/git/stash/stash-pop-cli.ts +6 -12
- package/scripts/git/stash/stash-pop-main.ts +12 -0
- package/scripts/git/stash/stash-push-cli.ts +76 -0
- package/scripts/git/stash/stash-push-main.ts +12 -0
- package/scripts/hooks/batch-guard.ts +5 -16
- package/scripts/hooks/check-commit-message-main.ts +8 -0
- package/scripts/hooks/check-commit-message.ts +4 -7
- package/scripts/hooks/format-edited-file.ts +8 -24
- package/scripts/hooks/pre-commit-lint.ts +118 -0
- package/scripts/hooks/pre-push-unit.ts +4 -2
- package/scripts/hooks/pretool-guard-cli.ts +1 -8
- package/scripts/hooks/pretool-guard.ts +57 -69
- package/scripts/hooks/reserved-run.ts +67 -8
- package/scripts/hooks/run-hook.sh +18 -11
- package/scripts/hooks/shell-rules-notice.ts +37 -0
- package/scripts/hooks/stop-actions.ts +185 -0
- package/scripts/hooks/stop-guard.ts +72 -27
- package/scripts/init/hook-command-rewrite.ts +19 -5
- package/scripts/init/hook-launch.ts +15 -12
- package/scripts/init/init-actions.ts +0 -6
- package/scripts/init/init-ai-copy.ts +10 -36
- package/scripts/init/init-bootstrap.ts +9 -8
- package/scripts/init/init-dry-run-report.ts +1 -1
- package/scripts/init/init-dry-run.ts +1 -1
- package/scripts/init/init-file-action.ts +7 -9
- package/scripts/init/init-logic-json-merge.ts +2 -2
- package/scripts/init/init-logic-migrate.ts +9 -82
- package/scripts/init/init-logic.ts +3 -2
- package/scripts/init/init-main.ts +12 -0
- package/scripts/init/init.ts +5 -12
- package/scripts/init/kit-development-versions.ts +3 -7
- package/scripts/init/kit-written-paths.ts +2 -2
- package/scripts/init/project-profile.ts +5 -4
- package/scripts/init/tsconfig-preset-migration.ts +2 -1
- package/scripts/init/vscode-tasks.ts +1 -1
- package/scripts/issue/defect-origin-cli.ts +106 -0
- package/scripts/issue/defect-origin-line.ts +60 -0
- package/scripts/issue/defect-origin-main.ts +11 -0
- package/scripts/issue/defect-origin.ts +114 -0
- package/scripts/issue/defect-rate-cli.ts +34 -78
- package/scripts/issue/defect-rate.ts +0 -16
- package/scripts/issue/defect-report-cli.ts +128 -0
- package/scripts/issue/defect-report-format.ts +56 -0
- package/scripts/issue/defect-report-main.ts +11 -0
- package/scripts/issue/defect-report.ts +160 -0
- package/scripts/issue/expected-effect-lint.ts +60 -0
- package/scripts/issue/issue-already-done-cli.ts +62 -0
- package/scripts/issue/issue-body-or-comment.ts +40 -0
- package/scripts/issue/issue-cite-cli.ts +33 -22
- package/scripts/issue/issue-cite-main.ts +12 -0
- package/scripts/issue/issue-classification.ts +13 -8
- package/scripts/issue/issue-comment-cli.ts +10 -24
- package/scripts/issue/issue-comment-main.ts +12 -0
- package/scripts/issue/issue-evidence-exit.ts +100 -0
- package/scripts/issue/issue-file-cli.ts +29 -7
- package/scripts/issue/issue-file.ts +19 -19
- package/scripts/issue/issue-fold-cli.ts +2 -11
- package/scripts/issue/issue-fold-main.ts +12 -0
- package/scripts/issue/issue-labels.ts +81 -90
- package/scripts/issue/issue-lint-cli.ts +7 -13
- package/scripts/issue/issue-lint-main.ts +12 -0
- package/scripts/issue/issue-measured-cli.ts +56 -0
- package/scripts/issue/issue-merged.ts +19 -2
- package/scripts/issue/issue-not-before-label.ts +135 -0
- package/scripts/issue/issue-not-before.ts +111 -0
- package/scripts/issue/issue-number-shape.ts +15 -1
- package/scripts/issue/issue-park.ts +28 -0
- package/scripts/issue/issue-plan-cli.ts +151 -0
- package/scripts/issue/issue-priority.ts +151 -0
- package/scripts/issue/issue-rank.ts +7 -1
- package/scripts/issue/issue-read-cli.ts +3 -10
- package/scripts/issue/issue-read-main.ts +12 -0
- package/scripts/issue/issue-read.ts +29 -5
- package/scripts/issue/issue-release-cli.ts +0 -10
- package/scripts/issue/issue-release-main.ts +13 -0
- package/scripts/issue/issue-release.ts +7 -12
- package/scripts/issue/issue-sample-gate.ts +192 -0
- package/scripts/issue/issue-sample-source.ts +76 -0
- package/scripts/issue/issue-scout-cli.ts +19 -25
- package/scripts/issue/issue-scout-main.ts +14 -0
- package/scripts/issue/issue-state-cli.ts +0 -10
- package/scripts/issue/issue-state-main.ts +12 -0
- package/scripts/issue/issue-watch-diff.ts +56 -15
- package/scripts/issue/issue-watch.ts +2 -1
- package/scripts/issue/issue-wip.ts +2 -7
- package/scripts/issue/markdown-section.ts +19 -5
- package/scripts/issue/measure-rerun-cli.ts +13 -8
- package/scripts/issue/plan-consumers-cli.ts +39 -0
- package/scripts/issue/plan-consumers-main.ts +11 -0
- package/scripts/issue/plan-consumers-section.ts +55 -0
- package/scripts/issue/plan-consumers.ts +127 -0
- package/scripts/josh/agent-session-environment.ts +1 -1
- package/scripts/josh/command-usage.ts +82 -0
- package/scripts/josh/file-map-stamp.ts +49 -16
- package/scripts/josh/hook-decision.ts +32 -20
- package/scripts/josh/josh-command-map.ts +6 -1
- package/scripts/josh/josh-command-types.ts +65 -13
- package/scripts/josh/josh-commands-agent-hooks.ts +83 -0
- package/scripts/josh/josh-commands-ai.ts +169 -157
- package/scripts/josh/josh-commands-backlog.ts +82 -16
- package/scripts/josh/josh-commands-clone.ts +1 -0
- package/scripts/josh/josh-commands-development.ts +111 -71
- package/scripts/josh/josh-commands-document.ts +43 -1
- package/scripts/josh/josh-commands-epic.ts +171 -0
- package/scripts/josh/josh-commands-hooks.ts +31 -2
- package/scripts/josh/josh-commands-issue-write.ts +181 -0
- package/scripts/josh/josh-commands-issue.ts +124 -24
- package/scripts/josh/josh-commands-lane.ts +112 -2
- package/scripts/josh/josh-commands-lint.ts +19 -8
- package/scripts/josh/josh-commands-maintenance.ts +112 -4
- package/scripts/josh/josh-commands-pause.ts +29 -0
- package/scripts/josh/josh-commands-progress.ts +87 -0
- package/scripts/josh/josh-commands-project.ts +138 -9
- package/scripts/josh/josh-commands-review.ts +124 -0
- package/scripts/josh/josh-commands-run.ts +211 -23
- package/scripts/josh/josh-commands-ship.ts +169 -0
- package/scripts/josh/josh-commands-split.ts +9 -0
- package/scripts/josh/josh-commands-versioning.ts +49 -2
- package/scripts/josh/josh-commands-workflow.ts +149 -6
- package/scripts/josh/josh-logic.ts +11 -27
- package/scripts/josh/josh.ts +14 -5
- package/scripts/josh/package-directory.ts +18 -0
- package/scripts/josh/process-identity.ts +13 -4
- package/scripts/josh/session-language-cli.ts +4 -8
- package/scripts/josh/session-language-main.ts +13 -0
- package/scripts/josh/session-language.ts +6 -1
- package/scripts/josh/shared-cache.ts +90 -0
- package/scripts/josh/stamp-file.ts +9 -15
- package/scripts/lane/lane-await.ts +51 -12
- package/scripts/lane/lane-cache.ts +5 -30
- package/scripts/lane/lane-capacity.ts +19 -22
- package/scripts/lane/lane-check-stats.ts +97 -0
- package/scripts/lane/lane-child-invocation.ts +43 -4
- package/scripts/lane/lane-cli.ts +15 -5
- package/scripts/lane/lane-close.ts +86 -18
- package/scripts/lane/lane-core-wait-stats.ts +66 -0
- package/scripts/lane/lane-dispatch.ts +27 -6
- package/scripts/lane/lane-gap-stats.ts +156 -0
- package/scripts/lane/lane-guard-policy.ts +2 -2
- package/scripts/lane/lane-handoff.ts +76 -1
- package/scripts/lane/lane-held-stats.ts +129 -0
- package/scripts/lane/lane-install.ts +16 -15
- package/scripts/lane/lane-launch-cli.ts +0 -9
- package/scripts/lane/lane-launch-main.ts +12 -0
- package/scripts/lane/lane-ledger-schema.ts +266 -0
- package/scripts/lane/lane-ledger.ts +108 -97
- package/scripts/lane/lane-limit-cli.ts +19 -9
- package/scripts/lane/lane-measure-cli.ts +58 -10
- package/scripts/lane/lane-open.ts +9 -1
- package/scripts/lane/lane-parked.ts +3 -3
- package/scripts/lane/lane-pause-cli.ts +130 -0
- package/scripts/lane/lane-pause.ts +158 -0
- package/scripts/lane/lane-preserve.ts +29 -1
- package/scripts/lane/lane-process-table.ts +166 -0
- package/scripts/lane/lane-reap-settle.ts +124 -0
- package/scripts/lane/lane-reap.ts +50 -15
- package/scripts/lane/lane-registry.ts +33 -10
- package/scripts/lane/lane-residents.ts +162 -0
- package/scripts/lane/lane-restart.ts +26 -27
- package/scripts/lane/lane-round-two-stats.ts +49 -0
- package/scripts/lane/lane-sampler.ts +4 -0
- package/scripts/lane/lane-session-action.ts +160 -0
- package/scripts/lane/lane-session-broker.ts +134 -134
- package/scripts/lane/lane-snapshot-trace.ts +84 -0
- package/scripts/lane/lane-spans.ts +51 -0
- package/scripts/lane/lane-spent.ts +6 -3
- package/scripts/lane/lane-stage-stats.ts +7 -2
- package/scripts/lane/lane-state.ts +302 -0
- package/scripts/lane/lane-stats.ts +58 -4
- package/scripts/lane/lane-stop-stats.ts +113 -37
- package/scripts/lane/lane-test-related-stats.ts +127 -0
- package/scripts/lane/lane-transcript-calls.ts +145 -0
- package/scripts/lane/lane-transcript-stats.ts +168 -0
- package/scripts/lane/lane-vacant.ts +13 -3
- package/scripts/lane/lane-withdraw-cli.ts +72 -0
- package/scripts/lane/lane-withdraw.ts +183 -0
- package/scripts/lane/process-directories.ts +70 -0
- package/scripts/lane/process-lane-marks.ts +94 -0
- package/scripts/lib/atomic-write.ts +62 -0
- package/scripts/lib/buffered-process.ts +12 -5
- package/scripts/lib/cli-flags.ts +53 -0
- package/scripts/lib/figure-format.ts +63 -0
- package/scripts/lib/json-value.ts +9 -1
- package/scripts/lib/package-manifest.ts +35 -0
- package/scripts/lib/read-file.ts +3 -1
- package/scripts/lib/stamped-memo.ts +63 -0
- package/scripts/lib/stdout-on-stderr.ts +24 -0
- package/scripts/lib/timeouts.ts +9 -0
- package/scripts/lib/transcript-record.ts +91 -0
- package/scripts/lines/effective-limit.ts +1 -1
- package/scripts/lint/eslint-cache-dependencies.ts +145 -0
- package/scripts/lint/eslint-daemon.ts +265 -0
- package/scripts/lint/format.ts +14 -5
- package/scripts/lint/import-graph.ts +279 -0
- package/scripts/lint/lint-gate-scope.ts +102 -0
- package/scripts/lint/lint-parallel-main.ts +19 -0
- package/scripts/lint/lint-parallel.ts +72 -33
- package/scripts/lint/lint-related-scope.ts +33 -24
- package/scripts/lint/lint-related.ts +38 -6
- package/scripts/notify/confirmation-options.ts +1 -2
- package/scripts/notify/telegram-notify.ts +20 -20
- package/scripts/notify/telegram-test-logic.ts +0 -1
- package/scripts/notify/telegram-test-main.ts +8 -0
- package/scripts/notify/telegram-test.ts +12 -11
- package/scripts/observations/observation-ledger.ts +13 -0
- package/scripts/observations/observations-flush-landing.ts +5 -3
- package/scripts/observations/observations-flush.ts +6 -1
- package/scripts/overrides/overrides-check.ts +2 -5
- package/scripts/overrides/overrides-files.ts +2 -1
- package/scripts/overrides/overrides-logic.ts +3 -6
- package/scripts/package/verify-optional-eslint-install.ts +8 -6
- package/scripts/propagate/propagate-publish.ts +2 -7
- package/scripts/propagate/propagate-targets.ts +4 -12
- package/scripts/refactor/import-graph.ts +9 -7
- package/scripts/release/github-release-runs.ts +17 -6
- package/scripts/release/release-approval-prune.ts +18 -0
- package/scripts/release/release-history.ts +1 -3
- package/scripts/release/release-progress.ts +42 -22
- package/scripts/release/release-publish-run.ts +39 -0
- package/scripts/release/release-publish.ts +6 -6
- package/scripts/release/release-scope-cli.ts +0 -10
- package/scripts/release/release-scope-main.ts +12 -0
- package/scripts/repo/repo-setting.ts +3 -6
- package/scripts/repo/required-checks-logic.ts +6 -15
- package/scripts/report/report-format-reference.ts +4 -0
- package/scripts/report/report-labels.ts +155 -0
- package/scripts/report/report-lint-cli.ts +3 -0
- package/scripts/report/report-lint.ts +85 -110
- package/scripts/report/report-template-cli.ts +59 -0
- package/scripts/report/report-template.ts +112 -0
- package/scripts/review/acceptance-map-check.ts +61 -0
- package/scripts/review/acceptance-map.ts +206 -0
- package/scripts/review/removed-tests-check.ts +86 -0
- package/scripts/review/removed-tests.ts +149 -0
- package/scripts/review/review-brief-cli.ts +82 -16
- package/scripts/review/review-brief-main.ts +12 -0
- package/scripts/review/review-brief.ts +31 -3
- package/scripts/review/review-code-tree.ts +10 -6
- package/scripts/review/review-comment-round.ts +26 -8
- package/scripts/review/review-finding-ledger.ts +30 -15
- package/scripts/review/review-interaction.ts +94 -0
- package/scripts/review/review-readers-scan.ts +163 -0
- package/scripts/review/review-record-cli.ts +69 -30
- package/scripts/review/review-record-main.ts +12 -0
- package/scripts/review/review-round-one-blobs.ts +221 -0
- package/scripts/review/review-round2-cli.ts +49 -12
- package/scripts/review/review-round2.ts +80 -12
- package/scripts/review/review-stamps.ts +19 -1
- package/scripts/review/review-stop-log.ts +96 -0
- package/scripts/review/review-stops-cli.ts +85 -0
- package/scripts/review/review-tree.ts +6 -17
- package/scripts/review/review-untouched-readers.ts +146 -0
- package/scripts/review/test-titles.ts +118 -0
- package/scripts/rules/agent-model.ts +67 -0
- package/scripts/rules/bash-triggers.ts +46 -3
- package/scripts/rules/decision-oracle-batch.ts +9 -1
- package/scripts/rules/decision-oracle.ts +2 -2
- package/scripts/rules/delivered-rules.ts +90 -3
- package/scripts/rules/destructive-command.ts +8 -1
- package/scripts/rules/direct-filing.ts +10 -2
- package/scripts/rules/direct-issue-comment.ts +117 -0
- package/scripts/rules/direct-pr-create.ts +69 -3
- package/scripts/rules/early-heartbeat.ts +2 -1
- package/scripts/rules/file-body.ts +7 -0
- package/scripts/rules/filing-cap.ts +8 -0
- package/scripts/rules/firing-point.ts +6 -5
- package/scripts/rules/git-argv.ts +72 -14
- package/scripts/rules/git-force.ts +12 -2
- package/scripts/rules/guard-remedy.ts +121 -0
- package/scripts/rules/implementation-cut-verdict.ts +1 -1
- package/scripts/rules/implementation-cut.ts +11 -3
- package/scripts/rules/index-guard.ts +8 -1
- package/scripts/rules/issue-comments.ts +76 -7
- package/scripts/rules/josh-git-bare.ts +7 -0
- package/scripts/rules/lane-background.ts +67 -25
- package/scripts/rules/lane-carry-conflict.ts +6 -0
- package/scripts/rules/lane-direct-tool.ts +74 -0
- package/scripts/rules/lane-interactive-ask.ts +9 -2
- package/scripts/rules/lane-park.ts +45 -23
- package/scripts/rules/lane-split-park.ts +10 -2
- package/scripts/rules/lane-switch-main.ts +7 -0
- package/scripts/rules/last-prompt.ts +50 -5
- package/scripts/rules/oracle-consulted.ts +10 -0
- package/scripts/rules/oracle-firing.ts +1 -0
- package/scripts/rules/oracle-list-cli.ts +7 -0
- package/scripts/rules/permission-guards.ts +3 -0
- package/scripts/rules/piped-verification.ts +4 -2
- package/scripts/rules/poll-loop.ts +7 -0
- package/scripts/rules/pr-merge.ts +123 -0
- package/scripts/rules/protected-files.ts +32 -5
- package/scripts/rules/raw-field-body.ts +6 -0
- package/scripts/rules/rule-body-guard.ts +8 -0
- package/scripts/rules/rule-list.ts +12 -28
- package/scripts/rules/rule-rewrite.ts +114 -0
- package/scripts/rules/rule-value-cache.ts +4 -9
- package/scripts/rules/rule-value-cli.ts +51 -32
- package/scripts/rules/rule-value.ts +8 -2
- package/scripts/rules/shell-segments.ts +50 -0
- package/scripts/rules/stop-decision.ts +77 -0
- package/scripts/rules/stop-rule-rows.ts +64 -0
- package/scripts/rules/stop-rules.ts +150 -51
- package/scripts/rules/tail-commands.ts +15 -1
- package/scripts/rules/test-declared-commit.ts +11 -1
- package/scripts/rules/third-party-write.ts +7 -0
- package/scripts/rules/timed-rerun.ts +69 -0
- package/scripts/rules/worktree-guard.ts +13 -3
- package/scripts/run/board/run-board-app-name.ts +23 -0
- package/scripts/run/board/run-board-cli.ts +65 -30
- package/scripts/run/board/run-board-closed.ts +8 -2
- package/scripts/run/board/run-board-earlier.ts +94 -0
- package/scripts/run/board/run-board-ending-reason.ts +67 -0
- package/scripts/run/board/run-board-estimate-schedule.ts +103 -0
- package/scripts/run/board/run-board-estimate.ts +98 -0
- package/scripts/run/board/run-board-fit.ts +153 -36
- package/scripts/run/board/run-board-fold.ts +123 -0
- package/scripts/run/board/run-board-fresh.ts +2 -2
- package/scripts/run/board/run-board-gather-live.ts +29 -0
- package/scripts/run/board/run-board-gather-thread.ts +189 -0
- package/scripts/run/board/run-board-gather-worker.ts +29 -0
- package/scripts/run/board/run-board-gather.ts +187 -0
- package/scripts/run/board/run-board-github.ts +119 -31
- package/scripts/run/board/run-board-header.ts +86 -21
- package/scripts/run/board/run-board-keys.ts +58 -0
- package/scripts/run/board/run-board-kind.ts +20 -6
- package/scripts/run/board/run-board-labels.ts +118 -71
- package/scripts/run/board/run-board-lane-state.ts +109 -0
- package/scripts/run/board/run-board-lane-time.ts +122 -0
- package/scripts/run/board/run-board-layout.ts +240 -61
- package/scripts/run/board/run-board-length.ts +52 -0
- package/scripts/run/board/run-board-machine.ts +8 -4
- package/scripts/run/board/run-board-main.ts +12 -0
- package/scripts/run/board/run-board-notes.ts +52 -31
- package/scripts/run/board/run-board-now.ts +1 -1
- package/scripts/run/board/run-board-operation.ts +15 -33
- package/scripts/run/board/run-board-phase.ts +1 -1
- package/scripts/run/board/run-board-plan-shared.ts +115 -0
- package/scripts/run/board/run-board-plan.ts +55 -3
- package/scripts/run/board/run-board-planning.ts +45 -0
- package/scripts/run/board/run-board-priority.ts +44 -0
- package/scripts/run/board/run-board-process-groups.ts +195 -0
- package/scripts/run/board/run-board-read.ts +153 -13
- package/scripts/run/board/run-board-reason.ts +238 -45
- package/scripts/run/board/run-board-released.ts +35 -0
- package/scripts/run/board/run-board-render-checks.ts +39 -5
- package/scripts/run/board/run-board-render-condition.ts +96 -0
- package/scripts/run/board/run-board-render-drawn.ts +67 -0
- package/scripts/run/board/run-board-render-foot.ts +59 -0
- package/scripts/run/board/run-board-render-icon.ts +35 -0
- package/scripts/run/board/run-board-render-lanes.ts +145 -0
- package/scripts/run/board/run-board-render-lead.ts +80 -0
- package/scripts/run/board/run-board-render-legend.ts +117 -47
- package/scripts/run/board/run-board-render-notes.ts +156 -29
- package/scripts/run/board/run-board-render-processes.ts +196 -0
- package/scripts/run/board/run-board-render-section.ts +119 -0
- package/scripts/run/board/run-board-render-slot.ts +3 -36
- package/scripts/run/board/run-board-render-tail.ts +115 -48
- package/scripts/run/board/run-board-render-time.ts +56 -0
- package/scripts/run/board/run-board-render-title.ts +117 -24
- package/scripts/run/board/run-board-render-waits.ts +125 -0
- package/scripts/run/board/run-board-render.ts +206 -259
- package/scripts/run/board/run-board-roots.ts +54 -0
- package/scripts/run/board/run-board-row-yield.ts +10 -4
- package/scripts/run/board/run-board-setup.ts +1 -12
- package/scripts/run/board/run-board-snapshot.ts +111 -0
- package/scripts/run/board/run-board-spin.ts +2 -2
- package/scripts/run/board/run-board-state.ts +23 -29
- package/scripts/run/board/run-board-status.ts +206 -79
- package/scripts/run/board/run-board-thanks-read.ts +2 -2
- package/scripts/run/board/run-board-tick.ts +123 -104
- package/scripts/run/board/run-board-usage-board.ts +78 -0
- package/scripts/run/board/run-board-usage-lanes.ts +113 -0
- package/scripts/run/board/run-board-usage-listing.ts +93 -0
- package/scripts/run/board/run-board-usage-read.ts +120 -150
- package/scripts/run/board/run-board-usage-rusage.ts +19 -7
- package/scripts/run/board/run-board-usage-text.ts +139 -51
- package/scripts/run/board/run-board-usage-top.ts +102 -0
- package/scripts/run/board/run-board-usage.ts +89 -72
- package/scripts/run/board/run-board-usual.ts +20 -9
- package/scripts/run/carry/run-carry-args.ts +4 -7
- package/scripts/run/carry/run-carry-conversation.ts +1 -1
- package/scripts/run/carry/run-carry.ts +9 -4
- package/scripts/run/cut/run-cut-cli.ts +3 -2
- package/scripts/run/cut/run-cut-handoff.ts +2 -2
- package/scripts/run/cut/run-cut-report.ts +16 -0
- package/scripts/run/detached-launch.ts +23 -4
- package/scripts/run/entry/run-entry-cli.ts +8 -1
- package/scripts/run/event/run-event-cli.ts +1 -5
- package/scripts/run/event/run-event-filed.ts +12 -6
- package/scripts/run/event/run-event-follow.ts +2 -3
- package/scripts/run/event/run-event-render.ts +7 -10
- package/scripts/run/event/run-event-scope.ts +20 -2
- package/scripts/run/event/run-event-stream-emit.ts +78 -11
- package/scripts/run/event/run-event-stream.ts +37 -7
- package/scripts/run/hold/run-hold-adopt.ts +65 -0
- package/scripts/run/hold/run-hold-cli.ts +93 -22
- package/scripts/run/hold/run-hold-main.ts +12 -0
- package/scripts/run/hold/run-hold-member.ts +37 -0
- package/scripts/run/hold/run-hold-session.ts +46 -0
- package/scripts/run/hold/run-hold.ts +7 -1
- package/scripts/run/hold/run-stop-notify.ts +183 -0
- package/scripts/run/launch-priority.ts +32 -0
- package/scripts/run/merge/run-merge-auth.ts +31 -0
- package/scripts/run/merge/run-merge-cli.ts +72 -107
- package/scripts/run/merge/run-merge-close.ts +74 -0
- package/scripts/run/merge/run-merge-collect.ts +6 -13
- package/scripts/run/merge/run-merge-driver.ts +71 -0
- package/scripts/run/merge/run-merge-main.ts +12 -0
- package/scripts/run/merge/run-merge-outcome.ts +23 -0
- package/scripts/run/merge/run-merge-restart.ts +39 -0
- package/scripts/run/merge/run-merge-ship.ts +20 -4
- package/scripts/run/merge/run-merge-signals.ts +123 -0
- package/scripts/run/merge/run-merge-steps.ts +128 -83
- package/scripts/run/merge/run-merge.ts +53 -40
- package/scripts/run/park/run-park-cli.ts +91 -0
- package/scripts/run/park/run-park.ts +88 -0
- package/scripts/run/park/run-stalled.ts +68 -0
- package/scripts/run/pause/run-pause-cli.ts +73 -0
- package/scripts/run/pause/run-pause.ts +251 -0
- package/scripts/run/progress/run-progress-cli.ts +4 -12
- package/scripts/run/progress/run-progress-clock.ts +1 -1
- package/scripts/run/progress/run-progress-config.ts +6 -14
- package/scripts/run/progress/run-progress-main.ts +12 -0
- package/scripts/run/progress/run-progress.ts +1 -4
- package/scripts/run/review/run-review.ts +2 -1
- package/scripts/run/run-ending.ts +1 -0
- package/scripts/run/run-invocation.ts +5 -6
- package/scripts/run/run-liveness-cli.ts +6 -8
- package/scripts/run/run-liveness.ts +61 -30
- package/scripts/run/run-next.ts +1 -1
- package/scripts/run/run-parent-cut-hook.ts +2 -2
- package/scripts/run/run-poll-hook.ts +157 -0
- package/scripts/run/run-preflight.ts +18 -3
- package/scripts/run/run-prep-cli.ts +1 -10
- package/scripts/run/run-prep-locate.ts +7 -50
- package/scripts/run/run-prep-main.ts +12 -0
- package/scripts/run/run-prep.ts +6 -0
- package/scripts/run/run-report-cli.ts +101 -13
- package/scripts/run/run-report-handoff.ts +114 -0
- package/scripts/run/run-step-cli.ts +22 -15
- package/scripts/run/run-step-section.ts +85 -0
- package/scripts/run/run-step.ts +1 -1
- package/scripts/run/run-stranded-detect.ts +13 -0
- package/scripts/run/run-watcher-guard-cli.ts +1 -1
- package/scripts/run/run-watcher-guard.ts +1 -1
- package/scripts/run/ship/run-ship-args.ts +121 -0
- package/scripts/run/ship/run-ship-body-draft.ts +110 -0
- package/scripts/run/ship/run-ship-cli.ts +67 -151
- package/scripts/run/ship/run-ship-detach.ts +27 -7
- package/scripts/run/ship/run-ship-infra-retry.ts +59 -0
- package/scripts/run/ship/run-ship-next.ts +27 -3
- package/scripts/run/ship/run-ship-overlap.ts +232 -0
- package/scripts/run/ship/run-ship-place.ts +96 -0
- package/scripts/run/ship/run-ship-pre-detach-timed.ts +43 -0
- package/scripts/run/ship/run-ship-pre-detach.ts +102 -27
- package/scripts/run/ship/run-ship-preflight.ts +161 -30
- package/scripts/run/ship/run-ship-probe.ts +11 -3
- package/scripts/run/ship/run-ship-relaunch-cap.ts +70 -0
- package/scripts/run/ship/run-ship-removed-rows.ts +61 -0
- package/scripts/run/ship/run-ship-return.ts +123 -15
- package/scripts/run/ship/run-ship-review-steps.ts +105 -149
- package/scripts/run/ship/run-ship-review.ts +73 -6
- package/scripts/run/ship/run-ship-reviewer.ts +207 -0
- package/scripts/run/ship/run-ship-stage.ts +55 -6
- package/scripts/run/ship/run-ship-steps.ts +46 -15
- package/scripts/run/ship/run-ship-stop-cause.ts +135 -0
- package/scripts/run/ship/run-ship-stop-context.ts +206 -0
- package/scripts/run/ship/run-ship-stop-text.ts +11 -6
- package/scripts/run/ship/run-ship-sync.ts +57 -12
- package/scripts/run/ship/run-ship.ts +30 -2
- package/scripts/run/tidy/run-tidy-cli.ts +0 -4
- package/scripts/run/tidy/run-tidy-lanes.ts +3 -0
- package/scripts/run/tidy/run-tidy-main.ts +8 -0
- package/scripts/run/wake/run-wake-cli.ts +119 -100
- package/scripts/run/wake/run-wake-code.ts +83 -0
- package/scripts/run/wake/run-wake-driver.ts +19 -8
- package/scripts/run/wake/run-wake-loop.ts +34 -3
- package/scripts/run/wake/run-wake-main.ts +13 -0
- package/scripts/run/wake/run-wake-ports.ts +90 -0
- package/scripts/run/wake/run-wake-takeover.ts +66 -0
- package/scripts/run/wake/run-wake.ts +2 -1
- package/scripts/safe-chain/pack-hook.ts +2 -2
- package/scripts/safe-chain/preinstall-command.ts +2 -1
- package/scripts/safe-chain/project-config.ts +3 -9
- package/scripts/security/security-audit-main.ts +8 -0
- package/scripts/security/security-audit-provision-logic.ts +0 -11
- package/scripts/security/security-audit-provision-main.ts +12 -0
- package/scripts/security/security-audit-provision.ts +11 -26
- package/scripts/security/security-audit.ts +6 -7
- package/scripts/self-sync-guard/self-sync-guard-logic.ts +6 -13
- package/scripts/split/split-assess-cli.ts +2 -2
- package/scripts/split/split-assess.ts +15 -0
- package/scripts/split/split-measure.ts +65 -0
- package/scripts/sync/claude-settings-merge.ts +8 -15
- package/scripts/sync/directory-copy-guard.ts +4 -9
- package/scripts/sync/file-content.ts +78 -8
- package/scripts/sync/sync-ai-files.ts +3 -5
- package/scripts/sync/sync-configs.ts +11 -23
- package/scripts/sync/sync-hook-safety.ts +4 -10
- package/scripts/sync/sync-main.ts +11 -0
- package/scripts/sync/sync.ts +25 -37
- package/scripts/test/test-declared-changed.ts +2 -2
- package/scripts/test/test-declared.ts +1 -1
- package/scripts/test/test-e2e-guard.ts +55 -6
- package/scripts/test/test-e2e-stamp.ts +38 -0
- package/scripts/test/test-pinned-logic.ts +145 -0
- package/scripts/test/test-pinned-main.ts +78 -0
- package/scripts/test/test-pinned.ts +100 -0
- package/scripts/test/test-read-map.ts +264 -0
- package/scripts/test/test-read-recording.ts +91 -0
- package/scripts/test/test-read-trace.ts +148 -0
- package/scripts/test/test-red-main.ts +12 -0
- package/scripts/test/test-red.ts +12 -30
- package/scripts/test/test-related-main.ts +18 -0
- package/scripts/test/test-related-record.ts +119 -0
- package/scripts/test/test-related-scope.ts +229 -43
- package/scripts/test/test-related.ts +300 -22
- package/scripts/test/test-unit-guard-main.ts +15 -0
- package/scripts/test/test-unit-guard.ts +54 -21
- package/scripts/test/unit-count-file.ts +37 -0
- package/scripts/test/unit-run-marker.ts +162 -0
- package/scripts/test/unit-setup-files.ts +51 -0
- package/scripts/test/unit-worker-share.ts +71 -137
- package/scripts/test/whole-suite-files.ts +63 -0
- package/scripts/time-runtime/time-background.ts +20 -2
- package/scripts/time-runtime/time-bundles.ts +4 -3
- package/scripts/time-runtime/time-density-hook.ts +8 -6
- package/scripts/time-runtime/time-followup-stage.ts +1 -3
- package/scripts/time-runtime/time-format.ts +5 -28
- package/scripts/time-runtime/time-markers.ts +10 -1
- package/scripts/time-runtime/time-shell.ts +126 -14
- package/scripts/time-runtime/time-spans.ts +1 -0
- package/scripts/time-runtime/time-tool-call.ts +7 -0
- package/scripts/time-runtime/time-transcript-line.ts +49 -62
- package/scripts/uninstall/uninstall.ts +1 -1
- package/scripts/version/bump-version-main.ts +12 -0
- package/scripts/version/bump-version.ts +25 -25
- package/scripts/version/effective-upstream.ts +6 -12
- package/scripts/version/latest-corepack.ts +17 -32
- package/scripts/version/latest-if-required-cli.ts +93 -0
- package/scripts/version/latest-lane-guard-main.ts +8 -0
- package/scripts/version/latest-lane-guard.ts +0 -4
- package/scripts/version/latest-scope-cli.ts +0 -9
- package/scripts/version/latest-scope-main.ts +12 -0
- package/scripts/version/latest-update.ts +5 -5
- package/scripts/version/npm-registry.ts +44 -6
- package/scripts/version/publishable-range-check.ts +5 -16
- package/scripts/version/release-age.ts +1 -1
- package/scripts/version/release-hold.ts +1 -1
- package/scripts/version/release-window.ts +38 -0
- package/scripts/version/running-binary.ts +1 -1
- package/scripts/version/safe-chain-version-update.ts +3 -8
- package/scripts/version/version-targets.ts +6 -28
- package/templates/dependabot.yml +29 -0
- package/templates/gitignore +10 -3
- package/templates/pnpm-workspace.basic.yaml +1 -1
- package/templates/sonar-project.properties +3 -2
- package/templates/workflows/ci.yml +12 -4
- package/templates/workflows/github-release.yml +4 -0
- package/tsconfig.sonar.json +1 -1
- package/.ncurc.json +0 -3
- package/dist/hooks/batch-guard.js +0 -29
- package/dist/hooks/chunk-43ZHT22P.js +0 -3495
- package/dist/hooks/chunk-CDY4NFQG.js +0 -15
- package/dist/hooks/chunk-EUMACUK2.js +0 -2038
- package/dist/hooks/chunk-H5HVWYXK.js +0 -359
- package/dist/hooks/chunk-IIGFYXKC.js +0 -7104
- package/dist/hooks/chunk-IX6TTTI6.js +0 -95
- package/dist/hooks/chunk-J47HU5H5.js +0 -237
- package/dist/hooks/chunk-K4EOONYM.js +0 -45
- package/dist/hooks/chunk-K4LMBQC2.js +0 -68
- package/dist/hooks/chunk-SHGPANFB.js +0 -56
- package/dist/hooks/chunk-YHBZAJSV.js +0 -79
- package/dist/hooks/chunk-YYPI7SJZ.js +0 -131
- package/dist/hooks/duplicate-read-guard.js +0 -30
- package/dist/hooks/investigation-guard.js +0 -32
- package/scripts/backlog/backlog-stalled-cli.ts +0 -30
- package/scripts/cost-runtime/cost-format.ts +0 -29
- package/scripts/init/basic-path-migration.ts +0 -24
- package/scripts/issue/issue-backlinks-cli.ts +0 -93
- package/scripts/josh/josh-commands-guard.ts +0 -38
- package/scripts/lint/cross-file-recheck.ts +0 -155
- package/scripts/registry-migration/migrate-logic.ts +0 -237
- package/scripts/registry-migration/migrate.ts +0 -292
- package/scripts/registry-migration/user-npmrc.ts +0 -15
- package/scripts/rules/rule-guard.ts +0 -23
- package/scripts/rules/rule-registry-rows.ts +0 -282
- package/scripts/rules/rule-registry.ts +0 -109
- package/scripts/run/run-stranded-cli.ts +0 -27
|
@@ -1,21 +1,11 @@
|
|
|
1
1
|
# `backlogrun` — lanes and concurrency
|
|
2
2
|
|
|
3
|
-
Point-of-use, read one section at a time from `backlogrun.md` → "The
|
|
4
|
-
|
|
5
|
-
- `docs/maintainers/backlogrun-lanes-rationale.md` → "Why the lane ceiling is shaped the way it is"
|
|
6
|
-
- `docs/maintainers/backlogrun-lanes-rationale.md` → "Why CI concurrency is capped by the lane limit"
|
|
7
|
-
- `docs/maintainers/backlogrun-lanes-rationale.md` → "Why a lane's review needs a brief and an attestation"
|
|
8
|
-
- `docs/maintainers/backlogrun-lanes-rationale.md` → "Why the lane branch is `<N>-lane` and never switched"
|
|
9
|
-
- `docs/maintainers/backlogrun-lanes-rationale.md` → "Why lanes cost as well as buy throughput"
|
|
10
|
-
- `docs/maintainers/backlogrun-lanes-rationale.md` → "Why `lane:launch` folds the lane steps into one"
|
|
11
|
-
- `docs/maintainers/backlogrun-lanes-rationale.md` → "Why a committed child's lane is kept"
|
|
12
|
-
- `docs/maintainers/backlogrun-lanes-rationale.md` → "Where each rule came from"
|
|
3
|
+
Point-of-use, read one section at a time from `backlogrun.md` → "The manifest — the ordered flow".
|
|
13
4
|
|
|
14
5
|
## Concurrency: as many children per repository as it has free lanes
|
|
15
6
|
|
|
16
|
-
**One session per repository**, each running only its own repository's children. The lane ceiling
|
|
17
|
-
|
|
18
|
-
crosses a repository is `.claude/skills/epic-commands/SKILL.md` → "Epics that span repositories".
|
|
7
|
+
**One session per repository**, each running only its own repository's children. The lane ceiling and a
|
|
8
|
+
dependency that crosses a repository are `docs/josh-commands-backlog.md` → "`josh epic:next`".
|
|
19
9
|
|
|
20
10
|
## A solo run
|
|
21
11
|
|
|
@@ -25,11 +15,15 @@ merged. **Decide it from three conditions that must all hold, never from how ser
|
|
|
25
15
|
it a defect (not an improvement, refactor, removal or feature)? Is it in kit's own verification gate
|
|
26
16
|
(lint / type check / spell check / unit tests), the code review, the pre-push hook, or the merge
|
|
27
17
|
checks — not a consumer repository's CI or template? Does it, on `main` now, make unrelated PRs
|
|
28
|
-
answer wrongly (a false green or a false red)
|
|
29
|
-
missing, and it carries `run:lane`. `backlog:next` and `epic:next --lanes` answer
|
|
30
|
-
issue with neither, so a filed issue carries one of the two from its filing. **It stops
|
|
31
|
-
lanes for one reason only: a batch run on broken verification leaves nobody's result
|
|
32
|
-
|
|
18
|
+
answer wrongly (a false green or a false red) **on every run**? All three, and the issue carries
|
|
19
|
+
`run:solo`; any one missing, and it carries `run:lane`. `backlog:next` and `epic:next --lanes` answer
|
|
20
|
+
`triage` for an issue with neither, so a filed issue carries one of the two from its filing. **It stops
|
|
21
|
+
the other lanes for one reason only: a batch run on broken verification leaves nobody's result
|
|
22
|
+
trustworthy.**
|
|
23
|
+
|
|
24
|
+
**A wrong answer that only comes some of the time — a flaky test, a timeout under load — is not a solo
|
|
25
|
+
run.** It carries `run:lane` and `priority:critical`, so it leads the next offer while the other lanes
|
|
26
|
+
keep running: a flake costs another lane one rerun, less than every lane stopped until it merges.
|
|
33
27
|
|
|
34
28
|
## Lanes — running more than one child at a time
|
|
35
29
|
|
|
@@ -41,7 +35,7 @@ stay serial.**
|
|
|
41
35
|
|
|
42
36
|
**A lane child may cut its own turn before the gate** — `pre-gate-cut.md`, the single source. The
|
|
43
37
|
child is told apart from a person, and handed its resume stage, by `JOSH_LANE_CHILD`
|
|
44
|
-
(`
|
|
38
|
+
(`docs/josh-commands-run.md` → "`josh run:cut`"; `pre-gate-cut.md` → "The stage is passed to the resumed child").
|
|
45
39
|
|
|
46
40
|
**A lane's review does not inherit the lane, and `pnpm josh review:brief` is what closes that**: it
|
|
47
41
|
prints the lane's root, branch and HEAD, targets written `git -C <root> …`, and a nonce the review
|
|
@@ -57,14 +51,14 @@ are not predicted").
|
|
|
57
51
|
|
|
58
52
|
### Once per repository, before the first lane opens
|
|
59
53
|
|
|
60
|
-
In the **primary checkout**, in order, never per lane: `pnpm josh ms`; `pnpm josh latest:
|
|
61
|
-
|
|
54
|
+
In the **primary checkout**, in order, never per lane: `pnpm josh ms`; `pnpm josh latest:if-required`
|
|
55
|
+
(`backlogrun-child.md` → "`josh latest` runs once per session, not once per
|
|
62
56
|
child"); `pnpm josh lane:prune`; `pnpm josh run:tidy`.
|
|
63
57
|
|
|
64
58
|
**The rewritten lock file reaches a pull request through the first lane.** Only if the update rewrote
|
|
65
|
-
anything: `
|
|
59
|
+
anything: `pnpm josh stash:push "backlogrun: josh latest before lanes"` in the primary checkout, and
|
|
66
60
|
record it on the first child's Issue. **The first lane's `pnpm josh lane:launch "$n" --stash
|
|
67
|
-
"backlogrun: josh latest before lanes"` pops it by message
|
|
61
|
+
"backlogrun: josh latest before lanes"` pops it by message.** **Under
|
|
68
62
|
`backlog:drive` the driver passes `--stash`, never you**; the push stays the parent's.
|
|
69
63
|
|
|
70
64
|
### Opening one lane and dispatching its child
|
|
@@ -77,7 +71,7 @@ pid=$(pnpm josh lane:launch "$n") || exit 1 # the child's pid on stdout, nothi
|
|
|
77
71
|
|
|
78
72
|
| It answers | What the run does |
|
|
79
73
|
| --- | --- |
|
|
80
|
-
| a pid | The child runs;
|
|
74
|
+
| a pid | The child runs; wait on it with `lane:await` |
|
|
81
75
|
| empty, non-zero, `full` | No free lane; wait for one |
|
|
82
76
|
| 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 |
|
|
83
77
|
| `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** |
|
|
@@ -96,14 +90,15 @@ Everything else is unchanged; `pnpm josh followup` releases the lane's hold at t
|
|
|
96
90
|
- **It records where the child writes** — `<temp>/josh-lane-dispatch-<N>.log`.
|
|
97
91
|
- **A refusal is an empty capture beside a non-zero exit**, with a `warning` Telegram. **Park that
|
|
98
92
|
child and name the log the message carries**; never re-dispatch into the same lane without reading it.
|
|
99
|
-
- **A child that started with nowhere to write exits zero and warns** — **
|
|
100
|
-
process trace alone**.
|
|
93
|
+
- **A child that started with nowhere to write exits zero and warns** — **wait on that lane with
|
|
94
|
+
`lane:await`, which reads the process trace alone**.
|
|
101
95
|
- **The child is started as `fullrun #<N>` with the lane as its working directory**; the typed
|
|
102
96
|
`backlogrun` covers it.
|
|
103
97
|
- **It passes `--permission-mode bypassPermissions`, never `--dangerously-skip-permissions`.**
|
|
104
98
|
`.claude/settings.json`'s `deny` list still refuses what it names; report what stopped, never loosen it.
|
|
105
99
|
|
|
106
|
-
**Start each child without blocking on it,
|
|
100
|
+
**Start each child without blocking on it, then wait on `backlog:drive` or `lane:await`**
|
|
101
|
+
(`scripts/run/run-poll-hook.ts`) — a silent one is
|
|
107
102
|
`backlogrun-recovery.md` → "A delegated unit that stopped without reporting", read in that child's lane.
|
|
108
103
|
|
|
109
104
|
**`pnpm josh ms` is the parent's now, not the child's** — run it in the primary checkout **before
|
|
@@ -122,7 +117,7 @@ read `backlogrun-recovery.md` → "Conflicts are not predicted" when `pnpm josh
|
|
|
122
117
|
| The child was **parked before its commit** | **Left open**, its uncommitted work in place, its directory and held seat recorded on the Issue | The shared stash stack is unsafe; `lane:close` is a **forced** removal. `pnpm josh lane:launch <N>` re-dispatches into the kept lane (a failed-install lane is still refused) |
|
|
123
118
|
| The child was **parked after its commit and push** | **Left open**, its directory and held seat recorded on the Issue | `lane:close` would take the **local branch**, the resume path |
|
|
124
119
|
| The child hit a **merge conflict** | **Left open** — the resolution happens in it | `backlogrun-recovery.md` → "Conflicts are not predicted"; a park there takes the row above |
|
|
125
|
-
| The child stopped on **`needs-human-review`** | **Left open and untouched** | The uncommitted work is what a person looks at.
|
|
120
|
+
| The child stopped on **`needs-human-review`** | **Left open and untouched** | The uncommitted work is what a person looks at. `run:hold <N> --human-review-stop` names the lane directory in the Telegram; the stop report names it too |
|
|
126
121
|
| The child **failed** | Whichever of the two parked rows applies, plus the consecutive-failure count | **A merge conflict is not this row**, and is not counted |
|
|
127
122
|
| **`lane:open` failed on the install** | `pnpm josh lane:close <N>`, then park the child | Frees the seat; a person fixes the cause. Carry pnpm's reason into the park note |
|
|
128
123
|
| The lane is **spent** — no child working in it, its Issue closed, not one this run launched and has not collected with `run:merge`, a clean tree, no commit that is on no remote | Nothing to do — `pnpm josh lane:prune` closes it | Any other lane is kept, with the reason on standard error |
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
# `backlogrun` — a child that cannot finish
|
|
2
2
|
|
|
3
3
|
**Read this file in full when a child cannot finish** — before parking it, before a
|
|
4
|
-
`needs-human-review` stop, or before recording a mid-run prerequisite or split.
|
|
5
|
-
entry read (`backlogrun.md` points here). Single source of park-and-continue, the `needs-human-review`
|
|
6
|
-
stop, a stale `in-progress`, a mid-run prerequisite and a mid-run split. Provenance:
|
|
7
|
-
`docs/maintainers/backlogrun-park-rationale.md` → "Where each rule came from".
|
|
4
|
+
`needs-human-review` stop, or before recording a mid-run prerequisite or split.
|
|
8
5
|
|
|
9
6
|
## What happens to a child that cannot finish
|
|
10
7
|
|
|
@@ -31,13 +28,12 @@ parks, re-dispatches or files.
|
|
|
31
28
|
## `needs-human-review` — the one stop that is not a park
|
|
32
29
|
|
|
33
30
|
A child carrying **`needs-human-review`** stops `halfrun`-shaped and **the whole run ends there**:
|
|
34
|
-
implementation and the gate run, nothing is committed, the tree is left dirty and unstashed,
|
|
35
|
-
`
|
|
36
|
-
|
|
37
|
-
instead of parking".
|
|
31
|
+
implementation and the gate run, nothing is committed, the tree is left dirty and unstashed,
|
|
32
|
+
`pnpm josh run:hold <N> --human-review-stop` sends the `confirmation` Telegram with the resume command
|
|
33
|
+
and the lane directory, and the remaining children are not started.
|
|
38
34
|
|
|
39
35
|
**The child goes on holding its repository**, and **its lane is left open and untouched**. **Name the
|
|
40
|
-
lane directory in the stop report
|
|
36
|
+
lane directory in the stop report.** Lanes in flight finish; no new lane opens.
|
|
41
37
|
|
|
42
38
|
**Never apply or remove the label** — a person's alone (`needs-human-review.md`, the single source).
|
|
43
39
|
|
|
@@ -47,8 +43,7 @@ When a child hits something only a person can decide (→ "Only a person's judge
|
|
|
47
43
|
`needs-decision`"), **park the child and keep going**:
|
|
48
44
|
|
|
49
45
|
```bash
|
|
50
|
-
|
|
51
|
-
pnpm josh issue:comment <N> --body-file <path> # what needs deciding, and the options
|
|
46
|
+
pnpm josh run:park <N> --body-file <path> # what needs deciding, and the options; applies needs-decision
|
|
52
47
|
```
|
|
53
48
|
|
|
54
49
|
`in-progress` stays; the parked child does **not** hold the repository (`needs-decision` takes
|
|
@@ -65,7 +60,7 @@ still filed at once, and a workaround is still forbidden. `epic:bundle`'s `ask`
|
|
|
65
60
|
**Removing the label is Tier A — do it without asking**, once the decision is recorded:
|
|
66
61
|
|
|
67
62
|
```bash
|
|
68
|
-
|
|
63
|
+
pnpm josh run:park <N> --clear # succeeds when the label is already off
|
|
69
64
|
```
|
|
70
65
|
|
|
71
66
|
**The released child goes back to a lane, never into the parent's own context** — `pnpm josh
|
|
@@ -86,12 +81,13 @@ It never carries:
|
|
|
86
81
|
- a wait for the next published release — a dependency, `pnpm josh issue:release <N> --wait`
|
|
87
82
|
(`prerequisite.md`);
|
|
88
83
|
- a defect in the running repository's own run tooling — the run fixes it and resumes
|
|
89
|
-
(`prompts/collaboration-workflow/upstream-interrupt.md` → "実行中のリポジトリ自身のラン機構の不具合")
|
|
84
|
+
(`prompts/collaboration-workflow/upstream-interrupt.md` → "実行中のリポジトリ自身のラン機構の不具合");
|
|
85
|
+
- a wait on an open blocker or a start date — `run:merge` releases it (`run-merge-steps.ts`);
|
|
86
|
+
- a mechanical failure — the driver applies `run:stalled` (`RUN_STALLED_LABEL` in `issue-labels.ts`).
|
|
90
87
|
|
|
91
88
|
**When in doubt, it is Tier A**: decide, comment the decision, and continue. **A label a mechanical step
|
|
92
89
|
applied** (a failed or abandoned child, a lost merge race) is read against this list once its reason is
|
|
93
|
-
known, and removed when the reason is not on it.
|
|
94
|
-
`docs/maintainers/backlogrun-park-rationale.md` → "Why a run spends no attention on a non-finding".
|
|
90
|
+
known, and removed when the reason is not on it.
|
|
95
91
|
|
|
96
92
|
## `in-progress` is removed by whoever finds it stale
|
|
97
93
|
|
|
@@ -120,22 +116,11 @@ Something else in **this** repository has to land first: not a split, not an ups
|
|
|
120
116
|
|
|
121
117
|
1. File the prerequisite `<N>` with `route:tier-a` (Tier A, first-party, no confirmation) — **first**,
|
|
122
118
|
because the next step names it.
|
|
123
|
-
2.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
**`-u` is not optional** (new test files are untracked). **Pop it by message, never by position** —
|
|
131
|
-
`pnpm josh stash:pop "backlogrun: paused #<M> for prerequisite #<N>"` — when `epic:next` offers `<M>`
|
|
132
|
-
again, after its `pnpm josh ms`; expect conflicts.
|
|
133
|
-
3. `pnpm josh epic --add <E> <N> --before <M>` — row, declaration and `blocked-by` in one command;
|
|
134
|
-
never a hand edit. **With no epic**, record `<M>` blocked by `<N>` alone with the `gh api
|
|
135
|
-
…/dependencies/blocked_by` call in
|
|
136
|
-
`prompts/collaboration-workflow/issue-template.md` → "複数 Issue に分割するときの epic Issue", step 4.
|
|
137
|
-
4. **Remove `in-progress` from `<M>`** — `pnpm josh run:release <M>`; a labelled child is never offered again.
|
|
138
|
-
5. **Do not park.** Back to step 1 of the loop; `epic:next` hands back the prerequisite first.
|
|
119
|
+
2. **`pnpm josh run:pause <M> --for <N>`** — the stash, the comment naming its `stash:pop`, `<M>`
|
|
120
|
+
blocked by `<N>` (the epic's row and declaration too) and `run:release <M>` in one call
|
|
121
|
+
(`prerequisite.md`). Pop the stash the comment names when `epic:next` offers `<M>` again, after its
|
|
122
|
+
`pnpm josh ms`; expect conflicts.
|
|
123
|
+
3. **Do not park.** Back to step 1 of the loop; `epic:next` hands back the prerequisite first.
|
|
139
124
|
|
|
140
125
|
**A stop a dependency can express is never parked**, including a defect in this repository's own gate
|
|
141
126
|
or run tooling — `prerequisite.md`.
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
# `backlogrun` — progress, the hand-off, resume and waiting
|
|
2
2
|
|
|
3
|
-
Point-of-use, read one section at a time from `backlogrun.md` → "The
|
|
3
|
+
Point-of-use, read one section at a time from `backlogrun.md` → "The manifest — the ordered flow"; the heartbeat is `progress-watcher.md` → "Progress while the run is quiet".
|
|
4
4
|
|
|
5
5
|
## Running a named epic's children
|
|
6
6
|
|
|
7
|
-
**`backlog:drive` walks this loop on its own; a session runs it when the driver hands back `epic #N
|
|
8
|
-
|
|
9
|
-
`docs/maintainers/backlogrun-progress-rationale.md` → "Why a named epic's children run in lanes";
|
|
10
|
-
`docs/maintainers/backlogrun-progress-rationale.md` → "Why state lives in records, not the
|
|
11
|
-
conversation"). Each child runs as `fullrun #<N>` in a lane —
|
|
7
|
+
**`backlog:drive` walks this loop on its own; a session runs it when the driver hands back `epic #N`.**
|
|
8
|
+
Each child runs as `fullrun #<N>` in a lane —
|
|
12
9
|
`pnpm josh lane:launch <N>` (`backlogrun-lanes.md` → "Opening one lane and dispatching its child"),
|
|
13
10
|
then `pnpm josh lane:await <N...> --owner "$PPID"` in the background — and every ending is read by one
|
|
14
11
|
command:
|
|
@@ -20,10 +17,7 @@ next=$(pnpm josh run:merge <N> --epic <E> --repo <owner/repo> --owner "$PPID" --
|
|
|
20
17
|
**`pnpm josh run:merge <N>` is the only reading of how a child ended** — never
|
|
21
18
|
classify `issue:state` by hand or ask `epic:next` in its place. **Pass `--output <path>`, the child's
|
|
22
19
|
transcript**; the named-epic flags are dropped for the opted-in backlog. It classifies, counts, closes
|
|
23
|
-
the lane and comments itself; act on the token.
|
|
24
|
-
`docs/maintainers/backlogrun-progress-rationale.md` → "Why a child's ending is read by `run:merge` alone";
|
|
25
|
-
`docs/maintainers/backlogrun-progress-rationale.md` → "Why a child's ending is classified at once";
|
|
26
|
-
provenance of each rule: `docs/maintainers/backlogrun-progress-rationale.md` → "Where each rule came from".
|
|
20
|
+
the lane and comments itself; act on the token.
|
|
27
21
|
|
|
28
22
|
| It prints | What the run does |
|
|
29
23
|
| --- | --- |
|
|
@@ -32,7 +26,7 @@ provenance of each rule: `docs/maintainers/backlogrun-progress-rationale.md` →
|
|
|
32
26
|
| `complete` | Record the root done (`backlogrun-steps.md` → "The session cut is inside the invocation") and post the epic summary |
|
|
33
27
|
| `over` | Hand the lanes over and take the cut — "The hand-off" below |
|
|
34
28
|
| `human-review` | Stop, leave `in-progress` on; send a `confirmation` only where the child ran in this session's own context (`needs-human-review.md`) |
|
|
35
|
-
| `stop` / `environment` | Report the parked children (or the outage) and stop |
|
|
29
|
+
| `stop` / `environment` | Report the parked children (or the outage, or the `/login` an authentication failure needs) and stop |
|
|
36
30
|
| `resumed` | `lane:await <N>` it again |
|
|
37
31
|
| `retry` / `busy` | Re-read the child |
|
|
38
32
|
|
|
@@ -52,8 +46,7 @@ after every child's merge and `pnpm josh ms`, never wired to `pnpm josh delegate
|
|
|
52
46
|
carrying the budget** (`backlogrun-steps.md` → "The session cut is inside the invocation"); it is not a
|
|
53
47
|
stop. The threshold is `CONTEXT_CUT_THRESHOLD` in `scripts/cost-runtime/context-cut-threshold.ts`
|
|
54
48
|
(135,000, shared by the scheduler entry, hand-off and the lane worker cut, `pre-gate-cut.md` → "The
|
|
55
|
-
implementation-phase cut").
|
|
56
|
-
hand-off check is asked at every merge".
|
|
49
|
+
implementation-phase cut").
|
|
57
50
|
|
|
58
51
|
| It answers | What the run does |
|
|
59
52
|
| --- | --- |
|
|
@@ -72,12 +65,11 @@ and output path; fill a missing path with `pnpm josh lane:output <N> <path>`:
|
|
|
72
65
|
closed by `pnpm josh lane:prune`.
|
|
73
66
|
- **Every in-flight lane records a path** — count everything, run `pnpm josh run:carry --cut --owner
|
|
74
67
|
"$PPID"`, post the progress comment naming every lane and its path with `pnpm josh run:board`, and end
|
|
75
|
-
the turn; the `run:wake` driver polls the lanes.
|
|
76
|
-
`docs/maintainers/backlogrun-progress-rationale.md` → "Why lanes are handed over rather than drained".
|
|
68
|
+
the turn; the `run:wake` driver polls the lanes.
|
|
77
69
|
- **`--cut` answers `capped`** (`MAX_CUTS`) — **do not `run:wake` or hand off**;
|
|
78
70
|
carry this session on and re-ask at the next merge.
|
|
79
71
|
|
|
80
|
-
The hand-off report
|
|
72
|
+
The hand-off report is `pnpm josh run:report --handoff` (`backlogrun-handoff-report.md`). **This is not a failure and not a
|
|
81
73
|
park** — nothing is labelled, stashed or filed.
|
|
82
74
|
|
|
83
75
|
## Resuming after a cut
|
|
@@ -88,7 +80,7 @@ park** — nothing is labelled, stashed or filed.
|
|
|
88
80
|
### Picking the lanes up in the fresh session
|
|
89
81
|
|
|
90
82
|
**Start no child again and open no lane already open.** In one turn: `pnpm josh lane:list` (a line
|
|
91
|
-
with a path is a handed-over child,
|
|
83
|
+
with a path is a handed-over child, waited on per `backlogrun-recovery.md` → "A delegated unit that stopped
|
|
92
84
|
without reporting"), `pnpm josh run:progress --wait --output <handed-over paths>` in the background
|
|
93
85
|
(`run:watcher:guard`), `pnpm josh run:liveness`, and `epic:next --lanes`, a lane per child it offers.
|
|
94
86
|
**A carried-over child finishes in its own unit — never run its `followup` yourself**; one lost in the
|
|
@@ -104,15 +96,14 @@ the epic body; what merged the epic's task list.
|
|
|
104
96
|
|
|
105
97
|
| Setting | Value | Meaning |
|
|
106
98
|
| --- | --- | --- |
|
|
107
|
-
|
|
|
99
|
+
| Re-ask floor | 60 s | **In flight, never a clock — the wait is `backlog:drive` or `lane:await`**, and the wake is their exit or the watcher's arrival exit, never a report; a state read repeated with nothing decided in between is refused. **With nothing in flight no wake comes: it is the parent's own clock.** A `backlogrun` idle watch re-asks at this same floor. |
|
|
108
100
|
| Silent delegated unit | 30 min | Not the child's duration — the time its output has gone **unchanged**. Past it, ask `run:liveness` and book a stopped unit as a failure. |
|
|
109
101
|
| Stale `in-progress` | 90 min | Past it, the other session is gone. |
|
|
110
102
|
| Publish wait | 10 min | `josh propagate`'s own budget. A failed publish never appears. |
|
|
111
103
|
| `backlogrun` idle watch | 8 h | Counted from when the run's hands became free, never from its start; `pnpm josh backlog:budget` decides it. |
|
|
112
104
|
|
|
113
|
-
Each timeout **ends the wait and reports** — none is retried indefinitely.
|
|
114
|
-
|
|
115
|
-
clock". A stale child's label is removed first, so the next poll can offer it. **A graph that has
|
|
105
|
+
Each timeout **ends the wait and reports** — none is retried indefinitely. A stale child's label is
|
|
106
|
+
removed first, so the next ask can offer it. **A graph that has
|
|
116
107
|
deadlocked on a cycle is not this loop's to untangle**: `epic:next` detects it and exits with an error.
|
|
117
108
|
|
|
118
109
|
## Who sends the summary, and who propagates
|
|
@@ -4,7 +4,8 @@ Point-of-use, read one section at the failure that reaches it; the single source
|
|
|
4
4
|
|
|
5
5
|
## A delegated unit that stopped without reporting
|
|
6
6
|
|
|
7
|
-
**A stop from outside leaves no notification behind, so the parent
|
|
7
|
+
**A stop from outside leaves no notification behind, so the parent waits on `lane:await`, whose exit
|
|
8
|
+
covers it.** Record
|
|
8
9
|
where a lane child writes with `pnpm josh lane:output <N> <path>` in the dispatch turn, and once its
|
|
9
10
|
output has been unchanged for the silent-unit window (`backlogrun-progress.md` → "Waiting, and never
|
|
10
11
|
waiting forever") **ask the command rather than combining the traces yourself**, in the checkout the
|
|
@@ -18,28 +19,28 @@ pnpm josh run:liveness <N> --output <absolute path> --process <command lines nam
|
|
|
18
19
|
|
|
19
20
|
| Answer | What the parent does |
|
|
20
21
|
| --- | --- |
|
|
21
|
-
| `alive` |
|
|
22
|
+
| `alive` | Wait on `lane:await` again; touch nothing |
|
|
23
|
+
| `paused` | Tell the person; neither wait nor recover (`docs/josh-commands-run.md` → `josh run:liveness`) |
|
|
22
24
|
| `settled` | Re-read with `pnpm josh run:status <N>` and take the branch its state section says |
|
|
23
25
|
| `undetermined` | Read the trace that failed and ask again. **A second in a row on the same child is a fault in the check**: send a `confirmation` naming the trace and stop — never escalate it to `stopped` |
|
|
24
26
|
| `stopped` | The recovery below |
|
|
25
27
|
|
|
26
|
-
Rationale: `docs/maintainers/backlogrun-recovery-rationale.md` → "Why liveness needs silence and no
|
|
27
|
-
process together".
|
|
28
|
-
|
|
29
28
|
**On `stopped`, re-read with `pnpm josh run:status <N>`.** **A re-read carrying `needs-decision`** — the
|
|
30
29
|
unit parked it, then stopped: leave the label on and count nothing. Otherwise, while `state: OPEN`:
|
|
31
30
|
|
|
32
|
-
1. **Stash the half-finished work** — `
|
|
33
|
-
record it on the Issue; it is popped
|
|
34
|
-
#<N>"`, never positionally.
|
|
31
|
+
1. **Stash the half-finished work** — `pnpm josh stash:push "backlogrun: stopped unit for #<N>"` — and
|
|
32
|
+
record it on the Issue; it is popped with `pnpm josh stash:pop "backlogrun: stopped unit for #<N>"`.
|
|
35
33
|
2. **Classify and act in one call** — `pnpm josh run:merge <N> --output <path>` (`--epic <E> --repo
|
|
36
34
|
<owner/repo> --owner "$PPID"` for a named epic), **the same composite a returned child takes**. It
|
|
37
35
|
tells an `outage` (re-dispatched with its session resumed, uncounted, bounded by
|
|
38
|
-
`CONSECUTIVE_OUTAGE_LIMIT`) from an `abandoned` child (parked `
|
|
36
|
+
`CONSECUTIVE_OUTAGE_LIMIT`) from an `abandoned` child (parked `run:stalled` and counted), and drops
|
|
39
37
|
the stale `in-progress` itself.
|
|
40
38
|
3. **Act on the token it printed** — `backlogrun-progress.md` → "Running a named epic's children".
|
|
41
39
|
|
|
42
|
-
|
|
40
|
+
## A person withdraws a running child
|
|
41
|
+
|
|
42
|
+
On a person's instruction to drop a running child, run `pnpm josh lane:withdraw <N>
|
|
43
|
+
--reason "<their reason>"` — `docs/josh-commands.md` → "`josh lane:withdraw`".
|
|
43
44
|
|
|
44
45
|
## Conflicts are not predicted
|
|
45
46
|
|
|
@@ -51,8 +52,7 @@ followup` ends that child with a named conflict in about ten seconds.
|
|
|
51
52
|
|
|
52
53
|
**That child does not stop: it resolves the conflict in its own lane**, uncounted by the
|
|
53
54
|
consecutive-failure guard. **The merge direction is `origin/main` into the lane's branch, never a
|
|
54
|
-
rebase**; no step rewrites a pushed commit
|
|
55
|
-
conflict is resolved in the lane rather than handed to a person").
|
|
55
|
+
rebase**; no step rewrites a pushed commit.
|
|
56
56
|
|
|
57
57
|
1. **Resolve in the lane.** `git fetch origin main`, merge `origin/main` into the lane's branch, resolve
|
|
58
58
|
in place. Do not close the lane, open another, or switch its branch.
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
# `backlogrun` — the detailed procedure behind the manifest
|
|
2
2
|
|
|
3
|
-
Point-of-use, read one section at a time from `backlogrun.md` → "The
|
|
4
|
-
|
|
5
|
-
- `docs/maintainers/backlogrun-steps-rationale.md` → "Why the authorization boundary is shaped this way"
|
|
6
|
-
- `docs/maintainers/backlogrun-steps-rationale.md` → "Why a session cut does not end the run"
|
|
7
|
-
- `docs/maintainers/backlogrun-steps-rationale.md` → "Why the plan and the decision pass come first"
|
|
8
|
-
- `docs/maintainers/backlogrun-steps-rationale.md` → "Why the loop's contract is shaped this way"
|
|
9
|
-
- `docs/maintainers/backlogrun-steps-rationale.md` → "Why the idle watch lasts 8 hours from when the hands became free"
|
|
10
|
-
- `docs/maintainers/backlogrun-steps-rationale.md` → "Why the cost check skips a watch"
|
|
11
|
-
- `docs/maintainers/backlogrun-steps-rationale.md` → "Where each rule came from"
|
|
3
|
+
Point-of-use, read one section at a time from `backlogrun.md` → "The manifest — the ordered flow".
|
|
12
4
|
|
|
13
5
|
## What one invocation approves
|
|
14
6
|
|
|
@@ -28,13 +20,13 @@ judgement** — a Tier B toss-up or a Tier C action inside it; `--no-auto-ok` wi
|
|
|
28
20
|
|
|
29
21
|
### The brake that replaces the promise
|
|
30
22
|
|
|
31
|
-
**Every bound is counted
|
|
23
|
+
**Every bound is counted by a record or a guard rather than in the conversation:**
|
|
32
24
|
|
|
33
25
|
| The bound | What it limits | Counted by |
|
|
34
26
|
| --- | --- | --- |
|
|
35
27
|
| `--max` | merges per invocation — a run's own filing competes for it | `run:carry --merged` |
|
|
36
28
|
| `--idle` (8 hours unless typed) | how long the run waits once nothing can proceed | `--active`, the moment its hands became free |
|
|
37
|
-
| **Ten filings per
|
|
29
|
+
| **Ten filings per run** | additions to the pool on **every** filing route (`prerequisite.md`) — `route:tier-a`, `route:interrupt` and a review branch-2 filing are exempt from the depth test (`observation-filing.md`), never from this ceiling | `scripts/rules/filing-cap.ts` |
|
|
38
30
|
| The WIP cap on open issues | the pool across invocations | `prompts/collaboration-workflow/wip-cap.md` |
|
|
39
31
|
|
|
40
32
|
**This section is the single source of how the `epic:bundle` obligation and this boundary meet.**
|
|
@@ -74,7 +66,7 @@ record is the parent loop's; a lane never touches it**. Count with `--merged <N>
|
|
|
74
66
|
| `resumed` | Take the budget from `--json`, report the plan again, read `backlogrun-progress.md` → "Resuming after a cut" |
|
|
75
67
|
| `busy` / `mismatch` / `unreadable` / `unknown` | **Stop; do not open a lane** — report what it printed; never resume into another invocation's record |
|
|
76
68
|
| `over` | **End the conversation**; retype the invocation in a fresh session |
|
|
77
|
-
| `standing` | **Stop; do not open a lane**: report `pnpm josh
|
|
69
|
+
| `standing` | **Stop; do not open a lane**: report `pnpm josh backlogrun --restart` (continue the run) and `pnpm josh run:carry --end` (discard it) for the person to choose — a crash from a run-tooling defect this run has since fixed you resume yourself (`upstream-interrupt.md` → "実行中のリポジトリ自身のラン機構の不具合") |
|
|
78
70
|
**End the record when the run ends** — `pnpm josh run:report`, then `pnpm josh run:carry --end`, **never
|
|
79
71
|
batched with it**, and `pnpm josh run:wake --stop` in the same turn. **A run that ends by _stopping_**
|
|
80
72
|
(a `stop` verdict or the consecutive-failure guard) **ends with `pnpm josh run:carry --end --stopped
|
|
@@ -99,21 +91,21 @@ Waiting on a person, Out of scope) in the session language, with any truncated-l
|
|
|
99
91
|
**Settle every `needs-decision` issue the plan listed in one pass**, from one `pnpm josh issue:read <N>
|
|
100
92
|
<N> …` call (`issue-comments.md`):
|
|
101
93
|
|
|
102
|
-
- **An answer already in the issue** — record it as a comment and **remove the label** (Tier A).
|
|
94
|
+
- **An answer already in the issue** — record it as a comment and **remove the label** with `pnpm josh run:park <N> --clear` (Tier A).
|
|
103
95
|
**Never measure in order to decide**: a question needing a benchmark or a run stays labelled.
|
|
104
96
|
- **A person's judgement** — apply `needs-decision` (`backlogrun-park.md` → "Only a person's judgement
|
|
105
97
|
carries `needs-decision`").
|
|
106
98
|
- **Order and isolate** — a native `blocked-by` where one must land first; `run:solo` on all three
|
|
107
99
|
`backlogrun-lanes.md` → "A solo run" conditions, **every other one `run:lane`**, commenting the
|
|
108
100
|
reason.
|
|
109
|
-
- **`priority:high`**
|
|
110
|
-
**
|
|
101
|
+
- **`priority:critical` / `priority:high`** are applied at filing by `pnpm josh issue:file` from the
|
|
102
|
+
body's `- 優先度:` declaration (`issue-template.md`); **only a person removes them**.
|
|
111
103
|
- **Report `pnpm josh backlog:plan --waves`** with the plan, never an order derived by hand; then start
|
|
112
104
|
the loop, leaving whatever is still labelled parked.
|
|
113
105
|
|
|
114
|
-
**`needs-decision`, `run:solo
|
|
115
|
-
|
|
116
|
-
`pnpm josh issue:file` or `pnpm josh auto-ok:judge`.
|
|
106
|
+
**`needs-decision`, `run:solo` and `run:lane` are the only workflow labels a run applies by hand** —
|
|
107
|
+
never `needs-human-review` (`needs-human-review.md`), the priority labels only through
|
|
108
|
+
`pnpm josh issue:file`, and `auto-ok` only through it or `pnpm josh auto-ok:judge`.
|
|
117
109
|
|
|
118
110
|
## The loop
|
|
119
111
|
|
|
@@ -135,14 +127,14 @@ section the row names:
|
|
|
135
127
|
| `window` | Hand the loop back as is | — |
|
|
136
128
|
|
|
137
129
|
**A candidate only in another repository is never a token** — report it with its checkout. The budgets,
|
|
138
|
-
verdicts and stops are the driver's own
|
|
130
|
+
verdicts and stops are the driver's own.
|
|
139
131
|
|
|
140
132
|
## What runs once per session, not once per issue
|
|
141
133
|
|
|
142
134
|
| Step | Where it is defined |
|
|
143
135
|
| --- | --- |
|
|
144
136
|
| `run:carry --begin` + `run:wake --start` before the plan; `run:carry --end` + `run:wake --stop` at the end | "The session cut is inside the invocation" above |
|
|
145
|
-
| `pnpm josh ms`, `pnpm josh latest:
|
|
137
|
+
| `pnpm josh ms`, `pnpm josh latest:if-required`, `lane:prune` in the primary checkout before the first lane | `backlogrun-lanes.md` → "Once per repository, before the first lane opens" |
|
|
146
138
|
| `josh latest` on `required` only, once, never in a lane | `backlogrun-child.md` → "`josh latest` runs once per session, not once per child" |
|
|
147
139
|
| `pnpm josh run:hold <N>`'s preflight, before each child not in a lane | `docs/josh-commands-run.md` → "`josh run:hold`" |
|
|
148
140
|
| `pnpm josh run:progress --wait` in the background, `--mark` at every real report | `progress-watcher.md` → "Progress while the run is quiet" |
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
# `backlogrun` — the manifest (named issues, epics and the opted-in backlog)
|
|
2
2
|
|
|
3
|
-
**This file is the manifest, not the procedure**: the ordered flow as terse triggers, and the route
|
|
4
|
-
table naming the one section each moment reads. Rationale and provenance:
|
|
5
|
-
`docs/maintainers/backlogrun-rationale.md` → "Why the loop's position is computed";
|
|
6
|
-
`docs/maintainers/backlogrun-rationale.md` → "Where each rule came from".
|
|
7
|
-
|
|
8
3
|
**`backlogrun` names either nothing, or the issues and epics to run first.** With no argument it runs
|
|
9
4
|
whatever `pnpm josh backlog:next` offers — the whole opted-in backlog, every issue carrying `auto-ok`
|
|
10
5
|
plus every child of an epic whose root carries it, ordered by dependency and grouped into waves. With
|
|
@@ -12,9 +7,9 @@ plus every child of an epic whose root carries it, ordered by dependency and gro
|
|
|
12
7
|
that same backlog. **`--only` stops it after the named list**, draining nothing.
|
|
13
8
|
|
|
14
9
|
**The loop's current position is computed, not carried in the conversation.** `pnpm josh run:step <N>`
|
|
15
|
-
reads
|
|
16
|
-
|
|
17
|
-
for the parent itself
|
|
10
|
+
reads it from the event stream, the carry record and the issue state, and prints the next single
|
|
11
|
+
action — a runnable command, or the one point a person has to judge — followed by the section that
|
|
12
|
+
governs it. With no `<N>` it answers for the parent itself, from the carry record alone.
|
|
18
13
|
|
|
19
14
|
**A named item may be a single issue or an epic.** A single-issue item is one `fullrun`; **a named epic runs its children in
|
|
20
15
|
dependency order across the free lanes, and the run does not advance to the next named item until
|
|
@@ -29,67 +24,53 @@ is still that one invocation (`backlogrun-steps.md` → "The session cut is insi
|
|
|
29
24
|
|
|
30
25
|
## The manifest — the ordered flow
|
|
31
26
|
|
|
27
|
+
A section `run:step` prints is not fetched again. Every other one is read at its step with
|
|
28
|
+
`pnpm josh doc:section <file> "<heading>"` — never a whole document (`SKILL.md` → "A section
|
|
29
|
+
reference is read as a section").
|
|
30
|
+
|
|
32
31
|
1. **Claim nothing at the entry — this parent orchestrates and never implements.** The working-tree
|
|
33
32
|
hold, the split assessment and `fullrun.md` are read by a dispatched child inside its own delegated
|
|
34
33
|
`fullrun` unit, never at the parent's entry.
|
|
35
34
|
2. **Begin the carry record before the plan** — `pnpm josh run:carry --begin "<invocation>" --owner
|
|
36
|
-
"$PPID"` and `pnpm josh run:wake --start`, in the same turn as the first `pnpm josh ms`.
|
|
35
|
+
"$PPID"` and `pnpm josh run:wake --start`, in the same turn as the first `pnpm josh ms`. Its answers:
|
|
36
|
+
`backlogrun-steps.md` → "The session cut is inside the invocation"; a resumed session:
|
|
37
|
+
`backlogrun-progress.md` → "Resuming after a cut".
|
|
37
38
|
3. **What this invocation approves** — the opted-in pool, a run's own filings once bundled, and the
|
|
38
|
-
brake that bounds the amount
|
|
39
|
+
brake that bounds the amount: `backlogrun-steps.md` → "What one invocation approves".
|
|
39
40
|
4. **Report the plan before the first child** — `pnpm josh backlog:plan`, then resolve every
|
|
40
41
|
`needs-decision` issue decidable from its body in one pass, recording `blocked-by`, `run:solo` and
|
|
41
|
-
`run:lane` in the same pass.
|
|
42
|
+
`run:lane` in the same pass: `backlogrun-steps.md` → "The plan, before the first child starts";
|
|
43
|
+
`run:solo`: `backlogrun-lanes.md` → "A solo run".
|
|
42
44
|
5. **Named issues run first, in order** — each as a delegated `fullrun`, one at a time, then the pool;
|
|
43
45
|
`--only` stops after the list.
|
|
46
|
+
- Once per session: `backlogrun-steps.md` → "What runs once per session, not once per issue" and
|
|
47
|
+
`backlogrun-child.md` → "`josh latest` runs once per session, not once per child"
|
|
48
|
+
(`latest-gate.md` whole on `required`).
|
|
49
|
+
- The watcher: `progress-watcher.md` → "Progress while the run is quiet".
|
|
50
|
+
- Lanes: `backlogrun-lanes.md` → "Once per repository, before the first lane opens", by hand
|
|
51
|
+
`backlogrun-lanes.md` → "Opening one lane and dispatching its child".
|
|
52
|
+
- Dispatch: `backlogrun-child.md` → "Each child runs in a delegated unit".
|
|
44
53
|
6. **The loop belongs to the supervisor — hand it over with what the bare `pnpm josh run:step`
|
|
45
54
|
prints**, whatever the plan held: `run:wake` runs `backlog:drive`, which returns a branch to an AI
|
|
46
|
-
session only when it needs judgment.
|
|
55
|
+
session only when it needs judgment (`backlogrun-steps.md` → "The loop").
|
|
56
|
+
- An `epic #N` hand-back or a `merge` branch: `backlogrun-progress.md` → "Running a named epic's
|
|
57
|
+
children".
|
|
58
|
+
- A merge answered `over`: `backlogrun-progress.md` → "The hand-off".
|
|
59
|
+
- A unit gone silent: `backlogrun-recovery.md` → "A delegated unit that stopped without reporting".
|
|
60
|
+
- A child that cannot finish: `backlogrun-park.md` → "park and continue".
|
|
47
61
|
7. **End the record when the run ends** — `run:report`, then `run:carry --end` (or `--end --stopped
|
|
48
|
-
"<reason>"`) and `run:wake --stop
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
**Read one section, at the moment its row names, with `pnpm josh doc:section <file> "<heading>"`** —
|
|
54
|
-
never a whole document (`SKILL.md` → "A section reference is read as a section"):
|
|
55
|
-
|
|
56
|
-
| The moment | Read |
|
|
57
|
-
| --- | --- |
|
|
58
|
-
| The entry: the carry record and its answers | `backlogrun-steps.md` → "The session cut is inside the invocation" |
|
|
59
|
-
| What the invocation may merge, and the `auto-ok` rule | `backlogrun-steps.md` → "What one invocation approves" |
|
|
60
|
-
| Before the first child: the plan and the decision pass | `backlogrun-steps.md` → "The plan, before the first child starts" |
|
|
61
|
-
| The driver hands a branch back | `backlogrun-steps.md` → "The loop" |
|
|
62
|
-
| Once per session | `backlogrun-steps.md` → "What runs once per session, not once per issue" |
|
|
63
|
-
| `josh latest:scope` answers `required` | `latest-gate.md` (whole) |
|
|
64
|
-
| Starting the progress watcher | `progress-watcher.md` → "Progress while the run is quiet" |
|
|
65
|
-
| The run ends | `backlogrun-steps.md` → "End the record when the run ends" |
|
|
66
|
-
| Labelling an issue `run:solo` | `backlogrun-lanes.md` → "A solo run" |
|
|
67
|
-
| Before the first lane opens | `backlogrun-lanes.md` → "Once per repository, before the first lane opens" |
|
|
68
|
-
| Opening a lane by hand | `backlogrun-lanes.md` → "Opening one lane and dispatching its child" |
|
|
69
|
-
| The first child is in hand | `backlogrun-child.md` → "`josh latest` runs once per session, not once per child" |
|
|
70
|
-
| Dispatching a child | `backlogrun-child.md` → "Each child runs in a delegated unit" |
|
|
71
|
-
| An `epic #N` hand-back, a `merge` branch, or a `run:merge` token | `backlogrun-progress.md` → "Running a named epic's children" |
|
|
72
|
-
| A merge answered `over` | `backlogrun-progress.md` → "The hand-off" |
|
|
73
|
-
| A resumed session | `backlogrun-progress.md` → "Resuming after a cut" |
|
|
74
|
-
| The run's last merge | `backlogrun-progress.md` → "Who sends the summary, and who propagates" |
|
|
75
|
-
| `josh release:scope`, after the last merge | `followup.md` → "When `pnpm josh release` runs" |
|
|
76
|
-
| A unit went silent | `backlogrun-recovery.md` → "A delegated unit that stopped without reporting" |
|
|
77
|
-
| A child cannot finish | `backlogrun-park.md` → "park and continue" |
|
|
62
|
+
"<reason>"`) and `run:wake --stop`: `backlogrun-steps.md` → "End the record when the run ends".
|
|
63
|
+
- An empty plan is not that end; the driver's idle watch decides it. A person stops a run from the
|
|
64
|
+
terminal with `pnpm josh backlogrun --stop`, which makes both calls.
|
|
65
|
+
- The last merge: `backlogrun-progress.md` → "Who sends the summary, and who propagates", then
|
|
66
|
+
`followup.md` → "When `pnpm josh release` runs".
|
|
78
67
|
|
|
79
68
|
## Guards
|
|
80
69
|
|
|
81
70
|
| Guard | Limit | On reaching it |
|
|
82
71
|
| --- | --- | --- |
|
|
83
72
|
| Children per run | 30 | Stop and report; an epic this large should be split. |
|
|
84
|
-
| Issues filed per run |
|
|
73
|
+
| Issues filed per run | `prerequisite.md`'s cap | Stop and report. |
|
|
85
74
|
| Consecutive child failures | 3 | Stop and report; something is wrong with the environment, not the children. |
|
|
86
75
|
|
|
87
76
|
A failure that is not consecutive parks its child and the run continues.
|
|
88
|
-
|
|
89
|
-
## This file is the single source of the `backlogrun` procedure
|
|
90
|
-
|
|
91
|
-
`CLAUDE.md` carries the keyword's row in the shorthand table and the explicit-invocation rule;
|
|
92
|
-
`SKILL.md` → §1 routes here. This manifest names which children there are and in what order; each
|
|
93
|
-
step's procedure is the section its route-table row names. Where any of them could disagree, the rule
|
|
94
|
-
is that this manifest and `backlogrun-steps.md` add nothing to a child's procedure — they only say
|
|
95
|
-
which children there are.
|