@joshuafolkken/kit 1.1471.0 → 1.1784.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/investigator.md +1 -1
- package/.claude/settings.json +6 -6
- package/.claude/skills/epic-commands/SKILL.md +26 -77
- package/.claude/skills/epic-commands/epic-bundle.md +12 -6
- package/.claude/skills/epic-commands/execution-waves.md +1 -2
- package/.claude/skills/verify-ui/SKILL.md +1 -2
- package/.claude/skills/workflow-commands/SKILL.md +12 -14
- package/.claude/skills/workflow-commands/background-commands.md +8 -12
- package/.claude/skills/workflow-commands/backlogrun-child.md +13 -18
- package/.claude/skills/workflow-commands/backlogrun-handoff-report.md +7 -25
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +23 -28
- package/.claude/skills/workflow-commands/backlogrun-park.md +16 -31
- package/.claude/skills/workflow-commands/backlogrun-progress.md +12 -21
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +12 -12
- package/.claude/skills/workflow-commands/backlogrun-steps.md +12 -20
- package/.claude/skills/workflow-commands/backlogrun.md +32 -51
- package/.claude/skills/workflow-commands/chain-rule.md +18 -11
- package/.claude/skills/workflow-commands/delegation.md +13 -8
- package/.claude/skills/workflow-commands/entry-sequence.md +10 -12
- package/.claude/skills/workflow-commands/followup.md +10 -35
- package/.claude/skills/workflow-commands/fullrun-steps.md +38 -49
- package/.claude/skills/workflow-commands/fullrun.md +6 -8
- package/.claude/skills/workflow-commands/halfrun.md +20 -32
- package/.claude/skills/workflow-commands/into-target.md +1 -2
- package/.claude/skills/workflow-commands/issue-comments.md +19 -15
- package/.claude/skills/workflow-commands/issue-scout.md +5 -4
- package/.claude/skills/workflow-commands/kickoff.md +24 -23
- package/.claude/skills/workflow-commands/latest-gate.md +9 -18
- package/.claude/skills/workflow-commands/needs-human-review.md +11 -19
- package/.claude/skills/workflow-commands/observation-filing.md +4 -50
- package/.claude/skills/workflow-commands/observation-ledger.md +5 -10
- package/.claude/skills/workflow-commands/pre-gate-cut.md +22 -44
- package/.claude/skills/workflow-commands/prerequisite.md +11 -18
- package/.claude/skills/workflow-commands/progress-watcher.md +3 -8
- package/.claude/skills/workflow-commands/prrun.md +6 -12
- package/.claude/skills/workflow-commands/retrospective.md +5 -5
- package/.claude/skills/workflow-commands/split-assessment.md +14 -4
- package/.claude/skills/workflow-commands/target-repository.md +1 -2
- package/.claude/skills/workflow-commands/working-tree-hold.md +11 -13
- package/.codex/hooks.json +6 -6
- package/.github/actions/setup-node/action.yml +10 -1
- package/.github/actions/setup-pnpm/action.yml +1 -1
- package/.github/dependabot.yml +16 -0
- package/.github/release.yml +0 -2
- package/.github/workflows/ci.yml +121 -11
- package/.github/workflows/publish.yml +10 -3
- package/.github/workflows/sonar-qube.yml +1 -0
- package/.prettierignore +2 -0
- package/.vscode/tasks.json +1 -2
- package/CLAUDE.md +4 -8
- package/README.md +4 -2
- package/SECURITY.md +1 -1
- package/cspell/index.yaml +7 -0
- package/dist/CLAUDE.md +4 -8
- package/dist/commands/document-read-cli.js +882 -0
- package/dist/commands/{document-section-cli.js → document-section-main.js} +137 -62
- package/dist/commands/read-set-cli.js +1867 -0
- package/dist/commands/run-prep-main.js +21653 -0
- package/dist/commands/run-step-cli.js +23880 -0
- package/dist/config-merge/index.js +5 -1
- package/dist/hooks/audit-provision.js +20 -35
- package/dist/hooks/{chunk-DGT54IH5.js → chunk-AZX4FGQ3.js} +63 -17
- package/dist/hooks/chunk-CWMBGKYW.js +6483 -0
- package/dist/hooks/chunk-O2YBIDSI.js +4306 -0
- package/dist/hooks/{chunk-AS74OU3D.js → chunk-PT5R6UJD.js} +4582 -2118
- package/dist/hooks/chunk-TUIFS5E7.js +72 -0
- package/dist/hooks/{chunk-723HKZO5.js → chunk-VWWCFGWK.js} +1 -1
- package/dist/hooks/{chunk-E7OIKX5Z.js → chunk-WR2KQAYZ.js} +1863 -382
- package/dist/hooks/{chunk-KC5AK2GF.js → chunk-XGBNSWEI.js} +248 -46
- package/dist/hooks/chunk-YCDOIR3I.js +3456 -0
- package/dist/hooks/codex-hook-adapter.js +10 -19
- package/dist/hooks/format-edited.js +5 -5
- package/dist/hooks/inputs.json +436 -257
- package/dist/hooks/pretool-guard.js +7 -22
- package/dist/hooks/session-lang.js +380 -42
- package/dist/hooks/stop-guard.js +8711 -782
- package/dist/josh.js +5263 -997
- package/dist/self-sync-guard/index.js +74 -10
- package/dist/version/index.js +115 -406
- package/eslint/base.js +1 -1
- package/lefthook/base.yml +8 -4
- package/package.json +17 -53
- package/pnpm-workspace.yaml +4 -2
- package/prompts/coding-standards.md +1 -1
- package/prompts/collaboration-workflow/file-edits.md +1 -9
- package/prompts/collaboration-workflow/gh-rest.md +1 -2
- package/prompts/collaboration-workflow/issue-citation.md +2 -4
- package/prompts/collaboration-workflow/issue-template.md +42 -17
- package/prompts/collaboration-workflow/lane-instructions.md +34 -0
- package/prompts/collaboration-workflow/measurement.md +37 -0
- package/prompts/collaboration-workflow/operating-rules.md +6 -12
- package/prompts/collaboration-workflow/output-bounds.md +4 -9
- package/prompts/collaboration-workflow/overview.md +1 -1
- package/prompts/collaboration-workflow/plan-comment.md +3 -42
- package/prompts/collaboration-workflow/principles.md +19 -8
- package/prompts/collaboration-workflow/report-format.md +37 -57
- package/prompts/collaboration-workflow/residency.md +12 -8
- package/prompts/collaboration-workflow/rule-delivery.md +3 -11
- package/prompts/collaboration-workflow/shell-body.md +8 -18
- package/prompts/collaboration-workflow/turn-batching.md +4 -6
- package/prompts/collaboration-workflow/upstream-interrupt.md +16 -6
- package/prompts/collaboration-workflow/wip-cap.md +7 -7
- package/prompts/collaboration-workflow.md +4 -7
- package/prompts/refactoring.md +1 -1
- package/prompts/review-rubric.md +1 -2
- package/prompts/review.md +45 -26
- package/prompts/testing-guide.md +10 -45
- package/scripts/agent/agent-argv.ts +20 -4
- package/scripts/agent/agent-event.ts +15 -15
- package/scripts/agent/agent-exit-record.ts +13 -1
- package/scripts/agent/agent-role-profile.ts +101 -45
- package/scripts/agent/agent-safe-text.ts +60 -0
- package/scripts/agent/api-auth.ts +41 -0
- package/scripts/agent/api-outage.ts +1 -1
- package/scripts/agent/claude-agent-argv.ts +14 -0
- package/scripts/agent/codex-agent-argv.ts +2 -0
- package/scripts/agent/lane-instructions.ts +144 -0
- package/scripts/auto-ok/auto-ok-cli.ts +14 -16
- package/scripts/auto-ok/auto-ok-judge-read.ts +12 -3
- package/scripts/auto-ok/auto-ok-judge-write.ts +46 -19
- package/scripts/auto-ok/auto-ok-judge.ts +13 -2
- package/scripts/auto-ok/auto-ok-main.ts +17 -0
- package/scripts/backlog/backlog-arrival.ts +14 -3
- package/scripts/backlog/backlog-budget-cli.ts +7 -33
- package/scripts/backlog/backlog-budget-main.ts +16 -0
- package/scripts/backlog/backlog-budget.ts +6 -7
- package/scripts/backlog/backlog-defect-priority.ts +4 -3
- package/scripts/backlog/backlog-drive-adopt.ts +67 -0
- package/scripts/backlog/backlog-drive-args.ts +4 -5
- package/scripts/backlog/backlog-drive-cli.ts +113 -28
- package/scripts/backlog/backlog-drive-hold.ts +162 -0
- package/scripts/backlog/backlog-drive-idle.ts +151 -0
- package/scripts/backlog/backlog-drive-judge.ts +25 -0
- package/scripts/backlog/backlog-drive-memory.ts +126 -0
- package/scripts/backlog/backlog-drive-named-offer.ts +5 -10
- package/scripts/backlog/backlog-drive-named.ts +54 -7
- package/scripts/backlog/backlog-drive-offer-argv.ts +3 -8
- package/scripts/backlog/backlog-drive-paused.ts +169 -0
- package/scripts/backlog/backlog-drive-restore.ts +39 -8
- package/scripts/backlog/backlog-drive-seats.ts +18 -8
- package/scripts/backlog/backlog-drive-token-handling.ts +38 -0
- package/scripts/backlog/backlog-drive.ts +79 -75
- package/scripts/backlog/backlog-next-main.ts +16 -0
- package/scripts/backlog/backlog-next-shared.ts +73 -0
- package/scripts/backlog/backlog-next.ts +48 -16
- package/scripts/backlog/backlog-occupied.ts +69 -0
- package/scripts/backlog/backlog-offer-cli.ts +6 -21
- package/scripts/backlog/backlog-offer-exclude.ts +15 -0
- package/scripts/backlog/backlog-offer-main.ts +12 -0
- package/scripts/backlog/backlog-offer.ts +36 -3
- package/scripts/backlog/backlog-overlap.ts +22 -4
- package/scripts/backlog/backlog-plan-read.ts +6 -2
- package/scripts/backlog/backlog-plan.ts +18 -4
- package/scripts/backlog/backlog-pool.ts +10 -10
- package/scripts/backlog/backlog-rank.ts +10 -2
- package/scripts/backlog/backlog-ready.ts +137 -18
- package/scripts/backlog/backlog-stalled-detect.ts +109 -36
- package/scripts/backlog/backlog-stalled.ts +52 -16
- package/scripts/backlog/backlog-wait-cause.ts +86 -0
- package/scripts/backlog/backlog-waves.ts +39 -13
- package/scripts/backlog/backlogrun-args.ts +19 -7
- package/scripts/backlog/backlogrun-cli.ts +19 -5
- package/scripts/backlog/backlogrun-launch.ts +6 -0
- package/scripts/backlog/backlogrun-restart.ts +97 -0
- package/scripts/backlog/backlogrun-stop.ts +79 -7
- package/scripts/behavior/behavior-cli.ts +2 -2
- package/scripts/behavior/behavior-rules.ts +47 -24
- package/scripts/build/build-bin.ts +2 -16
- package/scripts/build/build-claude-md.ts +0 -7
- package/scripts/build/build-commands.ts +0 -13
- package/scripts/build/build-hooks.ts +49 -48
- package/scripts/build/hook-bundle-stamp.ts +29 -11
- package/scripts/build/local-bin.ts +1 -1
- package/scripts/cases/cases-cli.ts +25 -13
- package/scripts/cases/cases-interaction-scan.ts +134 -0
- package/scripts/cases/cases-interaction.ts +183 -0
- package/scripts/cases/cases-logic.ts +39 -6
- package/scripts/ci/pr-classification-main.ts +18 -0
- package/scripts/ci/pr-classification.ts +10 -17
- package/scripts/clone/clone-scan.ts +1 -1
- package/scripts/cost-runtime/cost-blocks.ts +22 -37
- package/scripts/cost-runtime/cost-cli.ts +31 -14
- package/scripts/cost-runtime/cost-main.ts +12 -0
- package/scripts/cost-runtime/cost-transcript.ts +1 -0
- package/scripts/delegation/delegation-policy.ts +17 -4
- package/scripts/delegation/duplicate-read-guard.ts +2 -10
- package/scripts/delegation/investigation-guard.ts +15 -73
- package/scripts/delegation/investigation-reads.ts +3 -5
- package/scripts/dependabot/dependabot-cooldown.ts +194 -0
- package/scripts/discovery/repo-discovery.ts +24 -6
- package/scripts/doctor/doctor-consumer.ts +2 -5
- package/scripts/document/document-byte-budget.ts +9 -6
- package/scripts/document/document-scan.ts +1 -1
- package/scripts/document/document-section-cli.ts +17 -13
- package/scripts/document/document-section-main.ts +12 -0
- package/scripts/document/entry-read-budget.ts +2 -2
- package/scripts/document/read-set-cli.ts +4 -1
- package/scripts/epic/epic-audit-cli.ts +12 -6
- package/scripts/epic/epic-audit-orphans.ts +5 -8
- package/scripts/epic/epic-audit.ts +52 -1
- package/scripts/epic/epic-bundle-apply.ts +137 -0
- package/scripts/epic/epic-bundle-cli.ts +32 -121
- package/scripts/epic/epic-bundle-evidence.ts +49 -26
- package/scripts/epic/epic-bundle-format.ts +116 -0
- package/scripts/epic/epic-bundle-main.ts +17 -0
- package/scripts/epic/epic-bundle-referenced.ts +14 -3
- package/scripts/epic/epic-bundle.ts +17 -9
- package/scripts/epic/epic-busy.ts +5 -12
- package/scripts/epic/epic-classify.ts +24 -15
- package/scripts/epic/epic-cli-argv.ts +31 -0
- package/scripts/epic/epic-cli-decide.ts +42 -0
- package/scripts/epic/epic-cli.ts +6 -38
- package/scripts/epic/epic-close.ts +112 -55
- package/scripts/epic/epic-cross-repo.ts +4 -7
- package/scripts/epic/epic-decide.ts +119 -0
- package/scripts/epic/epic-decision.ts +9 -0
- package/scripts/epic/epic-fetch.ts +4 -0
- package/scripts/epic/epic-graph.ts +2 -0
- package/scripts/epic/epic-issue.ts +5 -1
- package/scripts/epic/epic-label-age.ts +1 -1
- package/scripts/epic/epic-lane-offer.ts +39 -4
- package/scripts/epic/epic-next-main.ts +24 -0
- package/scripts/epic/epic-next.ts +6 -24
- package/scripts/epic/epic-outside-blocker.ts +6 -2
- package/scripts/epic/epic-parse.ts +9 -3
- package/scripts/epic/epic-read.ts +1 -0
- package/scripts/epic/epic-reconcile.ts +39 -0
- package/scripts/epic/epic-run.ts +10 -1
- package/scripts/epic/epic-solo.ts +50 -14
- package/scripts/epic/epic.ts +41 -7
- package/scripts/exports/unused-members-cli.ts +2 -2
- package/scripts/followup/followup-checks-event.ts +8 -3
- package/scripts/followup/followup-coderabbit-wait.ts +82 -0
- package/scripts/followup/followup-review-gates.ts +81 -0
- package/scripts/followup/git-followup-stages.ts +13 -3
- package/scripts/followup/git-followup-workflow.ts +31 -60
- package/scripts/followup/git-pr-followup-wrapup.ts +9 -14
- package/scripts/followup/git-pr-followup.ts +36 -8
- package/scripts/fresh-machine/fresh-machine-cli.ts +1 -1
- package/scripts/fresh-machine/fresh-machine-run.ts +8 -8
- package/scripts/fresh-machine/specs/kit-test-backlogrun.json +1 -1
- package/scripts/gate/busy-average.ts +58 -0
- package/scripts/gate/check-cpu.ts +60 -0
- package/scripts/gate/check-inputs.ts +73 -0
- package/scripts/gate/check-reuse.ts +141 -0
- package/scripts/gate/command-memory.ts +192 -0
- package/scripts/gate/core-admission.ts +218 -28
- package/scripts/gate/core-budget-timing.ts +37 -0
- package/scripts/gate/core-budget.ts +150 -119
- package/scripts/gate/core-wait-record.ts +48 -0
- package/scripts/gate/core-wait.ts +162 -0
- package/scripts/gate/core-weights.ts +86 -0
- package/scripts/gate/free-cores.ts +72 -0
- package/scripts/gate/gate-ledger.ts +49 -7
- package/scripts/gate/gate-plan.ts +44 -15
- package/scripts/gate/gate-report.ts +29 -4
- package/scripts/gate/gate-run-steps.ts +195 -0
- package/scripts/gate/gate-skip.ts +12 -2
- package/scripts/gate/gate-steps.ts +12 -1
- package/scripts/gate/held-mark.ts +55 -0
- package/scripts/gate/input-fingerprint.ts +42 -0
- package/scripts/gate/machine-capacity.ts +124 -31
- package/scripts/gate/moved-paths.ts +67 -0
- package/scripts/gate/pre-commit-type-check.ts +14 -1
- package/scripts/gate/project-checks.ts +5 -12
- package/scripts/gate/scoped-green.ts +12 -8
- package/scripts/gate/since-green.ts +62 -0
- package/scripts/gate/toolchain-inputs.ts +115 -0
- package/scripts/gate/verification-gate.ts +65 -129
- package/scripts/gate/verification-inputs.ts +250 -0
- package/scripts/gh/gh-author-association.ts +96 -9
- package/scripts/gh/git-ai-review-scan.ts +4 -2
- package/scripts/gh/git-gh-api-path.ts +15 -0
- package/scripts/gh/git-gh-branch-rules.ts +73 -0
- package/scripts/gh/git-gh-conditional.ts +5 -2
- package/scripts/gh/git-gh-issue-read.ts +5 -1
- package/scripts/gh/git-gh-issue-rest.ts +1 -0
- package/scripts/gh/git-gh-issue-write.ts +77 -17
- package/scripts/gh/git-gh-issue.ts +7 -3
- package/scripts/gh/git-gh-poll-read.ts +89 -0
- package/scripts/gh/git-gh-pr-auto-merge.ts +8 -3
- package/scripts/gh/git-gh-pr-rest.ts +1 -1
- package/scripts/gh/git-gh-pr-snapshot.ts +33 -20
- package/scripts/gh/git-gh-pr.ts +27 -15
- package/scripts/gh/git-pr-checks-eval.ts +39 -7
- package/scripts/gh/git-pr-checks-parse.ts +39 -9
- package/scripts/gh/git-pr-merge-checked.ts +80 -0
- package/scripts/gh/git-pr.ts +13 -1
- package/scripts/git/base-tree.ts +19 -2
- package/scripts/git/changed-file-scope.ts +6 -4
- package/scripts/git/changed-paths.ts +18 -1
- package/scripts/git/git-diff-reads.ts +27 -2
- package/scripts/git/git-grep-hits.ts +85 -0
- package/scripts/git/git-location-environment.ts +1 -1
- package/scripts/git/git-merge-conflicts.ts +83 -0
- package/scripts/git/git-preflight.ts +37 -12
- package/scripts/git/git-push-transport.ts +1 -2
- package/scripts/git/git-schemas.ts +17 -7
- package/scripts/git/git-spawn.ts +1 -2
- package/scripts/git/git-status.ts +4 -4
- package/scripts/git/main-merge-main.ts +12 -0
- package/scripts/git/main-merge-regenerate.ts +78 -0
- package/scripts/git/main-merge.ts +39 -14
- package/scripts/git/main-sync-main.ts +12 -0
- package/scripts/git/main-sync.ts +0 -9
- package/scripts/git/stash/git-stash.ts +27 -4
- package/scripts/git/stash/{stash-pop-args.ts → stash-args.ts} +13 -10
- package/scripts/git/stash/stash-pop-cli.ts +6 -12
- package/scripts/git/stash/stash-pop-main.ts +12 -0
- package/scripts/git/stash/stash-push-cli.ts +76 -0
- package/scripts/git/stash/stash-push-main.ts +12 -0
- package/scripts/hooks/batch-guard.ts +5 -16
- package/scripts/hooks/check-commit-message-main.ts +8 -0
- package/scripts/hooks/check-commit-message.ts +4 -7
- package/scripts/hooks/format-edited-file.ts +8 -24
- package/scripts/hooks/pre-commit-lint.ts +118 -0
- package/scripts/hooks/pre-push-unit.ts +4 -2
- package/scripts/hooks/pretool-guard-cli.ts +1 -8
- package/scripts/hooks/pretool-guard.ts +57 -69
- package/scripts/hooks/reserved-run.ts +67 -8
- package/scripts/hooks/run-hook.sh +18 -11
- package/scripts/hooks/shell-rules-notice.ts +37 -0
- package/scripts/hooks/stop-actions.ts +185 -0
- package/scripts/hooks/stop-guard.ts +72 -27
- package/scripts/init/hook-command-rewrite.ts +19 -5
- package/scripts/init/hook-launch.ts +15 -12
- package/scripts/init/init-actions.ts +0 -6
- package/scripts/init/init-ai-copy.ts +10 -36
- package/scripts/init/init-bootstrap.ts +9 -8
- package/scripts/init/init-dry-run-report.ts +1 -1
- package/scripts/init/init-dry-run.ts +1 -1
- package/scripts/init/init-file-action.ts +7 -9
- package/scripts/init/init-logic-json-merge.ts +2 -2
- package/scripts/init/init-logic-migrate.ts +9 -82
- package/scripts/init/init-logic.ts +3 -2
- package/scripts/init/init-main.ts +12 -0
- package/scripts/init/init.ts +5 -12
- package/scripts/init/kit-development-versions.ts +3 -7
- package/scripts/init/kit-written-paths.ts +2 -2
- package/scripts/init/project-profile.ts +5 -4
- package/scripts/init/tsconfig-preset-migration.ts +2 -1
- package/scripts/init/vscode-tasks.ts +1 -1
- package/scripts/issue/defect-origin-cli.ts +106 -0
- package/scripts/issue/defect-origin-line.ts +60 -0
- package/scripts/issue/defect-origin-main.ts +11 -0
- package/scripts/issue/defect-origin.ts +114 -0
- package/scripts/issue/defect-rate-cli.ts +34 -78
- package/scripts/issue/defect-rate.ts +0 -16
- package/scripts/issue/defect-report-cli.ts +128 -0
- package/scripts/issue/defect-report-format.ts +56 -0
- package/scripts/issue/defect-report-main.ts +11 -0
- package/scripts/issue/defect-report.ts +160 -0
- package/scripts/issue/expected-effect-lint.ts +60 -0
- package/scripts/issue/issue-already-done-cli.ts +62 -0
- package/scripts/issue/issue-body-or-comment.ts +40 -0
- package/scripts/issue/issue-cite-cli.ts +33 -22
- package/scripts/issue/issue-cite-main.ts +12 -0
- package/scripts/issue/issue-classification.ts +13 -8
- package/scripts/issue/issue-comment-cli.ts +10 -24
- package/scripts/issue/issue-comment-main.ts +12 -0
- package/scripts/issue/issue-evidence-exit.ts +100 -0
- package/scripts/issue/issue-file-cli.ts +29 -7
- package/scripts/issue/issue-file.ts +19 -19
- package/scripts/issue/issue-fold-cli.ts +2 -11
- package/scripts/issue/issue-fold-main.ts +12 -0
- package/scripts/issue/issue-labels.ts +81 -90
- package/scripts/issue/issue-lint-cli.ts +7 -13
- package/scripts/issue/issue-lint-main.ts +12 -0
- package/scripts/issue/issue-measured-cli.ts +56 -0
- package/scripts/issue/issue-merged.ts +19 -2
- package/scripts/issue/issue-not-before-label.ts +135 -0
- package/scripts/issue/issue-not-before.ts +111 -0
- package/scripts/issue/issue-number-shape.ts +15 -1
- package/scripts/issue/issue-park.ts +28 -0
- package/scripts/issue/issue-plan-cli.ts +151 -0
- package/scripts/issue/issue-priority.ts +151 -0
- package/scripts/issue/issue-rank.ts +7 -1
- package/scripts/issue/issue-read-cli.ts +3 -10
- package/scripts/issue/issue-read-main.ts +12 -0
- package/scripts/issue/issue-read.ts +29 -5
- package/scripts/issue/issue-release-cli.ts +0 -10
- package/scripts/issue/issue-release-main.ts +13 -0
- package/scripts/issue/issue-release.ts +7 -12
- package/scripts/issue/issue-sample-gate.ts +192 -0
- package/scripts/issue/issue-sample-source.ts +76 -0
- package/scripts/issue/issue-scout-cli.ts +19 -25
- package/scripts/issue/issue-scout-main.ts +14 -0
- package/scripts/issue/issue-state-cli.ts +0 -10
- package/scripts/issue/issue-state-main.ts +12 -0
- package/scripts/issue/issue-watch-diff.ts +56 -15
- package/scripts/issue/issue-watch.ts +2 -1
- package/scripts/issue/issue-wip.ts +2 -7
- package/scripts/issue/markdown-section.ts +19 -5
- package/scripts/issue/measure-rerun-cli.ts +13 -8
- package/scripts/issue/plan-consumers-cli.ts +39 -0
- package/scripts/issue/plan-consumers-main.ts +11 -0
- package/scripts/issue/plan-consumers-section.ts +55 -0
- package/scripts/issue/plan-consumers.ts +127 -0
- package/scripts/josh/agent-session-environment.ts +1 -1
- package/scripts/josh/command-usage.ts +82 -0
- package/scripts/josh/file-map-stamp.ts +49 -16
- package/scripts/josh/hook-decision.ts +32 -20
- package/scripts/josh/josh-command-map.ts +6 -1
- package/scripts/josh/josh-command-types.ts +65 -13
- package/scripts/josh/josh-commands-agent-hooks.ts +83 -0
- package/scripts/josh/josh-commands-ai.ts +169 -157
- package/scripts/josh/josh-commands-backlog.ts +82 -16
- package/scripts/josh/josh-commands-clone.ts +1 -0
- package/scripts/josh/josh-commands-development.ts +111 -71
- package/scripts/josh/josh-commands-document.ts +43 -1
- package/scripts/josh/josh-commands-epic.ts +171 -0
- package/scripts/josh/josh-commands-hooks.ts +31 -2
- package/scripts/josh/josh-commands-issue-write.ts +181 -0
- package/scripts/josh/josh-commands-issue.ts +124 -24
- package/scripts/josh/josh-commands-lane.ts +112 -2
- package/scripts/josh/josh-commands-lint.ts +19 -8
- package/scripts/josh/josh-commands-maintenance.ts +112 -4
- package/scripts/josh/josh-commands-pause.ts +29 -0
- package/scripts/josh/josh-commands-progress.ts +87 -0
- package/scripts/josh/josh-commands-project.ts +138 -9
- package/scripts/josh/josh-commands-review.ts +124 -0
- package/scripts/josh/josh-commands-run.ts +211 -23
- package/scripts/josh/josh-commands-ship.ts +169 -0
- package/scripts/josh/josh-commands-split.ts +9 -0
- package/scripts/josh/josh-commands-versioning.ts +49 -2
- package/scripts/josh/josh-commands-workflow.ts +149 -6
- package/scripts/josh/josh-logic.ts +11 -27
- package/scripts/josh/josh.ts +14 -5
- package/scripts/josh/package-directory.ts +18 -0
- package/scripts/josh/process-identity.ts +13 -4
- package/scripts/josh/session-language-cli.ts +4 -8
- package/scripts/josh/session-language-main.ts +13 -0
- package/scripts/josh/session-language.ts +6 -1
- package/scripts/josh/shared-cache.ts +90 -0
- package/scripts/josh/stamp-file.ts +9 -15
- package/scripts/lane/lane-await.ts +51 -12
- package/scripts/lane/lane-cache.ts +5 -30
- package/scripts/lane/lane-capacity.ts +19 -22
- package/scripts/lane/lane-check-stats.ts +97 -0
- package/scripts/lane/lane-child-invocation.ts +43 -4
- package/scripts/lane/lane-cli.ts +15 -5
- package/scripts/lane/lane-close.ts +86 -18
- package/scripts/lane/lane-core-wait-stats.ts +66 -0
- package/scripts/lane/lane-dispatch.ts +27 -6
- package/scripts/lane/lane-gap-stats.ts +156 -0
- package/scripts/lane/lane-guard-policy.ts +2 -2
- package/scripts/lane/lane-handoff.ts +76 -1
- package/scripts/lane/lane-held-stats.ts +129 -0
- package/scripts/lane/lane-install.ts +16 -15
- package/scripts/lane/lane-launch-cli.ts +0 -9
- package/scripts/lane/lane-launch-main.ts +12 -0
- package/scripts/lane/lane-ledger-schema.ts +266 -0
- package/scripts/lane/lane-ledger.ts +108 -97
- package/scripts/lane/lane-limit-cli.ts +19 -9
- package/scripts/lane/lane-measure-cli.ts +58 -10
- package/scripts/lane/lane-open.ts +9 -1
- package/scripts/lane/lane-parked.ts +3 -3
- package/scripts/lane/lane-pause-cli.ts +130 -0
- package/scripts/lane/lane-pause.ts +158 -0
- package/scripts/lane/lane-preserve.ts +29 -1
- package/scripts/lane/lane-process-table.ts +166 -0
- package/scripts/lane/lane-reap-settle.ts +124 -0
- package/scripts/lane/lane-reap.ts +50 -15
- package/scripts/lane/lane-registry.ts +33 -10
- package/scripts/lane/lane-residents.ts +162 -0
- package/scripts/lane/lane-restart.ts +26 -27
- package/scripts/lane/lane-round-two-stats.ts +49 -0
- package/scripts/lane/lane-sampler.ts +4 -0
- package/scripts/lane/lane-session-action.ts +160 -0
- package/scripts/lane/lane-session-broker.ts +134 -134
- package/scripts/lane/lane-snapshot-trace.ts +84 -0
- package/scripts/lane/lane-spans.ts +51 -0
- package/scripts/lane/lane-spent.ts +6 -3
- package/scripts/lane/lane-stage-stats.ts +7 -2
- package/scripts/lane/lane-state.ts +302 -0
- package/scripts/lane/lane-stats.ts +58 -4
- package/scripts/lane/lane-stop-stats.ts +113 -37
- package/scripts/lane/lane-test-related-stats.ts +127 -0
- package/scripts/lane/lane-transcript-calls.ts +145 -0
- package/scripts/lane/lane-transcript-stats.ts +168 -0
- package/scripts/lane/lane-vacant.ts +13 -3
- package/scripts/lane/lane-withdraw-cli.ts +72 -0
- package/scripts/lane/lane-withdraw.ts +183 -0
- package/scripts/lane/process-directories.ts +70 -0
- package/scripts/lane/process-lane-marks.ts +94 -0
- package/scripts/lib/atomic-write.ts +62 -0
- package/scripts/lib/buffered-process.ts +12 -5
- package/scripts/lib/cli-flags.ts +53 -0
- package/scripts/lib/figure-format.ts +63 -0
- package/scripts/lib/json-value.ts +9 -1
- package/scripts/lib/package-manifest.ts +35 -0
- package/scripts/lib/read-file.ts +3 -1
- package/scripts/lib/stamped-memo.ts +63 -0
- package/scripts/lib/stdout-on-stderr.ts +24 -0
- package/scripts/lib/timeouts.ts +9 -0
- package/scripts/lib/transcript-record.ts +91 -0
- package/scripts/lines/effective-limit.ts +1 -1
- package/scripts/lint/eslint-cache-dependencies.ts +145 -0
- package/scripts/lint/eslint-daemon.ts +265 -0
- package/scripts/lint/format.ts +14 -5
- package/scripts/lint/import-graph.ts +279 -0
- package/scripts/lint/lint-gate-scope.ts +102 -0
- package/scripts/lint/lint-parallel-main.ts +19 -0
- package/scripts/lint/lint-parallel.ts +72 -33
- package/scripts/lint/lint-related-scope.ts +33 -24
- package/scripts/lint/lint-related.ts +38 -6
- package/scripts/notify/confirmation-options.ts +1 -2
- package/scripts/notify/telegram-notify.ts +20 -20
- package/scripts/notify/telegram-test-logic.ts +0 -1
- package/scripts/notify/telegram-test-main.ts +8 -0
- package/scripts/notify/telegram-test.ts +12 -11
- package/scripts/observations/observation-ledger.ts +13 -0
- package/scripts/observations/observations-flush-landing.ts +5 -3
- package/scripts/observations/observations-flush.ts +6 -1
- package/scripts/overrides/overrides-check.ts +2 -5
- package/scripts/overrides/overrides-files.ts +2 -1
- package/scripts/overrides/overrides-logic.ts +3 -6
- package/scripts/package/verify-optional-eslint-install.ts +8 -6
- package/scripts/propagate/propagate-publish.ts +2 -7
- package/scripts/propagate/propagate-targets.ts +4 -12
- package/scripts/refactor/import-graph.ts +9 -7
- package/scripts/release/github-release-runs.ts +17 -6
- package/scripts/release/release-approval-prune.ts +18 -0
- package/scripts/release/release-history.ts +1 -3
- package/scripts/release/release-progress.ts +42 -22
- package/scripts/release/release-publish-run.ts +39 -0
- package/scripts/release/release-publish.ts +6 -6
- package/scripts/release/release-scope-cli.ts +0 -10
- package/scripts/release/release-scope-main.ts +12 -0
- package/scripts/repo/repo-setting.ts +3 -6
- package/scripts/repo/required-checks-logic.ts +6 -15
- package/scripts/report/report-format-reference.ts +4 -0
- package/scripts/report/report-labels.ts +155 -0
- package/scripts/report/report-lint-cli.ts +3 -0
- package/scripts/report/report-lint.ts +85 -110
- package/scripts/report/report-template-cli.ts +59 -0
- package/scripts/report/report-template.ts +112 -0
- package/scripts/review/acceptance-map-check.ts +61 -0
- package/scripts/review/acceptance-map.ts +206 -0
- package/scripts/review/removed-tests-check.ts +86 -0
- package/scripts/review/removed-tests.ts +149 -0
- package/scripts/review/review-brief-cli.ts +82 -16
- package/scripts/review/review-brief-main.ts +12 -0
- package/scripts/review/review-brief.ts +31 -3
- package/scripts/review/review-code-tree.ts +10 -6
- package/scripts/review/review-comment-round.ts +26 -8
- package/scripts/review/review-finding-ledger.ts +30 -15
- package/scripts/review/review-interaction.ts +94 -0
- package/scripts/review/review-readers-scan.ts +163 -0
- package/scripts/review/review-record-cli.ts +69 -30
- package/scripts/review/review-record-main.ts +12 -0
- package/scripts/review/review-round-one-blobs.ts +221 -0
- package/scripts/review/review-round2-cli.ts +49 -12
- package/scripts/review/review-round2.ts +80 -12
- package/scripts/review/review-stamps.ts +19 -1
- package/scripts/review/review-stop-log.ts +96 -0
- package/scripts/review/review-stops-cli.ts +85 -0
- package/scripts/review/review-tree.ts +6 -17
- package/scripts/review/review-untouched-readers.ts +146 -0
- package/scripts/review/test-titles.ts +118 -0
- package/scripts/rules/agent-model.ts +67 -0
- package/scripts/rules/bash-triggers.ts +46 -3
- package/scripts/rules/decision-oracle-batch.ts +9 -1
- package/scripts/rules/decision-oracle.ts +2 -2
- package/scripts/rules/delivered-rules.ts +90 -3
- package/scripts/rules/destructive-command.ts +8 -1
- package/scripts/rules/direct-filing.ts +10 -2
- package/scripts/rules/direct-issue-comment.ts +117 -0
- package/scripts/rules/direct-pr-create.ts +69 -3
- package/scripts/rules/early-heartbeat.ts +2 -1
- package/scripts/rules/file-body.ts +7 -0
- package/scripts/rules/filing-cap.ts +8 -0
- package/scripts/rules/firing-point.ts +6 -5
- package/scripts/rules/git-argv.ts +72 -14
- package/scripts/rules/git-force.ts +12 -2
- package/scripts/rules/guard-remedy.ts +121 -0
- package/scripts/rules/implementation-cut-verdict.ts +1 -1
- package/scripts/rules/implementation-cut.ts +11 -3
- package/scripts/rules/index-guard.ts +8 -1
- package/scripts/rules/issue-comments.ts +76 -7
- package/scripts/rules/josh-git-bare.ts +7 -0
- package/scripts/rules/lane-background.ts +67 -25
- package/scripts/rules/lane-carry-conflict.ts +6 -0
- package/scripts/rules/lane-direct-tool.ts +74 -0
- package/scripts/rules/lane-interactive-ask.ts +9 -2
- package/scripts/rules/lane-park.ts +45 -23
- package/scripts/rules/lane-split-park.ts +10 -2
- package/scripts/rules/lane-switch-main.ts +7 -0
- package/scripts/rules/last-prompt.ts +50 -5
- package/scripts/rules/oracle-consulted.ts +10 -0
- package/scripts/rules/oracle-firing.ts +1 -0
- package/scripts/rules/oracle-list-cli.ts +7 -0
- package/scripts/rules/permission-guards.ts +3 -0
- package/scripts/rules/piped-verification.ts +4 -2
- package/scripts/rules/poll-loop.ts +7 -0
- package/scripts/rules/pr-merge.ts +123 -0
- package/scripts/rules/protected-files.ts +32 -5
- package/scripts/rules/raw-field-body.ts +6 -0
- package/scripts/rules/rule-body-guard.ts +8 -0
- package/scripts/rules/rule-list.ts +12 -28
- package/scripts/rules/rule-rewrite.ts +114 -0
- package/scripts/rules/rule-value-cache.ts +4 -9
- package/scripts/rules/rule-value-cli.ts +51 -32
- package/scripts/rules/rule-value.ts +8 -2
- package/scripts/rules/shell-segments.ts +50 -0
- package/scripts/rules/stop-decision.ts +77 -0
- package/scripts/rules/stop-rule-rows.ts +64 -0
- package/scripts/rules/stop-rules.ts +150 -51
- package/scripts/rules/tail-commands.ts +15 -1
- package/scripts/rules/test-declared-commit.ts +11 -1
- package/scripts/rules/third-party-write.ts +7 -0
- package/scripts/rules/timed-rerun.ts +69 -0
- package/scripts/rules/worktree-guard.ts +13 -3
- package/scripts/run/board/run-board-app-name.ts +23 -0
- package/scripts/run/board/run-board-cli.ts +65 -30
- package/scripts/run/board/run-board-closed.ts +8 -2
- package/scripts/run/board/run-board-earlier.ts +94 -0
- package/scripts/run/board/run-board-ending-reason.ts +67 -0
- package/scripts/run/board/run-board-estimate-schedule.ts +103 -0
- package/scripts/run/board/run-board-estimate.ts +98 -0
- package/scripts/run/board/run-board-fit.ts +153 -36
- package/scripts/run/board/run-board-fold.ts +123 -0
- package/scripts/run/board/run-board-fresh.ts +2 -2
- package/scripts/run/board/run-board-gather-live.ts +29 -0
- package/scripts/run/board/run-board-gather-thread.ts +189 -0
- package/scripts/run/board/run-board-gather-worker.ts +29 -0
- package/scripts/run/board/run-board-gather.ts +187 -0
- package/scripts/run/board/run-board-github.ts +119 -31
- package/scripts/run/board/run-board-header.ts +86 -21
- package/scripts/run/board/run-board-keys.ts +58 -0
- package/scripts/run/board/run-board-kind.ts +20 -6
- package/scripts/run/board/run-board-labels.ts +118 -71
- package/scripts/run/board/run-board-lane-state.ts +109 -0
- package/scripts/run/board/run-board-lane-time.ts +122 -0
- package/scripts/run/board/run-board-layout.ts +240 -61
- package/scripts/run/board/run-board-length.ts +52 -0
- package/scripts/run/board/run-board-machine.ts +8 -4
- package/scripts/run/board/run-board-main.ts +12 -0
- package/scripts/run/board/run-board-notes.ts +52 -31
- package/scripts/run/board/run-board-now.ts +1 -1
- package/scripts/run/board/run-board-operation.ts +15 -33
- package/scripts/run/board/run-board-phase.ts +1 -1
- package/scripts/run/board/run-board-plan-shared.ts +115 -0
- package/scripts/run/board/run-board-plan.ts +55 -3
- package/scripts/run/board/run-board-planning.ts +45 -0
- package/scripts/run/board/run-board-priority.ts +44 -0
- package/scripts/run/board/run-board-process-groups.ts +195 -0
- package/scripts/run/board/run-board-read.ts +153 -13
- package/scripts/run/board/run-board-reason.ts +238 -45
- package/scripts/run/board/run-board-released.ts +35 -0
- package/scripts/run/board/run-board-render-checks.ts +39 -5
- package/scripts/run/board/run-board-render-condition.ts +96 -0
- package/scripts/run/board/run-board-render-drawn.ts +67 -0
- package/scripts/run/board/run-board-render-foot.ts +59 -0
- package/scripts/run/board/run-board-render-icon.ts +35 -0
- package/scripts/run/board/run-board-render-lanes.ts +145 -0
- package/scripts/run/board/run-board-render-lead.ts +80 -0
- package/scripts/run/board/run-board-render-legend.ts +117 -47
- package/scripts/run/board/run-board-render-notes.ts +156 -29
- package/scripts/run/board/run-board-render-processes.ts +196 -0
- package/scripts/run/board/run-board-render-section.ts +119 -0
- package/scripts/run/board/run-board-render-slot.ts +3 -36
- package/scripts/run/board/run-board-render-tail.ts +115 -48
- package/scripts/run/board/run-board-render-time.ts +56 -0
- package/scripts/run/board/run-board-render-title.ts +117 -24
- package/scripts/run/board/run-board-render-waits.ts +125 -0
- package/scripts/run/board/run-board-render.ts +206 -259
- package/scripts/run/board/run-board-roots.ts +54 -0
- package/scripts/run/board/run-board-row-yield.ts +10 -4
- package/scripts/run/board/run-board-setup.ts +1 -12
- package/scripts/run/board/run-board-snapshot.ts +111 -0
- package/scripts/run/board/run-board-spin.ts +2 -2
- package/scripts/run/board/run-board-state.ts +23 -29
- package/scripts/run/board/run-board-status.ts +206 -79
- package/scripts/run/board/run-board-thanks-read.ts +2 -2
- package/scripts/run/board/run-board-tick.ts +123 -104
- package/scripts/run/board/run-board-usage-board.ts +78 -0
- package/scripts/run/board/run-board-usage-lanes.ts +113 -0
- package/scripts/run/board/run-board-usage-listing.ts +93 -0
- package/scripts/run/board/run-board-usage-read.ts +120 -150
- package/scripts/run/board/run-board-usage-rusage.ts +19 -7
- package/scripts/run/board/run-board-usage-text.ts +139 -51
- package/scripts/run/board/run-board-usage-top.ts +102 -0
- package/scripts/run/board/run-board-usage.ts +89 -72
- package/scripts/run/board/run-board-usual.ts +20 -9
- package/scripts/run/carry/run-carry-args.ts +4 -7
- package/scripts/run/carry/run-carry-conversation.ts +1 -1
- package/scripts/run/carry/run-carry.ts +9 -4
- package/scripts/run/cut/run-cut-cli.ts +3 -2
- package/scripts/run/cut/run-cut-handoff.ts +2 -2
- package/scripts/run/cut/run-cut-report.ts +16 -0
- package/scripts/run/detached-launch.ts +23 -4
- package/scripts/run/entry/run-entry-cli.ts +8 -1
- package/scripts/run/event/run-event-cli.ts +1 -5
- package/scripts/run/event/run-event-filed.ts +12 -6
- package/scripts/run/event/run-event-follow.ts +2 -3
- package/scripts/run/event/run-event-render.ts +7 -10
- package/scripts/run/event/run-event-scope.ts +20 -2
- package/scripts/run/event/run-event-stream-emit.ts +78 -11
- package/scripts/run/event/run-event-stream.ts +37 -7
- package/scripts/run/hold/run-hold-adopt.ts +65 -0
- package/scripts/run/hold/run-hold-cli.ts +93 -22
- package/scripts/run/hold/run-hold-main.ts +12 -0
- package/scripts/run/hold/run-hold-member.ts +37 -0
- package/scripts/run/hold/run-hold-session.ts +46 -0
- package/scripts/run/hold/run-hold.ts +7 -1
- package/scripts/run/hold/run-stop-notify.ts +183 -0
- package/scripts/run/launch-priority.ts +32 -0
- package/scripts/run/merge/run-merge-auth.ts +31 -0
- package/scripts/run/merge/run-merge-cli.ts +72 -107
- package/scripts/run/merge/run-merge-close.ts +74 -0
- package/scripts/run/merge/run-merge-collect.ts +6 -13
- package/scripts/run/merge/run-merge-driver.ts +71 -0
- package/scripts/run/merge/run-merge-main.ts +12 -0
- package/scripts/run/merge/run-merge-outcome.ts +23 -0
- package/scripts/run/merge/run-merge-restart.ts +39 -0
- package/scripts/run/merge/run-merge-ship.ts +20 -4
- package/scripts/run/merge/run-merge-signals.ts +123 -0
- package/scripts/run/merge/run-merge-steps.ts +128 -83
- package/scripts/run/merge/run-merge.ts +53 -40
- package/scripts/run/park/run-park-cli.ts +91 -0
- package/scripts/run/park/run-park.ts +88 -0
- package/scripts/run/park/run-stalled.ts +68 -0
- package/scripts/run/pause/run-pause-cli.ts +73 -0
- package/scripts/run/pause/run-pause.ts +251 -0
- package/scripts/run/progress/run-progress-cli.ts +4 -12
- package/scripts/run/progress/run-progress-clock.ts +1 -1
- package/scripts/run/progress/run-progress-config.ts +6 -14
- package/scripts/run/progress/run-progress-main.ts +12 -0
- package/scripts/run/progress/run-progress.ts +1 -4
- package/scripts/run/review/run-review.ts +2 -1
- package/scripts/run/run-ending.ts +1 -0
- package/scripts/run/run-invocation.ts +5 -6
- package/scripts/run/run-liveness-cli.ts +6 -8
- package/scripts/run/run-liveness.ts +61 -30
- package/scripts/run/run-next.ts +1 -1
- package/scripts/run/run-parent-cut-hook.ts +2 -2
- package/scripts/run/run-poll-hook.ts +157 -0
- package/scripts/run/run-preflight.ts +18 -3
- package/scripts/run/run-prep-cli.ts +1 -10
- package/scripts/run/run-prep-locate.ts +7 -50
- package/scripts/run/run-prep-main.ts +12 -0
- package/scripts/run/run-prep.ts +6 -0
- package/scripts/run/run-report-cli.ts +101 -13
- package/scripts/run/run-report-handoff.ts +114 -0
- package/scripts/run/run-step-cli.ts +22 -15
- package/scripts/run/run-step-section.ts +85 -0
- package/scripts/run/run-step.ts +1 -1
- package/scripts/run/run-stranded-detect.ts +13 -0
- package/scripts/run/run-watcher-guard-cli.ts +1 -1
- package/scripts/run/run-watcher-guard.ts +1 -1
- package/scripts/run/ship/run-ship-args.ts +121 -0
- package/scripts/run/ship/run-ship-body-draft.ts +110 -0
- package/scripts/run/ship/run-ship-cli.ts +67 -151
- package/scripts/run/ship/run-ship-detach.ts +27 -7
- package/scripts/run/ship/run-ship-infra-retry.ts +59 -0
- package/scripts/run/ship/run-ship-next.ts +27 -3
- package/scripts/run/ship/run-ship-overlap.ts +232 -0
- package/scripts/run/ship/run-ship-place.ts +96 -0
- package/scripts/run/ship/run-ship-pre-detach-timed.ts +43 -0
- package/scripts/run/ship/run-ship-pre-detach.ts +102 -27
- package/scripts/run/ship/run-ship-preflight.ts +161 -30
- package/scripts/run/ship/run-ship-probe.ts +11 -3
- package/scripts/run/ship/run-ship-relaunch-cap.ts +70 -0
- package/scripts/run/ship/run-ship-removed-rows.ts +61 -0
- package/scripts/run/ship/run-ship-return.ts +123 -15
- package/scripts/run/ship/run-ship-review-steps.ts +105 -149
- package/scripts/run/ship/run-ship-review.ts +73 -6
- package/scripts/run/ship/run-ship-reviewer.ts +207 -0
- package/scripts/run/ship/run-ship-stage.ts +55 -6
- package/scripts/run/ship/run-ship-steps.ts +46 -15
- package/scripts/run/ship/run-ship-stop-cause.ts +135 -0
- package/scripts/run/ship/run-ship-stop-context.ts +206 -0
- package/scripts/run/ship/run-ship-stop-text.ts +11 -6
- package/scripts/run/ship/run-ship-sync.ts +57 -12
- package/scripts/run/ship/run-ship.ts +30 -2
- package/scripts/run/tidy/run-tidy-cli.ts +0 -4
- package/scripts/run/tidy/run-tidy-lanes.ts +3 -0
- package/scripts/run/tidy/run-tidy-main.ts +8 -0
- package/scripts/run/wake/run-wake-cli.ts +119 -100
- package/scripts/run/wake/run-wake-code.ts +83 -0
- package/scripts/run/wake/run-wake-driver.ts +19 -8
- package/scripts/run/wake/run-wake-loop.ts +34 -3
- package/scripts/run/wake/run-wake-main.ts +13 -0
- package/scripts/run/wake/run-wake-ports.ts +90 -0
- package/scripts/run/wake/run-wake-takeover.ts +66 -0
- package/scripts/run/wake/run-wake.ts +2 -1
- package/scripts/safe-chain/pack-hook.ts +2 -2
- package/scripts/safe-chain/preinstall-command.ts +2 -1
- package/scripts/safe-chain/project-config.ts +3 -9
- package/scripts/security/security-audit-main.ts +8 -0
- package/scripts/security/security-audit-provision-logic.ts +0 -11
- package/scripts/security/security-audit-provision-main.ts +12 -0
- package/scripts/security/security-audit-provision.ts +11 -26
- package/scripts/security/security-audit.ts +6 -7
- package/scripts/self-sync-guard/self-sync-guard-logic.ts +6 -13
- package/scripts/split/split-assess-cli.ts +2 -2
- package/scripts/split/split-assess.ts +15 -0
- package/scripts/split/split-measure.ts +65 -0
- package/scripts/sync/claude-settings-merge.ts +8 -15
- package/scripts/sync/directory-copy-guard.ts +4 -9
- package/scripts/sync/file-content.ts +78 -8
- package/scripts/sync/sync-ai-files.ts +3 -5
- package/scripts/sync/sync-configs.ts +11 -23
- package/scripts/sync/sync-hook-safety.ts +4 -10
- package/scripts/sync/sync-main.ts +11 -0
- package/scripts/sync/sync.ts +25 -37
- package/scripts/test/test-declared-changed.ts +2 -2
- package/scripts/test/test-declared.ts +1 -1
- package/scripts/test/test-e2e-guard.ts +55 -6
- package/scripts/test/test-e2e-stamp.ts +38 -0
- package/scripts/test/test-pinned-logic.ts +145 -0
- package/scripts/test/test-pinned-main.ts +78 -0
- package/scripts/test/test-pinned.ts +100 -0
- package/scripts/test/test-read-map.ts +264 -0
- package/scripts/test/test-read-recording.ts +91 -0
- package/scripts/test/test-read-trace.ts +148 -0
- package/scripts/test/test-red-main.ts +12 -0
- package/scripts/test/test-red.ts +12 -30
- package/scripts/test/test-related-main.ts +18 -0
- package/scripts/test/test-related-record.ts +119 -0
- package/scripts/test/test-related-scope.ts +229 -43
- package/scripts/test/test-related.ts +300 -22
- package/scripts/test/test-unit-guard-main.ts +15 -0
- package/scripts/test/test-unit-guard.ts +54 -21
- package/scripts/test/unit-count-file.ts +37 -0
- package/scripts/test/unit-run-marker.ts +162 -0
- package/scripts/test/unit-setup-files.ts +51 -0
- package/scripts/test/unit-worker-share.ts +71 -137
- package/scripts/test/whole-suite-files.ts +63 -0
- package/scripts/time-runtime/time-background.ts +20 -2
- package/scripts/time-runtime/time-bundles.ts +4 -3
- package/scripts/time-runtime/time-density-hook.ts +8 -6
- package/scripts/time-runtime/time-followup-stage.ts +1 -3
- package/scripts/time-runtime/time-format.ts +5 -28
- package/scripts/time-runtime/time-markers.ts +10 -1
- package/scripts/time-runtime/time-shell.ts +126 -14
- package/scripts/time-runtime/time-spans.ts +1 -0
- package/scripts/time-runtime/time-tool-call.ts +7 -0
- package/scripts/time-runtime/time-transcript-line.ts +49 -62
- package/scripts/uninstall/uninstall.ts +1 -1
- package/scripts/version/bump-version-main.ts +12 -0
- package/scripts/version/bump-version.ts +25 -25
- package/scripts/version/effective-upstream.ts +6 -12
- package/scripts/version/latest-corepack.ts +17 -32
- package/scripts/version/latest-if-required-cli.ts +93 -0
- package/scripts/version/latest-lane-guard-main.ts +8 -0
- package/scripts/version/latest-lane-guard.ts +0 -4
- package/scripts/version/latest-scope-cli.ts +0 -9
- package/scripts/version/latest-scope-main.ts +12 -0
- package/scripts/version/latest-update.ts +5 -5
- package/scripts/version/npm-registry.ts +44 -6
- package/scripts/version/publishable-range-check.ts +5 -16
- package/scripts/version/release-age.ts +1 -1
- package/scripts/version/release-hold.ts +1 -1
- package/scripts/version/release-window.ts +38 -0
- package/scripts/version/running-binary.ts +1 -1
- package/scripts/version/safe-chain-version-update.ts +3 -8
- package/scripts/version/version-targets.ts +6 -28
- package/templates/dependabot.yml +29 -0
- package/templates/gitignore +10 -3
- package/templates/pnpm-workspace.basic.yaml +1 -1
- package/templates/sonar-project.properties +3 -2
- package/templates/workflows/ci.yml +12 -4
- package/templates/workflows/github-release.yml +4 -0
- package/tsconfig.sonar.json +1 -1
- package/.ncurc.json +0 -3
- package/dist/hooks/batch-guard.js +0 -29
- package/dist/hooks/chunk-43ZHT22P.js +0 -3495
- package/dist/hooks/chunk-CDY4NFQG.js +0 -15
- package/dist/hooks/chunk-EUMACUK2.js +0 -2038
- package/dist/hooks/chunk-H5HVWYXK.js +0 -359
- package/dist/hooks/chunk-IIGFYXKC.js +0 -7104
- package/dist/hooks/chunk-IX6TTTI6.js +0 -95
- package/dist/hooks/chunk-J47HU5H5.js +0 -237
- package/dist/hooks/chunk-K4EOONYM.js +0 -45
- package/dist/hooks/chunk-K4LMBQC2.js +0 -68
- package/dist/hooks/chunk-SHGPANFB.js +0 -56
- package/dist/hooks/chunk-YHBZAJSV.js +0 -79
- package/dist/hooks/chunk-YYPI7SJZ.js +0 -131
- package/dist/hooks/duplicate-read-guard.js +0 -30
- package/dist/hooks/investigation-guard.js +0 -32
- package/scripts/backlog/backlog-stalled-cli.ts +0 -30
- package/scripts/cost-runtime/cost-format.ts +0 -29
- package/scripts/init/basic-path-migration.ts +0 -24
- package/scripts/issue/issue-backlinks-cli.ts +0 -93
- package/scripts/josh/josh-commands-guard.ts +0 -38
- package/scripts/lint/cross-file-recheck.ts +0 -155
- package/scripts/registry-migration/migrate-logic.ts +0 -237
- package/scripts/registry-migration/migrate.ts +0 -292
- package/scripts/registry-migration/user-npmrc.ts +0 -15
- package/scripts/rules/rule-guard.ts +0 -23
- package/scripts/rules/rule-registry-rows.ts +0 -282
- package/scripts/rules/rule-registry.ts +0 -109
- package/scripts/run/run-stranded-cli.ts +0 -27
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: investigator
|
|
3
|
-
description: Read-only investigation unit for the pre-implementation reading — finds out how an Issue's subject currently works and returns the conclusion with its `file:line` citations, never the file text. Dispatch it when `pnpm josh
|
|
3
|
+
description: Read-only investigation unit for the pre-implementation reading — finds out how an Issue's subject currently works and returns the conclusion with its `file:line` citations, never the file text. Dispatch it when the `investigation` row of `pnpm josh rule:list` asks for a delegated unit, or when `pnpm josh delegate investigation` answers `delegate`.
|
|
4
4
|
tools: Read, Grep, Glob, Bash
|
|
5
5
|
model: sonnet
|
|
6
6
|
effort: low
|
package/.claude/settings.json
CHANGED
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"hooks": [
|
|
55
55
|
{
|
|
56
56
|
"type": "command",
|
|
57
|
-
"command": "project_root=\"$(
|
|
57
|
+
"command": "project_root=\"${CLAUDE_PROJECT_DIR:-$( (unset GIT_ALTERNATE_OBJECT_DIRECTORIES GIT_COMMON_DIR GIT_DIR GIT_INDEX_FILE GIT_NAMESPACE GIT_OBJECT_DIRECTORY GIT_WORK_TREE; git rev-parse --show-toplevel 2>/dev/null) || git rev-parse --show-toplevel)}\" && cd \"$project_root\" && sh scripts/hooks/run-hook.sh audit-provision",
|
|
58
58
|
"timeout": 180
|
|
59
59
|
}
|
|
60
60
|
]
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"hooks": [
|
|
67
67
|
{
|
|
68
68
|
"type": "command",
|
|
69
|
-
"command": "project_root=\"$(
|
|
69
|
+
"command": "project_root=\"${CLAUDE_PROJECT_DIR:-$( (unset GIT_ALTERNATE_OBJECT_DIRECTORIES GIT_COMMON_DIR GIT_DIR GIT_INDEX_FILE GIT_NAMESPACE GIT_OBJECT_DIRECTORY GIT_WORK_TREE; git rev-parse --show-toplevel 2>/dev/null) || git rev-parse --show-toplevel)}\" && cd \"$project_root\" && sh scripts/hooks/run-hook.sh session-lang",
|
|
70
70
|
"timeout": 10
|
|
71
71
|
}
|
|
72
72
|
]
|
|
@@ -74,11 +74,11 @@
|
|
|
74
74
|
],
|
|
75
75
|
"PreToolUse": [
|
|
76
76
|
{
|
|
77
|
-
"matcher": "Bash|Edit|Read|Write|AskUserQuestion",
|
|
77
|
+
"matcher": "Bash|Edit|Read|Write|AskUserQuestion|Agent|Task",
|
|
78
78
|
"hooks": [
|
|
79
79
|
{
|
|
80
80
|
"type": "command",
|
|
81
|
-
"command": "project_root=\"$(
|
|
81
|
+
"command": "project_root=\"${CLAUDE_PROJECT_DIR:-$( (unset GIT_ALTERNATE_OBJECT_DIRECTORIES GIT_COMMON_DIR GIT_DIR GIT_INDEX_FILE GIT_NAMESPACE GIT_OBJECT_DIRECTORY GIT_WORK_TREE; git rev-parse --show-toplevel 2>/dev/null) || git rev-parse --show-toplevel)}\" && cd \"$project_root\" && sh scripts/hooks/run-hook.sh pretool-guard",
|
|
82
82
|
"timeout": 20
|
|
83
83
|
}
|
|
84
84
|
]
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"hooks": [
|
|
91
91
|
{
|
|
92
92
|
"type": "command",
|
|
93
|
-
"command": "project_root=\"$(
|
|
93
|
+
"command": "project_root=\"${CLAUDE_PROJECT_DIR:-$( (unset GIT_ALTERNATE_OBJECT_DIRECTORIES GIT_COMMON_DIR GIT_DIR GIT_INDEX_FILE GIT_NAMESPACE GIT_OBJECT_DIRECTORY GIT_WORK_TREE; git rev-parse --show-toplevel 2>/dev/null) || git rev-parse --show-toplevel)}\" && cd \"$project_root\" && sh scripts/hooks/run-hook.sh format-edited",
|
|
94
94
|
"timeout": 90
|
|
95
95
|
}
|
|
96
96
|
]
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"hooks": [
|
|
103
103
|
{
|
|
104
104
|
"type": "command",
|
|
105
|
-
"command": "project_root=\"$(
|
|
105
|
+
"command": "project_root=\"${CLAUDE_PROJECT_DIR:-$( (unset GIT_ALTERNATE_OBJECT_DIRECTORIES GIT_COMMON_DIR GIT_DIR GIT_INDEX_FILE GIT_NAMESPACE GIT_OBJECT_DIRECTORY GIT_WORK_TREE; git rev-parse --show-toplevel 2>/dev/null) || git rev-parse --show-toplevel)}\" && cd \"$project_root\" && sh scripts/hooks/run-hook.sh stop-guard",
|
|
106
106
|
"timeout": 20
|
|
107
107
|
}
|
|
108
108
|
]
|
|
@@ -5,9 +5,6 @@ description: Procedures for `josh epic:audit`, `epic:next` and `epic:bundle`. Re
|
|
|
5
5
|
|
|
6
6
|
# The `josh epic:*` commands
|
|
7
7
|
|
|
8
|
-
This skill is the single source for the three commands. Reasons: `docs/maintainers/epic-commands-rationale.md`
|
|
9
|
-
→ "Where each rule came from".
|
|
10
|
-
|
|
11
8
|
The workflow keywords themselves — `kickoff`, `fullrun`, `halfrun`, `prrun`, `backlogrun` — live in the
|
|
12
9
|
`workflow-commands` skill.
|
|
13
10
|
|
|
@@ -32,9 +29,8 @@ Recording a decision removes that child's `needs-decision` label (Tier A; `backl
|
|
|
32
29
|
|
|
33
30
|
- **Decided as a child joins the epic**: `pnpm josh epic --add … --decision-file` writes both
|
|
34
31
|
(`epic-bundle.md`).
|
|
35
|
-
- **About a child the epic already tracks**:
|
|
36
|
-
|
|
37
|
-
that the epic's `## Decisions` entry is still pending**.
|
|
32
|
+
- **About a child the epic already tracks**: `pnpm josh epic --decide <E> <N...> --decision-file
|
|
33
|
+
<path|->` writes the entry, the comments and the label removal; a rerun writes nothing twice.
|
|
38
34
|
|
|
39
35
|
```md
|
|
40
36
|
## Decisions
|
|
@@ -60,29 +56,17 @@ pnpm josh epic "<epic-title>" <N1> <N2> ... --ordered # argument order is the d
|
|
|
60
56
|
```
|
|
61
57
|
|
|
62
58
|
After any hand edit run `pnpm josh epic:check <E>` (exit 1 when the body no longer parses).
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
`
|
|
59
|
+
The epic closes once every task-list child is closed, whichever path closes the last child
|
|
60
|
+
(`pnpm josh followup`, `josh issue:measured`, `josh run:merge`); one whose last child a person
|
|
61
|
+
closed (`already-done`) closes at the next of those closes, for any child. One with a child whose
|
|
62
|
+
state cannot be read is closed by hand. Without `josh`: `issue-template.md`.
|
|
66
63
|
|
|
67
64
|
## `josh epic:audit <E>` — contradictions across the children
|
|
68
65
|
|
|
69
66
|
`epic:check` verifies the format; this verifies the children agree. Run it **without being asked**
|
|
70
67
|
when a `backlogrun` starts a named epic's children, and right after a child is added or a dependency
|
|
71
|
-
changed.
|
|
72
|
-
|
|
73
|
-
| Check | Level |
|
|
74
|
-
| --- | --- |
|
|
75
|
-
| A child's body names another child, nothing orders the two | warning |
|
|
76
|
-
| A child's **acceptance criteria** name another child, nothing orders the two | **error**; a warning once both are closed or when the pair spans two repositories — the child is still offered as runnable until the relation is recorded |
|
|
77
|
-
| A body cites a missing or already-closed issue | warning |
|
|
78
|
-
| A task-list row points at another **epic** | warning — `epic:next` already withholds the row; a person should look |
|
|
79
|
-
| An issue names this epic as parent that the task list does not track | warning |
|
|
80
|
-
| The search for those issues could not read the open backlog | **error** |
|
|
81
|
-
| That search stopped before the end of the backlog | warning |
|
|
82
|
-
|
|
83
|
-
**Only errors fail it** (exit 1). A forward reference the other child already depends on is not
|
|
84
|
-
reported. A pair is demoted to a warning only when the closed state is **confirmed** (any state but
|
|
85
|
-
`CLOSED` normalizes to `OPEN`).
|
|
68
|
+
changed. **Only errors fail it** (exit 1); the checks are `docs/josh-commands-backlog.md` →
|
|
69
|
+
"`josh epic:audit`".
|
|
86
70
|
|
|
87
71
|
**Fixing what it finds is Tier A** — fix it and record why on the issue. Park with `needs-decision`
|
|
88
72
|
only for a design choice nobody has made.
|
|
@@ -91,39 +75,24 @@ The two `orphan search` findings are about the search, not the children:
|
|
|
91
75
|
|
|
92
76
|
- `✖ orphan search: Could not list the open issues…` — **re-run the audit**; nothing to fix or decide.
|
|
93
77
|
If it keeps failing, check `gh auth status` and the rate limit.
|
|
94
|
-
- `⚠ orphan search: The open-issue scan hit its …` —
|
|
95
|
-
|
|
78
|
+
- `⚠ orphan search: The open-issue scan hit its …` — the audit passes. Look further by hand if an
|
|
79
|
+
orphan is expected.
|
|
96
80
|
|
|
97
|
-
**
|
|
98
|
-
|
|
99
|
-
`
|
|
100
|
-
|
|
101
|
-
History: `docs/maintainers/epic-commands-rationale.md` → "`epic:audit` — why the children are read across".
|
|
81
|
+
**That a child introducing a new label, command, state or artifact updates the existing code
|
|
82
|
+
referencing it is checked at planning**, not here: each plan's `### 影響を受ける既存の利用者` section,
|
|
83
|
+
drafted by `pnpm josh plan:consumers` and required by `issue:plan`, names every consumer and which
|
|
84
|
+
issue fixes it. Label names live in `scripts/issue/issue-labels.ts`.
|
|
102
85
|
|
|
103
86
|
## `josh epic:next <E…>` — what is runnable
|
|
104
87
|
|
|
105
|
-
Returns **every** runnable child, bundled per repository with its local checkout
|
|
106
|
-
|
|
107
|
-
|
|
88
|
+
Returns **every** runnable child, bundled per repository with its local checkout; several epics answer
|
|
89
|
+
as one pool, prioritized in the order they were named. How it weighs blockers, lanes and nested epics:
|
|
90
|
+
`docs/josh-commands-backlog.md` → "`josh epic:next`".
|
|
108
91
|
|
|
109
|
-
- **Several epics answer as one**: every argument before the first flag is an epic; their runnable
|
|
110
|
-
children merge into one pool per repository. **Priority is the order the epics were named**, then
|
|
111
|
-
each epic's own task-list order (its declared chain still decides what is runnable).
|
|
112
92
|
- **Reorder with `pnpm josh epic --add <E> <N> --order-before <M>`** (or `--order-after <M>`), never a
|
|
113
|
-
hand edit
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
- **One unusable graph refuses the whole answer**; **one reference that does not parse fails the
|
|
117
|
-
read**. Worked form: `docs/josh-commands-backlog.md` → "`josh epic:next`".
|
|
118
|
-
|
|
119
|
-
**An `in-progress` issue occupies a lane, not the repository.** Free lanes are `JOSH_LANE_LIMIT`
|
|
120
|
-
(**default 4**) minus that repository's `in-progress` listing. At zero the answer is `wait`, with the
|
|
121
|
-
holders on standard error. A parked child releases its lane; a `needs-human-review` stop keeps it.
|
|
122
|
-
|
|
123
|
-
**A child that is itself an epic is never offered** and waits on a *person*. The test is the child's
|
|
124
|
-
`epic` label, never how its row is written: a cross-repository `owner/repo#N` row that is not an epic
|
|
125
|
-
stays runnable. **A parent epic over another epic never auto-closes** (a grandchild's merge never
|
|
126
|
-
reaches it); `epic:audit` reports the row.
|
|
93
|
+
hand edit. Moving a row does not free a child a chain still holds — the command prints a ⚠️ line.
|
|
94
|
+
- **Order two epics with a native `blocked-by` relation and name both** — `epic:next <E1> <E2>`, or
|
|
95
|
+
`backlog:next`.
|
|
127
96
|
|
|
128
97
|
Children that are not runnable are sorted by **whether waiting helps**, never by label:
|
|
129
98
|
|
|
@@ -133,55 +102,35 @@ Children that are not runnable are sorted by **whether waiting helps**, never by
|
|
|
133
102
|
| Waiting on time | Wait and ask again |
|
|
134
103
|
| Waiting on a person | Stop and report |
|
|
135
104
|
|
|
136
|
-
**A blocker outside every named epic is weighed**: closed, it resolves (cross-repository: after its
|
|
137
|
-
release); open and tracked by an epic named in the same call, the child waits on time (or on a person,
|
|
138
|
-
if the blocker does); open and untracked, the child waits on a person and the blocker is named on
|
|
139
|
-
standard error; an unknown state reads as waiting. **Order two epics with a native `blocked-by`
|
|
140
|
-
relation and name both** — `epic:next <E1> <E2>`, or `backlog:next`.
|
|
141
|
-
|
|
142
105
|
Two things stop the command: a **circular dependency**, and a **disagreement between the epic body
|
|
143
106
|
and the `blocked-by` relations**. Only a line that is *nothing but* a chain is a declaration — a prose
|
|
144
107
|
line recommending an execution order is a suggestion, not a dependency.
|
|
145
108
|
|
|
146
|
-
Why: `docs/maintainers/epic-commands-rationale.md` → "`epic:next` — why it answers as it does".
|
|
147
|
-
|
|
148
109
|
## Epics that span repositories
|
|
149
110
|
|
|
150
|
-
Write cross-repository children as `owner/repo#N` or a full issue URL
|
|
151
|
-
|
|
111
|
+
Write cross-repository children as `owner/repo#N` or a full issue URL; **no local clone is needed to
|
|
112
|
+
learn their state** — only to implement.
|
|
152
113
|
|
|
153
114
|
- **The owner restriction is inherited unchanged**: a different owner is never a target.
|
|
154
|
-
- **The epic auto-closes only when every cross-repository child's state could be read.**
|
|
155
115
|
- **An epic in another repository is referenced as `owner/repo#N`** — `backlogrun
|
|
156
116
|
joshuafolkken/kit#<E> --only`, `epic:next joshuafolkken/kit#<E> --repo joshuafolkken/app-kit`. A
|
|
157
117
|
bare `#N` is this repository's issue.
|
|
158
|
-
-
|
|
159
|
-
**never cloned on its own**.
|
|
160
|
-
|
|
161
|
-
**A cross-repository dependency resolves only when the blocker is closed and the version its default
|
|
162
|
-
branch declares is in the registry** (checked in that order; that exact version). A child no longer
|
|
163
|
-
bumps the version, so the target is the release that includes the blocker. **Unless that repository
|
|
164
|
-
publishes nothing**: no `package.json` on its default branch, or `private`, resolves on close — read
|
|
165
|
-
from its manifest, never the registry; a failed manifest read (not a 404) still waits. The publish
|
|
166
|
-
check is `josh propagate`'s. History: `docs/maintainers/epic-commands-rationale.md` → "Cross-repository epics".
|
|
118
|
+
- **A candidate printed `(no local checkout)` is never cloned on its own.**
|
|
167
119
|
|
|
168
120
|
## `josh epic:bundle <N>` — does this new issue belong with one already filed?
|
|
169
121
|
|
|
170
122
|
Runs right after any filing; **`pnpm josh issue:file` runs it as its last step** — run it by hand only
|
|
171
|
-
when that step printed `⚠`. **It recommends;
|
|
123
|
+
when that step printed `⚠`. **It recommends and writes nothing; `--apply` writes an `add_to_epic` /
|
|
124
|
+
`create_epic` answer.**
|
|
172
125
|
|
|
173
126
|
| Candidates | Do | Tier |
|
|
174
127
|
| --- | --- | --- |
|
|
175
128
|
| **The new issue itself already has an epic** | Nothing — an issue belongs to at most one | — |
|
|
176
129
|
| Already a child of an epic | Add to **that** epic; do not create a second | A |
|
|
177
130
|
| Spread across an epic and its **own parent** | Add to the inner epic — the parent already contains it | A |
|
|
178
|
-
| Spread across **different** epics | **Choose the one you recommend
|
|
131
|
+
| Spread across **different** epics | **Choose the one you recommend** (`epic-bundle.md`) | **A** |
|
|
179
132
|
| In no epic, two or more counting the new issue | Create an epic | A |
|
|
180
133
|
| No strong signal | Nothing | — |
|
|
181
134
|
| **The epic listing was cut short** | **Nothing** — every placing row above is withheld | — |
|
|
182
135
|
|
|
183
136
|
**A placing answer is acted on with `epic-bundle.md`**. `Nothing to bundle.` needs no further read.
|
|
184
|
-
|
|
185
|
-
History: `docs/maintainers/epic-commands-rationale.md` → "`epic:bundle` — why issues filed apart are bundled afterwards";
|
|
186
|
-
the reasons behind `epic-bundle.md`: `docs/maintainers/epic-commands-rationale.md` → "`epic:bundle` — why each answer reads as it does";
|
|
187
|
-
behind `execution-waves.md`: `docs/maintainers/epic-commands-rationale.md` → "Execution waves — why a wave is not a mechanism".
|
|
@@ -2,14 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
Read this when a filing's `epic:bundle` answer places the issue (`add_to_epic`, `create_epic`, or a
|
|
4
4
|
choice between epics), or when `SKILL.md` → "`josh epic:bundle <N>` — does this new issue belong with
|
|
5
|
-
one already filed?" does not settle it. `Nothing to bundle.` needs neither.
|
|
6
|
-
`docs/maintainers/epic-commands-rationale.md` → "`epic:bundle` — why each answer reads as it does".
|
|
5
|
+
one already filed?" does not settle it. `Nothing to bundle.` needs neither.
|
|
7
6
|
|
|
8
|
-
**Only two things count as a signal**:
|
|
9
|
-
|
|
7
|
+
**Only two things count as a signal**: one issue naming the other in its acceptance criteria
|
|
8
|
+
(`## 受け入れ条件` / `## Acceptance criteria`) or its `parent: #N` / `親: #N` line, or a `blocked-by`
|
|
9
|
+
recorded between them. A reference elsewhere, or a similar title, never counts; the evidence line
|
|
10
|
+
names the section.
|
|
11
|
+
|
|
12
|
+
**A placing answer you do not follow** — check it against both issues first; record the reason as an
|
|
13
|
+
`Auto-decided:` line on the issue.
|
|
10
14
|
|
|
11
15
|
**The release issue is neither a candidate nor a subject**, like an epic — its `blocked-by` relations
|
|
12
|
-
are mechanical. Any other `blocked-by` or
|
|
16
|
+
are mechanical. Any other `blocked-by` or counted reference still counts.
|
|
13
17
|
|
|
14
18
|
**The search is not limited to the open backlog.** Every number the subject's own body names is read
|
|
15
19
|
(capped at twenty), whatever its state:
|
|
@@ -35,6 +39,8 @@ Could not confirm which epic already tracks these — do not place this issue in
|
|
|
35
39
|
It prints no children or order. What survives the cut is a membership that *was* found (the table's
|
|
36
40
|
first row).
|
|
37
41
|
|
|
42
|
+
**`pnpm josh epic:bundle <N> --apply` writes `add_to_epic` / `create_epic`**; `ask` is placed below.
|
|
43
|
+
|
|
38
44
|
**Placing an issue is not merging epics.** Choosing between two candidate epics is Tier A: take the one
|
|
39
45
|
you recommend and write the decision (taken, rejected, why, date) on **both** the issue and the epic's
|
|
40
46
|
`## Decisions`. **Merging two epics is a different action, and nothing here proposes it.**
|
|
@@ -52,7 +58,7 @@ written:
|
|
|
52
58
|
order in backticks or a fenced block.
|
|
53
59
|
- **An empty record, or `--decision-file` with no usable path.**
|
|
54
60
|
|
|
55
|
-
|
|
61
|
+
Children already tracked: `pnpm josh epic --decide` (`SKILL.md` → "Recording a decision").
|
|
56
62
|
|
|
57
63
|
**Its sibling runs before the filing: `pnpm josh issue:scout "<title>"`** — the same epic question for
|
|
58
64
|
an issue not yet filed, plus whether the work is already filed. **Both run**: `pnpm josh issue:file`
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# Execution waves — parallel, then one alone, then the rest
|
|
2
2
|
|
|
3
3
|
Read this when an epic's children need an order between groups — a wave boundary, or one child that
|
|
4
|
-
must run alone. It builds on `SKILL.md` → "`josh epic:next <E…>` — what is runnable".
|
|
5
|
-
`docs/maintainers/epic-commands-rationale.md` → "Execution waves — why a wave is not a mechanism".
|
|
4
|
+
must run alone. It builds on `SKILL.md` → "`josh epic:next <E…>` — what is runnable".
|
|
6
5
|
|
|
7
6
|
**A wave is not a mechanism, and there is nothing to add for one** — the dependency declaration
|
|
8
7
|
already expresses it.
|
|
@@ -7,8 +7,7 @@ argument-hint: '[route] [route...]'
|
|
|
7
7
|
# Verify the rendered screen
|
|
8
8
|
|
|
9
9
|
A rendered-UI change is not done until someone has looked at it (`CLAUDE.md` → completion gate);
|
|
10
|
-
passing tests are not that look.
|
|
11
|
-
reads as it does".
|
|
10
|
+
passing tests are not that look.
|
|
12
11
|
|
|
13
12
|
## 1. Decide which routes to capture
|
|
14
13
|
|
|
@@ -5,10 +5,7 @@ description: Procedures for `kickoff`, `fullrun`, `halfrun`, `prrun` and `backlo
|
|
|
5
5
|
|
|
6
6
|
# Issue-driven workflow commands
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
package's collaboration workflow is built on. **This file is their manifest — triggers and pointers,
|
|
10
|
-
never a procedure**: each rule is stated once, in the file its row names. History:
|
|
11
|
-
`docs/maintainers/workflow-commands-rationale.md` → "Where each rule came from".
|
|
8
|
+
Each rule is stated once, in the file its row names.
|
|
12
9
|
|
|
13
10
|
## 0. The rule that fires before any of them — explicit invocation
|
|
14
11
|
|
|
@@ -19,8 +16,9 @@ alone**: `backlogrun-steps.md` → "The session cut is inside the invocation".
|
|
|
19
16
|
## 1. Which file to read
|
|
20
17
|
|
|
21
18
|
Read this file, then the files the typed command's row names. A command file is a **manifest** of
|
|
22
|
-
terse triggers and pointers; `pnpm josh run:step <N>` prints the run's next single action
|
|
23
|
-
from the event stream, the carry record and the issue state, never
|
|
19
|
+
terse triggers and pointers; `pnpm josh run:step <N>` prints the run's next single action and the
|
|
20
|
+
section that governs it, computed from the event stream, the carry record and the issue state, never
|
|
21
|
+
the conversation; a section it prints is not fetched again.
|
|
24
22
|
|
|
25
23
|
| Typed keyword | Read |
|
|
26
24
|
| ---------------------------------------- | ------------------------------------------- |
|
|
@@ -31,8 +29,8 @@ from the event stream, the carry record and the issue state, never the conversat
|
|
|
31
29
|
| `backlogrun` / `backlogrun #N…` / `backlogrun #E…` | `backlogrun.md` — its dispatched child reads `fullrun.md` + `split-assessment.md` in its own unit, not the parent at entry |
|
|
32
30
|
|
|
33
31
|
`entry-sequence.md` holds the entry sequence and stop branches `fullrun`, `halfrun` and `prrun` share;
|
|
34
|
-
each manifest carries only its difference. `split-assessment.md` → "The question" is
|
|
35
|
-
entry
|
|
32
|
+
each manifest carries only its difference. `split-assessment.md` → "The question" is printed by
|
|
33
|
+
`pnpm josh run:entry` at the entry, its split-handling detail read only when a split is found.
|
|
36
34
|
|
|
37
35
|
### The fetch is one `Read` call per file
|
|
38
36
|
|
|
@@ -47,12 +45,12 @@ Each is fetched at its named scope, in the same turn, by the named command that
|
|
|
47
45
|
|
|
48
46
|
| Document | Read it when |
|
|
49
47
|
| ----------------------- | ------------------------------------------------------------------------------ |
|
|
50
|
-
| `latest-gate.md` | `
|
|
48
|
+
| `latest-gate.md` | `run:prep` answers `latest: required` — before `josh latest:if-required` runs |
|
|
51
49
|
| `followup.md` → "Run `pnpm josh followup`" | Before issuing `pnpm josh followup`, in that same turn |
|
|
52
50
|
| `chain-rule.md` → "Run the review-to-merge chain" | Before the first `pnpm josh gate` launch (`fullrun` / `prrun` / `backlogrun`) — the gate overlaps the review, so the section is read before it |
|
|
53
51
|
| `background-commands.md` → "Background the gate and push" | Before backgrounding `pnpm josh gate` — the first long-running command a run detaches (`fullrun` / `halfrun` / `prrun` / `backlogrun`) |
|
|
54
52
|
|
|
55
|
-
A `skip` answer
|
|
53
|
+
A `latest: skip` answer reads nothing. **A lane child that parks reads
|
|
56
54
|
`backlogrun-park.md` → "park and continue" at that point of use**, and **every implementing run reads
|
|
57
55
|
`progress-watcher.md` → "Progress while the run is quiet"** before starting `pnpm josh run:progress
|
|
58
56
|
--wait` once its hold is claimed.
|
|
@@ -81,9 +79,9 @@ from — read at that trigger, never restated here.
|
|
|
81
79
|
| An entry typed with an `owner/repo#` prefix or a short `repo#` name | Resolve the target and its checkout; an explicit foreign owner stops the run | `target-repository.md` |
|
|
82
80
|
| A `new` entry typed with an `into <target>` suffix | Insert the artifact into the named epic with `pnpm josh epic --add <E> <N>` | `into-target.md` |
|
|
83
81
|
| Before any work starts (every entry) | The split assessment; the default is not to split — separability **and** a scope clearly over one gate must hold together; a `fullrun` / `halfrun` that finds a split files the epic and **stops** | `split-assessment.md` → "The question" |
|
|
84
|
-
| Before implementing (every
|
|
85
|
-
| `
|
|
86
|
-
|
|
|
82
|
+
| Before implementing (every implementing entry) | `pnpm josh run:prep <N>` (`run:entry` bundles it; `kickoff` reads `pnpm josh issue:read <N>`) — the body and the comments; the later of a body and a comment wins | `issue-comments.md` |
|
|
83
|
+
| `run:prep` answers `human_review: yes` | Implement and gate, run `pnpm josh test:e2e`, then stop before the commit with `pnpm josh run:hold <N> --human-review-stop`; the label is applied only by a person | `needs-human-review.md` |
|
|
84
|
+
| `run:prep` answers `latest: required` | Read the doc and run `pnpm josh latest:if-required`, then load the `dependency-update` skill | `latest-gate.md` (read whole, only on `required`) |
|
|
87
85
|
| Before delegating any run step | `pnpm josh delegate <step>` decides eligibility, never you | `delegation.md` |
|
|
88
86
|
| The pre-implementation reading reaches 3 unedited files | Delegate the unread investigation; a file this run will edit is read in the main line | `delegation.md` → "The pre-implementation reading" |
|
|
89
87
|
| Immediately before implementation | Present the two-layer work summary (once per Issue); `kickoff` posts a plan instead | `prompts/collaboration-workflow/report-format.md` |
|
|
@@ -100,7 +98,7 @@ from — read at that trigger, never restated here.
|
|
|
100
98
|
| `backlogrun`'s authorization | The whole `auto-ok` opted-in pool as well as its named items; `pnpm josh backlog:next` offers them | `backlogrun.md` |
|
|
101
99
|
| `run:step` prints the retrospective step (a run drained its backlog and stopped, not a lane child) | Run what it prints once, file 0–2 improvements, then `pnpm josh run:carry --retrospective` | `retrospective.md` |
|
|
102
100
|
| Any artifact prose (Issue bodies, comments, Telegram) | Session language (`JOSH_SESSION_LANG`, default `ja`); Issue/PR titles stay English | `prompts/collaboration-workflow/overview.md` |
|
|
103
|
-
| Any mid-workflow stop |
|
|
101
|
+
| Any mid-workflow stop | `stop:guard` sends the `confirmation` Telegram; on its refusal, send it | `CLAUDE.md` → "Mid-workflow stop notification" |
|
|
104
102
|
|
|
105
103
|
## 3. What stays resident, and what is read from here
|
|
106
104
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- Background `pnpm josh gate` beside the review; join it before commit.
|
|
8
8
|
- Issue `pnpm josh git -y` in the background; its completion resumes the run, so the turn never ends
|
|
9
9
|
at the push.
|
|
10
|
-
-
|
|
10
|
+
- `pnpm josh followup` stays in the foreground (`followup.md`).
|
|
11
11
|
- **Record before the CI wait ends, never after the merge**: the commit
|
|
12
12
|
carries the observation ledger lines recorded so far, and while CI runs the run makes the records
|
|
13
13
|
that need no CI result — observation Issues, the completion report draft.
|
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
- A lane child's hand-off or pre-gate cut is the sole turn boundary before the push (`chain-rule.md`).
|
|
18
18
|
|
|
19
19
|
Use harness detachment so completion returns to the run. Foreground timeouts stay within the cap.
|
|
20
|
-
Where each rule came from: `docs/maintainers/background-commands-rationale.md` → "Where each rule came from".
|
|
21
20
|
|
|
22
21
|
## How the wait ends — the task's exit, never a regex over its output
|
|
23
22
|
|
|
@@ -26,9 +25,8 @@ when it *exits* — that completion notification is what ends the wait, not a re
|
|
|
26
25
|
limit.
|
|
27
26
|
|
|
28
27
|
**Never hand-write a `while`/`until` … `sleep` loop over the output file** — a regex that never matches
|
|
29
|
-
waits to the block limit, one that matches a mid-run line exits early. `pnpm josh rule:
|
|
30
|
-
(`prompts/collaboration-workflow/rule-delivery.md
|
|
31
|
-
→ "Why a poll loop is refused").
|
|
28
|
+
waits to the block limit, one that matches a mid-run line exits early. the `poll-loop` row of `pnpm josh rule:list` refuses it
|
|
29
|
+
(`prompts/collaboration-workflow/rule-delivery.md`).
|
|
32
30
|
|
|
33
31
|
**To glance at interim output, `Read` the output file once**, never in a sleep loop. CI is waited on by
|
|
34
32
|
`pnpm josh followup`; a progress heartbeat is `run:progress --wait`'s job (`early-heartbeat` refuses a
|
|
@@ -37,8 +35,7 @@ hand-armed timer).
|
|
|
37
35
|
## The tail and what overlaps each wait
|
|
38
36
|
|
|
39
37
|
**Never give a foreground call a timeout above the harness cap** — a larger number detaches it without
|
|
40
|
-
the completion notification
|
|
41
|
-
collects idle time").
|
|
38
|
+
the completion notification.
|
|
42
39
|
|
|
43
40
|
**The tail is emptied before `followup` is issued.** Each step is asked one question: **does it read the
|
|
44
41
|
merge result?**
|
|
@@ -62,17 +59,16 @@ merge result?**
|
|
|
62
59
|
| `pnpm josh followup` | Nothing — it is foreground. **The post-merge tail is taken before the call**: compose the epic progress counters first, and leave after the merge only the steps that read its result, plus `pnpm josh cost --cut` |
|
|
63
60
|
|
|
64
61
|
**The turn never ends at the push.** The `pnpm josh git -y` completion resumes the run, and that turn
|
|
65
|
-
goes straight through any branch-2 filing and `pnpm josh epic:bundle` to `pnpm josh followup`.
|
|
66
|
-
josh rule:
|
|
67
|
-
push reissued detached is not refused again
|
|
68
|
-
the push is guarded").
|
|
62
|
+
goes straight through any branch-2 filing and `pnpm josh epic:bundle` to `pnpm josh followup`. the
|
|
63
|
+
`run-tail` row of `pnpm josh rule:list` refuses the foreground push (`prompts/collaboration-workflow/rule-delivery.md`); the
|
|
64
|
+
push reissued detached is not refused again.
|
|
69
65
|
|
|
70
66
|
**One turn does end before the push: a dispatched lane child's pre-gate cut** — `pre-gate-cut.md` →
|
|
71
67
|
"Taking the cut".
|
|
72
68
|
|
|
73
69
|
**A headless lane child (`claude -p`) is where "a background command re-invokes the run" does not
|
|
74
70
|
hold: its background Bash tasks are killed when its turn ends.** It hands the gate-to-merge region to a
|
|
75
|
-
foreground `pnpm josh ship --detach` (`chain-rule.md` step 0); `pnpm josh rule:
|
|
71
|
+
foreground `pnpm josh ship --detach` (`chain-rule.md` step 0); the `lane-background` row of `pnpm josh rule:list` refuses a
|
|
76
72
|
backgrounded `josh gate` / `git` / `followup` / `ship` there, and the `Stop` hook sends a child with a
|
|
77
73
|
task still running back to wait.
|
|
78
74
|
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
# `backlogrun` — running a child (shared mechanics, delegation, liveness, session setup)
|
|
2
2
|
|
|
3
|
-
Point-of-use, read one section at a time from `backlogrun.md` → "The
|
|
4
|
-
|
|
5
|
-
- `docs/maintainers/backlogrun-child-rationale.md` → "Why the file is read by section"
|
|
6
|
-
- `docs/maintainers/backlogrun-child-rationale.md` → "Why a bare Issue promotes itself under `backlogrun` but not under `fullrun`"
|
|
7
|
-
- `docs/maintainers/backlogrun-child-rationale.md` → "Why each child runs in a delegated unit"
|
|
8
|
-
- `docs/maintainers/backlogrun-child-rationale.md` → "Why the summary is bounded the way it is"
|
|
9
|
-
- `docs/maintainers/backlogrun-child-rationale.md` → "Why the audit runs before the first child"
|
|
10
|
-
- `docs/maintainers/backlogrun-child-rationale.md` → "Why `josh latest` is hoisted to the session"
|
|
11
|
-
- `docs/maintainers/backlogrun-child-rationale.md` → "Why the preflight is part of the claim"
|
|
3
|
+
Point-of-use, read one section at a time from `backlogrun.md` → "The manifest — the ordered flow".
|
|
12
4
|
|
|
13
5
|
## Running a child — the shared mechanics
|
|
14
6
|
|
|
@@ -23,8 +15,9 @@ or a split found mid-run does **not** stop it:
|
|
|
23
15
|
|
|
24
16
|
1. File the new Issue(s) — `route:split` for a split, `route:tier-a` for a prerequisite — no
|
|
25
17
|
confirmation.
|
|
26
|
-
2. **Stash and remove `in-progress
|
|
27
|
-
`
|
|
18
|
+
2. **Stash and remove `in-progress`**: for a prerequisite `<P>`, `pnpm josh run:pause <N> --for <P>`
|
|
19
|
+
(`prerequisite.md`), which also records the dependency step 3 would; for a split,
|
|
20
|
+
`pnpm josh stash:push "..."`, `pnpm josh issue:comment <N> --body-file <path>` recording the
|
|
28
21
|
stash, and `pnpm josh run:release <N>`.
|
|
29
22
|
3. **Ask `pnpm josh epic:bundle <N>` whether an epic already tracks `#<N>` before creating one.**
|
|
30
23
|
|
|
@@ -52,7 +45,7 @@ or a split found mid-run does **not** stop it:
|
|
|
52
45
|
5. **Do not stop.** Continue into the loop against `#<E>`.
|
|
53
46
|
|
|
54
47
|
- **Nothing found means no epic** — the run finishes at `#<N>`'s merge.
|
|
55
|
-
- **Every guard applies unchanged**
|
|
48
|
+
- **Every guard applies unchanged** (`backlogrun.md` → "Guards").
|
|
56
49
|
- **`fullrun` does not promote itself** — it files and **stops** (`split-assessment.md` → "Finding a
|
|
57
50
|
split mid-run stops the run"). `josh epic:next` still refuses an Issue with no task list.
|
|
58
51
|
- **A bare Issue named beside an epic is a mistyped command.** Named alone, the refusal is the answer;
|
|
@@ -73,6 +66,8 @@ unit, run the child in the parent's context and still ask the hand-off at every
|
|
|
73
66
|
- **The brief names the invocation it descends from** — e.g. `backlogrun #<E> --only`, the child
|
|
74
67
|
number, and that it runs as `fullrun #<N>` under that authorization; the unit refuses a brief without
|
|
75
68
|
it.
|
|
69
|
+
- A child whose ship waits on its merge frees its lane — the next child launches beside it, and a
|
|
70
|
+
stop at `followup` relaunches the child once a place is free: `scripts/backlog/backlog-occupied.ts`.
|
|
76
71
|
|
|
77
72
|
### What the summary carries, and how long it may be
|
|
78
73
|
|
|
@@ -89,7 +84,8 @@ is unchanged.
|
|
|
89
84
|
|
|
90
85
|
## A delegated unit that stopped without reporting
|
|
91
86
|
|
|
92
|
-
**Hand the child off without blocking, and
|
|
87
|
+
**Hand the child off without blocking, and wait on `pnpm josh lane:await <N>`** — a stopped unit
|
|
88
|
+
leaves no notification, so the await's exit is the wake. Once its
|
|
93
89
|
output is unchanged for the silent-unit window, read `backlogrun-recovery.md` → "A delegated unit that
|
|
94
90
|
stopped without reporting" and ask `pnpm josh run:liveness`.
|
|
95
91
|
|
|
@@ -100,14 +96,13 @@ creates the epic. Errors stop the run; warnings are read and passed. Fixing a fi
|
|
|
100
96
|
|
|
101
97
|
## `josh latest` runs once per session, not once per child
|
|
102
98
|
|
|
103
|
-
|
|
99
|
+
Run once, the first time the loop hands back a child number, before implementing it:
|
|
104
100
|
|
|
105
101
|
```bash
|
|
106
|
-
pnpm josh
|
|
107
|
-
git stash push -u -m "backlogrun: josh latest #<N>" # only if the tree has staged or modified files — never conditional on the answer
|
|
102
|
+
pnpm josh stash:push "backlogrun: ms #<N>" # `clean` when nothing changed
|
|
108
103
|
pnpm josh ms
|
|
109
|
-
pnpm josh
|
|
110
|
-
pnpm josh
|
|
104
|
+
pnpm josh stash:pop "backlogrun: ms #<N>" # only after `stashed` above
|
|
105
|
+
pnpm josh latest:if-required # stash → josh latest → pop; nothing on `skip`
|
|
111
106
|
```
|
|
112
107
|
|
|
113
108
|
On `required`, load the `dependency-update` skill; `latest-gate.md` is the single source. A resumed
|
|
@@ -1,29 +1,11 @@
|
|
|
1
1
|
# `backlogrun` — the hand-off report
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
read when the run stops at the hand-off (`backlogrun-progress.md` → "The hand-off"). The two-layer
|
|
5
|
-
structure and the label translations are `prompts/collaboration-workflow/report-format.md`.
|
|
3
|
+
Read when the run stops at the hand-off (`backlogrun-progress.md` → "The hand-off").
|
|
6
4
|
|
|
7
|
-
**
|
|
8
|
-
|
|
5
|
+
**Run `pnpm josh run:report --handoff`, and relay what it prints.** It prints the hand-off report
|
|
6
|
+
from `run:carry` and `cost --cut`, and sends the same text as the `confirmation` Telegram, the resume
|
|
7
|
+
command as its `--recommended`. Nothing in it is written by hand. A send that did not go out is
|
|
8
|
+
named on stderr; the printed report is still the hand-off.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
- **終わったこと**: <このセッションでマージした子を番号で名指しする>
|
|
14
|
-
- **残っていること**: <残りの子を件数と番号で名指しする。park した子はその旨も>
|
|
15
|
-
- **止めた理由**: <なぜここで区切ったか。判断ではなくコマンドの答えを書く>
|
|
16
|
-
- **次に打つコマンド**: <このランを再開するコマンド。`backlogrun` なら残りだけの `backlogrun #<next> #<after> …`(指定 epic だけなら `backlogrun #<E> --only`)>
|
|
17
|
-
|
|
18
|
-
**技術詳細**
|
|
19
|
-
|
|
20
|
-
- 計測: <`pnpm josh cost` が出した値と閾値>
|
|
21
|
-
- 引き継ぎ: <状態は GitHub にあり、会話には何も無いこと>
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
- One sentence per line, no internal identifiers, every child named by number. **Never omit
|
|
25
|
-
`Remaining`** — it is the one line that tells this report from a completion report
|
|
26
|
-
- Telegram uses the same format and is **sent with `--task-type confirmation`** (`completion` would
|
|
27
|
-
announce an unfinished epic as done), `--recommended` naming the resume command
|
|
28
|
-
- **Write it only when the run stops.** While a run carries on past the threshold it writes none; the
|
|
29
|
-
epic progress comment is the record
|
|
10
|
+
- **Run it only when the run stops.** While a run carries on past the threshold there is no report;
|
|
11
|
+
the epic progress comment is the record
|