@joshuafolkken/kit 1.1514.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 +5 -5
- package/.claude/skills/epic-commands/SKILL.md +26 -65
- package/.claude/skills/epic-commands/epic-bundle.md +3 -1
- package/.claude/skills/workflow-commands/SKILL.md +5 -5
- package/.claude/skills/workflow-commands/background-commands.md +5 -5
- package/.claude/skills/workflow-commands/backlogrun-child.md +10 -8
- package/.claude/skills/workflow-commands/backlogrun-handoff-report.md +7 -25
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +17 -13
- package/.claude/skills/workflow-commands/backlogrun-park.md +14 -23
- package/.claude/skills/workflow-commands/backlogrun-progress.md +2 -2
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +5 -5
- package/.claude/skills/workflow-commands/backlogrun-steps.md +10 -10
- package/.claude/skills/workflow-commands/backlogrun.md +1 -1
- package/.claude/skills/workflow-commands/chain-rule.md +13 -7
- package/.claude/skills/workflow-commands/delegation.md +6 -5
- package/.claude/skills/workflow-commands/entry-sequence.md +9 -9
- package/.claude/skills/workflow-commands/followup.md +9 -31
- package/.claude/skills/workflow-commands/fullrun-steps.md +36 -45
- package/.claude/skills/workflow-commands/fullrun.md +2 -2
- package/.claude/skills/workflow-commands/halfrun.md +17 -25
- package/.claude/skills/workflow-commands/issue-comments.md +16 -12
- package/.claude/skills/workflow-commands/issue-scout.md +2 -2
- package/.claude/skills/workflow-commands/kickoff.md +24 -23
- package/.claude/skills/workflow-commands/latest-gate.md +7 -12
- package/.claude/skills/workflow-commands/needs-human-review.md +9 -14
- package/.claude/skills/workflow-commands/observation-filing.md +4 -36
- package/.claude/skills/workflow-commands/observation-ledger.md +1 -1
- package/.claude/skills/workflow-commands/pre-gate-cut.md +13 -30
- package/.claude/skills/workflow-commands/prerequisite.md +10 -16
- package/.claude/skills/workflow-commands/progress-watcher.md +1 -1
- package/.claude/skills/workflow-commands/prrun.md +3 -7
- package/.claude/skills/workflow-commands/retrospective.md +1 -1
- package/.claude/skills/workflow-commands/split-assessment.md +13 -1
- package/.claude/skills/workflow-commands/working-tree-hold.md +9 -9
- package/.codex/hooks.json +5 -5
- package/.github/actions/setup-node/action.yml +9 -0
- 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 +120 -10
- package/.github/workflows/publish.yml +8 -1
- package/.github/workflows/sonar-qube.yml +1 -0
- package/.prettierignore +2 -0
- package/.vscode/tasks.json +1 -2
- package/CLAUDE.md +3 -7
- package/README.md +4 -2
- package/SECURITY.md +1 -1
- package/dist/CLAUDE.md +3 -7
- package/dist/commands/document-read-cli.js +882 -0
- package/dist/commands/{document-section-cli.js → document-section-main.js} +79 -37
- 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-TNUMY6NL.js → chunk-PT5R6UJD.js} +4193 -1900
- package/dist/hooks/chunk-TUIFS5E7.js +72 -0
- package/dist/hooks/{chunk-723HKZO5.js → chunk-VWWCFGWK.js} +1 -1
- package/dist/hooks/{chunk-APUO6U4J.js → chunk-WR2KQAYZ.js} +1843 -440
- package/dist/hooks/{chunk-O6GDRNJB.js → chunk-XGBNSWEI.js} +248 -46
- package/dist/hooks/chunk-YCDOIR3I.js +3456 -0
- package/dist/hooks/codex-hook-adapter.js +10 -22
- package/dist/hooks/format-edited.js +5 -6
- package/dist/hooks/inputs.json +443 -317
- package/dist/hooks/pretool-guard.js +7 -25
- package/dist/hooks/session-lang.js +44 -51
- package/dist/hooks/stop-guard.js +7716 -2187
- package/dist/josh.js +6002 -3583
- 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 +3 -1
- package/package.json +10 -48
- package/pnpm-workspace.yaml +4 -2
- package/prompts/coding-standards.md +1 -1
- package/prompts/collaboration-workflow/file-edits.md +1 -7
- package/prompts/collaboration-workflow/issue-citation.md +1 -1
- package/prompts/collaboration-workflow/issue-template.md +33 -16
- package/prompts/collaboration-workflow/lane-instructions.md +1 -2
- package/prompts/collaboration-workflow/measurement.md +37 -0
- package/prompts/collaboration-workflow/operating-rules.md +4 -6
- package/prompts/collaboration-workflow/output-bounds.md +2 -7
- package/prompts/collaboration-workflow/plan-comment.md +3 -42
- package/prompts/collaboration-workflow/principles.md +5 -0
- package/prompts/collaboration-workflow/report-format.md +31 -60
- package/prompts/collaboration-workflow/residency.md +2 -2
- package/prompts/collaboration-workflow/shell-body.md +6 -16
- package/prompts/collaboration-workflow/turn-batching.md +0 -2
- package/prompts/collaboration-workflow/upstream-interrupt.md +14 -4
- package/prompts/collaboration-workflow/wip-cap.md +1 -1
- package/prompts/collaboration-workflow.md +3 -7
- package/prompts/refactoring.md +1 -1
- package/prompts/review-rubric.md +1 -2
- package/prompts/review.md +41 -21
- package/prompts/testing-guide.md +8 -43
- package/scripts/agent/agent-event.ts +15 -15
- package/scripts/agent/agent-exit-record.ts +13 -1
- package/scripts/agent/api-auth.ts +41 -0
- package/scripts/agent/api-outage.ts +1 -1
- 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 +2 -3
- 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 +53 -6
- 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 +30 -7
- 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 +52 -39
- 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 +112 -30
- 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 +0 -8
- package/scripts/delegation/investigation-guard.ts +0 -8
- package/scripts/delegation/investigation-reads.ts +3 -4
- 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 +8 -6
- package/scripts/document/document-scan.ts +1 -1
- package/scripts/document/document-section-cli.ts +0 -8
- package/scripts/document/document-section-main.ts +12 -0
- package/scripts/epic/epic-audit-cli.ts +12 -6
- package/scripts/epic/epic-bundle-apply.ts +137 -0
- package/scripts/epic/epic-bundle-cli.ts +32 -121
- package/scripts/epic/epic-bundle-format.ts +116 -0
- package/scripts/epic/epic-bundle-main.ts +17 -0
- 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 +19 -66
- 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 +39 -95
- package/scripts/gate/check-reuse.ts +33 -54
- 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 +80 -98
- package/scripts/gate/core-wait-record.ts +48 -0
- package/scripts/gate/core-wait.ts +37 -5
- package/scripts/gate/core-weights.ts +86 -0
- package/scripts/gate/free-cores.ts +27 -4
- package/scripts/gate/gate-ledger.ts +32 -4
- package/scripts/gate/gate-plan.ts +41 -34
- package/scripts/gate/gate-report.ts +14 -2
- package/scripts/gate/gate-run-steps.ts +53 -8
- package/scripts/gate/gate-skip.ts +12 -2
- package/scripts/gate/gate-steps.ts +12 -1
- package/scripts/gate/input-fingerprint.ts +42 -0
- package/scripts/gate/machine-capacity.ts +65 -31
- package/scripts/gate/moved-paths.ts +67 -0
- 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 +27 -24
- 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-write.ts +67 -29
- 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/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 +2 -2
- package/scripts/git/main-merge.ts +25 -9
- 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 +0 -8
- 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 +30 -3
- package/scripts/hooks/pre-push-unit.ts +4 -2
- package/scripts/hooks/pretool-guard-cli.ts +1 -8
- package/scripts/hooks/pretool-guard.ts +32 -19
- package/scripts/hooks/reserved-run.ts +67 -9
- package/scripts/hooks/run-hook.sh +13 -4
- package/scripts/hooks/shell-rules-notice.ts +37 -0
- package/scripts/hooks/stop-actions.ts +2 -21
- package/scripts/hooks/stop-guard.ts +13 -9
- package/scripts/init/hook-command-rewrite.ts +19 -5
- package/scripts/init/hook-launch.ts +15 -17
- 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 +1 -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 +0 -9
- package/scripts/issue/issue-cite-main.ts +12 -0
- package/scripts/issue/issue-classification.ts +12 -7
- 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 +2 -10
- 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 +0 -11
- 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/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 +15 -43
- package/scripts/josh/file-map-stamp.ts +49 -16
- package/scripts/josh/hook-decision.ts +32 -20
- package/scripts/josh/josh-command-map.ts +4 -1
- package/scripts/josh/josh-command-types.ts +12 -6
- package/scripts/josh/josh-commands-agent-hooks.ts +83 -0
- package/scripts/josh/josh-commands-ai.ts +157 -158
- 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 +25 -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 +103 -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 +144 -6
- package/scripts/josh/josh-logic.ts +6 -13
- package/scripts/josh/package-directory.ts +2 -4
- 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 +14 -23
- package/scripts/lane/lane-check-stats.ts +62 -21
- package/scripts/lane/lane-child-invocation.ts +8 -0
- 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 +24 -3
- package/scripts/lane/lane-gap-stats.ts +156 -0
- package/scripts/lane/lane-handoff.ts +69 -1
- package/scripts/lane/lane-held-stats.ts +129 -0
- package/scripts/lane/lane-install.ts +4 -11
- 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 +92 -123
- package/scripts/lane/lane-limit-cli.ts +12 -1
- package/scripts/lane/lane-measure-cli.ts +57 -11
- 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-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 +24 -3
- package/scripts/lane/lane-residents.ts +162 -0
- package/scripts/lane/lane-restart.ts +22 -2
- 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 +19 -5
- package/scripts/lane/lane-session-broker.ts +102 -21
- 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 +5 -4
- package/scripts/lane/lane-withdraw.ts +50 -49
- 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 +11 -2
- 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 +62 -30
- package/scripts/lint/lint-related-scope.ts +30 -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 +2 -6
- 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 +2 -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.ts +1 -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 +81 -15
- 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 +8 -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 +80 -2
- 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 +7 -0
- package/scripts/rules/git-argv.ts +72 -14
- package/scripts/rules/git-force.ts +12 -2
- package/scripts/rules/guard-remedy.ts +4 -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 +9 -1
- 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/oracle-consulted.ts +10 -0
- package/scripts/rules/oracle-firing.ts +1 -0
- package/scripts/rules/permission-guards.ts +3 -0
- package/scripts/rules/piped-verification.ts +1 -1
- 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 +9 -28
- package/scripts/rules/rule-value-cache.ts +4 -9
- package/scripts/rules/rule-value-cli.ts +51 -32
- package/scripts/rules/rule-value.ts +1 -1
- package/scripts/rules/shell-segments.ts +35 -0
- package/scripts/rules/stop-rule-rows.ts +64 -0
- package/scripts/rules/stop-rules.ts +3 -4
- 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 -32
- 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 +118 -38
- package/scripts/run/board/run-board-header.ts +82 -20
- 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 +116 -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 +239 -60
- 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 +151 -27
- package/scripts/run/board/run-board-reason.ts +235 -51
- 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 -48
- 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 +104 -20
- package/scripts/run/board/run-board-render.ts +207 -265
- package/scripts/run/board/run-board-roots.ts +54 -0
- package/scripts/run/board/run-board-row-yield.ts +9 -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 +22 -33
- package/scripts/run/board/run-board-status.ts +147 -71
- package/scripts/run/board/run-board-thanks-read.ts +2 -2
- package/scripts/run/board/run-board-tick.ts +122 -107
- 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-handoff.ts +2 -2
- 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 +6 -10
- package/scripts/run/event/run-event-scope.ts +2 -2
- package/scripts/run/event/run-event-stream-emit.ts +82 -22
- package/scripts/run/event/run-event-stream.ts +34 -8
- 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-stop-notify.ts +183 -0
- package/scripts/run/merge/run-merge-auth.ts +31 -0
- package/scripts/run/merge/run-merge-cli.ts +62 -48
- 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 +33 -9
- package/scripts/run/merge/run-merge-steps.ts +120 -85
- package/scripts/run/merge/run-merge.ts +38 -37
- 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 +60 -29
- package/scripts/run/run-next.ts +1 -1
- package/scripts/run/run-parent-cut-hook.ts +2 -2
- 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.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 +63 -140
- package/scripts/run/ship/run-ship-detach.ts +19 -8
- package/scripts/run/ship/run-ship-infra-retry.ts +59 -0
- package/scripts/run/ship/run-ship-next.ts +18 -2
- package/scripts/run/ship/run-ship-overlap.ts +42 -5
- 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 +81 -24
- package/scripts/run/ship/run-ship-preflight.ts +137 -32
- 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 +107 -23
- package/scripts/run/ship/run-ship-review-steps.ts +105 -151
- 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-text.ts +11 -6
- package/scripts/run/ship/run-ship-sync.ts +43 -6
- 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 +25 -1
- 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 +42 -24
- 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 +61 -149
- 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 +97 -10
- 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 +4 -1
- 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-4KKD2UTK.js +0 -66
- package/dist/hooks/chunk-6TS2JD6D.js +0 -237
- package/dist/hooks/chunk-7DSBJVFH.js +0 -50
- package/dist/hooks/chunk-A65Y4YOR.js +0 -79
- package/dist/hooks/chunk-CDY4NFQG.js +0 -15
- package/dist/hooks/chunk-EFXE6C37.js +0 -81
- package/dist/hooks/chunk-GP4IEC4O.js +0 -20
- package/dist/hooks/chunk-JP45SOCJ.js +0 -56
- package/dist/hooks/chunk-LAOV7NLM.js +0 -45
- package/dist/hooks/chunk-M4HGZV7U.js +0 -83
- package/dist/hooks/chunk-PF2NZL2A.js +0 -131
- package/dist/hooks/chunk-PTICX4OL.js +0 -358
- package/dist/hooks/chunk-RT27QRJW.js +0 -6247
- package/dist/hooks/chunk-SYOTDYCI.js +0 -3533
- package/dist/hooks/chunk-UPUZF3AN.js +0 -279
- package/dist/hooks/chunk-WK6SMBIC.js +0 -3180
- package/dist/hooks/duplicate-read-guard.js +0 -30
- package/dist/hooks/investigation-guard.js +0 -29
- 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/josh/josh-usage-automation.ts +0 -121
- package/scripts/josh/josh-usage-backlog.ts +0 -180
- package/scripts/josh/josh-usage-developer.ts +0 -230
- package/scripts/josh/josh-usage-hooks.ts +0 -38
- package/scripts/josh/josh-usage-issue.ts +0 -205
- package/scripts/josh/josh-usage-review.ts +0 -101
- package/scripts/josh/josh-usage-run.ts +0 -252
- package/scripts/josh/josh-usage-session.ts +0 -238
- package/scripts/josh/josh-usage-workflow.ts +0 -212
- 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 -292
- package/scripts/rules/rule-registry.ts +0 -112
- package/scripts/run/run-stranded-cli.ts +0 -27
|
@@ -20,13 +20,13 @@ judgement** — a Tier B toss-up or a Tier C action inside it; `--no-auto-ok` wi
|
|
|
20
20
|
|
|
21
21
|
### The brake that replaces the promise
|
|
22
22
|
|
|
23
|
-
**Every bound is counted
|
|
23
|
+
**Every bound is counted by a record or a guard rather than in the conversation:**
|
|
24
24
|
|
|
25
25
|
| The bound | What it limits | Counted by |
|
|
26
26
|
| --- | --- | --- |
|
|
27
27
|
| `--max` | merges per invocation — a run's own filing competes for it | `run:carry --merged` |
|
|
28
28
|
| `--idle` (8 hours unless typed) | how long the run waits once nothing can proceed | `--active`, the moment its hands became free |
|
|
29
|
-
| **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` |
|
|
30
30
|
| The WIP cap on open issues | the pool across invocations | `prompts/collaboration-workflow/wip-cap.md` |
|
|
31
31
|
|
|
32
32
|
**This section is the single source of how the `epic:bundle` obligation and this boundary meet.**
|
|
@@ -66,7 +66,7 @@ record is the parent loop's; a lane never touches it**. Count with `--merged <N>
|
|
|
66
66
|
| `resumed` | Take the budget from `--json`, report the plan again, read `backlogrun-progress.md` → "Resuming after a cut" |
|
|
67
67
|
| `busy` / `mismatch` / `unreadable` / `unknown` | **Stop; do not open a lane** — report what it printed; never resume into another invocation's record |
|
|
68
68
|
| `over` | **End the conversation**; retype the invocation in a fresh session |
|
|
69
|
-
| `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` → "実行中のリポジトリ自身のラン機構の不具合") |
|
|
70
70
|
**End the record when the run ends** — `pnpm josh run:report`, then `pnpm josh run:carry --end`, **never
|
|
71
71
|
batched with it**, and `pnpm josh run:wake --stop` in the same turn. **A run that ends by _stopping_**
|
|
72
72
|
(a `stop` verdict or the consecutive-failure guard) **ends with `pnpm josh run:carry --end --stopped
|
|
@@ -91,21 +91,21 @@ Waiting on a person, Out of scope) in the session language, with any truncated-l
|
|
|
91
91
|
**Settle every `needs-decision` issue the plan listed in one pass**, from one `pnpm josh issue:read <N>
|
|
92
92
|
<N> …` call (`issue-comments.md`):
|
|
93
93
|
|
|
94
|
-
- **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).
|
|
95
95
|
**Never measure in order to decide**: a question needing a benchmark or a run stays labelled.
|
|
96
96
|
- **A person's judgement** — apply `needs-decision` (`backlogrun-park.md` → "Only a person's judgement
|
|
97
97
|
carries `needs-decision`").
|
|
98
98
|
- **Order and isolate** — a native `blocked-by` where one must land first; `run:solo` on all three
|
|
99
99
|
`backlogrun-lanes.md` → "A solo run" conditions, **every other one `run:lane`**, commenting the
|
|
100
100
|
reason.
|
|
101
|
-
- **`priority:high`**
|
|
102
|
-
**
|
|
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**.
|
|
103
103
|
- **Report `pnpm josh backlog:plan --waves`** with the plan, never an order derived by hand; then start
|
|
104
104
|
the loop, leaving whatever is still labelled parked.
|
|
105
105
|
|
|
106
|
-
**`needs-decision`, `run:solo
|
|
107
|
-
|
|
108
|
-
`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`.
|
|
109
109
|
|
|
110
110
|
## The loop
|
|
111
111
|
|
|
@@ -134,7 +134,7 @@ verdicts and stops are the driver's own.
|
|
|
134
134
|
| Step | Where it is defined |
|
|
135
135
|
| --- | --- |
|
|
136
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 |
|
|
137
|
-
| `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" |
|
|
138
138
|
| `josh latest` on `required` only, once, never in a lane | `backlogrun-child.md` → "`josh latest` runs once per session, not once per child" |
|
|
139
139
|
| `pnpm josh run:hold <N>`'s preflight, before each child not in a lane | `docs/josh-commands-run.md` → "`josh run:hold`" |
|
|
140
140
|
| `pnpm josh run:progress --wait` in the background, `--mark` at every real report | `progress-watcher.md` → "Progress while the run is quiet" |
|
|
@@ -70,7 +70,7 @@ reference is read as a section").
|
|
|
70
70
|
| Guard | Limit | On reaching it |
|
|
71
71
|
| --- | --- | --- |
|
|
72
72
|
| Children per run | 30 | Stop and report; an epic this large should be split. |
|
|
73
|
-
| Issues filed per run |
|
|
73
|
+
| Issues filed per run | `prerequisite.md`'s cap | Stop and report. |
|
|
74
74
|
| Consecutive child failures | 3 | Stop and report; something is wrong with the environment, not the children. |
|
|
75
75
|
|
|
76
76
|
A failure that is not consecutive parks its child and the run continues.
|
|
@@ -6,12 +6,17 @@ This is the execution contract for `fullrun` and `backlogrun`, and for `prrun` u
|
|
|
6
6
|
Review results and successful pushes are never turn boundaries.
|
|
7
7
|
|
|
8
8
|
0. **A lane child**: `pnpm josh main:merge`, the self-check (`prompts/review.md` → "Before round 1 —
|
|
9
|
-
the implementer's self-check"), the scoped pair,
|
|
10
|
-
"
|
|
9
|
+
the implementer's self-check"), the scoped pair, the ship body draft filled in
|
|
10
|
+
(`report-format.md` → "PR 本文の受け入れ条件の対応表"), `pnpm josh ship --detach --review
|
|
11
|
+
"<title> #<N>"` (`--cite <N>`), then **end the turn** on `launched`/`busy`. No `pnpm josh gate`,
|
|
12
|
+
`check` or `metrics` before it, by hand: ship reuses the scoped pair green on this tree and base
|
|
13
|
+
and runs the gate after its sync (`scripts/run/ship/run-ship-steps.ts`); a standalone `check` or
|
|
14
|
+
`metrics` leaves no record it reuses. A stop relaunches a child
|
|
11
15
|
whose prompt carries the failed output's tail and the changed files (`pnpm josh ship --log <N>` when
|
|
12
16
|
the stage printed nothing) and (Anthropic lane) the re-detach to run after
|
|
13
17
|
the fix — `pnpm josh ship --detach`, `--review` only if the stopped ship carried it and stopped before
|
|
14
|
-
round 2, which is final (`scripts/run/ship/run-ship-next.ts`); the
|
|
18
|
+
round 2, which is final, or the review went stale (`scripts/run/ship/run-ship-next.ts`); the
|
|
19
|
+
supervisor skips a recorded round 1 unless it went stale.
|
|
15
20
|
`failed` → step 1. A backgrounded `ship` issued alone is moved to the foreground by the hook
|
|
16
21
|
rather than refused.
|
|
17
22
|
1. Run `pnpm josh main:merge`. **Then issue `pnpm josh run:cut <N>` alone, before the scoped pair and
|
|
@@ -19,8 +24,8 @@ Review results and successful pushes are never turn boundaries.
|
|
|
19
24
|
(`prompts/review.md` → "Before round 1 — the implementer's self-check"), run the final scoped lint/test pair and
|
|
20
25
|
`pnpm josh run:review`: it starts `pnpm josh gate` in the background and prints the `/code-review`
|
|
21
26
|
brief in one call, so the two overlap. Launch the `/code-review` subagent as the `general-purpose`
|
|
22
|
-
agent type with that brief and
|
|
23
|
-
|
|
27
|
+
agent type with that brief and its `model` (`delegation.md`) (every tool, so `--fix` applies;
|
|
28
|
+
never a guessed type name).
|
|
24
29
|
Never load the review skill in the main line.
|
|
25
30
|
2. Once the review returns, run `pnpm josh run:review --join` to join and read the gate before
|
|
26
31
|
committing; it exits non-zero on a red gate. Fix any red check, then rerun the affected scoped check
|
|
@@ -41,6 +46,7 @@ Review results and successful pushes are never turn boundaries.
|
|
|
41
46
|
passes takes `--comment`** (`observation-ledger.md` → "The commit path").
|
|
42
47
|
**`pnpm josh followup` refuses the merge until the round is recorded**
|
|
43
48
|
(`pnpm josh review:record --check --issue <N>`).
|
|
49
|
+
A change to the run tooling also takes the interaction review: `prompts/review.md` → "Interaction review".
|
|
44
50
|
5. **The clean path ships in one call** — with no second round due, background
|
|
45
51
|
`pnpm josh ship "<title> #<N>" --body-file <evidence.md>` — the file carries `## 実機証跡` and
|
|
46
52
|
`## 受け入れ条件の対応` (`report-format.md`), both asked at the preflight: PR preflight → gate → `git -y` →
|
|
@@ -49,8 +55,8 @@ Review results and successful pushes are never turn boundaries.
|
|
|
49
55
|
`pnpm josh git -y "<title> #<N>"`, round 2 beside CI, then `pnpm josh followup`.
|
|
50
56
|
|
|
51
57
|
A lane child may end once, at step 0 or the pre-gate cut (`pre-gate-cut.md`); never at the push. The chain otherwise stops only when the PR is merged, the completion Telegram was sent, and
|
|
52
|
-
`
|
|
53
|
-
CodeRabbit/Claude Review finding or a CI failure. In a lane
|
|
58
|
+
`run:tail` returned to the default branch, or when user judgment is required by an unverifiable
|
|
59
|
+
CodeRabbit/Claude Review finding or a CI failure. In a lane the parent closes it. Managed config claims are reported by `followup` and do not stop the merge.
|
|
54
60
|
|
|
55
61
|
Recommendations are informational; severity decides. A CodeRabbit rate-limit warning is not a finding.
|
|
56
62
|
|
|
@@ -37,10 +37,11 @@ classification lives in `backlogrun-child.md` → "Each child runs in a delegate
|
|
|
37
37
|
main line.** The unit returns conclusions with `file:line` citations, never the file text. It may run
|
|
38
38
|
a temporary probe script and return its output.
|
|
39
39
|
|
|
40
|
-
**
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
**Subject reading beyond the edit targets → dispatch the unit before the first read**
|
|
41
|
+
(`pnpm josh run:prep` → `=== investigation ===`). **The threshold is 3 files, and it is a count, not a
|
|
42
|
+
forecast** — where the guard refuses, not a budget. Brief the unit on what was already read.
|
|
43
|
+
**A delegation resets the counter rather than spending it**; the `investigation` row of
|
|
44
|
+
`pnpm josh rule:list` refuses the threshold call, in a lane child too (`pnpm josh delegate --list`).
|
|
44
45
|
|
|
45
46
|
**Dispatch the unit as the `investigator` agent** (`kit:investigator` in a consumer) — read-only, on
|
|
46
47
|
the `model` its definition names.
|
|
@@ -57,4 +58,4 @@ the main line decides what that means and what to change.
|
|
|
57
58
|
|
|
58
59
|
**A `general-purpose` dispatch → set `model`**: `sonnet` for routine work, `opus` for judgment; a review
|
|
59
60
|
takes the alias of the `model=` id its brief prints (`claude-opus-5-5` → `opus`). Delivered by the
|
|
60
|
-
`agent-model` row of `pnpm josh rule:
|
|
61
|
+
`agent-model` row of `pnpm josh rule:list`.
|
|
@@ -18,9 +18,9 @@ short-circuits with a non-zero exit. The numbered steps are the detail behind ea
|
|
|
18
18
|
source; a cross-repository target resolves its checkout from `pnpm josh doctor` first
|
|
19
19
|
(`target-repository.md`).
|
|
20
20
|
2. **`in-progress` rides on the hold** — for a `#N`, `run:entry` applies it once the tree is held and
|
|
21
|
-
the budget allows the run; a `new` entry
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
the budget allows the run; a `new` entry runs `pnpm josh run:hold --adopt <N>` right after filing,
|
|
22
|
+
which re-keys the hold and applies it (`fullrun-steps.md`). Every stop that leaves the tree clean
|
|
23
|
+
ends with `pnpm josh run:release <N>`, which removes the label with the record.
|
|
24
24
|
3. **Ask the session boundary in the same turn as the hold** — `pnpm josh cost --cut`. `under`
|
|
25
25
|
continues; `over` (or unanswerable) stops before the title — `run:entry` sends the `confirmation`
|
|
26
26
|
Telegram and runs `run:release` (`stop notified: …`); by hand only for `new`. **Skip it when
|
|
@@ -31,8 +31,8 @@ short-circuits with a non-zero exit. The numbered steps are the detail behind ea
|
|
|
31
31
|
dependency scope in one report; a `new` entry runs it once filed. The comment stops, the
|
|
32
32
|
`human_review` stop (`needs-human-review.md`) and the dependency decision are read off it.
|
|
33
33
|
5. **Print the next action — `pnpm josh run:step <N>`** — and follow it into the command's step list.
|
|
34
|
-
Before implementing, `pnpm josh ms`, then `
|
|
35
|
-
|
|
34
|
+
Before implementing, `pnpm josh ms`, then on `run:prep`'s `latest: required`
|
|
35
|
+
`pnpm josh latest:if-required` (`latest-gate.md`) — never on every run. `run:step` names every later
|
|
36
36
|
action in order, each read at the point-of-use document `SKILL.md` lists, never re-narrated here
|
|
37
37
|
(`residency.md` → "順序の問い").
|
|
38
38
|
|
|
@@ -49,12 +49,12 @@ lane child starts none and never reads that document (`pnpm josh read:set lane-c
|
|
|
49
49
|
separately-mergeable deliverables over one gate: file the children (each `route:split`) and the epic,
|
|
50
50
|
then **STOP** with "Please run `backlogrun #<E> --only` to execute this epic." Typing the command
|
|
51
51
|
approved **one** Issue, never a batch.
|
|
52
|
-
- **A prerequisite** — file it (`route:tier-a`),
|
|
53
|
-
"Please run `backlogrun #<E> --only` to execute this epic"; `prerequisite.md` is the single
|
|
54
|
-
the filing, the
|
|
52
|
+
- **A prerequisite** — file it (`route:tier-a`), `pnpm josh run:pause <M> --for <N>`, and **STOP**
|
|
53
|
+
with "Please run `backlogrun #<E> --only` to execute this epic"; `prerequisite.md` is the single
|
|
54
|
+
source of the filing, the pause and the epic:bundle branch.
|
|
55
55
|
- **An observation** — `observation-filing.md` (ask first if interactive).
|
|
56
56
|
|
|
57
|
-
**
|
|
57
|
+
**The per-run filing cap is `prerequisite.md`'s** (the `filing-cap` row); on its refusal, stop and report.
|
|
58
58
|
|
|
59
59
|
**The `into <target>` suffix** (a `new` entry) inserts the artifact into a named epic —
|
|
60
60
|
`into-target.md`, read when the suffix is typed.
|
|
@@ -31,8 +31,8 @@ A pre-merge failure stops the run; an unverifiable AI finding or CI failure need
|
|
|
31
31
|
`confirmation` Telegram. A post-merge cleanup failure is named and does not undo the merge; run the
|
|
32
32
|
named recovery without rerunning `followup`. The printed result is authoritative.
|
|
33
33
|
|
|
34
|
-
After
|
|
35
|
-
Never delete the branch unless requested. The sections below are read when the output needs reading.
|
|
34
|
+
After the merge `run:tail` returns to the default branch — `ship` runs it; after a bare `followup`, run
|
|
35
|
+
`pnpm josh run:tail <N>`. In a lane the parent uses `pnpm josh lane:close <N>`. Never delete the branch unless requested. The sections below are read when the output needs reading.
|
|
36
36
|
|
|
37
37
|
## The options
|
|
38
38
|
|
|
@@ -49,8 +49,6 @@ Never delete the branch unless requested. The sections below are read when the o
|
|
|
49
49
|
|
|
50
50
|
Invoking `fullrun` is itself the explicit authorization to merge.
|
|
51
51
|
|
|
52
|
-
- **Always run `pnpm josh ms` after a successful merge**. **In a lane, `pnpm josh lane:close <N>` is the
|
|
53
|
-
terminal step instead** — `josh ms` refuses there.
|
|
54
52
|
- **Green CI is not authorization to merge while AI review findings are open.** A blocker sends a
|
|
55
53
|
`confirmation` Telegram and exits non-zero — fix and re-run. SonarCloud is carried by the required
|
|
56
54
|
`SonarQube` check.
|
|
@@ -74,44 +72,24 @@ to 32 minutes; give the call the largest timeout it accepts (`timeout: 600000` i
|
|
|
74
72
|
harness detaches the call, wait for its report; where it kills it, set `JOSH_CI_TIMEOUT_SECONDS` and
|
|
75
73
|
re-run once CI has settled. Re-run after every follow-up commit.
|
|
76
74
|
|
|
75
|
+
In a lane, the detached ship supervisor runs it, not the child — its merge wait holds no lane
|
|
76
|
+
place: `scripts/backlog/backlog-occupied.ts`.
|
|
77
|
+
|
|
77
78
|
**The count of unreleased merges is surfaced at completion — not a version.** It prints `🚚 unreleased
|
|
78
79
|
merges on main: <n>`. **Do not report a shipped version** — a child no longer bumps. See "When `pnpm
|
|
79
80
|
josh release` runs" below.
|
|
80
81
|
|
|
81
|
-
## Reading the stage-timing block
|
|
82
|
-
|
|
83
|
-
One `followup stage: <name> <seconds>` row per stage, then `followup stages total:`.
|
|
84
|
-
|
|
85
|
-
- **A failed run prints it too**, up to the stage that threw, named `interrupted`. The `merge` row
|
|
86
|
-
appears only on a run that merged.
|
|
87
|
-
- **A row named `<a>-and-<b>` is a batch of requests sent together**; `checks-wait` is never
|
|
88
|
-
overlapped.
|
|
89
|
-
- **The total is the sum of the stages**, not the wall clock — the post-merge tail sits outside it.
|
|
90
|
-
|
|
91
82
|
A `failure` Telegram is sent **by hand, exactly once**, and only when recovery is given up:
|
|
92
83
|
|
|
93
84
|
```bash
|
|
94
85
|
pnpm josh notify --task-type failure --issue-url "<issue-url>" --body-file <reason-file>
|
|
95
86
|
```
|
|
96
87
|
|
|
97
|
-
##
|
|
98
|
-
|
|
99
|
-
`followup` scans top-level PR comments from AI reviewers **independently of CI status**.
|
|
100
|
-
|
|
101
|
-
- **Blockers are structural, not NLP**: a Claude Review body with `### Issues`, `### Problem`,
|
|
102
|
-
`#### Logic bug` or a numbered `### 1. …` heading; a CodeRabbit `Actionable comments posted: N` with
|
|
103
|
-
N > 0. Rate-limit notices and sign-offs (`All issues resolved ✓`) match nothing.
|
|
104
|
-
- **A standing blocker without `--ai-review-ignore-reason`** sends a `confirmation` Telegram and exits
|
|
105
|
-
non-zero; with it, the reason is posted and the run proceeds.
|
|
106
|
-
- **A comment listing that could not be read is a standing blocker**.
|
|
107
|
-
- **Temporary**: CodeRabbit is non-blocking end to end — out of the default required checks
|
|
108
|
-
(restore via `JOSH_REQUIRED_CHECKS`); its findings are audit notes.
|
|
109
|
-
|
|
110
|
-
## Config file reporting
|
|
88
|
+
## What the output means
|
|
111
89
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
90
|
+
**A standing AI-review blocker** is fixed, or passed with `--ai-review-ignore-reason` once verified
|
|
91
|
+
inapplicable. The stage-timing block, the blocker shapes and the config-claim report:
|
|
92
|
+
`docs/josh-commands-automation.md` → "`josh followup`" and its detail document.
|
|
115
93
|
|
|
116
94
|
## When `pnpm josh release` runs
|
|
117
95
|
|
|
@@ -7,55 +7,47 @@ full.
|
|
|
7
7
|
|
|
8
8
|
File Issues with `pnpm josh issue:file` (it applies the classification labels); see `prompts/collaboration-workflow/issue-template.md`.
|
|
9
9
|
|
|
10
|
-
**`in-progress` is already on the Issue** — `run:entry` applied it once the tree was held and the
|
|
11
|
-
budget allowed the run, and `run:release <N>` takes it back off
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
in
|
|
21
|
-
`pnpm josh
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
`
|
|
36
|
-
implementation summary via `--notify-message` in the session language, leading with the three
|
|
37
|
-
plain-language lines: `"Implemented <title>\nCause: ...\nFix: ...\nResult: ...\n\nDetails:\n-
|
|
38
|
-
<change1>\n- <change2>"`. **`pnpm josh followup` waits for CI, verifies AI review findings, sends the
|
|
39
|
-
completion notification, then merges; if blockers are found it exits non-zero — fix and re-run.**
|
|
40
|
-
**Run `pnpm josh ms` after the merge.** A Codex lane skips it — the parent's `run:merge` syncs the
|
|
41
|
-
primary checkout; a Claude run keeps it.
|
|
10
|
+
1. **`in-progress` is already on the Issue** — `run:entry` applied it once the tree was held and the
|
|
11
|
+
budget allowed the run, and `run:release <N>` takes it back off.
|
|
12
|
+
2. Read the Issue and its comments off `run:entry`'s `run:prep` report (`issue-comments.md`).
|
|
13
|
+
3. **Record the agreed plan** with `pnpm josh issue:plan <N> --body-file <path>`, adding
|
|
14
|
+
`--title "<title>"` when the title is not in English or can be phrased more clearly (a blank body
|
|
15
|
+
takes the plan, otherwise it becomes a comment; its `### 影響を受ける既存の利用者` section is drafted
|
|
16
|
+
with `pnpm josh plan:consumers` — `kickoff.md` step 4).
|
|
17
|
+
4. Run `pnpm josh ms`, then update dependencies only where the `run:prep` report answers
|
|
18
|
+
`latest: required` — `latest-gate.md` is its single source, and on `required` load the
|
|
19
|
+
`dependency-update` skill afterwards. **A dispatched lane child skips `pnpm josh ms`** — it refuses
|
|
20
|
+
in a lane, and `pnpm josh main:merge` brings the latest default in during the gate. The parent runs
|
|
21
|
+
`pnpm josh ms` in the primary checkout, never the child — `backlogrun-lanes.md` and
|
|
22
|
+
`backlogrun-child.md` are the single sources.
|
|
23
|
+
5. Implement. The `plan` event `run:board` draws 📝 from is written by code — by `run:entry` for a
|
|
24
|
+
`run:planned` issue, else at the first implementation edit — never by hand; no cut follows the
|
|
25
|
+
plan — a lane child's context is bounded by the threshold-gated implementation cut alone.
|
|
26
|
+
6. Run the **verification gate** through the merge: `chain-rule.md` → "Run the review-to-merge
|
|
27
|
+
chain". Branch-2 filing (`pnpm josh issue:file`, which runs `epic:bundle` itself) runs before
|
|
28
|
+
`pnpm josh ship`.
|
|
29
|
+
7. When running `pnpm josh followup`, pass an implementation summary via `--notify-message` in the
|
|
30
|
+
session language, leading with the three plain-language lines: `"Implemented <title>\nCause:
|
|
31
|
+
...\nFix: ...\nResult: ...\n\nDetails:\n- <change1>\n- <change2>"`. **`pnpm josh followup` waits
|
|
32
|
+
for CI, verifies AI review findings, sends the completion notification, then merges; if blockers
|
|
33
|
+
are found it exits non-zero — fix and re-run.**
|
|
34
|
+
8. `run:tail` returns the checkout to the default branch (`main:sync`) after the merge; a lane child's
|
|
35
|
+
`run:tail` skips that step and the parent syncs the primary checkout.
|
|
42
36
|
|
|
43
37
|
## The `fullrun new` step list
|
|
44
38
|
|
|
45
39
|
`kickoff new` + `fullrun #N` in one run. Steps: (1) Derive an English title, or use the provided one.
|
|
46
|
-
(2) Create Issue: `pnpm josh issue:file "<title>" --body-file <body-file
|
|
40
|
+
(2) Create Issue: `pnpm josh issue:file "<title>" --body-file <body-file>`,
|
|
47
41
|
with the labels `kickoff.md` → "Words typed after `new`" maps (per
|
|
48
42
|
`prompts/collaboration-workflow/issue-template.md`) — its duplicate scan runs first, and a candidate
|
|
49
43
|
that covers the same work stops the run rather than filing a second Issue (`issue-scout.md`). Capture
|
|
50
|
-
`<N>`. (3)
|
|
51
|
-
|
|
52
|
-
in the session language:
|
|
53
|
-
|
|
54
|
-
`
|
|
55
|
-
|
|
56
|
-
`
|
|
57
|
-
`pnpm josh stash:pop "fullrun new: pre-existing changes"` — by message, never a positional `git stash
|
|
58
|
-
pop`. (8) Implement. (9) Run the verification gate (as in `chain-rule.md`; only the first review round
|
|
44
|
+
`<N>`. (3) `pnpm josh run:hold --adopt <N>` — re-keys the bare hold to `<N>` and applies `in-progress`;
|
|
45
|
+
every later stop releases with `run:release <N>`. (4) Record the agreed plan
|
|
46
|
+
in the session language: `pnpm josh issue:plan <N> --body-file <path>` (its consumers section as in
|
|
47
|
+
`kickoff.md` step 4). (5) `pnpm josh stash:push "fullrun new: pre-existing changes"`. (6) `pnpm josh ms`. (7)
|
|
48
|
+
`pnpm josh run:prep <N>`; on `latest: required` run `pnpm josh latest:if-required` and load the `dependency-update`
|
|
49
|
+
skill; on `skip` neither runs (`latest-gate.md` is the single source). If (5) answered `stashed`,
|
|
50
|
+
`pnpm josh stash:pop "fullrun new: pre-existing changes"`. (8) Implement. (9) Run the verification gate (as in `chain-rule.md`; only the first review round
|
|
59
51
|
runs here). (9a) **Ask `pnpm josh review:round2 --round-1-closed` whether a second round is due**, once
|
|
60
52
|
round 1's fixes are in and before the commit. (10) Where the tree was edited after the first gate
|
|
61
53
|
started, re-run `pnpm josh gate` and join it. (11) `pnpm josh git -y "<title> #<N>"` — the pull request
|
|
@@ -67,9 +59,8 @@ round was due** (9a `skip`), fold steps (10)–(13) and the release bookkeeping
|
|
|
67
59
|
ship "<title> #<N>" --notify-message "..."` (gate → commit/push/PR → the CI-wait `followup` → `run:tail`,
|
|
68
60
|
stopping at the first failed step); **where a second round ran**, the PR opened
|
|
69
61
|
at (11) and the region stays separate — `pnpm josh followup "<title> #<N>" --notify-message "..."` then
|
|
70
|
-
`pnpm josh run:tail <N>`. (14) **
|
|
71
|
-
|
|
72
|
-
"When `pnpm josh release` runs").
|
|
62
|
+
`pnpm josh run:tail <N>`. (14) **Close the completion summary with `run:tail`'s `release:scope`
|
|
63
|
+
answer** (`followup.md` → "When `pnpm josh release` runs").
|
|
73
64
|
|
|
74
65
|
## The release ask — the last step of either form
|
|
75
66
|
|
|
@@ -9,8 +9,8 @@ run's next single action. `chain-rule.md`, `followup.md`, `background-commands.m
|
|
|
9
9
|
|
|
10
10
|
- **The entry passes no `--to`**: `pnpm josh run:entry <N>` is `fullrun`'s stage. Follow `run:step`
|
|
11
11
|
into `fullrun-steps.md` — the `fullrun #N` list or the `fullrun new` list.
|
|
12
|
-
- **The end merges**: `run:step` names the verification gate, `pnpm josh followup
|
|
13
|
-
|
|
12
|
+
- **The end merges**: `run:step` names the verification gate, `pnpm josh followup` and the release ask
|
|
13
|
+
in order. Invoking `fullrun` authorizes the merge, through `pnpm josh followup` only.
|
|
14
14
|
- **A split or a prerequisite stops the run**: typing `fullrun` approved **one** Issue.
|
|
15
15
|
|
|
16
16
|
## The lane-child seam
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# `halfrun` — the manifest (implement + verify, stop before commit)
|
|
2
2
|
|
|
3
|
-
When this run files a new Issue, file it with `pnpm josh issue:file`, which lints the body and applies the classification labels it declares beside the `--
|
|
3
|
+
When this run files a new Issue, file it with `pnpm josh issue:file`, which lints the body and applies the classification labels it declares beside the `--route` label; `prompts/collaboration-workflow/issue-template.md` is the single source for this classification.
|
|
4
4
|
|
|
5
5
|
`halfrun` implements the change and runs the full verification gate, then **stops before commit** —
|
|
6
6
|
nothing is committed, pushed, or opened as a PR — so a person verifies the working tree by hand. The
|
|
@@ -15,36 +15,28 @@ entry sequence and the stop branches are `entry-sequence.md`.
|
|
|
15
15
|
|
|
16
16
|
## The step list
|
|
17
17
|
|
|
18
|
-
`halfrun #<N>`: read Issue #N and its comments → **
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
`dependency-update` skill) → implement → run the **full verification gate** (refactor →
|
|
18
|
+
`halfrun #<N>`: read Issue #N and its comments → **record the agreed plan**, normalizing
|
|
19
|
+
the title (`pnpm josh issue:plan`, same as `fullrun`) → `pnpm josh ms`, then on `run:prep`'s
|
|
20
|
+
`latest: required` `pnpm josh latest:if-required` (`latest-gate.md`; the `dependency-update` skill) → implement → run the **full verification gate** (refactor →
|
|
22
21
|
start `pnpm josh gate` beside a subagent `/code-review` with the brief `pnpm josh review:brief` prints,
|
|
23
22
|
join the gate before the stop, iterate to no high/medium findings, within the round cap (`prompts/review.md`) → `pnpm josh
|
|
24
23
|
test:e2e`, run by **you**, because `halfrun` opens no pull request and there is no CI E2E job; a printed
|
|
25
24
|
skip is the answer where the project has no suite) → **mark the stop: `pnpm josh run:hold <N>
|
|
26
|
-
--halfrun-stop`** (the record `fullrun #<N>` adopts; `
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
the gate. The direct commands follow for shipping without an agent:
|
|
31
|
-
`pnpm josh notify --task-type confirmation --issue-url "<issue-url>" --body=$'halfrun ready for manual
|
|
32
|
-
verification\nNext: prrun #<N> | fullrun #<N>\nWithout an agent: pnpm josh git -y "<title> #<N>" && pnpm josh
|
|
33
|
-
followup "<title> #<N>" --notify-message "Implemented <title>\\nCause: ...\\nFix: ...\\nResult:
|
|
34
|
-
...\\n\\nDetails:\\n- <change1>"' --recommended "Verify by hand, then prrun #<N>" --alternative "fullrun
|
|
35
|
-
#<N>"`. The stop report names the same two, in the same order.
|
|
25
|
+
--halfrun-stop`** (the record `fullrun #<N>` adopts; refused with `e2e-owed` until `test:e2e` answered
|
|
26
|
+
green on this tree; it also sends the `confirmation` Telegram, its body led by
|
|
27
|
+
`Next: prrun #<N> | fullrun #<N>` — never compose one) → **stop**. Plan comments are in
|
|
28
|
+
the session language. The stop report names `prrun #<N>` (recommended) and `fullrun #<N>`, in that order.
|
|
36
29
|
**Invoking `halfrun` is _not_ authorization to commit, push, or merge** — do not run `pnpm josh git -y` or `pnpm josh followup` yourself. If the user comes
|
|
37
|
-
back with fixes, treat each as a new round: implement, re-run `pnpm josh gate`,
|
|
38
|
-
`confirmation`
|
|
30
|
+
back with fixes, treat each as a new round: implement, re-run `pnpm josh gate`, mark the stop again
|
|
31
|
+
(it sends the `confirmation`), stop again.
|
|
39
32
|
|
|
40
33
|
`halfrun new` or `halfrun new "<title>"`: `kickoff new` + `halfrun #<N>` (no Issue exists yet). Steps
|
|
41
34
|
mirror `fullrun new` (1)–(8): derive an English title (or use the provided one) → create the Issue
|
|
42
|
-
(`pnpm josh issue:file "<title>" --body-file <body-file
|
|
35
|
+
(`pnpm josh issue:file "<title>" --body-file <body-file>`, with the labels
|
|
43
36
|
`kickoff.md` → "Words typed after `new`" maps, body per
|
|
44
|
-
`prompts/collaboration-workflow/issue-template.md`; its duplicate scan is read per `issue-scout.md`) →
|
|
45
|
-
any pre-existing changes with `
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
Telegram and **stop**.
|
|
37
|
+
`prompts/collaboration-workflow/issue-template.md`; its duplicate scan is read per `issue-scout.md`) → `pnpm josh run:hold --adopt <N>` (as `fullrun new` (3)) → post the agreed plan → stash
|
|
38
|
+
any pre-existing changes with `pnpm josh stash:push "halfrun new: pre-existing changes"`, popped
|
|
39
|
+
after `stashed` with `pnpm josh stash:pop "halfrun new: pre-existing changes"` →
|
|
40
|
+
`pnpm josh ms` → `pnpm josh run:prep <N>`, and on `latest: required` `pnpm josh latest:if-required` → implement → run the gate (as above, `pnpm
|
|
41
|
+
josh test:e2e` run by **you**) → `pnpm josh run:hold <N> --halfrun-stop` (it sends the `confirmation`)
|
|
42
|
+
→ **stop**.
|
|
@@ -47,25 +47,29 @@ means "waiting for an answer", and here the answer exists.
|
|
|
47
47
|
the Issue (`scripts/issue/issue-labels.ts` → `NOT_DIRECTLY_RUNNABLE_LABELS`, `epic-classify.ts` →
|
|
48
48
|
`human`), and `epic:busy` stops counting it. **Only a person removes it, by closing the Issue.**
|
|
49
49
|
|
|
50
|
+
**Commit nothing, push nothing, open no pull request** — run one command; it posts the evidence,
|
|
51
|
+
applies `already-done` and releases the hold, in that order, stopping at the first failure:
|
|
52
|
+
|
|
50
53
|
```bash
|
|
51
|
-
|
|
52
|
-
gh api repos/{owner}/{repo}/issues/<N>/labels -f 'labels[]=already-done'
|
|
54
|
+
pnpm josh issue:already-done <N> --evidence-file <path>
|
|
53
55
|
```
|
|
54
56
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
4. **Then behave as the entry point does for a parked child.** A typed `fullrun` / `halfrun` sends a
|
|
62
|
-
`confirmation` Telegram naming the Issue and the covering merge, and stops; a `backlogrun` child is
|
|
63
|
-
park-and-continue (`backlogrun-park.md` → "park and continue").
|
|
64
|
-
5. **Never close the Issue** — Tier C at every entry point.
|
|
57
|
+
**The evidence file names the merging pull request or commit and, per acceptance criterion, the
|
|
58
|
+
`file:line` that satisfies it.** **A claim with no citations is not the finding this exit is for.**
|
|
59
|
+
|
|
60
|
+
Then behave as the entry point does for a parked child: a typed `fullrun` / `halfrun` sends a
|
|
61
|
+
`confirmation` Telegram naming the Issue and the covering merge, and stops; a `backlogrun` child is
|
|
62
|
+
park-and-continue (`backlogrun-park.md` → "park and continue"). **Never close the Issue** — Tier C.
|
|
65
63
|
|
|
66
64
|
**Looking familiar is no license to skip the work**: a criterion you cannot point at merged code for is
|
|
67
65
|
one this run still owes.
|
|
68
66
|
|
|
67
|
+
## A measurement-only Issue
|
|
68
|
+
|
|
69
|
+
**Every criterion is a measurement, so no pull request closes it** → `pnpm josh issue:measured <N>
|
|
70
|
+
--evidence-file <path>` (per criterion, the result and its run), never a bare comment: an OPEN child is
|
|
71
|
+
parked `run:stalled`. Invoking `fullrun` / `backlogrun` authorizes this close. `docs/josh-commands-backlog.md` → "`josh issue:measured`".
|
|
72
|
+
|
|
69
73
|
## A long thread
|
|
70
74
|
|
|
71
75
|
**The fetch is one call; what costs is carrying it** — hence the projection to author, timestamp and
|
|
@@ -6,8 +6,8 @@ Every filing asks whether the work already exists and which epic owns it; the co
|
|
|
6
6
|
named in `--distinct`:
|
|
7
7
|
|
|
8
8
|
```bash
|
|
9
|
-
pnpm josh issue:file "<title>" --body-file <complete-draft.md>
|
|
10
|
-
pnpm josh issue:file "<title>" --body-file <complete-draft.md> --
|
|
9
|
+
pnpm josh issue:file "<title>" --body-file <complete-draft.md> [--route <route>]
|
|
10
|
+
pnpm josh issue:file "<title>" --body-file <complete-draft.md> --distinct 2801,2795
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
- **`Duplicates:` is read, not skimmed.** Open each candidate and apply `issue-fold-existing.md`
|