@joshuafolkken/kit 1.1240.0 → 1.1373.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/investigator.md +1 -0
- package/.claude/settings.json +4 -0
- package/.claude/skills/dependency-update/SKILL.md +5 -3
- package/.claude/skills/epic-commands/SKILL.md +82 -113
- package/.claude/skills/epic-commands/epic-bundle.md +38 -63
- package/.claude/skills/epic-commands/execution-waves.md +30 -51
- package/.claude/skills/verify-ui/SKILL.md +13 -20
- package/.claude/skills/workflow-commands/SKILL.md +10 -10
- package/.claude/skills/workflow-commands/background-commands.md +4 -4
- package/.claude/skills/workflow-commands/backlogrun-child.md +30 -105
- package/.claude/skills/workflow-commands/backlogrun-handoff-report.md +29 -0
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +45 -131
- package/.claude/skills/workflow-commands/backlogrun-park.md +36 -53
- package/.claude/skills/workflow-commands/backlogrun-progress.md +81 -331
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +29 -83
- package/.claude/skills/workflow-commands/backlogrun-steps.md +105 -424
- package/.claude/skills/workflow-commands/backlogrun.md +52 -61
- package/.claude/skills/workflow-commands/chain-rule.md +36 -40
- package/.claude/skills/workflow-commands/entry-sequence.md +6 -6
- package/.claude/skills/workflow-commands/followup.md +19 -20
- package/.claude/skills/workflow-commands/fullrun-steps.md +23 -27
- package/.claude/skills/workflow-commands/fullrun.md +10 -10
- package/.claude/skills/workflow-commands/halfrun.md +9 -8
- package/.claude/skills/workflow-commands/into-target.md +12 -18
- package/.claude/skills/workflow-commands/issue-comments.md +11 -26
- package/.claude/skills/workflow-commands/kickoff.md +26 -16
- package/.claude/skills/workflow-commands/latest-gate.md +17 -28
- package/.claude/skills/workflow-commands/needs-human-review.md +13 -24
- package/.claude/skills/workflow-commands/observation-filing.md +37 -28
- package/.claude/skills/workflow-commands/observation-ledger.md +48 -38
- package/.claude/skills/workflow-commands/pre-gate-cut.md +9 -9
- package/.claude/skills/workflow-commands/prerequisite.md +23 -15
- package/.claude/skills/workflow-commands/progress-watcher.md +17 -11
- package/.claude/skills/workflow-commands/prrun.md +3 -3
- package/.claude/skills/workflow-commands/retrospective.md +13 -18
- package/.claude/skills/workflow-commands/split-assessment.md +6 -4
- package/.claude/skills/workflow-commands/target-repository.md +25 -28
- package/.claude/skills/workflow-commands/working-tree-hold.md +11 -17
- package/.gitattributes +2 -1
- package/.github/workflows/ci.yml +14 -0
- package/.vscode/tasks.json +14 -0
- package/CLAUDE.md +10 -61
- package/README.md +23 -66
- package/SECURITY.md +1 -1
- package/dist/CLAUDE.md +10 -61
- package/dist/commands/document-section-cli.js +43 -11
- package/dist/config-merge/index.js +11 -2
- package/dist/hooks/audit-provision.js +2 -2
- package/dist/hooks/batch-guard.js +7 -7
- package/dist/hooks/{chunk-KHGB5S3Y.js → chunk-7UBFU3CL.js} +18 -20
- package/dist/hooks/{chunk-ZQGD4GBY.js → chunk-7WKYHEGU.js} +8 -44
- package/dist/hooks/{chunk-4TZVB44A.js → chunk-AKGCP4LX.js} +285 -363
- package/dist/hooks/{chunk-QVSWU24O.js → chunk-BZMPVFDY.js} +7 -5
- package/dist/hooks/{chunk-5VNDSNG3.js → chunk-FZ6FUSBM.js} +1 -1
- package/dist/hooks/{chunk-GPTFMK5E.js → chunk-GG72ANKI.js} +1 -1
- package/dist/hooks/{chunk-XZYKEM6J.js → chunk-JCRDBQXB.js} +13 -11
- package/dist/hooks/{chunk-F3ELQ2AF.js → chunk-JGW24KKM.js} +4 -4
- package/dist/hooks/{chunk-ELCN5LCH.js → chunk-NEC4AT4Z.js} +34 -12
- package/dist/hooks/chunk-NZN2UFI6.js +2409 -0
- package/dist/hooks/{chunk-WK2XSHSI.js → chunk-SLSFIWTX.js} +550 -875
- package/dist/hooks/chunk-UTHMB4O2.js +1590 -0
- package/dist/hooks/{chunk-KRBERBBI.js → chunk-V4TKZHER.js} +4 -4
- package/dist/hooks/chunk-YLBBSSTF.js +3705 -0
- package/dist/hooks/chunk-Z5TMJIPW.js +45 -0
- package/dist/hooks/codex-hook-adapter.js +26 -21
- package/dist/hooks/duplicate-read-guard.js +8 -8
- package/dist/hooks/format-edited.js +4 -4
- package/dist/hooks/inputs.json +195 -181
- package/dist/hooks/investigation-guard.js +8 -8
- package/dist/hooks/pretool-guard.js +15 -15
- package/dist/hooks/session-lang.js +406 -8
- package/dist/hooks/stop-guard.js +122 -187
- package/dist/josh.js +282 -95
- package/dist/version/index.js +15 -13
- package/eslint/base.js +43 -5
- package/eslint/rules/english-only-prose.js +3 -3
- package/eslint/rules/import.js +12 -0
- package/eslint/rules/namespace-object-export.js +2 -2
- package/package.json +17 -11
- package/pnpm-workspace.yaml +2 -4
- package/prompts/coding-standards.md +14 -48
- package/prompts/collaboration-workflow/file-edits.md +1 -1
- package/prompts/collaboration-workflow/issue-citation.md +1 -1
- package/prompts/collaboration-workflow/issue-template.md +3 -10
- package/prompts/collaboration-workflow/operating-rules.md +7 -8
- package/prompts/collaboration-workflow/output-bounds.md +1 -1
- package/prompts/collaboration-workflow/overview.md +1 -1
- package/prompts/collaboration-workflow/plan-comment.md +2 -1
- package/prompts/collaboration-workflow/principles.md +21 -3
- package/prompts/collaboration-workflow/report-format.md +16 -29
- package/prompts/collaboration-workflow/residency.md +1 -1
- package/prompts/collaboration-workflow/rule-delivery.md +7 -95
- package/prompts/collaboration-workflow/shell-body.md +3 -23
- package/prompts/collaboration-workflow/turn-batching.md +4 -13
- package/prompts/collaboration-workflow/wip-cap.md +5 -11
- package/prompts/refactoring.md +1 -1
- package/prompts/review-rubric.md +3 -22
- package/prompts/review.md +15 -38
- package/prompts/testing-guide.md +2 -4
- package/scripts/adopt/adopt-logic.ts +5 -5
- package/scripts/adopt/adopt-toolkits.ts +4 -5
- package/scripts/adopt/adopt.ts +2 -3
- package/scripts/agent/agent-argv.ts +7 -7
- package/scripts/agent/agent-diagnostics.ts +2 -2
- package/scripts/agent/agent-exit-record.ts +1 -1
- package/scripts/agent/agent-headless.ts +1 -1
- package/scripts/agent/agent-launch-environment.ts +6 -1
- package/scripts/agent/agent-role-profile.ts +49 -22
- package/scripts/agent/agent-session-role.ts +32 -0
- package/scripts/agent/api-outage.ts +1 -1
- package/scripts/agent/claude-agent-argv.ts +4 -4
- package/scripts/agent/claude-result-event.ts +4 -4
- package/scripts/agent/codex-hooks.ts +2 -2
- package/scripts/agent/interactive-ask.ts +3 -6
- package/scripts/auto-ok/auto-ok-cli.ts +46 -60
- package/scripts/backlog/backlog-arrival-added.ts +34 -0
- package/scripts/backlog/backlog-arrival.ts +54 -17
- package/scripts/backlog/backlog-budget-cli.ts +34 -6
- package/scripts/backlog/backlog-budget.ts +17 -24
- package/scripts/backlog/backlog-defect-priority.ts +1 -1
- package/scripts/backlog/backlog-drive-args.ts +5 -4
- package/scripts/backlog/backlog-drive-cli.ts +14 -10
- package/scripts/backlog/backlog-drive-epic.ts +85 -0
- package/scripts/backlog/backlog-drive-launch.ts +1 -1
- package/scripts/backlog/backlog-drive-named-offer.ts +60 -9
- package/scripts/backlog/backlog-drive-named.ts +39 -9
- package/scripts/backlog/backlog-drive-offer-argv.ts +1 -1
- package/scripts/backlog/backlog-drive-restore.ts +1 -1
- package/scripts/backlog/backlog-drive-retrospective.ts +2 -2
- package/scripts/backlog/backlog-drive.ts +43 -28
- package/scripts/backlog/backlog-idle.ts +88 -0
- package/scripts/backlog/backlog-named.ts +11 -15
- package/scripts/backlog/backlog-next.ts +26 -30
- package/scripts/backlog/backlog-offer-cli.ts +28 -23
- package/scripts/backlog/backlog-offer.ts +7 -7
- package/scripts/backlog/backlog-overlap.ts +178 -0
- package/scripts/backlog/backlog-plan-cli.ts +14 -90
- package/scripts/backlog/backlog-plan-read.ts +111 -0
- package/scripts/backlog/backlog-plan.ts +11 -10
- package/scripts/backlog/backlog-pool.ts +13 -14
- package/scripts/backlog/backlog-rank.ts +11 -11
- package/scripts/backlog/backlog-ready.ts +15 -10
- package/scripts/backlog/backlog-scope.ts +14 -15
- package/scripts/backlog/backlog-stalled-cli.ts +2 -2
- package/scripts/backlog/backlog-stalled-detect.ts +4 -4
- package/scripts/backlog/backlog-stalled.ts +5 -6
- package/scripts/backlog/backlog-waves.ts +4 -4
- package/scripts/backlog/backlogrun-args.ts +74 -0
- package/scripts/backlog/backlogrun-cli.ts +113 -0
- package/scripts/backlog/backlogrun-launch.ts +178 -0
- package/scripts/behavior/behavior-assertion.ts +6 -8
- package/scripts/behavior/behavior-cli.ts +1 -1
- package/scripts/behavior/behavior-rules.ts +3 -3
- package/scripts/build/build-claude-md.ts +4 -4
- package/scripts/build/build-codex-hooks.ts +2 -2
- package/scripts/build/build-commands.ts +1 -1
- package/scripts/build/build-hooks.ts +5 -5
- package/scripts/build/build.ts +1 -1
- package/scripts/build/hook-bundle-stamp.ts +109 -7
- package/scripts/build/local-bin.ts +2 -2
- package/scripts/cases/cases-cli.ts +1 -1
- package/scripts/cases/cases-logic.ts +2 -2
- package/scripts/ci/composite-actions.ts +1 -2
- package/scripts/ci/pr-classification.ts +2 -2
- package/scripts/claude/workflow-destination.ts +1 -1
- package/scripts/clone/clone-aggregate.ts +1 -1
- package/scripts/clone/clone-fingerprint.ts +1 -1
- package/scripts/clone/clone-scan-cli.ts +1 -1
- package/scripts/clone/clone-scan.ts +1 -1
- package/scripts/config-merge/index.ts +1 -1
- package/scripts/config-merge/json-format.ts +1 -3
- package/scripts/config-merge/patch-json-array.ts +90 -0
- package/scripts/config-merge/patch-json-key.ts +6 -3
- package/scripts/config-merge/patch-json-list.ts +1 -1
- package/scripts/cost-runtime/codex-usage.ts +1 -1
- package/scripts/cost-runtime/context-cut-payback.ts +4 -5
- package/scripts/cost-runtime/context-cut-threshold.ts +4 -6
- package/scripts/cost-runtime/cost-attribute.ts +3 -3
- package/scripts/cost-runtime/cost-blocks.ts +3 -4
- package/scripts/cost-runtime/cost-cli.ts +14 -11
- package/scripts/cost-runtime/cost-corpus.ts +11 -11
- package/scripts/cost-runtime/cost-pricing.ts +4 -4
- package/scripts/cost-runtime/cost-tokens.ts +1 -2
- package/scripts/cost-runtime/cost-transcript.ts +29 -29
- package/scripts/cost-runtime/cost-usage.ts +6 -7
- package/scripts/cost-runtime/cost-verdict.ts +10 -11
- package/scripts/cost-runtime/own-session.ts +1 -1
- package/scripts/cost-runtime/transcript-cwd.ts +2 -2
- package/scripts/delegation/delegation-cli.ts +4 -4
- package/scripts/delegation/delegation-policy.ts +13 -15
- package/scripts/delegation/duplicate-read-guard.ts +9 -10
- package/scripts/delegation/fanout-cli.ts +1 -1
- package/scripts/delegation/fanout.ts +1 -1
- package/scripts/delegation/investigation-guard.ts +18 -22
- package/scripts/delegation/investigation-reads.ts +48 -238
- package/scripts/discovery/repo-discovery.ts +1 -1
- package/scripts/discovery/repo-map-logic.ts +1 -2
- package/scripts/discovery/repo-origin.ts +3 -3
- package/scripts/discovery/repo-party-cli.ts +2 -2
- package/scripts/discovery/repo-party.ts +2 -2
- package/scripts/doctor/doctor-consumer.ts +1 -1
- package/scripts/doctor/doctor-io.ts +6 -7
- package/scripts/doctor/doctor-logic.ts +1 -1
- package/scripts/doctor/doctor-ports.ts +1 -1
- package/scripts/doctor/doctor.ts +8 -9
- package/scripts/document/backlogrun-parent-read-set.ts +5 -6
- package/scripts/document/bash-output-cap.ts +5 -7
- package/scripts/document/capped-print-part.ts +1 -1
- package/scripts/document/capped-print.ts +1 -1
- package/scripts/document/document-byte-budget.ts +33 -64
- package/scripts/document/document-byte-check.ts +4 -4
- package/scripts/document/document-reachability.ts +7 -8
- package/scripts/document/document-read-cli.ts +2 -2
- package/scripts/document/document-scan.ts +30 -5
- package/scripts/document/document-section-cli.ts +6 -8
- package/scripts/document/document-section.ts +8 -12
- package/scripts/document/edit-files-cli.ts +3 -4
- package/scripts/document/entry-read-budget.ts +8 -70
- package/scripts/document/entry-read-set.ts +51 -34
- package/scripts/document/lane-child-read-set.ts +9 -9
- package/scripts/document/read-files-cli.ts +1 -2
- package/scripts/document/read-set-cli.ts +16 -19
- package/scripts/document/read-set-cost.ts +4 -4
- package/scripts/document/read-set-point-of-use.ts +28 -38
- package/scripts/document/read-set-pricing.ts +1 -1
- package/scripts/document/read-set-trim.ts +3 -3
- package/scripts/document/resident-budget.ts +8 -10
- package/scripts/epic/epic-add-body.ts +15 -18
- package/scripts/epic/epic-add-plan.ts +26 -28
- package/scripts/epic/epic-add.ts +32 -25
- package/scripts/epic/epic-audit-checks.ts +27 -37
- package/scripts/epic/epic-audit-cli.ts +21 -22
- package/scripts/epic/epic-audit-orphans.ts +16 -17
- package/scripts/epic/epic-audit-rationale.ts +10 -15
- package/scripts/epic/epic-audit-report.ts +2 -5
- package/scripts/epic/epic-audit.ts +18 -14
- package/scripts/epic/epic-body.ts +10 -10
- package/scripts/epic/epic-bundle-cli.ts +36 -34
- package/scripts/epic/epic-bundle-evidence.ts +5 -5
- package/scripts/epic/epic-bundle-gaps.ts +6 -9
- package/scripts/epic/epic-bundle-poll.ts +1 -1
- package/scripts/epic/epic-bundle-referenced.ts +11 -14
- package/scripts/epic/epic-bundle.ts +19 -20
- package/scripts/epic/epic-busy.ts +44 -21
- package/scripts/epic/epic-candidate-confirm.ts +15 -18
- package/scripts/epic/epic-chains.ts +18 -23
- package/scripts/epic/epic-classify.ts +11 -12
- package/scripts/epic/epic-cli-argv.ts +5 -6
- package/scripts/epic/epic-cli-remove.ts +9 -4
- package/scripts/epic/epic-cli.ts +38 -26
- package/scripts/epic/epic-close-comment.ts +14 -15
- package/scripts/epic/epic-close.ts +25 -29
- package/scripts/epic/epic-cross-repo.ts +18 -21
- package/scripts/epic/epic-decision.ts +14 -18
- package/scripts/epic/epic-fetch.ts +25 -31
- package/scripts/epic/epic-graph.ts +15 -17
- package/scripts/epic/epic-index.ts +14 -16
- package/scripts/epic/epic-issue.ts +9 -11
- package/scripts/epic/epic-label-age.ts +74 -0
- package/scripts/epic/epic-lane-offer.ts +35 -24
- package/scripts/epic/epic-nested.ts +1 -1
- package/scripts/epic/epic-next-read.ts +8 -8
- package/scripts/epic/epic-next-views.ts +12 -12
- package/scripts/epic/epic-next.ts +29 -33
- package/scripts/epic/epic-outside-blocker.ts +11 -10
- package/scripts/epic/epic-parse.ts +22 -24
- package/scripts/epic/epic-promote.ts +3 -2
- package/scripts/epic/epic-rank.ts +1 -1
- package/scripts/epic/epic-read.ts +10 -8
- package/scripts/epic/epic-reconcile.ts +8 -6
- package/scripts/epic/epic-reference.ts +5 -4
- package/scripts/epic/epic-relation-recheck.ts +10 -11
- package/scripts/epic/epic-relations.ts +9 -8
- package/scripts/epic/epic-remove-plan.ts +4 -5
- package/scripts/epic/epic-remove.ts +7 -5
- package/scripts/epic/epic-report.ts +18 -20
- package/scripts/epic/epic-run.ts +6 -5
- package/scripts/epic/epic-sections.ts +2 -2
- package/scripts/epic/epic-shape.ts +3 -3
- package/scripts/epic/epic-solo-stale.ts +3 -2
- package/scripts/epic/epic-solo.ts +8 -8
- package/scripts/epic/epic-triage.ts +5 -4
- package/scripts/epic/epic-validate.ts +8 -7
- package/scripts/epic/epic.ts +5 -5
- package/scripts/exports/unused-members-cli.ts +1 -1
- package/scripts/followup/followup-issue-number.ts +1 -2
- package/scripts/followup/git-followup-cleanup.ts +6 -7
- package/scripts/followup/git-followup-finish.ts +11 -13
- package/scripts/followup/git-followup-flush.ts +11 -7
- package/scripts/followup/git-followup-issue-close.ts +16 -13
- package/scripts/followup/git-followup-label.ts +9 -6
- package/scripts/followup/git-followup-merged.ts +1 -1
- package/scripts/followup/git-followup-pending.ts +7 -9
- package/scripts/followup/git-followup-stages.ts +28 -17
- package/scripts/followup/git-followup-workflow.ts +19 -21
- package/scripts/followup/git-pr-followup-checks.ts +13 -20
- package/scripts/followup/git-pr-followup-wrapup.ts +7 -7
- package/scripts/followup/git-pr-followup.ts +18 -17
- package/scripts/gate/core-admission.ts +2 -2
- package/scripts/gate/core-budget.ts +15 -26
- package/scripts/gate/gate-ledger.ts +114 -0
- package/scripts/gate/gate-log.ts +7 -9
- package/scripts/gate/gate-plan.ts +70 -35
- package/scripts/gate/gate-report.ts +14 -15
- package/scripts/gate/gate-skip.ts +11 -13
- package/scripts/gate/gate-steps.ts +5 -1
- package/scripts/gate/gate-tree.ts +3 -4
- package/scripts/gate/hook-gate-reuse.ts +9 -9
- package/scripts/gate/machine-capacity.ts +168 -30
- package/scripts/gate/pre-commit-type-check.ts +4 -4
- package/scripts/gate/project-checks.ts +12 -4
- package/scripts/gate/scoped-green.ts +11 -18
- package/scripts/gate/type-check-command.ts +2 -2
- package/scripts/gate/type-check-step.ts +4 -4
- package/scripts/gate/verification-gate.ts +53 -51
- package/scripts/gh/gh-spawn.ts +2 -2
- package/scripts/gh/git-ai-review-scan.ts +3 -2
- package/scripts/gh/git-gh-api-path.ts +10 -11
- package/scripts/gh/git-gh-exec.ts +43 -48
- package/scripts/gh/git-gh-failure.ts +6 -9
- package/scripts/gh/git-gh-helpers.ts +1 -1
- package/scripts/gh/git-gh-issue-list.ts +15 -19
- package/scripts/gh/git-gh-issue-read.ts +43 -60
- package/scripts/gh/git-gh-issue-rest.ts +14 -15
- package/scripts/gh/git-gh-issue-write.ts +52 -40
- package/scripts/gh/git-gh-issue.ts +23 -24
- package/scripts/gh/git-gh-pr-auto-merge.ts +3 -3
- package/scripts/gh/git-gh-pr-read.ts +46 -50
- package/scripts/gh/git-gh-pr-rest.ts +23 -26
- package/scripts/gh/git-gh-pr-review.ts +2 -2
- package/scripts/gh/git-gh-pr-rollup.ts +4 -4
- package/scripts/gh/git-gh-pr-snapshot.ts +8 -10
- package/scripts/gh/git-gh-pr.ts +16 -16
- package/scripts/gh/git-gh-reachability.ts +11 -12
- package/scripts/gh/git-gh-repo.ts +2 -3
- package/scripts/gh/git-gh-rest-state.ts +1 -1
- package/scripts/gh/git-pr-ai-review.ts +6 -5
- package/scripts/gh/git-pr-checks-eval.ts +28 -30
- package/scripts/gh/git-pr-checks-parse.ts +14 -16
- package/scripts/gh/git-pr-checks-watch.ts +17 -17
- package/scripts/gh/git-pr-checks.ts +20 -23
- package/scripts/gh/git-pr-coderabbit.ts +8 -6
- package/scripts/gh/git-pr-confirmation.ts +5 -5
- package/scripts/gh/git-pr-managed-config.ts +7 -9
- package/scripts/gh/git-pr-messages.ts +1 -1
- package/scripts/gh/git-pr.ts +15 -16
- package/scripts/gh/github-issue-url.ts +8 -9
- package/scripts/git/base-tree.ts +66 -0
- package/scripts/git/change-base.ts +42 -2
- package/scripts/git/changed-file-scope.ts +5 -5
- package/scripts/git/changed-paths.ts +1 -2
- package/scripts/git/constants.ts +2 -2
- package/scripts/git/git-branch.ts +1 -1
- package/scripts/git/git-closes-keyword.ts +3 -3
- package/scripts/git/git-command.ts +53 -41
- package/scripts/git/git-common-directory.ts +3 -3
- package/scripts/git/git-diff-reads.ts +14 -15
- package/scripts/git/git-error.ts +1 -1
- package/scripts/git/git-execa-error.ts +1 -2
- package/scripts/git/git-issue.ts +10 -8
- package/scripts/git/git-location-environment.ts +3 -4
- package/scripts/git/git-ls-remote.ts +6 -8
- package/scripts/git/git-pre-push-hook.ts +11 -10
- package/scripts/git/git-preflight.ts +5 -5
- package/scripts/git/git-push-transport.ts +2 -2
- package/scripts/git/git-remote-branch.ts +1 -2
- package/scripts/git/git-schemas.ts +16 -23
- package/scripts/git/git-spawn-sync.ts +1 -1
- package/scripts/git/git-spawn.ts +37 -14
- package/scripts/git/git-ssh-keepalive.ts +12 -5
- package/scripts/git/git-staging.ts +7 -8
- package/scripts/git/git-workflow.ts +1 -1
- package/scripts/git/git-worktree.ts +35 -27
- package/scripts/git/gone-branch.ts +2 -2
- package/scripts/git/listing-cutoff.ts +1 -2
- package/scripts/git/lockfile-sync.ts +65 -0
- package/scripts/git/main-merge-guard.ts +1 -2
- package/scripts/git/main-merge.ts +7 -7
- package/scripts/git/main-sync.ts +23 -8
- package/scripts/git/parse-json-array.ts +18 -23
- package/scripts/git/repository-lock.ts +34 -2
- package/scripts/git/stash/git-stash.ts +4 -5
- package/scripts/git/stash/stash-orphans.ts +5 -3
- package/scripts/git/stash/stash-pop-args.ts +1 -1
- package/scripts/git/stash/stash-pop-cli.ts +3 -3
- package/scripts/git/stash/stash-sweep-lock.ts +2 -2
- package/scripts/hooks/batch-guard.ts +11 -13
- package/scripts/hooks/check-commit-message.ts +12 -9
- package/scripts/hooks/codex-hook-adapter.ts +16 -10
- package/scripts/hooks/edited-cspell.ts +3 -4
- package/scripts/hooks/format-edited-cli.ts +1 -1
- package/scripts/hooks/format-edited-file.ts +11 -17
- package/scripts/hooks/format-rewrite-notice.ts +19 -17
- package/scripts/hooks/pre-push-unit.ts +10 -14
- package/scripts/hooks/pretool-guard-cli.ts +4 -4
- package/scripts/hooks/pretool-guard.ts +93 -18
- package/scripts/hooks/reserved-run.ts +2 -2
- package/scripts/hooks/step-zero-notice.ts +1 -1
- package/scripts/hooks/stop-guard.ts +21 -10
- package/scripts/init/basic-path-migration.ts +2 -2
- package/scripts/init/claude-kit-only-settings.ts +2 -2
- package/scripts/init/claude-plugin-config.ts +2 -2
- package/scripts/init/distributed-paths.ts +4 -4
- package/scripts/init/hook-command-rewrite.ts +3 -3
- package/scripts/init/hook-launch.ts +5 -5
- package/scripts/init/init-actions.ts +13 -0
- package/scripts/init/init-ai-copy.ts +11 -11
- package/scripts/init/init-bootstrap.ts +3 -3
- package/scripts/init/init-copy-content.ts +4 -4
- package/scripts/init/init-logic-json-merge.ts +7 -9
- package/scripts/init/init-logic-migrate.ts +1 -1
- package/scripts/init/init-logic-templates.ts +1 -1
- package/scripts/init/init-logic-workspace.ts +4 -4
- package/scripts/init/init-logic-yaml-merge.ts +2 -2
- package/scripts/init/init-logic.ts +19 -22
- package/scripts/init/init.ts +7 -7
- package/scripts/init/kit-base-preset.ts +1 -1
- package/scripts/init/kit-setup-state.ts +1 -1
- package/scripts/init/kit-written-paths.ts +1 -2
- package/scripts/init/package-manager-pin.ts +1 -1
- package/scripts/init/project-profile-cli.ts +1 -1
- package/scripts/init/project-profile.ts +3 -3
- package/scripts/init/session-language-environment.ts +1 -1
- package/scripts/init/start-exec.ts +3 -4
- package/scripts/init/start-plan.ts +2 -2
- package/scripts/init/start-setup-pr.ts +3 -2
- package/scripts/init/start-steps.ts +2 -2
- package/scripts/init/tsconfig-preset-migration.ts +1 -1
- package/scripts/init/vscode-tasks.ts +62 -0
- package/scripts/issue/baseline-measure.ts +2 -2
- package/scripts/issue/behavior-change-lint.ts +2 -2
- package/scripts/issue/defect-rate-cli.ts +6 -7
- package/scripts/issue/defect-rate.ts +37 -27
- package/scripts/issue/git-next-issues.ts +9 -8
- package/scripts/issue/issue-auto-ok.ts +24 -11
- package/scripts/issue/issue-backlinks-cli.ts +5 -5
- package/scripts/issue/issue-backlinks.ts +6 -6
- package/scripts/issue/issue-cite-cli.ts +20 -18
- package/scripts/issue/issue-cite.ts +18 -8
- package/scripts/issue/issue-closing-pr.ts +4 -4
- package/scripts/issue/issue-comment-cli.ts +6 -4
- package/scripts/issue/issue-file-cli.ts +52 -15
- package/scripts/issue/issue-file-fold.ts +155 -0
- package/scripts/issue/issue-file.ts +9 -6
- package/scripts/issue/issue-fold-cli.ts +14 -9
- package/scripts/issue/issue-fold.ts +23 -8
- package/scripts/issue/issue-labels.ts +34 -38
- package/scripts/issue/issue-lint-cli.ts +2 -2
- package/scripts/issue/issue-lint.ts +1 -1
- package/scripts/issue/issue-merged.ts +10 -4
- package/scripts/issue/issue-number-shape.ts +27 -0
- package/scripts/issue/issue-rank.ts +1 -1
- package/scripts/issue/issue-read-cli.ts +4 -5
- package/scripts/issue/issue-read.ts +4 -5
- package/scripts/issue/issue-reference.ts +5 -5
- package/scripts/issue/issue-release-cli.ts +17 -7
- package/scripts/issue/issue-release.ts +3 -3
- package/scripts/issue/issue-report-failures.ts +7 -4
- package/scripts/issue/issue-scout-cli.ts +11 -11
- package/scripts/issue/issue-scout-closed.ts +4 -4
- package/scripts/issue/issue-scout.ts +4 -5
- package/scripts/issue/issue-state-cli.ts +17 -10
- package/scripts/issue/issue-state.ts +12 -13
- package/scripts/issue/issue-wip.ts +7 -7
- package/scripts/issue/markdown-section.ts +3 -3
- package/scripts/issue/measure-rerun-cli.ts +10 -9
- package/scripts/issue/reproduction-measure.ts +3 -3
- package/scripts/issue/session-cite.ts +56 -0
- package/scripts/josh/agent-session-environment.ts +10 -8
- package/scripts/josh/cli-body.ts +2 -2
- package/scripts/josh/command-suggest.ts +1 -1
- package/scripts/josh/file-map-stamp.ts +20 -23
- package/scripts/josh/hook-decision.ts +24 -28
- package/scripts/josh/josh-command-map.ts +4 -1
- package/scripts/josh/josh-command-types.ts +30 -35
- package/scripts/josh/josh-commands-ai.ts +6 -6
- package/scripts/josh/josh-commands-backlog.ts +15 -3
- package/scripts/josh/josh-commands-clone.ts +1 -1
- package/scripts/josh/josh-commands-development.ts +25 -4
- package/scripts/josh/josh-commands-document.ts +3 -3
- package/scripts/josh/josh-commands-guard.ts +3 -3
- package/scripts/josh/josh-commands-issue.ts +4 -5
- package/scripts/josh/josh-commands-lane.ts +14 -4
- package/scripts/josh/josh-commands-lint.ts +1 -1
- package/scripts/josh/josh-commands-run.ts +21 -7
- package/scripts/josh/josh-commands-split.ts +1 -2
- package/scripts/josh/josh-commands-versioning.ts +5 -5
- package/scripts/josh/josh-commands-workflow.ts +30 -22
- package/scripts/josh/josh-environment-file.ts +1 -1
- package/scripts/josh/josh-in-process.ts +3 -3
- package/scripts/josh/josh-logic.ts +6 -7
- package/scripts/josh/josh-run.ts +3 -3
- package/scripts/josh/josh-verdict.ts +9 -12
- package/scripts/josh/josh.ts +3 -3
- package/scripts/josh/kit-only.ts +2 -2
- package/scripts/josh/path-decision.ts +3 -3
- package/scripts/josh/platform-temporary.ts +7 -5
- package/scripts/josh/process-identity.ts +24 -6
- package/scripts/josh/process-owner.ts +4 -4
- package/scripts/josh/session-language-cli.ts +53 -11
- package/scripts/josh/session-language.ts +1 -1
- package/scripts/josh/stamp-file.ts +48 -29
- package/scripts/josh/stamp-record.ts +57 -0
- package/scripts/lane/lane-await.ts +35 -11
- package/scripts/lane/lane-cache.ts +6 -6
- package/scripts/lane/lane-capacity.ts +32 -17
- package/scripts/lane/lane-child-invocation.ts +17 -15
- package/scripts/lane/lane-child-marker.ts +12 -12
- package/scripts/lane/lane-cli.ts +12 -13
- package/scripts/lane/lane-close.ts +6 -6
- package/scripts/lane/lane-dispatch.ts +61 -72
- package/scripts/lane/lane-environment.ts +5 -5
- package/scripts/lane/lane-guard-policy.ts +7 -21
- package/scripts/lane/lane-handoff.ts +2 -2
- package/scripts/lane/lane-install.ts +9 -10
- package/scripts/lane/lane-launch-cli.ts +13 -8
- package/scripts/lane/lane-ledger.ts +73 -11
- package/scripts/lane/lane-leftover.ts +2 -2
- package/scripts/lane/lane-limit-cli.ts +160 -0
- package/scripts/lane/lane-limit-override.ts +74 -0
- package/scripts/lane/lane-load.ts +19 -68
- package/scripts/lane/lane-measure-cli.ts +15 -25
- package/scripts/lane/lane-occupancy.ts +6 -4
- package/scripts/lane/lane-open.ts +20 -19
- package/scripts/lane/lane-output.ts +4 -3
- package/scripts/lane/lane-paths.ts +12 -11
- package/scripts/lane/lane-phase.ts +33 -0
- package/scripts/lane/lane-reap.ts +2 -2
- package/scripts/lane/lane-registry.ts +16 -15
- package/scripts/lane/lane-relaunch.ts +9 -9
- package/scripts/lane/lane-report.ts +5 -4
- package/scripts/lane/lane-resume.ts +2 -2
- package/scripts/lane/lane-sampler.ts +55 -0
- package/scripts/lane/lane-seed.ts +7 -7
- package/scripts/lane/lane-stage-stats.ts +135 -0
- package/scripts/lane/lane-start-point.ts +8 -11
- package/scripts/lane/lane-stats.ts +60 -15
- package/scripts/lane/lane-stray.ts +1 -1
- package/scripts/lane/lane-vacant.ts +1 -1
- package/scripts/lane/openai-lane-supervisor-decision.ts +3 -7
- package/scripts/lane/openai-lane-supervisor-owner.ts +3 -9
- package/scripts/lane/openai-review-broker.ts +2 -4
- package/scripts/lib/ancestor-directories.ts +1 -1
- package/scripts/lib/bounded-pool.ts +2 -2
- package/scripts/lib/buffered-process.ts +4 -6
- package/scripts/lib/caddy-logs.sh +0 -0
- package/scripts/lib/cli-flags.ts +39 -6
- package/scripts/lib/error-message.ts +1 -1
- package/scripts/lib/json-value.ts +17 -3
- package/scripts/lib/poll.ts +1 -1
- package/scripts/lib/status-icons.ts +3 -3
- package/scripts/lib/timed-fetch.ts +1 -1
- package/scripts/lib/timeouts.ts +1 -1
- package/scripts/lines/bytes-command.ts +3 -4
- package/scripts/lines/effective-limit.ts +25 -12
- package/scripts/lines/line-budget.ts +47 -55
- package/scripts/lines/line-targets.ts +6 -2
- package/scripts/lines/lines-command.ts +3 -3
- package/scripts/lint/cross-file-recheck.ts +155 -0
- package/scripts/lint/cspell-cached.ts +1 -1
- package/scripts/lint/format.ts +1 -2
- package/scripts/lint/lint-parallel.ts +35 -19
- package/scripts/lint/lint-related-scope.ts +25 -15
- package/scripts/lint/lint-related.ts +6 -7
- package/scripts/managed-marker/index.ts +1 -1
- package/scripts/managed-marker/managed-marker-logic.ts +1 -2
- package/scripts/notify/git-notify.ts +9 -7
- package/scripts/notify/telegram-notify.ts +53 -37
- package/scripts/notify/telegram-test-logic.ts +3 -3
- package/scripts/notify/telegram-test.ts +45 -30
- package/scripts/observations/observation-ledger-home.ts +14 -8
- package/scripts/observations/observation-ledger-line.ts +3 -2
- package/scripts/observations/observation-ledger-migrate.ts +3 -4
- package/scripts/observations/observation-ledger-prepare.ts +4 -4
- package/scripts/observations/observation-ledger.ts +14 -15
- package/scripts/observations/observation-record-cli.ts +83 -0
- package/scripts/observations/observation-record.ts +91 -0
- package/scripts/observations/observations-flush-cli.ts +1 -1
- package/scripts/observations/observations-flush-landing.ts +7 -6
- package/scripts/observations/observations-flush.ts +26 -27
- package/scripts/overrides/overrides-check.ts +18 -8
- package/scripts/package/package-scout-cli.ts +1 -1
- package/scripts/package/package-scout-format.ts +2 -2
- package/scripts/package/package-scout.ts +1 -1
- package/scripts/propagate/propagate-git-failure.ts +1 -1
- package/scripts/propagate/propagate-git.ts +7 -7
- package/scripts/propagate/propagate-plan.ts +2 -2
- package/scripts/propagate/propagate-publish.ts +2 -3
- package/scripts/propagate/propagate-run.ts +5 -7
- package/scripts/propagate/propagate-select.ts +1 -1
- package/scripts/propagate/propagate-steps.ts +19 -20
- package/scripts/propagate/propagate-targets.ts +6 -10
- package/scripts/propagate/propagate.ts +5 -5
- package/scripts/refactor/import-graph.ts +1 -1
- package/scripts/refactor/refactor-lint.ts +4 -10
- package/scripts/refactor/refactor-scan-cli.ts +1 -1
- package/scripts/refactor/refactor-scan.ts +2 -2
- package/scripts/refactor/refactor-targets.ts +1 -1
- package/scripts/release/github-release-cli.ts +25 -3
- package/scripts/release/github-release-runs.ts +1 -1
- package/scripts/release/release-cli.ts +21 -4
- package/scripts/release/release-history.ts +6 -10
- package/scripts/release/release-plan.ts +3 -3
- package/scripts/release/release-progress.ts +3 -4
- package/scripts/release/release-publish.ts +8 -9
- package/scripts/release/release-scope-cli.ts +8 -10
- package/scripts/release/release-tag.ts +6 -8
- package/scripts/release/release-worktree.ts +5 -5
- package/scripts/repo/auto-merge-setting-logic.ts +7 -9
- package/scripts/repo/auto-merge-setting.ts +1 -1
- package/scripts/repo/repo-setting.ts +4 -4
- package/scripts/repo/repository-labels.ts +1 -1
- package/scripts/repo/required-checks-logic.ts +3 -3
- package/scripts/repo/required-checks-report.ts +1 -1
- package/scripts/repo/ruleset-check-cli.ts +1 -1
- package/scripts/repo/ruleset-check.ts +1 -1
- package/scripts/report/report-format-reference.ts +26 -0
- package/scripts/report/report-lint-cli.ts +2 -2
- package/scripts/report/report-lint.ts +16 -2
- package/scripts/review/disposition-cli.ts +2 -2
- package/scripts/review/disposition-logic.ts +1 -1
- package/scripts/review/live-evidence.ts +9 -6
- package/scripts/review/review-attest-cli.ts +1 -2
- package/scripts/review/review-attest.ts +3 -3
- package/scripts/review/review-brief-cli.ts +19 -20
- package/scripts/review/review-brief.ts +29 -32
- package/scripts/review/review-checkout.ts +2 -2
- package/scripts/review/review-diff-parts.ts +3 -5
- package/scripts/review/review-diff-write.ts +1 -1
- package/scripts/review/review-finding-ledger.ts +7 -4
- package/scripts/review/review-findings-cli.ts +2 -2
- package/scripts/review/review-level.ts +4 -7
- package/scripts/review/review-record-cli.ts +73 -16
- package/scripts/review/review-record.ts +5 -4
- package/scripts/review/review-round2-cli.ts +2 -3
- package/scripts/review/review-round2.ts +13 -21
- package/scripts/review/review-stamps.ts +9 -71
- package/scripts/review/review-tree.ts +4 -5
- package/scripts/rules/bash-triggers.ts +4 -4
- package/scripts/rules/decision-oracle-batch.ts +6 -7
- package/scripts/rules/decision-oracle-stage.ts +1 -1
- package/scripts/rules/decision-oracle-tokens.ts +1 -2
- package/scripts/rules/decision-oracle.ts +2 -2
- package/scripts/rules/delivered-rules.ts +61 -406
- package/scripts/rules/destructive-command.ts +2 -2
- package/scripts/rules/direct-filing.ts +4 -4
- package/scripts/rules/direct-pr-create.ts +2 -2
- package/scripts/rules/early-heartbeat.ts +15 -19
- package/scripts/rules/file-body.ts +5 -6
- package/scripts/rules/filing-cap.ts +6 -7
- package/scripts/rules/filing-offer.ts +1 -1
- package/scripts/rules/firing-point.ts +6 -6
- package/scripts/rules/gh-api.ts +2 -2
- package/scripts/rules/git-argv.ts +3 -3
- package/scripts/rules/git-force.ts +2 -2
- package/scripts/rules/hook-context-line.ts +31 -0
- package/scripts/rules/implementation-cut-verdict.ts +5 -8
- package/scripts/rules/implementation-cut.ts +35 -32
- package/scripts/rules/index-guard.ts +2 -2
- package/scripts/rules/issue-citation.ts +7 -7
- package/scripts/rules/issue-comments.ts +21 -13
- package/scripts/rules/josh-git-bare.ts +2 -2
- package/scripts/rules/lane-background.ts +14 -16
- package/scripts/rules/lane-carry-conflict.ts +41 -5
- package/scripts/rules/lane-interactive-ask.ts +6 -9
- package/scripts/rules/lane-park.ts +12 -16
- package/scripts/rules/lane-split-park.ts +1 -2
- package/scripts/rules/lane-switch-main.ts +10 -13
- package/scripts/rules/last-prompt.ts +1 -1
- package/scripts/rules/oracle-consulted.ts +5 -5
- package/scripts/rules/oracle-firing.ts +6 -9
- package/scripts/rules/oracle-list-cli.ts +2 -2
- package/scripts/rules/permission-guards.ts +2 -2
- package/scripts/rules/piped-verification.ts +79 -9
- package/scripts/rules/poll-loop.ts +9 -11
- package/scripts/rules/pre-gate-cut.ts +33 -30
- package/scripts/rules/prior-comment-read.ts +3 -3
- package/scripts/rules/protected-files.ts +25 -13
- package/scripts/rules/raw-field-body.ts +3 -4
- package/scripts/rules/reply-language.ts +1 -1
- package/scripts/rules/rule-body-guard.ts +10 -12
- package/scripts/rules/rule-guard.ts +1 -1
- package/scripts/rules/rule-list.ts +51 -0
- package/scripts/rules/rule-registry-rows.ts +282 -0
- package/scripts/rules/rule-registry.ts +109 -0
- package/scripts/rules/rule-value-cache.ts +2 -2
- package/scripts/rules/rule-value-cli.ts +6 -4
- package/scripts/rules/rule-value.ts +61 -22
- package/scripts/rules/run-tail-rule.ts +11 -15
- package/scripts/rules/shell-body-trigger.ts +7 -7
- package/scripts/rules/shell-segments.ts +2 -4
- package/scripts/rules/stop-rules.ts +54 -41
- package/scripts/rules/tail-commands.ts +1 -1
- package/scripts/rules/test-declared-commit.ts +2 -2
- package/scripts/rules/third-party-write.ts +3 -3
- package/scripts/rules/worktree-guard.ts +12 -5
- package/scripts/run/add/run-add-cli.ts +165 -0
- package/scripts/run/add/run-add.ts +124 -0
- package/scripts/run/board/run-board-cli.ts +207 -0
- package/scripts/run/board/run-board-closed.ts +95 -0
- package/scripts/run/board/run-board-every.ts +60 -0
- package/scripts/run/board/run-board-fetch.ts +38 -0
- package/scripts/run/board/run-board-fit.ts +219 -0
- package/scripts/run/board/run-board-github.ts +162 -0
- package/scripts/run/board/run-board-header.ts +275 -0
- package/scripts/run/board/run-board-kind.ts +35 -0
- package/scripts/run/board/run-board-labels.ts +299 -0
- package/scripts/run/board/run-board-layout.ts +222 -0
- package/scripts/run/board/run-board-link.ts +31 -0
- package/scripts/run/board/run-board-machine.ts +198 -0
- package/scripts/run/board/run-board-notes.ts +103 -0
- package/scripts/run/board/run-board-phase.ts +136 -0
- package/scripts/run/board/run-board-plan.ts +129 -0
- package/scripts/run/board/run-board-read.ts +62 -0
- package/scripts/run/board/run-board-render-legend.ts +82 -0
- package/scripts/run/board/run-board-render-notes.ts +77 -0
- package/scripts/run/board/run-board-render-slot.ts +50 -0
- package/scripts/run/board/run-board-render.ts +407 -0
- package/scripts/run/board/run-board-scope.ts +17 -0
- package/scripts/run/board/run-board-screen.ts +43 -0
- package/scripts/run/board/run-board-span.ts +66 -0
- package/scripts/run/board/run-board-spin.ts +115 -0
- package/scripts/run/board/run-board-state.ts +113 -0
- package/scripts/run/board/run-board-status.ts +279 -0
- package/scripts/run/board/run-board-tick.ts +210 -0
- package/scripts/run/board/run-board-track.ts +22 -0
- package/scripts/run/board/run-board-usage-read.ts +255 -0
- package/scripts/run/board/run-board-usage-rusage.ts +124 -0
- package/scripts/run/board/run-board-usage-text.ts +80 -0
- package/scripts/run/board/run-board-usage.ts +165 -0
- package/scripts/run/carry/run-carry-added.ts +62 -0
- package/scripts/run/carry/run-carry-args.ts +25 -22
- package/scripts/run/carry/run-carry-change.ts +1 -1
- package/scripts/run/carry/run-carry-cli.ts +71 -48
- package/scripts/run/carry/run-carry-conversation.ts +6 -7
- package/scripts/run/carry/run-carry-ended.ts +85 -0
- package/scripts/run/carry/run-carry-reclaim.ts +1 -1
- package/scripts/run/carry/run-carry-stash.ts +3 -2
- package/scripts/run/carry/run-carry-streak.ts +8 -10
- package/scripts/run/carry/run-carry.ts +85 -89
- package/scripts/run/cut/run-cut-args.ts +7 -7
- package/scripts/run/cut/run-cut-cli.ts +54 -36
- package/scripts/run/cut/run-cut-handoff.ts +15 -15
- package/scripts/run/cut/run-cut-report.ts +37 -16
- package/scripts/run/cut/run-cut.ts +63 -77
- package/scripts/run/detached-launch.ts +35 -50
- package/scripts/run/entry/run-entry-cli.ts +48 -27
- package/scripts/run/entry/run-entry-stop.ts +7 -9
- package/scripts/run/entry/run-entry.ts +5 -6
- package/scripts/run/event/run-event-cli.ts +5 -6
- package/scripts/run/event/run-event-filed.ts +69 -0
- package/scripts/run/event/run-event-follow.ts +3 -3
- package/scripts/run/event/run-event-plan.ts +38 -0
- package/scripts/run/event/run-event-render.ts +9 -4
- package/scripts/run/event/run-event-scope.ts +47 -18
- package/scripts/run/event/run-event-stream-emit.ts +64 -11
- package/scripts/run/event/run-event-stream.ts +171 -46
- package/scripts/run/event/run-event-watch.ts +4 -6
- package/scripts/run/hold/run-hold-cli.ts +65 -62
- package/scripts/run/hold/run-hold.ts +88 -46
- package/scripts/run/merge/run-merge-cli.ts +116 -77
- package/scripts/run/merge/run-merge-collect.ts +107 -0
- package/scripts/run/merge/run-merge-steps.ts +112 -65
- package/scripts/run/merge/run-merge-token.ts +30 -0
- package/scripts/run/merge/run-merge.ts +31 -22
- package/scripts/run/progress/run-progress-args.ts +4 -4
- package/scripts/run/progress/run-progress-cli.ts +39 -50
- package/scripts/run/progress/run-progress-clock.ts +25 -32
- package/scripts/run/progress/run-progress-config.ts +6 -9
- package/scripts/run/progress/run-progress-read.ts +9 -10
- package/scripts/run/progress/run-progress.ts +48 -53
- package/scripts/run/review/run-review-cli.ts +6 -6
- package/scripts/run/review/run-review-steps.ts +6 -6
- package/scripts/run/review/run-review.ts +9 -11
- package/scripts/run/run-cli-fault.ts +29 -0
- package/scripts/run/run-ending-cli.ts +3 -3
- package/scripts/run/run-ending.ts +10 -14
- package/scripts/run/run-halfrun-resume.ts +6 -8
- package/scripts/run/run-headless.ts +26 -12
- package/scripts/run/run-invocation.ts +17 -22
- package/scripts/run/run-label.ts +7 -5
- package/scripts/run/run-liveness-cli.ts +19 -6
- package/scripts/run/run-liveness.ts +27 -38
- package/scripts/run/run-next-cli.ts +5 -9
- package/scripts/run/run-next.ts +4 -5
- package/scripts/run/run-parent-cut-hook.ts +10 -12
- package/scripts/run/run-preflight.ts +25 -29
- package/scripts/run/run-prep-cli.ts +17 -13
- package/scripts/run/run-prep-locate.ts +4 -5
- package/scripts/run/run-prep.ts +7 -10
- package/scripts/run/run-prrun-resume.ts +2 -2
- package/scripts/run/run-report-cli.ts +4 -4
- package/scripts/run/run-report.ts +9 -14
- package/scripts/run/run-retrospective.ts +3 -3
- package/scripts/run/run-section.ts +42 -0
- package/scripts/run/run-stage-read.ts +2 -2
- package/scripts/run/run-stage.ts +6 -4
- package/scripts/run/run-status-cli.ts +7 -5
- package/scripts/run/run-status.ts +6 -7
- package/scripts/run/run-step-cli.ts +64 -18
- package/scripts/run/run-step.ts +107 -51
- package/scripts/run/run-stop-notify.ts +7 -8
- package/scripts/run/run-stranded-cli.ts +1 -1
- package/scripts/run/run-stranded-detect.ts +4 -4
- package/scripts/run/run-stranded.ts +11 -13
- package/scripts/run/run-tail-cli.ts +15 -16
- package/scripts/run/run-tail.ts +14 -33
- package/scripts/run/run-watcher-guard-cli.ts +3 -4
- package/scripts/run/run-watcher-guard.ts +11 -12
- package/scripts/run/run-watcher-hook.ts +6 -12
- package/scripts/run/ship/run-ship-cli.ts +67 -33
- package/scripts/run/ship/run-ship-detach.ts +15 -13
- package/scripts/run/ship/run-ship-lock.ts +1 -1
- package/scripts/run/ship/run-ship-next.ts +7 -8
- package/scripts/run/ship/run-ship-pre-detach.ts +27 -11
- package/scripts/run/ship/run-ship-preflight.ts +10 -11
- package/scripts/run/ship/run-ship-probe.ts +4 -4
- package/scripts/run/ship/run-ship-return.ts +1 -1
- package/scripts/run/ship/run-ship-review-steps.ts +43 -24
- package/scripts/run/ship/run-ship-review.ts +12 -14
- package/scripts/run/ship/run-ship-scoped.ts +15 -6
- package/scripts/run/ship/run-ship-stage.ts +80 -26
- package/scripts/run/ship/run-ship-steps.ts +26 -16
- package/scripts/run/ship/run-ship-stop-text.ts +4 -2
- package/scripts/run/ship/run-ship-sync.ts +9 -8
- package/scripts/run/ship/run-ship.ts +17 -32
- package/scripts/run/tidy/run-tidy-cli.ts +9 -5
- package/scripts/run/tidy/run-tidy-lanes.ts +18 -7
- package/scripts/run/tidy/run-tidy-stashes.ts +8 -8
- package/scripts/run/tidy/run-tidy.ts +4 -3
- package/scripts/run/wake/run-wake-cli.ts +27 -32
- package/scripts/run/wake/run-wake-describe.ts +24 -28
- package/scripts/run/wake/run-wake-driver.ts +14 -14
- package/scripts/run/wake/run-wake-handoff.ts +6 -6
- package/scripts/run/wake/run-wake-loop.ts +9 -9
- package/scripts/run/wake/run-wake-restart.ts +4 -5
- package/scripts/run/wake/run-wake-session.ts +23 -27
- package/scripts/run/wake/run-wake.ts +57 -279
- package/scripts/safe-chain/ci-installer-pin.ts +3 -3
- package/scripts/safe-chain/pack-hook.ts +2 -2
- package/scripts/safe-chain/preinstall-command.ts +2 -2
- package/scripts/security/security-audit-logic.ts +1 -1
- package/scripts/security/security-audit-provision-logic.ts +1 -1
- package/scripts/security/security-audit-provision.ts +2 -2
- package/scripts/security/security-audit.ts +5 -5
- package/scripts/security/security-updates-logic.ts +2 -3
- package/scripts/security/security-updates.ts +2 -4
- package/scripts/self-sync-guard/index.ts +1 -1
- package/scripts/self-sync-guard/self-sync-guard-logic.ts +2 -2
- package/scripts/self-sync-guard/self-sync-refusal.ts +1 -1
- package/scripts/sonar/sonar-hotspots-cli.ts +1 -1
- package/scripts/sonar/sonar-hotspots.ts +1 -1
- package/scripts/sonar/sonar-new-code-cli.ts +1 -1
- package/scripts/sonar/sonar-new-code.ts +1 -1
- package/scripts/sonar/sonar-project.ts +1 -1
- package/scripts/split/split-assess-cli.ts +1 -1
- package/scripts/split/split-assess.ts +3 -3
- package/scripts/sync/directory-copy-guard.ts +2 -3
- package/scripts/sync/managed-config-scope-cli.ts +1 -2
- package/scripts/sync/managed-config-scope.ts +4 -4
- package/scripts/sync/plugin-skill-directories.ts +2 -2
- package/scripts/sync/reconcile-templates.ts +17 -8
- package/scripts/sync/removed-skill-manifest.ts +2 -3
- package/scripts/sync/sync-ai-files.ts +7 -7
- package/scripts/sync/sync-configs.ts +30 -3
- package/scripts/sync/sync-hook-safety.ts +2 -2
- package/scripts/sync/sync.ts +23 -10
- package/scripts/sync/synced-paths.ts +2 -1
- package/scripts/sync/workflow-pin-logic.ts +1 -1
- package/scripts/test/test-declared-changed.ts +4 -4
- package/scripts/test/test-declared-logic.ts +2 -3
- package/scripts/test/test-declared-match.ts +25 -4
- package/scripts/test/test-declared.ts +26 -9
- package/scripts/test/test-red-commit.ts +3 -2
- package/scripts/test/test-red-logic.ts +7 -14
- package/scripts/test/test-red.ts +12 -47
- package/scripts/test/test-related-scope.ts +2 -3
- package/scripts/test/test-related.ts +3 -3
- package/scripts/test/test-type-logic.ts +1 -2
- package/scripts/test/test-unit-guard.ts +13 -17
- package/scripts/test/unit-worker-share.ts +7 -8
- package/scripts/time-runtime/time-agent-bundles.ts +2 -4
- package/scripts/time-runtime/time-background.ts +17 -21
- package/scripts/time-runtime/time-batch-guard.ts +67 -342
- package/scripts/time-runtime/time-bundle-call.ts +26 -28
- package/scripts/time-runtime/time-bundles.ts +11 -12
- package/scripts/time-runtime/time-call-identity.ts +1 -1
- package/scripts/time-runtime/time-command-key.ts +2 -2
- package/scripts/time-runtime/time-density-hook.ts +8 -11
- package/scripts/time-runtime/time-density.ts +5 -5
- package/scripts/time-runtime/time-followup-stage.ts +7 -7
- package/scripts/time-runtime/time-format.ts +5 -5
- package/scripts/time-runtime/time-hook-transcript.ts +3 -3
- package/scripts/time-runtime/time-instant.ts +1 -1
- package/scripts/time-runtime/time-markers.ts +15 -19
- package/scripts/time-runtime/time-phase-names.ts +3 -3
- package/scripts/time-runtime/time-reported-failure.ts +15 -19
- package/scripts/time-runtime/time-round-trips.ts +20 -23
- package/scripts/time-runtime/time-shell.ts +8 -8
- package/scripts/time-runtime/time-single-check.ts +1 -2
- package/scripts/time-runtime/time-spans.ts +35 -40
- package/scripts/time-runtime/time-tool-call.ts +15 -16
- package/scripts/time-runtime/time-transcript-line.ts +53 -34
- package/scripts/time-runtime/time-writes.ts +5 -5
- package/scripts/ui/ui-routes-cli.ts +1 -2
- package/scripts/ui/ui-routes.ts +1 -2
- package/scripts/version/bump-version.ts +1 -1
- package/scripts/version/fresh-metadata-cache.ts +2 -2
- package/scripts/version/latest-corepack.ts +26 -26
- package/scripts/version/latest-lane-guard.ts +1 -1
- package/scripts/version/latest-scope-cli.ts +2 -2
- package/scripts/version/latest-stamp.ts +1 -2
- package/scripts/version/latest-update.ts +2 -2
- package/scripts/version/npm-registry.ts +2 -2
- package/scripts/version/package-manager-version.ts +18 -0
- package/scripts/version/publishable-range-check.ts +2 -1
- package/scripts/version/publishable-range.ts +1 -1
- package/scripts/version/release-age.ts +11 -11
- package/scripts/version/release-hold.ts +2 -2
- package/scripts/version/safe-chain-version-update.ts +3 -3
- package/scripts/version/version-check-logic.ts +2 -3
- package/scripts/version/version-check.ts +1 -2
- package/scripts/version/version-command-config.ts +2 -2
- package/scripts/version/version-commands.ts +3 -3
- package/scripts/version/version-remote.ts +4 -4
- package/scripts/version/version-targets.ts +2 -2
- package/templates/gitignore +7 -0
- package/dist/hooks/chunk-KHX4U3BG.js +0 -6400
- package/dist/hooks/chunk-RKUAD3I6.js +0 -90
- package/dist/hooks/chunk-WPALEIRX.js +0 -18
- package/scripts/backlog/backlog-restructure.ts +0 -152
- package/scripts/rules/issue-fold-rule.ts +0 -72
- package/scripts/rules/wip-cap.ts +0 -63
- package/scripts/run/run-issue-number.ts +0 -19
|
@@ -7,9 +7,7 @@ commands themselves; the dependency declaration this file builds on is `SKILL.md
|
|
|
7
7
|
|
|
8
8
|
**A wave is not a mechanism, and there is nothing to add for one.** "Run #A, #B and #C together, then
|
|
9
9
|
#D by itself, then the rest together" is already expressible with the dependency declaration
|
|
10
|
-
`SKILL.md` describes
|
|
11
|
-
(joshuafolkken/kit#1170) let several children run at once. What was missing was never the mechanism —
|
|
12
|
-
it was that nobody had written down how to build one, or when not to (joshuafolkken/kit#1584).
|
|
10
|
+
`SKILL.md` describes.
|
|
13
11
|
|
|
14
12
|
## The shape
|
|
15
13
|
|
|
@@ -34,10 +32,10 @@ as **no declaration at all** rather than as an error — and `#A` / `#B` are not
|
|
|
34
32
|
The lines go into the epic body unfenced, with real numbers.
|
|
35
33
|
|
|
36
34
|
**Deleting a declared order is `pnpm josh epic --remove <E> <M> <N> [<N2> …]`, and never a hand edit
|
|
37
|
-
either
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
either.** The arguments are a path, so each consecutive pair is one order and a whole chain goes in
|
|
36
|
+
one call; the body's declaration and the `blocked-by` relations are written from that one input,
|
|
37
|
+
exactly as `--add` writes them. **The ends are never reconnected** — `#A -> #B -> #C` minus
|
|
38
|
+
`#B -> #C` leaves `#A -> #B`, and taking out a middle child's two links leaves `#A` and `#C`
|
|
41
39
|
unordered rather than declaring `#A -> #C`. Deleting the last link writes the unordered sentence, so
|
|
42
40
|
the section never ends up with no machine-readable declaration. Pass `--decision-file` to record why;
|
|
43
41
|
the record lands on the epic's `## Decisions` and on both ends of every deleted order. Doing either
|
|
@@ -49,18 +47,12 @@ half by hand is the `declaration_mismatch` below, arrived at from the other dire
|
|
|
49
47
|
in `Dependencies` — is what a wave has to satisfy, and editing the body alone satisfies half of it.
|
|
50
48
|
**`--before <hub>` and `--after <hub>` are both refused while the hub sits in more than one chain
|
|
51
49
|
with nothing after it** — which is exactly what a hub is the moment the earlier wave has been chained
|
|
52
|
-
into it.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
**Nothing in the parsing or the consistency check forbids this.** `DECLARED_CHAIN_LINE` in `scripts/epic/epic-parse.ts`
|
|
60
|
-
asks only that a line be *nothing but* a chain, so there may be any number of chain lines and **one
|
|
61
|
-
child may be an endpoint of several of them** — `parse_dependency_links` expands each line
|
|
62
|
-
independently and flattens the result, dropping only self-loops. `find_anomalies` in
|
|
63
|
-
`scripts/epic/epic-graph.ts` rejects exactly two things, a **cycle** and a **disagreement between the
|
|
50
|
+
into it. **The first child of the next wave therefore goes into the declaration by hand**, with its
|
|
51
|
+
`blocked-by` recorded to match. Once the hub has a successor, `--after <hub>` branches a new line and
|
|
52
|
+
the rest of that wave goes in with it.
|
|
53
|
+
|
|
54
|
+
**Any number of chain lines is allowed, and one child may be an endpoint of several of them.** The
|
|
55
|
+
consistency check rejects exactly two things, a **cycle** and a **disagreement between the
|
|
64
56
|
declaration and the recorded `blocked-by`**; a fan-in and a fan-out are neither.
|
|
65
57
|
|
|
66
58
|
**The number of lines is the size of the widest wave**, because a one-child wave is a hub and the
|
|
@@ -72,9 +64,7 @@ looking for a shorter notation.
|
|
|
72
64
|
|
|
73
65
|
**There is no `solo` mechanism, and none is needed.** "This one must not run beside anything" is the
|
|
74
66
|
shape above with a wave of size one: chain into it every child that must not overlap it, and out of
|
|
75
|
-
it every child that must not precede it.
|
|
76
|
-
`## Exclusive` section — would put a second way to say what the dependency declaration already says,
|
|
77
|
-
and a second consistency check to keep the two agreeing.
|
|
67
|
+
it every child that must not precede it.
|
|
78
68
|
|
|
79
69
|
## When a wave may be declared
|
|
80
70
|
|
|
@@ -82,15 +72,19 @@ and a second consistency check to keep the two agreeing.
|
|
|
82
72
|
condition, and it is narrower than it sounds:
|
|
83
73
|
|
|
84
74
|
- **A mere preference of order is not a dependency.** Wanting one child to go first — to see its
|
|
85
|
-
result early, to get the risky one out of the way — is presentation order, and
|
|
75
|
+
result early, to get the risky one out of the way — is presentation order, and the task-list order
|
|
86
76
|
is where that belongs. Substituting a dependency for it buys the order and pays with the stall below.
|
|
87
|
-
**Write it with `--order-before <M>` / `--order-after <M
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
- **Two children that
|
|
92
|
-
|
|
93
|
-
|
|
77
|
+
**Write it with `--order-before <M>` / `--order-after <M>`**, which move the task-list row and
|
|
78
|
+
declare nothing; `--before` / `--after` are for an order that really is a dependency. Neither of the
|
|
79
|
+
order-only flags helps at a **wave boundary**, which is a dependency by definition — the hub case
|
|
80
|
+
above stays what it is.
|
|
81
|
+
- **Two children that merely edit the same file are not a dependency.** A textual conflict resolves
|
|
82
|
+
inside the lane: every run merges `origin/main` before its gate (`pnpm josh main:merge`), and an
|
|
83
|
+
overlap that lands after it is resolved where it surfaces (`backlogrun-recovery.md` → "Conflicts are
|
|
84
|
+
not predicted"). Run them in parallel; the per-conflict price is `backlogrun-lanes.md` → "Lanes —
|
|
85
|
+
running more than one child at a time".
|
|
86
|
+
- **Two children that would each build the same mechanism are a dependency.** No merge reconciles two
|
|
87
|
+
implementations of one thing — the later child must build on the earlier one's, so the boundary stays.
|
|
94
88
|
- **No reason to wait means no declaration.** An epic whose children are mostly independent says so in
|
|
95
89
|
prose and leaves the graph empty.
|
|
96
90
|
|
|
@@ -100,27 +94,12 @@ condition, and it is narrower than it sounds:
|
|
|
100
94
|
`from_blockers` in `scripts/epic/epic-classify.ts` propagates `human`: a wave-1 child labelled
|
|
101
95
|
`needs-decision` makes every child behind it "waiting on a person" rather than "waiting on time".
|
|
102
96
|
|
|
103
|
-
**The park itself is not the halt
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
what makes one easy to declare and expensive to have declared. **Clearing it is removing that child's
|
|
97
|
+
**The park itself is not the halt.** `backlogrun` parks that child and goes on running the rest of
|
|
98
|
+
wave 1 exactly as it always does; the session stops once those close and nothing is runnable,
|
|
99
|
+
because every later wave has been classified `human`. So a boundary is paid for at the *end* of the
|
|
100
|
+
wave rather than at the moment one child parks. **Clearing it is removing that child's
|
|
108
101
|
`needs-decision`** once the decision has been recorded — the removal recording a decision already
|
|
109
102
|
requires — after which the waves behind it become runnable on the next round.
|
|
110
103
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
## The worked example — joshuafolkken/kit#1474
|
|
115
|
-
|
|
116
|
-
That epic has grown to **46 children while its declared chains have stayed at three**, and its body
|
|
117
|
-
says why:
|
|
118
|
-
|
|
119
|
-
> **鎖として宣言していない。** 19 件はほぼ独立しており、順序を依存として宣言すると 1 件詰まっただけ
|
|
120
|
-
> で残り全部が止まる。以下は推奨であって制約ではない。
|
|
121
|
-
|
|
122
|
-
The nineteen that paragraph was written about are ordered in **prose — a group, not a graph** — so a
|
|
123
|
-
reader gets the intent and no run is stopped by it, and none of the children added since has needed a
|
|
124
|
-
chain either. joshuafolkken/kit#1262 is the same lesson from the other
|
|
125
|
-
side: **24 false dependencies invented by `epic --add` have been removed from it**, each one an order
|
|
126
|
-
nobody needed that could have stopped everything behind it.
|
|
104
|
+
**A wave is declared for a real wait and removed when the wait ends; it is not the standing shape of
|
|
105
|
+
an epic.**
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: verify-ui
|
|
3
|
-
description:
|
|
3
|
+
description: Screenshot the affected route with the project's own command and check it matches the intent. Use it before reporting any UI, layout, styling, copy or interaction change as done.
|
|
4
4
|
argument-hint: '[route] [route...]'
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Verify the rendered screen
|
|
8
8
|
|
|
9
9
|
The completion gate in `CLAUDE.md` says a change that affects the rendered UI is not done until
|
|
10
|
-
someone has looked at the rendered result
|
|
11
|
-
|
|
10
|
+
someone has looked at the rendered result; passing unit and E2E tests are not that look. This skill is
|
|
11
|
+
the look. Rationale: `docs/maintainers/verify-ui-rationale.md` → "Why the skill reads as it does".
|
|
12
12
|
|
|
13
13
|
## 1. Decide which routes to capture
|
|
14
14
|
|
|
@@ -33,10 +33,9 @@ Look for it in this order and stop at the first hit:
|
|
|
33
33
|
2. `pnpm josh-game shot` — the game toolkit (`@joshuafolkken/game-kit`).
|
|
34
34
|
3. A project-local script named `shot`, `screenshot` or `verify:ui` in `package.json`.
|
|
35
35
|
|
|
36
|
-
Option 1 exists
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
and the version a project has installed is the only thing that decides.
|
|
36
|
+
Option 1 exists since app-kit 0.86.0; game-kit carries no `shot` yet, so a game project lands on
|
|
37
|
+
option 3 or the fallback below. Both are true of a version, and
|
|
38
|
+
the version a project has installed is the only thing that decides.
|
|
40
39
|
|
|
41
40
|
**Decide by the printed command list, not by whether the toolkit is installed.** Run the toolkit
|
|
42
41
|
with no subcommand (`pnpm josh-app`) and read the usage line it prints; `shot` exists only if that
|
|
@@ -50,9 +49,7 @@ The gate still has to be met, so fall back in this order.
|
|
|
50
49
|
|
|
51
50
|
**Capture through the project's own E2E suite.** If it has Playwright specs, add a
|
|
52
51
|
`await page.screenshot({ path: … })` to the spec that already covers the affected screen — or a new
|
|
53
|
-
spec if none does — and run it.
|
|
54
|
-
it is a fallback and not a workaround: it leaves the project with a screenshot the next run can take
|
|
55
|
-
again.
|
|
52
|
+
spec if none does — and run it.
|
|
56
53
|
|
|
57
54
|
**Otherwise stop and say so.** Report, in the session language:
|
|
58
55
|
|
|
@@ -62,25 +59,21 @@ again.
|
|
|
62
59
|
- that the change needs a human to look at the screen, and ask the user to do it.
|
|
63
60
|
|
|
64
61
|
Never report the gate as satisfied on tests alone. Never stand up a preview server by hand and drive
|
|
65
|
-
it from a throwaway script left outside the repository
|
|
66
|
-
|
|
67
|
-
project should have the command and does not, that is an issue to file against the application
|
|
68
|
-
toolkit.
|
|
62
|
+
it from a throwaway script left outside the repository. If the project should have the command and
|
|
63
|
+
does not, that is an issue to file against the application toolkit.
|
|
69
64
|
|
|
70
65
|
## 3. Capture
|
|
71
66
|
|
|
72
|
-
Run the command once for every route in a single invocation (`pnpm josh-app shot / /blog`).
|
|
73
|
-
|
|
74
|
-
finish and note the output directory it prints. On the E2E fallback, run the spec and note where its
|
|
67
|
+
Run the command once for every route in a single invocation (`pnpm josh-app shot / /blog`). Wait for
|
|
68
|
+
it to finish and note the output directory it prints. On the E2E fallback, run the spec and note where its
|
|
75
69
|
`path` option wrote the images.
|
|
76
70
|
|
|
77
71
|
If it exits non-zero, report the failure as the result. A failed capture is not a passed gate.
|
|
78
72
|
|
|
79
73
|
## 4. Look at the images
|
|
80
74
|
|
|
81
|
-
Read every produced image with the Read tool. Actually look at each one —
|
|
82
|
-
|
|
83
|
-
already do.
|
|
75
|
+
Read every produced image with the Read tool. Actually look at each one — capturing files without
|
|
76
|
+
opening them does not close the gate.
|
|
84
77
|
|
|
85
78
|
Check what the change was supposed to do to the screen: the element is present, in the right place,
|
|
86
79
|
at the right size, with the intended spacing, color and text; nothing that used to be there has
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: workflow-commands
|
|
3
|
-
description:
|
|
3
|
+
description: Procedures for `kickoff`, `fullrun`, `halfrun`, `prrun` and `backlogrun`. Read it the moment one is typed (with or without `#N` / `new`), before any command, and when asked what one does or a run must be resumed or repaired.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Issue-driven workflow commands
|
|
7
7
|
|
|
8
8
|
`kickoff`, `fullrun`, `halfrun`, `prrun` and `backlogrun` are the shorthand commands this
|
|
9
9
|
package's collaboration workflow is built on. **This file is their manifest — triggers and pointers,
|
|
10
|
-
never a procedure
|
|
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".
|
|
11
12
|
|
|
12
13
|
## 0. The rule that fires before any of them — explicit invocation
|
|
13
14
|
|
|
@@ -48,13 +49,13 @@ Each is fetched at its named scope, in the same turn, by the named command that
|
|
|
48
49
|
| ----------------------- | ------------------------------------------------------------------------------ |
|
|
49
50
|
| `latest-gate.md` | `pnpm josh latest:scope` answers `required` — before `josh latest` runs |
|
|
50
51
|
| `followup.md` → "Run `pnpm josh followup`" | Before issuing `pnpm josh followup`, in that same turn |
|
|
51
|
-
| `chain-rule.md` → "Run the review-to-merge chain" | Before the first `pnpm josh gate` launch (`fullrun` / `backlogrun`) — the gate
|
|
52
|
-
| `background-commands.md` → "Background the gate and push" | Before backgrounding `pnpm josh gate` — the first long-running command a run detaches (`fullrun` / `halfrun` / `backlogrun`) |
|
|
52
|
+
| `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
|
+
| `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`) |
|
|
53
54
|
|
|
54
55
|
A `skip` answer from `latest:scope` reads nothing. **A lane child that parks reads
|
|
55
56
|
`backlogrun-park.md` → "park and continue" at that point of use**, and **every implementing run reads
|
|
56
57
|
`progress-watcher.md` → "Progress while the run is quiet"** before starting `pnpm josh run:progress
|
|
57
|
-
--wait` once its hold is claimed
|
|
58
|
+
--wait` once its hold is claimed.
|
|
58
59
|
|
|
59
60
|
### A section reference is read as a section
|
|
60
61
|
|
|
@@ -65,8 +66,7 @@ pnpm josh doc:section <file.md> "<heading>" # the section, verbatim
|
|
|
65
66
|
pnpm josh read:set [<keyword>] # what an entry reads, and what it costs
|
|
66
67
|
```
|
|
67
68
|
|
|
68
|
-
A heading that does not resolve is refused, with the file's own headings listed.
|
|
69
|
-
from the table above and the documents themselves, never transcribed.
|
|
69
|
+
A heading that does not resolve is refused, with the file's own headings listed.
|
|
70
70
|
|
|
71
71
|
## 2. What every one of them shares
|
|
72
72
|
|
|
@@ -91,11 +91,11 @@ from — read at that trigger, never restated here.
|
|
|
91
91
|
| Implementation is done | Refactor → `pnpm josh main:merge` → `pnpm josh gate` beside a subagent `/code-review`, joined before the commit → round cap → PR → merge | `chain-rule.md` → "Run the review-to-merge chain" |
|
|
92
92
|
| A review has run | Its verdict counts only once `pnpm josh review:attest --check` answers `ok`; `missing` / `mismatch` are refusals `pnpm josh followup` blocks the merge on | `chain-rule.md` → "The brief names the checkout, and a review that read another one is refused" |
|
|
93
93
|
| A command can take minutes | Issue it in the background; the turn never ends at the push (`pnpm josh followup` stays foreground) | `background-commands.md` → "Background the gate and push" |
|
|
94
|
-
| E2E gate | The CI E2E job where the command ends in a PR (`fullrun` / `backlogrun`, enforced by `pnpm josh followup`); you run `pnpm josh test:e2e` yourself where it does not (`halfrun`) | `prompts/testing-guide.md` → "Closing the E2E gate without a human run" |
|
|
94
|
+
| E2E gate | The CI E2E job where the command ends in a PR (`fullrun` / `prrun` / `backlogrun`, enforced by `pnpm josh followup`); you run `pnpm josh test:e2e` yourself where it does not (`halfrun`) | `prompts/testing-guide.md` → "Closing the E2E gate without a human run" |
|
|
95
95
|
| Filing any new Issue | `pnpm josh issue:file` — it runs the `issue:scout` scan first; read its duplicate and epic answers | `issue-scout.md` |
|
|
96
96
|
| Another Issue here must land first | A prerequisite is a dependency, not a park — file it, stash, record the dependency; `fullrun` / `halfrun` stop, `backlogrun` continues | `prerequisite.md` |
|
|
97
|
-
| Something worth filing, none of the three |
|
|
98
|
-
| A defect in kit's own verification turns up | It runs alone when all three conditions hold; a batch resumes once it merges | `backlogrun-lanes.md` → "
|
|
97
|
+
| Something worth filing, none of the three | Unattended: file it (Tier A, first-party); else ask; a delegated child returns it to the parent instead | `observation-filing.md` |
|
|
98
|
+
| A defect in kit's own verification turns up | It runs alone when all three conditions hold; a batch resumes once it merges | `backlogrun-lanes.md` → "A solo run" |
|
|
99
99
|
| Under `backlogrun`, a stop that would end a batch, or a named non-epic item | Park one child and continue; run a named non-epic item as a `fullrun` | `backlogrun-park.md` → "park and continue"; `backlogrun-child.md` → "When `#N` is not an epic" |
|
|
100
100
|
| `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
101
|
| `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` |
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
## Background the gate and push
|
|
4
4
|
|
|
5
5
|
- **The clean path folds the region into one backgrounded `pnpm josh ship`** (preflight → gate → `git -y` →
|
|
6
|
-
foreground `followup` → `run:tail
|
|
6
|
+
foreground `followup` → `run:tail`). The calls below serve a due second round.
|
|
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
|
- Keep `pnpm josh followup` in the foreground — nearly every following step reads its result.
|
|
11
|
-
- **Record before the CI wait ends, never after the merge
|
|
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.
|
|
14
14
|
- Overlap only tree-readers, and compose merge-independent tail data before `followup` (the table
|
|
@@ -17,6 +17,7 @@
|
|
|
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".
|
|
20
21
|
|
|
21
22
|
## How the wait ends — the task's exit, never a regex over its output
|
|
22
23
|
|
|
@@ -82,8 +83,7 @@ the cut" is its single source.
|
|
|
82
83
|
|
|
83
84
|
**A headless lane child (`claude -p`) is where "a background command re-invokes the run" does not
|
|
84
85
|
hold: its background Bash tasks are killed when its turn ends.** It hands the gate-to-merge region to
|
|
85
|
-
a foreground `pnpm josh ship --detach` instead (`chain-rule.md` step 0)
|
|
86
|
-
supervisor exists, so a backgrounded `ship` dies with the turn; `pnpm josh rule:guard` refuses a
|
|
86
|
+
a foreground `pnpm josh ship --detach` instead (`chain-rule.md` step 0); `pnpm josh rule:guard` refuses a
|
|
87
87
|
backgrounded `josh gate` / `git` / `followup` / `ship` there, and the `Stop` hook sends a child with a
|
|
88
88
|
task still running back to wait.
|
|
89
89
|
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
# `backlogrun` — running a child (shared mechanics, delegation, liveness, session setup)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
reaches `pnpm josh delegate epic-child` (or `pnpm josh lane:dispatch`). **A later child does not re-read
|
|
5
|
-
the whole file; it fetches only the section that child needs** — `pnpm josh doc:section backlogrun-child.md
|
|
6
|
-
"<heading>"`. It is a point-of-use document, never an entry read: the entry procedure is `backlogrun.md`,
|
|
7
|
-
which points here at that step. This file is the single source of how one `backlogrun` child — of a
|
|
8
|
-
named epic, a named issue, or the opted-in pool — is run. Rationale:
|
|
9
|
-
`docs/maintainers/backlogrun-child-rationale.md` → "Why the file is read once and then by section".
|
|
3
|
+
Point-of-use, read one section at a time from `backlogrun.md` → "The route table" (rationale: `docs/maintainers/backlogrun-child-rationale.md` → "Why the file is read by section").
|
|
10
4
|
|
|
11
5
|
## Running a child — the shared mechanics
|
|
12
6
|
|
|
@@ -66,85 +60,35 @@ reference is named, the refusal is the whole answer. Where several are, a task-l
|
|
|
66
60
|
`backlogrun #<N>` on its own after the epic.
|
|
67
61
|
## Each child runs in a delegated unit
|
|
68
62
|
|
|
69
|
-
**A child is not run in the parent loop's context
|
|
70
|
-
|
|
71
|
-
|
|
63
|
+
**A child is not run in the parent loop's context** — **whatever offers a child — the loop, or a
|
|
64
|
+
person clearing a label — the child is handed to a lane, never to the parent.** `pnpm josh delegate
|
|
65
|
+
epic-child` answers `delegate`; in a lane the unit is a detached process started by `pnpm josh
|
|
66
|
+
lane:launch` (`backlogrun-lanes.md` → "Opening one lane and dispatching its child"), with the invoking
|
|
67
|
+
CLI's `worker` profile — Claude Code defaults to Anthropic `claude-opus-5-5` / `medium`
|
|
68
|
+
(`docs/josh-commands-run.md` → "`josh lane:dispatch`", the single source).
|
|
69
|
+
Where no isolated unit exists, run the child in the parent's context; the hand-off is still asked at
|
|
70
|
+
every merge. Rationale: `docs/maintainers/backlogrun-child-rationale.md` → "Why each child runs in a
|
|
71
|
+
delegated unit".
|
|
72
72
|
|
|
73
|
-
**The
|
|
74
|
-
|
|
75
|
-
delegated unit — a fresh one and **a child just released from `needs-decision`** alike. The rule is
|
|
76
|
-
one sentence: **whatever offers a child — the loop, or a person clearing a label — the child is handed
|
|
77
|
-
to a lane, never to the parent.**
|
|
73
|
+
**The parent reads GitHub, never the summary** — `pnpm josh issue:state <N>` (or `run:merge`) is the
|
|
74
|
+
verifier; **never advance the loop on the summary alone**.
|
|
78
75
|
|
|
79
|
-
**The
|
|
80
|
-
|
|
81
|
-
rather than deciding:
|
|
76
|
+
**The brief names the invocation it descends from** — e.g. `backlogrun #<E> --only`, the child number,
|
|
77
|
+
and that the child runs as `fullrun #<N>` under that authorization; the unit refuses a brief without it.
|
|
82
78
|
|
|
83
|
-
|
|
84
|
-
pnpm josh delegate epic-child # → delegate
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
**In a lane, that unit is a detached operating-system process rather than a subagent of this
|
|
88
|
-
session.** The verifier is still `pnpm josh issue:state <N>` read from GitHub, and the summary is
|
|
89
|
-
still bounded at 25 lines. `pnpm josh lane:dispatch` is where a lane's child is started; "Handing the
|
|
90
|
-
child over" in `backlogrun-lanes.md` carries the command.
|
|
91
|
-
|
|
92
|
-
**The lane child uses the invoking CLI's `worker` profile.** Claude Code defaults to Anthropic
|
|
93
|
-
`claude-opus-5-5` / `medium`; Codex uses `codex exec`, OpenAI `gpt-6.1-sol` / `medium`, workspace-write and
|
|
94
|
-
JSONL. `JOSH_WORKER_MODEL` overrides Claude Code only; `JOSH_WORKER_EFFORT` covers both providers,
|
|
95
|
-
and legacy `JOSH_LANE_*` applies only here. Bad markers, missing CLI/auth and failure
|
|
96
|
-
refuse or park without fallback or retry.
|
|
97
|
-
`docs/josh-commands-run.md` → "`josh lane:dispatch`" is the single source.
|
|
79
|
+
### What the summary carries, and how long it may be
|
|
98
80
|
|
|
99
|
-
**The
|
|
100
|
-
|
|
101
|
-
in one call. The child's own gate, `/code-review` and CI run inside the unit. **Never advance the
|
|
102
|
-
loop on the summary alone** — that discards the verifier.
|
|
81
|
+
**The summary carries only what GitHub does not, in at most 25 lines; the brief states the bound.**
|
|
82
|
+
Rationale: `docs/maintainers/backlogrun-child-rationale.md` → "Why the summary is bounded the way it is".
|
|
103
83
|
|
|
104
|
-
|
|
84
|
+
- **Kept**: `Cause` / `Fix` / `Result`; every verification result not closed the ordinary way, named
|
|
85
|
+
as such; observations that could bite later — **the only route a child's discretionary observation
|
|
86
|
+
has** (`observation-filing.md` → "A delegated child does not take this route"); decisions not already
|
|
87
|
+
logged; what was left undone, and under whose authority.
|
|
88
|
+
- **Cut**: the changed-file list, per-round review detail, and restated rules.
|
|
105
89
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
summary is bounded the way it is".
|
|
109
|
-
|
|
110
|
-
**Always kept — five things, because none of them is anywhere else:**
|
|
111
|
-
|
|
112
|
-
1. **`Cause` / `Fix` / `Result`**, the three plain lines — the parent's orientation.
|
|
113
|
-
2. **Every verification result the run did not close in the ordinary way**, named as such. A result
|
|
114
|
-
nobody obtained must never reach the parent as a run that passed.
|
|
115
|
-
3. **Observations that could bite later** — something noticed and not filed, a flaky check, a
|
|
116
|
-
surprising diff, work a later child will collide with. **This is the only route a child's
|
|
117
|
-
discretionary observation has**: a child files `route:tier-a` and `route:interrupt` only, and the
|
|
118
|
-
parent files what survives — `observation-filing.md`, the single source. **What the parent does with the
|
|
119
|
-
rest is append it, not drop it**: an observation that cannot cite the depth-0 work it blocked
|
|
120
|
-
becomes one line in the observation ledger, and a second line under the same key files it. **A
|
|
121
|
-
child appends only to its own issue's file, `.josh/observations/<N>.md`, in its own
|
|
122
|
-
lane** (joshuafolkken/kit#2919) — it merges with the child's pull request, and a sibling lane's
|
|
123
|
-
file is never one it touches.
|
|
124
|
-
4. **Decisions taken and why**, where the decision was not already logged as an Issue comment.
|
|
125
|
-
5. **What was left undone**, and under whose authority.
|
|
126
|
-
|
|
127
|
-
**Always cut — three things, because GitHub already holds them:** the changed-file enumeration (the
|
|
128
|
-
pull request's own file list), the per-round review detail (each round's verdict is one line; the
|
|
129
|
-
findings are on the pull request), and restatements of rules the parent already holds.
|
|
130
|
-
|
|
131
|
-
**The bound is 25 lines, and it is a number so that it is not a judgement.** **The brief states the
|
|
132
|
-
bound.**
|
|
133
|
-
|
|
134
|
-
**This does not shorten the person-facing completion report.**
|
|
135
|
-
`prompts/collaboration-workflow/report-format.md` → 「完了報告(セッション向け)」 is unchanged. What is
|
|
136
|
-
bounded here is the child's hand-back to the parent.
|
|
137
|
-
|
|
138
|
-
**Read the state directly rather than asking `epic:next` again.** A child that did not finish still
|
|
139
|
-
carries `in-progress`, which `epic:next` classifies as waiting on time before it consults any blocker.
|
|
140
|
-
|
|
141
|
-
**The merge authorization reaches the unit**, and **so does the explicit invocation**. **The brief
|
|
142
|
-
therefore names the invocation it descends from** — `backlogrun #<E> --only`, the child number, and that
|
|
143
|
-
the child is to be run as `fullrun #<N>` under that authorization. A brief that omits it is the defect,
|
|
144
|
-
and the unit refuses it.
|
|
145
|
-
|
|
146
|
-
**Where no isolated unit exists, run the child in the parent's context.** The hand-off below is still
|
|
147
|
-
asked at every merge; delegation is not an alternative to it.
|
|
90
|
+
The person-facing report (`prompts/collaboration-workflow/report-format.md` → 「完了報告(セッション向け)」)
|
|
91
|
+
is unchanged.
|
|
148
92
|
|
|
149
93
|
## A delegated unit that stopped without reporting
|
|
150
94
|
|
|
@@ -168,35 +112,16 @@ back a child number — before implementing that child — and never again:
|
|
|
168
112
|
```bash
|
|
169
113
|
pnpm josh latest:scope # → required | skip ; the reason on stderr
|
|
170
114
|
git stash push -u -m "backlogrun: josh latest #<N>" # only if the tree has staged or modified files — never conditional on the answer
|
|
171
|
-
|
|
115
|
+
pnpm josh ms
|
|
172
116
|
pnpm josh latest # on `required` only
|
|
173
117
|
pnpm josh stash:pop "backlogrun: josh latest #<N>" # only if you stashed above — by message, not a positional pop
|
|
174
118
|
```
|
|
175
119
|
|
|
176
|
-
On `required`, load the `dependency-update` skill
|
|
177
|
-
|
|
178
|
-
the
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
never skip it because another repository's session already ran it. **Never ask it before a child is
|
|
182
|
-
in hand.**
|
|
183
|
-
|
|
184
|
-
**The lock file the update rewrites lands with the first child.** The first child's `pnpm josh git -y`
|
|
185
|
-
commits it — so that one PR carries the dependency bumps and the other children carry none. Should the
|
|
186
|
-
first child fail CI on a bump, fix it forward before parking it.
|
|
187
|
-
|
|
188
|
-
**`git switch main && git pull` stays per child** — it brings the previous child's merge into the tree,
|
|
189
|
-
and a child that skips it implements on a stale main. Only the dependency update moves to the run. **In
|
|
190
|
-
lanes it changes hands**: no lane can switch to the default branch, so the parent runs it in the primary
|
|
191
|
-
checkout **before each `lane:open`**. **And in a lane `josh latest` is not even asked** — `latest:scope`
|
|
192
|
-
skips and `latest:guard` refuses. The stash that carries the lock file into the first lane is in
|
|
193
|
-
`backlogrun-lanes.md` → "Once per repository, before the first lane opens": the parent runs the update
|
|
194
|
-
and pushes the stash in the primary checkout before `backlog:drive` starts, and the driver passes it
|
|
195
|
-
to the first lane it launches.
|
|
196
|
-
|
|
197
|
-
This is the same rule `latest-gate.md` is the single source of.
|
|
198
|
-
|
|
199
|
-
**A resumed `backlogrun` is a new session**, so it asks once again before its first child.
|
|
120
|
+
On `required`, load the `dependency-update` skill; `latest-gate.md` is the single source. **Session,
|
|
121
|
+
not run** — each session updates its own checkout, and a resumed `backlogrun` asks again. **The lock
|
|
122
|
+
file lands with the first child's `pnpm josh git -y`**; fix a failing bump forward. **`josh latest` is
|
|
123
|
+
never run inside a lane** (`pnpm josh latest:guard` refuses it) — with lanes the parent runs it in the
|
|
124
|
+
primary checkout (`backlogrun-lanes.md` → "Once per repository, before the first lane opens").
|
|
200
125
|
|
|
201
126
|
Rationale: `docs/maintainers/backlogrun-child-rationale.md` → "Why `josh latest` is hoisted to the
|
|
202
127
|
session".
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# `backlogrun` — the hand-off report
|
|
2
|
+
|
|
3
|
+
The format of the report a `backlogrun` writes when it hands the rest of a batch to a new session —
|
|
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`.
|
|
6
|
+
|
|
7
|
+
**The hand-off is a fourth kind of stop — not a completion, a park or a failure.**
|
|
8
|
+
**It never uses `Cause` / `Fix` / `Result`**: an unfinished epic would read as finished.
|
|
9
|
+
|
|
10
|
+
```md
|
|
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)
|
|
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
|