@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
|
@@ -4,18 +4,22 @@
|
|
|
4
4
|
nothing and prints the stage line alone; on `start: reached` report the stage line and **stop**. Then:
|
|
5
5
|
1. Read Issue #N **and every comment on it** — `pnpm josh issue:read <N>`; the later text is the
|
|
6
6
|
agreement in force (`issue-comments.md`, which also carries the answers that stop the run).
|
|
7
|
-
2.
|
|
7
|
+
2. Derive a clear English title.
|
|
8
8
|
3. Analyze requirements → **scope assessment per `split-assessment.md`**.
|
|
9
|
-
4.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
4. **Record the plan** — written to a file in the session language (`JOSH_SESSION_LANG`, default
|
|
10
|
+
`ja`), then `pnpm josh issue:plan <N> --body-file <path> --title "<title>" --planned`: it renames
|
|
11
|
+
the issue, fills a blank body or comments otherwise, and applies `run:planned`, so the next
|
|
12
|
+
command's `run:entry` starts at the implementation. A target named in front of the reference
|
|
13
|
+
adds `--repo <owner/name>`. Before writing the plan, run `pnpm josh plan:consumers
|
|
14
|
+
<identifier...>` on what it adds or changes and finish the `### 影響を受ける既存の利用者` draft it
|
|
15
|
+
prints; `issue:plan` refuses a plan without it (`docs/josh-commands-backlog.md` → "`josh issue:plan`").
|
|
16
|
+
5. Send the Telegram notification, its last line `Next: halfrun #<N> | prrun #<N> | fullrun #<N>` →
|
|
15
17
|
**stop** (do not implement).
|
|
16
18
|
|
|
17
|
-
**Two or more separately-mergeable deliverables** take the split path instead of a plan:
|
|
18
|
-
|
|
19
|
+
**Two or more separately-mergeable deliverables** take the split path instead of a plan: rename `#N`
|
|
20
|
+
to the step-2 title (`gh api -X PATCH repos/{owner}/{repo}/issues/<N> -f title="<title>"` — neither
|
|
21
|
+
`issue:plan` nor `epic --promote` runs here to apply it), create the children as in `kickoff new`,
|
|
22
|
+
then either **promote `#N`** with `pnpm josh epic --promote <N> <N1> <N2>
|
|
19
23
|
... [--ordered] [--rationale-file <path|->]` (when `#N` is a request, a discussion or a container), or
|
|
20
24
|
keep `#N` as a child and create a new epic with `pnpm josh epic`. That branch is Tier A: choose and
|
|
21
25
|
record the reasoning on the Issue. Present `backlogrun #<E> --only` and stop.
|
|
@@ -41,13 +45,13 @@ gate must hold **together**. The rest of `split-assessment.md` is read when a sp
|
|
|
41
45
|
- `kickoff new` or `kickoff new "<title>"`: (0) **Scope assessment** per `split-assessment.md` — one
|
|
42
46
|
deliverable takes the **single-issue path**, several the **multi-issue split path**.
|
|
43
47
|
- **Single-issue path**: (1) Derive an English title, or use the one given. (2) `pnpm josh issue:file
|
|
44
|
-
"<title>" --body-file <body-file
|
|
48
|
+
"<title>" --body-file <body-file>` plus the labels the words typed after `new` name
|
|
45
49
|
("Words typed after `new`", below; body per `prompts/collaboration-workflow/issue-template.md`) —
|
|
46
50
|
its duplicate scan runs first, and a candidate covering the same work stops the run (`SKILL.md` →
|
|
47
51
|
`issue-scout.md`). Capture `<N>`. (3) Post the plan as `kickoff #<N>` does. (4) Telegram. (5)
|
|
48
52
|
**Stop**.
|
|
49
53
|
- **Multi-issue split path**: (1) Per deliverable, `pnpm josh issue:file "<sub-title>" --body-file
|
|
50
|
-
<body-file> --
|
|
54
|
+
<body-file> --route split` plus the labels the words after `new` name (duplicate scan
|
|
51
55
|
per `issue-scout.md`). A split filed into another repository gives every child body the `## Origin`
|
|
52
56
|
backlink, the epic the same link as prose (never a checkbox row, which disables its auto-close), and
|
|
53
57
|
the originating Issue lists children and epic under `## Upstream issues`. (2) **Epic — always, for
|
|
@@ -57,19 +61,13 @@ gate must hold **together**. The rest of `split-assessment.md` is read when a sp
|
|
|
57
61
|
a hand-edited epic with `pnpm josh epic:check <E>`. (3) Telegram listing every created Issue. (4)
|
|
58
62
|
Present `backlogrun #<E> --only`. (5) **Stop**.
|
|
59
63
|
|
|
60
|
-
**The epic itself is never implemented** — `backlogrun` runs its *children*, and
|
|
61
|
-
|
|
64
|
+
**The epic itself is never implemented** — `backlogrun` runs its *children*, and it closes itself
|
|
65
|
+
once every child is closed, whichever josh path closes the last one. Children with no required order take `None — the children are
|
|
62
66
|
independent; any execution order works.` under `Dependencies`. **Only when the execution order
|
|
63
67
|
matters** (`execution-waves.md` → "When a wave may be declared") pass `--ordered`, which treats the
|
|
64
68
|
argument order as the dependency order.
|
|
65
69
|
|
|
66
|
-
|
|
67
|
-
name=epic -f color=5319e7 -f description="Tracks a batch of child issues from one split" --silent
|
|
68
|
-
2>/dev/null || true`, then `gh api repos/{owner}/{repo}/issues -f title="<epic-title>" -f
|
|
69
|
-
'labels[]=epic' -F body=@<body-file>` with the epic format of `issue-template.md`; an order is
|
|
70
|
-
recorded per pair with `gh api repos/{owner}/{repo}/issues/<N2>/dependencies/blocked_by -F
|
|
71
|
-
issue_id="$(gh api repos/{owner}/{repo}/issues/<N1> --jq .id)"` (the blocker's **database id**; a
|
|
72
|
-
failure is non-fatal), never folded into the creation call.
|
|
70
|
+
Without `josh`: `issue-template.md` → "複数 Issue に分割するときの epic Issue".
|
|
73
71
|
|
|
74
72
|
`pnpm josh issue:file` lints the body and applies the classification labels it declares (`issue-template.md`; `docs/josh-commands-backlog.md` → `josh issue:file`).
|
|
75
73
|
An Issue a consumer can use only once it is published is filed with `--release` (`kickoff new`), or linked with `pnpm josh issue:release <N>` (`kickoff #N`) — either makes it a blocker of the repository's `release` Issue, which never gets `auto-ok` on its own.
|
|
@@ -83,7 +81,10 @@ An Issue a consumer can use only once it is published is filed with `--release`
|
|
|
83
81
|
**Words after `new`** (`kickoff new high`) are read like `into <target>`, never inferred. Each adds its
|
|
84
82
|
labels to the filing; a word not in the table is asked about:
|
|
85
83
|
|
|
86
|
-
| Typed
|
|
87
|
-
|
|
|
84
|
+
| Typed | Added to `pnpm josh issue:file` |
|
|
85
|
+
| ---------- | ------------------------------- |
|
|
88
86
|
| `auto ok` | nothing — `issue:file` judges it |
|
|
89
|
-
| `
|
|
87
|
+
| `critical` | `--label priority:critical` |
|
|
88
|
+
| `high` | `--label priority:high` |
|
|
89
|
+
|
|
90
|
+
A typed priority wins: `issue:file` then skips the body's `- 優先度:` judgement (`scripts/issue/issue-priority.ts`).
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
# The dependency update — when `josh latest` runs
|
|
2
2
|
|
|
3
3
|
`josh latest` updates every dependency, the published ranges, `pnpm audit` and pnpm, in that
|
|
4
|
-
order and over the network.
|
|
5
|
-
references it and none restates it. History: `docs/maintainers/latest-gate-rationale.md` → "Where
|
|
6
|
-
each rule came from".
|
|
4
|
+
order and over the network.
|
|
7
5
|
|
|
8
6
|
## Ask the command; do not decide
|
|
9
7
|
|
|
@@ -28,26 +26,21 @@ judgement that the dependencies are probably still fresh.
|
|
|
28
26
|
## What runs when the answer is `required`
|
|
29
27
|
|
|
30
28
|
```bash
|
|
31
|
-
|
|
32
|
-
pnpm josh ms
|
|
33
|
-
pnpm josh latest # on `required` only
|
|
34
|
-
pnpm josh stash:pop "josh latest" # only if you stashed above — by message, never a positional pop
|
|
29
|
+
pnpm josh latest:if-required # stash → josh latest → pop by message; nothing on `skip`
|
|
35
30
|
```
|
|
36
31
|
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
It asks `latest:scope` itself, so a run reads `run:prep`'s `latest:` line and never asks again. A
|
|
33
|
+
failed update or a conflicted pop stops with the stash kept and names the pop to run.
|
|
39
34
|
|
|
40
35
|
Then **load the `dependency-update` skill and follow its procedure** — the overrides in **both**
|
|
41
36
|
`pnpm-workspace.yaml` and `package.json`, and the one expected `devEngines` pnpm bump — in every run in
|
|
42
37
|
which `josh latest` actually ran; never report the pins intact without having run it.
|
|
43
38
|
|
|
44
|
-
**On `skip`,
|
|
45
|
-
|
|
39
|
+
**On `skip`, the command does nothing** and the `dependency-update` skill is not read, because
|
|
40
|
+
nothing rewrote a pin for it to check.
|
|
46
41
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
The stash before it is the branch switch's, not the update's, so it is conditional on the **tree**,
|
|
50
|
-
never on the answer.
|
|
42
|
+
**`pnpm josh ms` is not this gate's** — it runs per issue and per child either way, bringing the
|
|
43
|
+
previous merge into the tree, before the update.
|
|
51
44
|
|
|
52
45
|
## The vulnerability net is not what moved
|
|
53
46
|
|
|
@@ -59,8 +52,6 @@ merge is CI**: the `Security Audit` job runs on every pull request and is one of
|
|
|
59
52
|
|
|
60
53
|
**The lock file the update rewrites lands with whichever issue ran it.** `josh latest` leaves
|
|
61
54
|
`pnpm-lock.yaml` modified and that issue's `pnpm josh git -y` commits it. Should the issue then fail
|
|
62
|
-
CI on a bump rather than on its own change, fix it forward before parking the issue for it.
|
|
63
|
-
for the elapsed-time window: `docs/maintainers/latest-gate-rationale.md` → "Why an elapsed-time
|
|
64
|
-
window rather than once per batch".
|
|
55
|
+
CI on a bump rather than on its own change, fix it forward before parking the issue for it.
|
|
65
56
|
|
|
66
57
|
`docs/josh-commands-automation.md` documents the command itself.
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# `needs-human-review` — the child that stops before its commit
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
answers `human_review: yes`. Rationale and history: `docs/maintainers/needs-human-review-rationale.md`
|
|
5
|
-
→ "Why the label exists".
|
|
3
|
+
Read the moment `pnpm josh issue:state <N>` answers `human_review: yes`.
|
|
6
4
|
|
|
7
5
|
An issue carrying **`needs-human-review`** is degraded to a `halfrun`-shaped stop, whichever entry
|
|
8
6
|
point reached it — `fullrun` or `backlogrun` — and the label may be applied **only by a person**.
|
|
@@ -10,18 +8,18 @@ point reached it — `fullrun` or `backlogrun` — and the label may be applied
|
|
|
10
8
|
- **Implementation and the verification gate run normally** — refactor, `pnpm josh gate`,
|
|
11
9
|
`/code-review`, exactly as for any other child.
|
|
12
10
|
- **Run `pnpm josh test:e2e` yourself before stopping.** With no pull request there is no CI E2E job,
|
|
13
|
-
and `pnpm josh followup` is never reached.
|
|
14
|
-
|
|
15
|
-
printed is not.
|
|
11
|
+
and `pnpm josh followup` is never reached. A printed skip is the answer for a project with no E2E
|
|
12
|
+
suite.
|
|
16
13
|
- **Nothing is committed, pushed, opened as a pull request or merged.** `pnpm josh bump`,
|
|
17
14
|
`pnpm josh git` and `pnpm josh followup` are never reached.
|
|
18
15
|
- **The working tree is left uncommitted, and nothing is stashed.**
|
|
19
|
-
- **
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
- **Mark the stop: `pnpm josh run:hold <N> --human-review-stop`, then stop the whole run.** It keeps
|
|
17
|
+
the hold, marks it as `halfrun`'s stop, and sends the `confirmation` Telegram with the resume command
|
|
18
|
+
and the lane directory — never compose one. It answers `e2e-owed` until `test:e2e` answered green on
|
|
19
|
+
this tree. The remaining children are not started — inside a `backlogrun` this is the one thing that
|
|
20
|
+
is *not* park-and-continue.
|
|
22
21
|
- **Resuming is `halfrun`'s stop exactly**: a person looks at the working tree and, if it is right,
|
|
23
|
-
carries on from the commit themselves. The stop report carries
|
|
24
|
-
Telegram.
|
|
22
|
+
carries on from the commit themselves. The stop report carries the resume command too.
|
|
25
23
|
|
|
26
24
|
**Stopping is the specification, not a failure.**
|
|
27
25
|
|
|
@@ -36,18 +34,12 @@ pnpm josh issue:state <N> --repo <owner/repo> # a child in another repository
|
|
|
36
34
|
|
|
37
35
|
**Never apply or remove it**: a mark a run can clear for itself is
|
|
38
36
|
not a mark. Everything but typing the command on an explicit instruction in the current turn is a
|
|
39
|
-
proposal, written as an Issue comment and left for the person.
|
|
40
|
-
repository, by a person:
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
gh api repos/{owner}/{repo}/labels -f name=needs-human-review -f color=d93f0b -f description="Implement and verify, but stop before committing so a person can look"
|
|
44
|
-
```
|
|
37
|
+
proposal, written as an Issue comment and left for the person. `josh sync` creates the label.
|
|
45
38
|
|
|
46
39
|
**It is not `needs-decision`**: `needs-decision` withholds a run's *start*; this withholds its *end*.
|
|
47
40
|
So a `needs-human-review` issue is still offered, and a child stopped by it **goes on holding its
|
|
48
41
|
repository** — `scripts/issue/issue-labels.ts` keeps it out of `NOT_DIRECTLY_RUNNABLE_LABELS` and
|
|
49
|
-
`scripts/epic/epic-busy.ts` keeps it out of the parked set
|
|
50
|
-
→ "Why it is not `needs-decision`").
|
|
42
|
+
`scripts/epic/epic-busy.ts` keeps it out of the parked set.
|
|
51
43
|
|
|
52
44
|
Each entry point's own branch stays in its own file — `fullrun.md`, `halfrun.md`,
|
|
53
45
|
`backlogrun.md` — and routes here for the definition.
|
|
@@ -23,12 +23,13 @@ report. Drop an observation nobody would act on.
|
|
|
23
23
|
`pnpm josh run:event --append note "#<N> <text>"`, shown by `pnpm josh run:board`
|
|
24
24
|
(`docs/josh-commands-run.md` → "`josh run:board`").
|
|
25
25
|
|
|
26
|
-
**The filing ceilings still apply.**
|
|
26
|
+
**The filing ceilings still apply.** It counts toward the per-run cap (`prerequisite.md`); above the target
|
|
27
27
|
repository's WIP cap, close one first or do not file (`prompts/collaboration-workflow/wip-cap.md`).
|
|
28
28
|
File with `pnpm josh issue:file` (`issue-scout.md`): it lints the body, applies the classification
|
|
29
29
|
labels, scans for duplicates and runs `epic:bundle` (an `auto-ok` epic adds it to the backlog pool —
|
|
30
30
|
`backlogrun-steps.md` → "What one invocation approves"). On the second filing of the run it asks the fold
|
|
31
31
|
question and holds a `fold` (`split-assessment.md` → "The same two questions decide the filing-time fold").
|
|
32
|
+
A bug filing's origin line: `prompts/collaboration-workflow/issue-template.md` (`- 原因:`).
|
|
32
33
|
|
|
33
34
|
### The depth test — a discretionary filing cites the product work it blocked
|
|
34
35
|
|
|
@@ -40,26 +41,7 @@ question and holds a `fold` (`split-assessment.md` → "The same two questions d
|
|
|
40
41
|
| **1** | The run orchestration that executes an Issue | `fullrun` / `backlogrun`, lanes, the `epic:*` commands, the filing routes themselves |
|
|
41
42
|
| **2** | What measures a run | `josh cost` and the run-timing report |
|
|
42
43
|
|
|
43
|
-
**The depth is
|
|
44
|
-
`depth:0` / `depth:1` / `depth:2` are defined in `scripts/issue/issue-labels.ts` with no definition of
|
|
45
|
-
their own — **the table above is the single source**. **Every filing route applies one**: each route
|
|
46
|
-
of `prerequisite.md`'s table, a split child and a review branch-2 filing pass `--depth <n>` to
|
|
47
|
-
`pnpm josh issue:file`, beside any `--route`.
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
pnpm josh issue:file "<title>" --body-file <body-file> --depth 1
|
|
51
|
-
gh api repos/{owner}/{repo}/issues/<N>/labels -f 'labels[]=depth:1' # an Issue already filed
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
`issue:file` creates any missing workflow label from `DEPTH_LABELS` before the create call.
|
|
55
|
-
|
|
56
|
-
- **It is read off the subject, exactly as the table is** — not a judgement, unlike `auto-ok` and
|
|
57
|
-
`needs-human-review`; it withholds nothing.
|
|
58
|
-
- **Applied at filing, not at completion.**
|
|
59
|
-
- **An Issue carrying more than one counts as the lowest depth present.**
|
|
60
|
-
- **An `epic` takes no depth label** and is excluded from the share's denominator.
|
|
61
|
-
|
|
62
|
-
Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why the depth label is applied at filing".
|
|
44
|
+
**The depth is read, not recorded** — no label carries it.
|
|
63
45
|
|
|
64
46
|
- **A discretionary observation at depth 1 or deeper is filed only where it can cite the depth-0 work
|
|
65
47
|
it stopped or delayed** — an Issue number or a run, never "this would slow runs down". **Cannot cite
|
|
@@ -74,35 +56,14 @@ Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why the depth
|
|
|
74
56
|
- **Cannot write both, it is not filed** — it goes to the ledger.
|
|
75
57
|
- **This narrows depth 2 alone, and the exemptions above carry over unchanged.**
|
|
76
58
|
|
|
77
|
-
Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why depth gates a discretionary filing".
|
|
78
|
-
|
|
79
59
|
**It governs this route only — the fourth row of `prerequisite.md`'s table.** A review finding routed
|
|
80
60
|
to branch 2 of `prompts/review.md` → "Review round cap" is filed under that section's own bar and
|
|
81
61
|
**does not take the depth test**. **That bar is the reason, and the subject's depth is not.**
|
|
82
|
-
Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why a review branch-2 filing skips the depth test".
|
|
83
62
|
|
|
84
63
|
**And a PR that *adds* a measurement names its reader in the same way** — the Issue that read the value
|
|
85
64
|
to decide something, or the path of the rule that reads it. **A measurement with no reader is not
|
|
86
65
|
added.** `route:tier-a` and `route:interrupt` carry over unchanged.
|
|
87
66
|
|
|
88
|
-
### The depth-0 share — what is counted
|
|
89
|
-
|
|
90
|
-
**The depth-0 share is the share of open Issues at depth 0.**
|
|
91
|
-
|
|
92
|
-
**The denominator is a rule, not a choice, and this is it:**
|
|
93
|
-
|
|
94
|
-
- **Counted: every open Issue that does not carry `epic`.**
|
|
95
|
-
- **`route:tier-a` and `route:interrupt` are counted like anything else.**
|
|
96
|
-
- **An Issue with no depth label is in the denominator**, counted separately as `unlabelled`.
|
|
97
|
-
- **The numerator is what is left**: open, non-epic Issues carrying `depth:0`.
|
|
98
|
-
|
|
99
|
-
**Two readings of the same backlog give the same number.**
|
|
100
|
-
|
|
101
|
-
Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why the depth-0 denominator is fixed".
|
|
102
|
-
|
|
103
|
-
**What the number is for is not decided here** — no `backlog:next` change and no target value until it
|
|
104
|
-
has been measured the same way more than once.
|
|
105
|
-
|
|
106
67
|
### A delegated child does not take this route
|
|
107
68
|
|
|
108
69
|
**A delegated child files `route:tier-a` and `route:interrupt` only.** Its discretionary observations
|
|
@@ -111,13 +72,6 @@ summary carries, and how long it may be"); the parent files what survives the de
|
|
|
111
72
|
run's ceiling.
|
|
112
73
|
|
|
113
74
|
**A delegated child does not append to the ledger either — the parent collapses the duplicates and
|
|
114
|
-
appends what is left.** **
|
|
75
|
+
appends what is left.** **Lines
|
|
115
76
|
its own `review:record` and `measure:rerun` write are not this route** — they go to its issue's file in
|
|
116
77
|
its lane (`observation-ledger.md` → "The ledger — where an observation that cannot cite a blockage goes").
|
|
117
|
-
|
|
118
|
-
Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why a delegated child neither files nor appends".
|
|
119
|
-
|
|
120
|
-
**This file is the single source of every procedure above**; nothing under
|
|
121
|
-
`prompts/collaboration-workflow/` restates it.
|
|
122
|
-
|
|
123
|
-
Provenance: `docs/maintainers/observation-filing-rationale.md` → "Where each rule came from".
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
# The observation ledger — grammar, commit path and promotion
|
|
2
2
|
|
|
3
3
|
**Read only when the depth test in `observation-filing.md` turns an observation away, or a user
|
|
4
|
-
reports a bug** (its kind of miss, below), in the turn that appends the line.
|
|
5
|
-
ledger's grammar, commit path and second-sighting promotion. Provenance:
|
|
6
|
-
`docs/maintainers/observation-ledger-rationale.md` → "Where each rule came from".
|
|
4
|
+
reports a bug** (its kind of miss, below), in the turn that appends the line.
|
|
7
5
|
|
|
8
6
|
## The ledger — where an observation that cannot cite a blockage goes
|
|
9
7
|
|
|
10
|
-
**An observation the depth test turns away is recorded in the ledger, not discarded.**
|
|
11
|
-
`docs/maintainers/observation-ledger-rationale.md` → "Why the ledger exists".
|
|
8
|
+
**An observation the depth test turns away is recorded in the ledger, not discarded.**
|
|
12
9
|
|
|
13
10
|
- **The destination is the `.josh/observations/` directory in the repository the observation is
|
|
14
11
|
about**, **one file per issue**: `<N>.md` for the issue the run is executing (its branch's number,
|
|
@@ -60,8 +57,7 @@ blocked depth-0 work is filed as before.
|
|
|
60
57
|
|
|
61
58
|
## The commit path — how an appended line reaches the default branch
|
|
62
59
|
|
|
63
|
-
**An append nobody commits is an append nobody can count.**
|
|
64
|
-
`docs/maintainers/observation-ledger-rationale.md` → "Why the ledger has a commit path".
|
|
60
|
+
**An append nobody commits is an append nobody can count.**
|
|
65
61
|
|
|
66
62
|
- **A run's appended lines ride its own commit** — `pnpm josh git` stages `.josh/observations/`
|
|
67
63
|
(`scripts/git/git-staging.ts`). **Record before the commit, not after the merge:** a finding recorded
|
|
@@ -87,13 +83,12 @@ blocked depth-0 work is filed as before.
|
|
|
87
83
|
|
|
88
84
|
## The second sighting is what files it
|
|
89
85
|
|
|
90
|
-
**A repeat is the citation** — counted, not judged
|
|
91
|
-
→ "Why a second sighting files"):
|
|
86
|
+
**A repeat is the citation** — counted, not judged:
|
|
92
87
|
|
|
93
88
|
- **On `observation:record` answering `file`, the observation is filed**, at depth 1 or deeper, with
|
|
94
89
|
no depth-0 citation (only when exactly one earlier sighting exists).
|
|
95
90
|
- **The Issue quotes the ledger's own dates — the first sighting's and this one's.**
|
|
96
|
-
- **Both ceilings still apply** (`observation-filing.md`): the
|
|
91
|
+
- **Both ceilings still apply** (`observation-filing.md`): the per-run filing cap and the WIP cap.
|
|
97
92
|
|
|
98
93
|
**A third and later sighting appends a line and files nothing more** — `pnpm josh issue:scout` finds
|
|
99
94
|
the open Issue.
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
The **pre-gate cut**: a dispatched lane child ends its process the moment implementation is done, and a
|
|
4
4
|
**fresh** process resumes the same lane from the gate onward, without the implementation's accumulated
|
|
5
|
-
context.
|
|
5
|
+
context.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
`run:cut` takes the boundary, `run:cut --resume` is the fresh
|
|
8
8
|
process's entry check. A second boundary — the implementation-phase cut, _during_ implementation — is
|
|
9
9
|
below; it states only what differs.
|
|
10
10
|
|
|
@@ -17,20 +17,12 @@ the fallback.
|
|
|
17
17
|
## It applies to a dispatched lane child, and to nothing else
|
|
18
18
|
|
|
19
19
|
A person's interactive `fullrun` never relaunches itself. A dispatched child is told apart
|
|
20
|
-
**mechanically, by
|
|
20
|
+
**mechanically, by the `JOSH_LANE_CHILD` mark the dispatch sets** — never by reading its own prompt
|
|
21
|
+
(`docs/josh-commands-run.md` → "`josh run:cut`").
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
`lane
|
|
25
|
-
(`scripts/lane/lane-child-marker.ts`).
|
|
26
|
-
|
|
27
|
-
- **Meaning**: "this session was launched for issue `<N>`, not typed by a person."
|
|
28
|
-
- **Lifetime**: the child process — set at launch, never written by the run itself.
|
|
29
|
-
- **Trust**: only where its value equals the lane's own issue; a leaked mark naming another issue, or
|
|
30
|
-
none, is read as a person. An interactive `fullrun` carries no mark.
|
|
31
|
-
|
|
32
|
-
The name, meaning and lifetime are documented here and nowhere else. `run:cut` itself looks for an
|
|
33
|
-
**open lane** for the issue instead (`not-a-lane` otherwise), so it is safe to issue unconditionally.
|
|
23
|
+
An interactive `fullrun` carries no mark, and every
|
|
24
|
+
guard in this file holds that boundary: **It fires for a marked child and nowhere else**. `run:cut`
|
|
25
|
+
answers `not-a-lane` outside a lane, so it is safe to issue unconditionally.
|
|
34
26
|
|
|
35
27
|
## Taking the cut
|
|
36
28
|
|
|
@@ -54,20 +46,9 @@ pnpm josh run:cut <N>
|
|
|
54
46
|
|
|
55
47
|
### The gate refuses until the cut has been taken
|
|
56
48
|
|
|
57
|
-
`pnpm josh rule:
|
|
58
|
-
the command above.
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
- **It fires for a marked child and nowhere else**: the working directory is `<lane root>/<issue
|
|
62
|
-
number>` **and** `JOSH_LANE_CHILD` names that issue. `run:cut` uses an open-lane lookup instead, so
|
|
63
|
-
the guard and the command need not agree byte for byte.
|
|
64
|
-
- **It fires only when the current context warrants a cut** (`cost_cli.session_verdict`, as `run:cut`).
|
|
65
|
-
- **It is silent once the cut is carried**.
|
|
66
|
-
- **It fires once per run.**
|
|
67
|
-
- **`--resume`, `--end` and `--json` do not count as taking the cut.**
|
|
68
|
-
|
|
69
|
-
Its row: `prompts/collaboration-workflow/rule-delivery.md`. Suites: `docs/maintainers/pre-gate-cut-rationale.md`
|
|
70
|
-
→ "Which suites pin each guard".
|
|
49
|
+
The `pre-gate-cut` row of `pnpm josh rule:list` **refuses `pnpm josh gate`** in a lane with no cut record carried, handing back
|
|
50
|
+
the command above — run it. When the guard fires: `docs/josh-commands-run.md` → "`josh run:cut`"; its
|
|
51
|
+
row: `prompts/collaboration-workflow/rule-delivery.md`.
|
|
71
52
|
|
|
72
53
|
## Resuming — the fresh process's entry check
|
|
73
54
|
|
|
@@ -92,8 +73,7 @@ pnpm josh run:cut --resume <N>
|
|
|
92
73
|
### The stage is passed to the resumed child, not reconstructed by it
|
|
93
74
|
|
|
94
75
|
**Skip the entry it has already done**: do not re-read the workflow skill, repeat the split assessment
|
|
95
|
-
or re-normalize the title; the plan and decisions are read back from the issue.
|
|
96
|
-
`docs/maintainers/pre-gate-cut-rationale.md` → "Why the resume carries what it carries".
|
|
76
|
+
or re-normalize the title; the plan and decisions are read back from the issue.
|
|
97
77
|
|
|
98
78
|
## What is carried, and what is not
|
|
99
79
|
|
|
@@ -124,24 +104,24 @@ Same `cost_verdict.per_request_cost` through `cost_cli.session_verdict` as `back
|
|
|
124
104
|
|
|
125
105
|
### It is a guard, fired at the edit that crosses the threshold
|
|
126
106
|
|
|
127
|
-
**The trigger**: `pnpm josh rule:
|
|
107
|
+
**The trigger**: the `implementation-cut` row of `pnpm josh rule:list` refuses an `Edit` / `Write` in a dispatched lane child over
|
|
128
108
|
threshold, handing back `pnpm josh run:cut --impl <N> --handoff <path>`. `cut` ends the turn; the
|
|
129
109
|
fresh process's `run:cut --resume <N>` answers `resume-impl` — **the implementation resume clears the
|
|
130
|
-
record**, so the cut may fire again. **A cut that relaunches its successor owes no Telegram
|
|
110
|
+
record**, so the cut may fire again. **A cut that relaunches its successor owes no Telegram** — the
|
|
111
|
+
`Stop` hook reads the relaunch off the turn's own `run:cut` output, not off the record the resume
|
|
112
|
+
clears. Outside a
|
|
131
113
|
lane, `run:cut --impl` prints the held run's instruction: on `over`, keep the hold, send a
|
|
132
114
|
`confirmation` Telegram naming `fullrun #<N>`, end the turn. **It fires on every threshold crossing,
|
|
133
115
|
not once per run**; **An edit reissued right after a refusal passes**; **An unmeasurable session
|
|
134
|
-
warrants the cut**; **It is silent between a cut and its resume
|
|
135
|
-
|
|
136
|
-
(`scripts/rules/implementation-cut.ts`). A child that ended without cutting is detected by
|
|
116
|
+
warrants the cut**; **It is silent between a cut and its resume** (`scripts/rules/implementation-cut.ts`).
|
|
117
|
+
A child that ended without cutting is detected by
|
|
137
118
|
`pnpm josh run:ending <N> --output <path>`.
|
|
138
119
|
|
|
139
120
|
## The threshold
|
|
140
121
|
|
|
141
122
|
`CONTEXT_CUT_THRESHOLD` and `cost_verdict.per_request_cost` live in
|
|
142
123
|
`scripts/cost-runtime/context-cut-payback.ts`; both cuts and the parent hand-off read the same verdict,
|
|
143
|
-
and an unmeasurable session is always cut.
|
|
144
|
-
"Why the threshold is a break-even". Both cuts end the turn **before** the gate, so the push is never a
|
|
124
|
+
and an unmeasurable session is always cut. Both cuts end the turn **before** the gate, so the push is never a
|
|
145
125
|
turn boundary (`chain-rule.md`).
|
|
146
126
|
|
|
147
127
|
## A lane child records its park before it stops
|
|
@@ -149,18 +129,16 @@ turn boundary (`chain-rule.md`).
|
|
|
149
129
|
**The trigger**: a dispatched lane child about to stop for a decision (Tier B, Tier C, an upstream
|
|
150
130
|
defect) parks its own Issue first — `backlogrun-park.md` → "park and continue" — so `pnpm josh
|
|
151
131
|
run:liveness` reads it `settled`. A `needs-human-review` or `already-done` stop already carries its
|
|
152
|
-
label. `pnpm josh rule:
|
|
153
|
-
until
|
|
132
|
+
label. The `lane-park` row of `pnpm josh rule:list` refuses `pnpm josh notify --task-type confirmation` from a marked child
|
|
133
|
+
until `pnpm josh run:park` has recorded the park — **It fires once per run.** (`scripts/rules/lane-park.ts`).
|
|
154
134
|
|
|
155
135
|
**A split is not a park**: a child that promoted its Issue to an `epic` stops without
|
|
156
|
-
`needs-decision` — `backlogrun-park.md` → "Splitting a child mid-run". `pnpm josh rule:
|
|
136
|
+
`needs-decision` — `backlogrun-park.md` → "Splitting a child mid-run". The `lane-split-park` row of `pnpm josh rule:list` refuses a
|
|
157
137
|
`needs-decision` write onto that epic, on every occurrence (`scripts/rules/lane-split-park.ts`).
|
|
158
138
|
|
|
159
139
|
### The interactive ask is refused one call earlier
|
|
160
140
|
|
|
161
141
|
**The trigger**: a headless session ends the turn on an interactive ask, so the notify guard never
|
|
162
|
-
fires; `pnpm josh rule:
|
|
142
|
+
fires; the `lane-interactive-ask` row of `pnpm josh rule:list` refuses `AskUserQuestion` for a marked lane child on every occurrence — park the question instead.
|
|
163
143
|
`pnpm josh run:ending` lifts a slipped ask into the park basis (`scripts/rules/lane-interactive-ask.ts`,
|
|
164
144
|
`scripts/agent/interactive-ask.ts`).
|
|
165
|
-
|
|
166
|
-
Provenance of each rule: `docs/maintainers/pre-gate-cut-rationale.md` → "Where each rule came from".
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# A prerequisite discovered mid-run — a dependency, not a park
|
|
2
2
|
|
|
3
3
|
**The single source of the prerequisite branch**, read at its point of use — the moment a run
|
|
4
|
-
discovers that another Issue in this repository has to land first.
|
|
5
|
-
`docs/maintainers/prerequisite-rationale.md` → "Where each rule came from".
|
|
4
|
+
discovers that another Issue in this repository has to land first.
|
|
6
5
|
|
|
7
6
|
**A prerequisite discovered mid-run is a dependency, not a park** — the Issue in hand is still one
|
|
8
7
|
deliverable, it just needs another one before it.
|
|
@@ -30,7 +29,7 @@ offer hands it back once its blockers merge.
|
|
|
30
29
|
|
|
31
30
|
**A wait for the next published release is a dependency too** — never `needs-decision`. Record it
|
|
32
31
|
with `pnpm josh issue:release <M> --wait` (`<M>` blocked by the release Issue, filed when none is
|
|
33
|
-
open), then
|
|
32
|
+
open), then `pnpm josh run:pause <M> --for <the release Issue>` as for a prerequisite below; `fullrun` /
|
|
34
33
|
`halfrun` stop, `backlogrun` continues. Closing the release Issue once a person has published it hands
|
|
35
34
|
`<M>` back to `backlog:next` (`docs/josh-commands-backlog.md` → `josh issue:release`).
|
|
36
35
|
|
|
@@ -38,7 +37,7 @@ open), then stash, comment and `pnpm josh run:release <M>` as for a prerequisite
|
|
|
38
37
|
so the observation row carries no `route:` label (`observation-filing.md`):
|
|
39
38
|
|
|
40
39
|
```bash
|
|
41
|
-
pnpm josh issue:file "<title>" --body-file <body-file> --
|
|
40
|
+
pnpm josh issue:file "<title>" --body-file <body-file> --route tier-a
|
|
42
41
|
```
|
|
43
42
|
|
|
44
43
|
The command lints the body against `prompts/collaboration-workflow/issue-template.md`, applies the
|
|
@@ -51,24 +50,18 @@ later steps name its number. **Its duplicate scan is read exactly as it is for a
|
|
|
51
50
|
|
|
52
51
|
**Each entry point's own branch stays in that entry's file:**
|
|
53
52
|
|
|
54
|
-
- **A named epic under `backlogrun`** files without confirmation,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
prerequisite discovered mid-run"). A child outside any epic records the same relation on itself
|
|
58
|
-
directly; that branch is the same section's.
|
|
53
|
+
- **A named epic under `backlogrun`** files without confirmation, sets `<M>` — the child in hand —
|
|
54
|
+
aside with `run:pause` below, and the run **continues rather than parking it** (`backlogrun-park.md` →
|
|
55
|
+
"A prerequisite discovered mid-run").
|
|
59
56
|
- **`fullrun` / `halfrun`** file the same way without asking, insert the prerequisite into the epic
|
|
60
57
|
that already tracks the Issue or create one over both, and then **stop**, leaving the person one
|
|
61
58
|
command to type (`fullrun.md` / `halfrun.md`). Typing `fullrun` approved implementing **one** Issue;
|
|
62
59
|
a batch is a different authorization, so the stop stays.
|
|
63
60
|
|
|
64
|
-
**
|
|
61
|
+
**Once the prerequisite is filed, every entry sets `<M>` aside with `pnpm josh run:pause <M> --for <N>`**
|
|
62
|
+
— the stash, the comment naming its `stash:pop`, the blocked-by and the release; a failure is rerun as
|
|
63
|
+
is (`docs/josh-commands-run.md` → `josh run:pause`). Name the comment's pop in the Telegram too.
|
|
65
64
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
- **The Issue comment is what gets the stash popped, not the Telegram.** The run that picks the Issue up
|
|
69
|
-
reads it and pops before implementing — **by message, `pnpm josh stash:pop "<the -m message>"`, never
|
|
70
|
-
a positional `git stash pop`** (the stack is shared by every lane). Say it in the Telegram too.
|
|
71
|
-
|
|
72
|
-
**Automatic filing is capped at 10 Issues per run** at every entry point; `pnpm josh rule:guard`
|
|
73
|
-
refuses the eleventh filing (`prompts/collaboration-workflow/rule-delivery.md`). On reaching it, stop
|
|
65
|
+
**Automatic filing is capped at 10 Issues per run** at every entry point; the `filing-cap` row of
|
|
66
|
+
`pnpm josh rule:list` refuses the eleventh filing (`prompts/collaboration-workflow/rule-delivery.md`). On reaching it, stop
|
|
74
67
|
and report. `kickoff` is exempt — it never implements, so it never discovers one.
|
|
@@ -40,7 +40,6 @@ silence clock (`docs/josh-commands-run.md` → "`josh run:progress`").
|
|
|
40
40
|
`JOSH_PROGRESS_INTERVAL_MINUTES` moves both sides; `josh` → `progress_interval_minutes` in
|
|
41
41
|
`package.json` sits one step below it. **`--interval` moves the watcher alone** — quieter, never the
|
|
42
42
|
guard stricter.
|
|
43
|
-
Rationale: `docs/maintainers/progress-watcher-rationale.md` → "Why the heartbeat reads as it does".
|
|
44
43
|
|
|
45
44
|
### What a report says
|
|
46
45
|
|
|
@@ -54,15 +53,14 @@ missing, say so. **A field's empty value is an observation, never a state** (`re
|
|
|
54
53
|
|
|
55
54
|
**The heartbeat is ambient, never a Telegram.** `pnpm josh run:board` is its reader, in a pane of the
|
|
56
55
|
person's own; **no session relays the stream** — name the board command once, at the first cut or when
|
|
57
|
-
asked;
|
|
56
|
+
asked; the person starts it, or the `josh: run board` task in `.vscode/tasks.json`, by hand.
|
|
58
57
|
`pnpm josh run:event --watch` stays for following the raw events one by one. `pnpm josh run:wake --list` is the one-line read for a person who types for it.
|
|
59
58
|
**A request for periodic progress is never a CronCreate job** — on screen, name `pnpm josh run:board`;
|
|
60
59
|
off-screen, start `pnpm josh run:board --every <minutes>` in the background (`docs/josh-commands-run.md`).
|
|
61
60
|
|
|
62
61
|
**A stop is the only interrupt**: a `backlogrun` that has stopped ends with
|
|
63
62
|
`pnpm josh run:carry --end --stopped "<reason>"`, which sends one ⏸️ confirmation; a parked child sends
|
|
64
|
-
its own (`backlogrun-park.md`).
|
|
65
|
-
signal tiers are split this way".
|
|
63
|
+
its own (`backlogrun-park.md`).
|
|
66
64
|
|
|
67
65
|
### Who starts it, and what counts as a report
|
|
68
66
|
|
|
@@ -85,7 +83,4 @@ tool result only you read is not one.** `--output` is omitted there, and `record
|
|
|
85
83
|
**A run that merges needs no teardown; a run that stops has to end the reporting itself** — **no
|
|
86
84
|
further `--wait` is started** after the stop notification, and the running one is stopped in the same
|
|
87
85
|
turn: `halfrun`'s stop before commit, a `needs-human-review`, split or prerequisite stop, a
|
|
88
|
-
`backlogrun` named issue's failure stop.
|
|
89
|
-
"Why the watcher runs where it does".
|
|
90
|
-
|
|
91
|
-
Provenance of each rule: `docs/maintainers/progress-watcher-rationale.md` → "Where each rule came from".
|
|
86
|
+
`backlogrun` named issue's failure stop.
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# `prrun` — the manifest (plan → implement → PR → green → stop, a person merges)
|
|
2
2
|
|
|
3
|
-
`prrun`
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
sequence, the step lists, the gate, the review and the stop branches are `fullrun`'s, unchanged. This
|
|
7
|
-
file names only the difference.
|
|
3
|
+
`prrun` runs `fullrun` up to a green, mergeable pull request and **stops before the merge**, so a
|
|
4
|
+
person merges by hand. **Read `fullrun.md` and `entry-sequence.md` for every step** — the entry
|
|
5
|
+
sequence, the step lists, the gate, the review and the stop branches are `fullrun`'s, unchanged.
|
|
8
6
|
|
|
9
7
|
## The difference — the entry
|
|
10
8
|
|
|
@@ -22,13 +20,9 @@ Where `fullrun` runs `pnpm josh followup` and merges, `prrun` does three things
|
|
|
22
20
|
review findings resolved. A failure stops the run exactly as it stops a `fullrun`.
|
|
23
21
|
2. **Mark the stop — `pnpm josh run:hold <N> --prrun-stop`.** It records the commit the pull request is
|
|
24
22
|
on in this run's own hold, the record `fullrun #<N>` adopts (its prrun resume, `working-tree-hold.md`). **The hold and `in-progress` stay**: the run is not finished until the merge's tail runs.
|
|
25
|
-
3. **
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
`pnpm josh notify --task-type confirmation --issue-url "<issue-url>" --body=$'prrun ready to
|
|
29
|
-
merge: <pr-url>\nNext: fullrun #<N>\nAfter a manual merge, without an agent: pnpm josh followup
|
|
30
|
-
"<title> #<N>"' --recommended "fullrun #<N>" --alternative "Merge by hand, then pnpm josh
|
|
31
|
-
followup"`. The stop report names the same two, in the same order.
|
|
23
|
+
3. **Stop.** The mark has already sent the `confirmation` Telegram, its resume line `Next: fullrun
|
|
24
|
+
#<N>` — never compose one. The stop report names `fullrun #<N>` (recommended) and a manual merge followed by
|
|
25
|
+
`pnpm josh followup "<title> #<N>"`, in that order.
|
|
32
26
|
|
|
33
27
|
**Invoking `prrun` is _not_ authorization to merge** — never run `pnpm josh followup` without
|
|
34
28
|
`--no-merge` in a `prrun`. After a person merges by hand, the same `pnpm josh followup "<title> #<N>"`
|