@joshuafolkken/kit 1.1240.0 → 1.1370.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 +50 -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 +29 -47
- package/SECURITY.md +1 -1
- package/dist/CLAUDE.md +10 -61
- package/dist/commands/document-section-cli.js +42 -10
- 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-43G45XJF.js} +18 -20
- package/dist/hooks/{chunk-4TZVB44A.js → chunk-4TW4MQUL.js} +284 -362
- package/dist/hooks/{chunk-XZYKEM6J.js → chunk-76RK6E3H.js} +13 -11
- package/dist/hooks/{chunk-F3ELQ2AF.js → chunk-DZWZ3DKY.js} +4 -4
- 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-ZQGD4GBY.js → chunk-KPM4YIIX.js} +8 -44
- package/dist/hooks/chunk-MXVQMLDP.js +3705 -0
- package/dist/hooks/{chunk-ELCN5LCH.js → chunk-NEC4AT4Z.js} +34 -12
- package/dist/hooks/{chunk-QVSWU24O.js → chunk-NZBHG6FW.js} +7 -5
- package/dist/hooks/chunk-NZN2UFI6.js +2409 -0
- package/dist/hooks/{chunk-KRBERBBI.js → chunk-R6CRQEAL.js} +4 -4
- package/dist/hooks/chunk-SYSRHRWU.js +1589 -0
- package/dist/hooks/{chunk-WK2XSHSI.js → chunk-TLJYAGZK.js} +549 -874
- 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 +216 -202
- 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 +281 -94
- 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 +16 -10
- 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 +26 -2
- 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 +20 -6
- 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/cspell-cached.ts +1 -1
- package/scripts/lint/cycle-recheck.ts +122 -0
- package/scripts/lint/format.ts +1 -2
- package/scripts/lint/lint-parallel.ts +34 -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 +5 -6
- 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 +25 -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 +13 -15
- package/scripts/run/run-step.ts +58 -47
- 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
|
@@ -1,31 +1,26 @@
|
|
|
1
1
|
# The `into <target>` suffix — where the new Issue lands
|
|
2
2
|
|
|
3
3
|
**This file is the suffix's single source, read at its point of use — the moment a `new` entry is
|
|
4
|
-
typed with an `into <target>` suffix, not at any entry
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
typed with an `into <target>` suffix, not at any entry.** A run given a `#N` or a bare `new` never
|
|
5
|
+
reaches it. `SKILL.md` → §2's table keeps the trigger and points here. Rationale:
|
|
6
|
+
`docs/maintainers/into-target-rationale.md` → "Why the suffix reads as it does".
|
|
7
7
|
|
|
8
8
|
`kickoff new` / `fullrun new` / `halfrun new` accept a suffix naming the epic the run's artifact
|
|
9
9
|
belongs to. Without it the artifact belongs to no epic, and `epic:next` only ever offers an epic's
|
|
10
10
|
children — so a forgotten instruction parks that Issue permanently rather than losing it visibly.
|
|
11
11
|
|
|
12
12
|
```
|
|
13
|
-
kickoff new into
|
|
14
|
-
fullrun new into
|
|
15
|
-
halfrun new into
|
|
16
|
-
kickoff new "<title>" into
|
|
17
|
-
kickoff new into joshuafolkken/kit
|
|
13
|
+
kickoff new into #<E>
|
|
14
|
+
fullrun new into #<E>
|
|
15
|
+
halfrun new into #<E>
|
|
16
|
+
kickoff new "<title>" into #<E>
|
|
17
|
+
kickoff new into joshuafolkken/kit#<E>
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
`into` is the spelling because the alternatives collide with forms that already mean something else:
|
|
21
|
-
`kickoff new #909` reads as the existing `kickoff #N`, and `kickoff new epic #909` reads as "create a
|
|
22
|
-
new epic" when what gets created is often a single Issue.
|
|
23
|
-
|
|
24
20
|
- **One artifact goes in: the top-level one this run created.** No split, and it is the Issue; a
|
|
25
21
|
split, and it is the epic. The children belong to that epic, not to the target.
|
|
26
22
|
- **Insert as soon as the artifact exists** — before implementation in `fullrun new`, before the plan
|
|
27
|
-
comment in `kickoff new`.
|
|
28
|
-
orphaned Issue this suffix exists to prevent.
|
|
23
|
+
comment in `kickoff new`.
|
|
29
24
|
- **The insertion always goes through `pnpm josh epic --add <E> <N> [--before <M> | --after <M>]`.**
|
|
30
25
|
Never hand-edit the epic body: the declaration and the `blocked-by` relations then disagree,
|
|
31
26
|
`epic:next` answers `error`, and an unattended run stops.
|
|
@@ -35,8 +30,7 @@ new epic" when what gets created is often a single Issue.
|
|
|
35
30
|
ahead of.
|
|
36
31
|
- **A target that is not an epic is refused, and the refusal names both ways out**:
|
|
37
32
|
`pnpm josh epic --promote <N> <N...>` when it is a request, a discussion or a container, or a new
|
|
38
|
-
epic over both when it is itself one of the deliverables. Never promote on your own
|
|
39
|
-
applies depends on what the target is, and promoting rewrites someone else's Issue into a container.
|
|
33
|
+
epic over both when it is itself one of the deliverables. Never promote on your own.
|
|
40
34
|
- **A cross-repository target is written `owner/repo#N`** and inserted from that repository's
|
|
41
35
|
checkout; run there, since `epic --add` reads and writes only the repository it runs from
|
|
42
36
|
(`.claude/skills/epic-commands/SKILL.md` → "Epics that span repositories"). A bare `#N` resolves to this repository's
|
|
@@ -44,5 +38,5 @@ new epic" when what gets created is often a single Issue.
|
|
|
44
38
|
- **No suffix leaves the behavior exactly as it was.**
|
|
45
39
|
|
|
46
40
|
**It is not `epic:bundle`, and both still run.** `epic:bundle` *recommends* an epic for a newly filed
|
|
47
|
-
Issue and does nothing when the signal is weak; `into` is a person naming one explicitly.
|
|
48
|
-
|
|
41
|
+
Issue and does nothing when the signal is weak; `into` is a person naming one explicitly. The
|
|
42
|
+
`epic:bundle` call that follows a filing happens exactly as before.
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
# An Issue's comments are part of the Issue
|
|
2
2
|
|
|
3
|
-
**
|
|
4
|
-
|
|
5
|
-
file routes here for the definition. It is read at its point of use — before implementing a
|
|
6
|
-
`#N` Issue.
|
|
3
|
+
**The single source of the comment read**, read at its point of use — before implementing a `#N`
|
|
4
|
+
Issue. Rationale and history: `docs/maintainers/issue-comments-rationale.md` → "Why comments are read".
|
|
7
5
|
|
|
8
6
|
**Every `#N` entry point reads the Issue's comments before it implements** — `fullrun`, `halfrun` and
|
|
9
|
-
`kickoff
|
|
10
|
-
|
|
11
|
-
*fork's* transcript, so every child is delivered to in its own right. The read is one call, made in the
|
|
12
|
-
same turn as whatever else the run already needs:
|
|
7
|
+
`kickoff`; a `backlogrun` named issue and epic child inherit it through `fullrun`'s procedure. The read
|
|
8
|
+
is one call, made in the same turn as whatever else the run already needs:
|
|
13
9
|
|
|
14
10
|
```bash
|
|
15
11
|
pnpm josh issue:read <N> [<N> ...] # body and comments, one call per batch
|
|
@@ -18,21 +14,12 @@ gh api repos/{owner}/{repo}/issues/<N>/comments --jq '.[] | {user: .user.login,
|
|
|
18
14
|
|
|
19
15
|
**The first line is the one to type**; `pnpm josh issue:read` answers the body and the comments for
|
|
20
16
|
every number named, in one call, and **says when a comment listing could not be read rather than
|
|
21
|
-
showing no comments
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
showing no comments**. The `gh api` form stays for a **cross-repository** read: the command takes no
|
|
18
|
+
`--repo`. Never `gh issue view <N> --comments` — it is GraphQL-backed and a cloud session is answered
|
|
19
|
+
`403`.
|
|
24
20
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
form.
|
|
28
|
-
|
|
29
|
-
**This repository writes its agreements into comments and then reads only bodies.** A Tier A decision
|
|
30
|
-
is logged as an Issue comment; the review round cap records a dropped finding's disposition; the
|
|
31
|
-
backlog's decision pass writes each decision to a comment on the child; a stash left behind is recorded on the Issue. **The
|
|
32
|
-
place a run is told to write is the place it was never told to read**, and nothing in a body says it
|
|
33
|
-
has been superseded, so the mistake is silent.
|
|
34
|
-
|
|
35
|
-
**What the reading is for**, so it is not skimmed: the boundary of the scope — work a comment moved to
|
|
21
|
+
**This repository writes its agreements into comments and then reads only bodies.** **What the
|
|
22
|
+
reading is for**, so it is not skimmed: the boundary of the scope — work a comment moved to
|
|
36
23
|
another Issue, or added to this one; the record of an auto-decision already made; a split or epic
|
|
37
24
|
agreement reached after filing; a recorded stash or an in-flight branch; and a **correction of the
|
|
38
25
|
body's own diagnosis**.
|
|
@@ -102,7 +89,5 @@ brief a delegated unit to return **the agreements in force plus the comment URLs
|
|
|
102
89
|
never the comment text.
|
|
103
90
|
|
|
104
91
|
**`pnpm josh rule:guard` refuses the body-only read** and hands over the reissue and the conflict rule
|
|
105
|
-
at the moment they bind (`prompts/collaboration-workflow/rule-delivery.md
|
|
106
|
-
|
|
107
|
-
so **this file is the rule and the hook is what makes it hard to walk past** — a session that runs
|
|
108
|
-
no hooks still owes the read.
|
|
92
|
+
at the moment they bind (`prompts/collaboration-workflow/rule-delivery.md`). **This file is the rule,
|
|
93
|
+
not the hook** — a session that runs no hooks still owes the read.
|
|
@@ -24,32 +24,27 @@
|
|
|
24
24
|
/ `failure` ❌ / `kickoff_retry` 🔄 / `confirmation` ⏸️). `--repo-name` and `--issue-title` are
|
|
25
25
|
auto-fetched from `gh` when not supplied. The Issue URL must be included.
|
|
26
26
|
|
|
27
|
-
**`kickoff` does not claim the working-tree hold, and does not release one
|
|
28
|
-
|
|
29
|
-
posts the plan, notifies and stops — every one of those against GitHub, none against the tree. So a
|
|
30
|
-
`fullrun` running in this checkout never stops a `kickoff`, and a `kickoff` never touches the record
|
|
31
|
-
that run is holding. It claims nothing, so it must not release anything either. `working-tree-hold.md` is the
|
|
32
|
-
single source.
|
|
27
|
+
**`kickoff` does not claim the working-tree hold, and does not release one** — it touches GitHub, never
|
|
28
|
+
the tree. `working-tree-hold.md` is the single source.
|
|
33
29
|
|
|
34
30
|
**The target repository is named in front of the Issue reference** — `kickoff kit#new`,
|
|
35
|
-
`kickoff joshuafolkken/kit
|
|
31
|
+
`kickoff joshuafolkken/kit#<N>`. The definition is `target-repository.md`. `kickoff` is the entry that needs
|
|
36
32
|
no checkout: name the target repository in the path of every `gh api` call — reads included — and never
|
|
37
33
|
clone. The one exception is the split path's epic, since `pnpm josh epic` writes only the repository it
|
|
38
34
|
runs in — and the promote arm has no remote fallback at all, so it stops when that repository is not
|
|
39
35
|
checked out here. A target whose owner is not this session's is third-party: Tier C, so it stops rather
|
|
40
36
|
than filing.
|
|
41
37
|
|
|
42
|
-
**Read `split-assessment.md` → "The question" first
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
The rest of `split-assessment.md` — what each entry does with the answer — is read on demand when a
|
|
47
|
-
split is found.
|
|
38
|
+
**Read `split-assessment.md` → "The question" first** — `kickoff #N` assesses scope exactly as
|
|
39
|
+
`kickoff new` does. Its default is not to split: separability and a scope that clearly exceeds what one
|
|
40
|
+
verification gate can confirm in one pass have to hold **together**. The rest of `split-assessment.md`
|
|
41
|
+
is read on demand when a split is found.
|
|
48
42
|
|
|
49
43
|
- `kickoff new` or `kickoff new "<title>"`: No Issue exists yet. Steps: (0) **Scope assessment** per
|
|
50
44
|
`split-assessment.md`. If multiple → the **multi-issue split path**; if single → the **single-issue
|
|
51
45
|
path**. **Single-issue path**: (1) Derive an English title from the conversation, or use the provided
|
|
52
|
-
title. (2) Create Issue: `pnpm josh issue:file "<title>" --body-file <body-file> --depth <n
|
|
46
|
+
title. (2) Create Issue: `pnpm josh issue:file "<title>" --body-file <body-file> --depth <n>
|
|
47
|
+
--requested` plus the labels the words typed after `new` name ("Words typed after `new`", below) (body
|
|
53
48
|
per `prompts/collaboration-workflow/issue-template.md`) — its duplicate scan runs first, and a
|
|
54
49
|
candidate that covers the same work stops the run rather than filing a second Issue (`SKILL.md` →
|
|
55
50
|
`issue-scout.md`). Capture `<N>`. (3)
|
|
@@ -57,7 +52,7 @@ split is found.
|
|
|
57
52
|
Telegram notification. (5) **Stop** — do not implement. **Multi-issue split path**: (1) For each
|
|
58
53
|
independent deliverable, derive a focused English title and create a separate Issue with the
|
|
59
54
|
`route:split` label (its duplicate scan is read per `issue-scout.md`): `pnpm josh issue:file
|
|
60
|
-
"<sub-title>" --body-file <body-file> --depth <n> --route split
|
|
55
|
+
"<sub-title>" --body-file <body-file> --depth <n> --route split --requested` plus the labels the words typed after `new` name. Capture each Issue number. **When the split is filed into a repository other than
|
|
61
56
|
the one this session is running in**, every child body gets the `## Origin` backlink described in the
|
|
62
57
|
cross-package rule the AI documents keep resident, the epic body carries the same link as prose or a
|
|
63
58
|
plain bullet (never as a checkbox row, which would disable its auto-close), and the originating Issue
|
|
@@ -77,7 +72,7 @@ split is found.
|
|
|
77
72
|
write `None — the children are independent; any execution order works.` under `Dependencies`. **The
|
|
78
73
|
epic itself is never implemented** — a `backlogrun` takes a named epic and runs its *children*. `pnpm josh
|
|
79
74
|
followup` closes it automatically once every child is closed. **Only when the execution order
|
|
80
|
-
matters
|
|
75
|
+
matters** — the criterion is `execution-waves.md` → "When a wave may be declared" — record it natively: `pnpm josh epic --ordered` treats the argument order as the dependency
|
|
81
76
|
order; on the manual fallback path, after the child Issues exist, `gh api
|
|
82
77
|
repos/{owner}/{repo}/issues/<N2>/dependencies/blocked_by -F issue_id="$(gh api
|
|
83
78
|
repos/{owner}/{repo}/issues/<N1> --jq .id)"` for each dependent pair (the endpoint takes the blocker's
|
|
@@ -87,3 +82,18 @@ split is found.
|
|
|
87
82
|
|
|
88
83
|
`pnpm josh issue:file` lints the body and applies the classification labels it declares, following `prompts/collaboration-workflow/issue-template.md` for classification (`docs/josh-commands-backlog.md` → `josh issue:file`).
|
|
89
84
|
An Issue a consumer can use only once it is published is filed with `--release` (`kickoff new`), or linked with `pnpm josh issue:release <N>` (`kickoff #N`) — either makes it a blocker of the repository's `release` Issue, which never gets `auto-ok` on its own.
|
|
85
|
+
|
|
86
|
+
## Words typed after `new`
|
|
87
|
+
|
|
88
|
+
**An Issue a person asked for is filed with `--requested`** — every `new` entry (each child of its
|
|
89
|
+
multi-issue split included), and a request in conversation. A live carry record or an `auto-ok` branch Issue then does not opt it in, so no lane takes
|
|
90
|
+
it before the person picks the run; `auto-ok` comes only from the words below (`issue-auto-ok.ts`). A
|
|
91
|
+
filing the run decides on its own — observation, retrospective, a split the run finds itself, routed — never declares it.
|
|
92
|
+
|
|
93
|
+
**Words after `new`** (`kickoff new auto ok high`) are read like `into <target>`, never inferred. Each
|
|
94
|
+
adds its labels to the `--requested` filing; a word not in the table is asked about:
|
|
95
|
+
|
|
96
|
+
| Typed | Added to `pnpm josh issue:file` |
|
|
97
|
+
| --------- | ---------------------------------- |
|
|
98
|
+
| `auto ok` | `--label auto-ok --label run:lane` |
|
|
99
|
+
| `high` | `--label priority:high` |
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
# The dependency update — when `josh latest` runs
|
|
2
2
|
|
|
3
3
|
`josh latest` updates every dependency, the published ranges, `pnpm audit` and pnpm, in that
|
|
4
|
-
order and over the network.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
entry's own file happened to hoist it by hand. This file is that rule's **single source**; every
|
|
8
|
-
entry point references it and none restates it.
|
|
4
|
+
order and over the network. This file is the **single source** of when it runs; every entry point
|
|
5
|
+
references it and none restates it. History: `docs/maintainers/latest-gate-rationale.md` → "Where
|
|
6
|
+
each rule came from".
|
|
9
7
|
|
|
10
8
|
## Ask the command; do not decide
|
|
11
9
|
|
|
@@ -15,10 +13,8 @@ pnpm josh latest:scope # → required | skip ; the reason on stderr
|
|
|
15
13
|
|
|
16
14
|
**`required` means run it. `skip` means the update is already current and this run does not.**
|
|
17
15
|
|
|
18
|
-
**The input is when `josh latest` last finished in this checkout, and nothing else
|
|
19
|
-
dependencies are probably still fresh
|
|
20
|
-
resolves it toward `skip` exactly when a stale dependency is most likely to matter — the same reason
|
|
21
|
-
`pnpm josh review:brief --level-only` took the review level out of an agent's hands.
|
|
16
|
+
**The input is when `josh latest` last finished in this checkout, and nothing else** — never a
|
|
17
|
+
judgement that the dependencies are probably still fresh.
|
|
22
18
|
|
|
23
19
|
- **No record answers `required`.** A fresh checkout, a cleared temp directory, a run that fell over
|
|
24
20
|
halfway — every one of them lands there, and none of them is evidence that anything is current.
|
|
@@ -26,43 +22,38 @@ resolves it toward `skip` exactly when a stale dependency is most likely to matt
|
|
|
26
22
|
failed leaves nothing behind and the next run updates again.
|
|
27
23
|
- **The window is 12 hours**, moved in either direction by `JOSH_LATEST_MAX_AGE_HOURS`. A value that
|
|
28
24
|
is not a positive number falls back to the default rather than disabling the update.
|
|
29
|
-
- **The record is per checkout.** An epic that spans repositories
|
|
30
|
-
|
|
25
|
+
- **The record is per checkout.** An epic that spans repositories updates each one on its own
|
|
26
|
+
schedule.
|
|
31
27
|
|
|
32
28
|
## What runs when the answer is `required`
|
|
33
29
|
|
|
34
30
|
```bash
|
|
35
31
|
git stash push -u -m "josh latest" # only if the working tree has staged or modified files
|
|
36
|
-
|
|
32
|
+
pnpm josh ms
|
|
37
33
|
pnpm josh latest # on `required` only
|
|
38
34
|
pnpm josh stash:pop "josh latest" # only if you stashed above — by message, never a positional pop
|
|
39
35
|
```
|
|
40
36
|
|
|
41
|
-
**The pop is by message, never a bare `git stash pop
|
|
42
|
-
work tree shares
|
|
43
|
-
step saved (joshuafolkken/kit#2050).
|
|
37
|
+
**The pop is by message, never a bare `git stash pop`** — the stash is a repository-wide stack every
|
|
38
|
+
work tree shares.
|
|
44
39
|
|
|
45
40
|
Then **load the `dependency-update` skill and follow its procedure** — the overrides in **both**
|
|
46
|
-
`pnpm-workspace.yaml` and `package.json`, and the one expected `devEngines` pnpm bump
|
|
47
|
-
|
|
48
|
-
never reports the pins intact without having been run.
|
|
41
|
+
`pnpm-workspace.yaml` and `package.json`, and the one expected `devEngines` pnpm bump — in every run in
|
|
42
|
+
which `josh latest` actually ran; never report the pins intact without having run it.
|
|
49
43
|
|
|
50
44
|
**On `skip`, one line of that block goes away and no more.** `pnpm josh latest` does not run, and
|
|
51
45
|
the `dependency-update` skill is not read, because nothing rewrote a pin for it to check.
|
|
52
46
|
|
|
53
47
|
**Two of those steps are not this gate's, and making either conditional breaks something.**
|
|
54
|
-
`
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
this command answered — so it is conditional on the **tree**, never on the answer.
|
|
48
|
+
`pnpm josh ms` runs per issue and per child either way — it brings the previous merge into the tree.
|
|
49
|
+
The stash before it is the branch switch's, not the update's, so it is conditional on the **tree**,
|
|
50
|
+
never on the answer.
|
|
58
51
|
|
|
59
52
|
## The vulnerability net is not what moved
|
|
60
53
|
|
|
61
54
|
`pnpm audit` runs inside `josh latest`, so a `skip` skips that reading too. **What still covers every
|
|
62
55
|
merge is CI**: the `Security Audit` job runs on every pull request and is one of the required checks
|
|
63
|
-
`pnpm josh followup` waits on
|
|
64
|
-
whatever this gate answered locally. The local reading is a head start on a failure CI would catch
|
|
65
|
-
anyway; it was never the only net.
|
|
56
|
+
`pnpm josh followup` waits on.
|
|
66
57
|
|
|
67
58
|
## The lock file lands with the issue that ran the update
|
|
68
59
|
|
|
@@ -72,6 +63,4 @@ CI on a bump rather than on its own change, fix it forward before parking the is
|
|
|
72
63
|
for the elapsed-time window: `docs/maintainers/latest-gate-rationale.md` → "Why an elapsed-time
|
|
73
64
|
window rather than once per batch".
|
|
74
65
|
|
|
75
|
-
|
|
76
|
-
each name `pnpm josh latest:scope` at the point their procedure reaches it and route here for
|
|
77
|
-
everything else; `docs/josh-commands-automation.md` documents the command itself.
|
|
66
|
+
`docs/josh-commands-automation.md` documents the command itself.
|
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
# `needs-human-review` — the child that stops before its commit
|
|
2
2
|
|
|
3
|
-
**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
of use — the moment `pnpm josh issue:state <N>` answers `human_review: yes`.
|
|
3
|
+
**The single source of the label**, read at its point of use — the moment `pnpm josh issue:state <N>`
|
|
4
|
+
answers `human_review: yes`. Rationale and history: `docs/maintainers/needs-human-review-rationale.md`
|
|
5
|
+
→ "Why the label exists".
|
|
7
6
|
|
|
8
7
|
An issue carrying **`needs-human-review`** is degraded to a `halfrun`-shaped stop, whichever entry
|
|
9
|
-
point reached it — `fullrun` or `backlogrun
|
|
10
|
-
unattended execution past an epic's edge, this one withholds its last step, and this one may be
|
|
11
|
-
applied **only by a person**. It exists because some work's quality is not something a test can judge — a
|
|
12
|
-
**published artifact** whose unit tests say nothing about the writing, or **a choice that was a
|
|
13
|
-
person's to make** such as picking one of several generated candidates.
|
|
8
|
+
point reached it — `fullrun` or `backlogrun` — and the label may be applied **only by a person**.
|
|
14
9
|
|
|
15
10
|
- **Implementation and the verification gate run normally** — refactor, `pnpm josh gate`,
|
|
16
11
|
`/code-review`, exactly as for any other child.
|
|
@@ -28,15 +23,11 @@ person's to make** such as picking one of several generated candidates.
|
|
|
28
23
|
carries on from the commit themselves. The stop report carries that resume command too, not only the
|
|
29
24
|
Telegram.
|
|
30
25
|
|
|
31
|
-
**Stopping is the specification, not a failure.**
|
|
32
|
-
decision that was a person's to make.
|
|
26
|
+
**Stopping is the specification, not a failure.**
|
|
33
27
|
|
|
34
|
-
**Read the answer from `pnpm josh issue:state <N>`, never by matching the label string yourself
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
not missed. **Ask once, before implementing**: `epic:next` prints a bare issue number and `fullrun`
|
|
38
|
-
and a batch child are handed one, so the check is one call of its own, made the moment the number is in
|
|
39
|
-
hand and before the plan.
|
|
28
|
+
**Read the answer from `pnpm josh issue:state <N>`, never by matching the label string yourself** — it
|
|
29
|
+
compares case-insensitively. **Ask once, before implementing**: one call of its own, made the moment
|
|
30
|
+
the number is in hand and before the plan.
|
|
40
31
|
|
|
41
32
|
```bash
|
|
42
33
|
pnpm josh issue:state <N> # state, labels, and human_review
|
|
@@ -52,13 +43,11 @@ repository, by a person:
|
|
|
52
43
|
gh api repos/{owner}/{repo}/labels -f name=needs-human-review -f color=d93f0b -f description="Implement and verify, but stop before committing so a person can look"
|
|
53
44
|
```
|
|
54
45
|
|
|
55
|
-
**It is not `needs-decision
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
leaving the label out of two sets: `scripts/issue/issue-labels.ts` keeps it out of
|
|
61
|
-
`NOT_DIRECTLY_RUNNABLE_LABELS` and `scripts/epic/epic-busy.ts` keeps it out of the parked set.
|
|
46
|
+
**It is not `needs-decision`**: `needs-decision` withholds a run's *start*; this withholds its *end*.
|
|
47
|
+
So a `needs-human-review` issue is still offered, and a child stopped by it **goes on holding its
|
|
48
|
+
repository** — `scripts/issue/issue-labels.ts` keeps it out of `NOT_DIRECTLY_RUNNABLE_LABELS` and
|
|
49
|
+
`scripts/epic/epic-busy.ts` keeps it out of the parked set (`docs/maintainers/needs-human-review-rationale.md`
|
|
50
|
+
→ "Why it is not `needs-decision`").
|
|
62
51
|
|
|
63
52
|
Each entry point's own branch stays in its own file — `fullrun.md`, `halfrun.md`,
|
|
64
53
|
`backlogrun.md` — and routes here for the definition.
|
|
@@ -1,37 +1,48 @@
|
|
|
1
1
|
# The observation filing procedure
|
|
2
2
|
|
|
3
|
-
**Read when an observation turns up — not at the entry
|
|
4
|
-
table
|
|
5
|
-
away, and
|
|
6
|
-
child does instead. **An observation the depth test turns away, and the kind of miss behind a
|
|
3
|
+
**Read when an observation turns up — not at the entry.** `SKILL.md` → §2's
|
|
4
|
+
table points here for the rule itself: who is asked before a filing, the depth test, what the test
|
|
5
|
+
turns away, and carrying the run on. This file is that rule, the depth table, the `issue:file` flags
|
|
6
|
+
and what a delegated child does instead. **An observation the depth test turns away, and the kind of miss behind a
|
|
7
7
|
user-reported bug, are recorded by `observation-ledger.md` — read it only then**, in the turn that
|
|
8
|
-
appends
|
|
8
|
+
appends.
|
|
9
|
+
|
|
10
|
+
**An unattended run files without asking; an interactive session asks first.** Unattended is a session kit launched under `claude -p` (a lane child, a woken session), a dispatched
|
|
11
|
+
lane child, or the `backlogrun` parent — nobody is there to answer, so an offer to file is sent back
|
|
12
|
+
by the `Stop` hook. In an interactive session, propose the Issue and file it
|
|
13
|
+
once the user confirms; the hook lets the offer through. A current-turn instruction to file, and a
|
|
14
|
+
typed command whose own procedure files (a split, a prerequisite, an upstream interrupt), are that
|
|
15
|
+
confirmation already.
|
|
9
16
|
|
|
10
17
|
**The trigger is the judgement, not the run's progress** — an ended run, a `kickoff` and a mid-talk
|
|
11
|
-
turn all file
|
|
18
|
+
turn all file or propose.
|
|
12
19
|
|
|
13
|
-
**
|
|
20
|
+
**An unattended run that judges something worth filing files it, and does not ask.** An upstream defect stops the
|
|
14
21
|
run, a split replaces it, and a prerequisite goes in front of it (`prerequisite.md`). An ordinary
|
|
15
22
|
observation changes none of those: it carries no `route:` label, causes no stash or park, and the run
|
|
16
23
|
continues. A first-party target is Tier A, decided by `pnpm josh repo:party`; a third-party target is
|
|
17
24
|
Tier C (`CLAUDE.md`). Name what was filed in the completion report. An observation nobody would act
|
|
18
25
|
on is dropped rather than filed.
|
|
19
26
|
|
|
27
|
+
**Below the filing bar, a line that could still change a person's judgement is a board note**:
|
|
28
|
+
`pnpm josh run:event --append note "#<N> <text>"`, shown by `pnpm josh run:board`
|
|
29
|
+
(`docs/josh-commands-run.md` → "`josh run:board`").
|
|
30
|
+
|
|
20
31
|
**The filing ceilings still apply.** Count this filing in the ten-Issue limit for the run. An
|
|
21
32
|
observation is discretionary, so above the WIP cap in the target repository, close one first or do
|
|
22
33
|
not file (`prompts/collaboration-workflow/wip-cap.md`). File it with `pnpm josh issue:file`
|
|
23
34
|
(`issue-scout.md`), which lints the body against `prompts/collaboration-workflow/issue-template.md`,
|
|
24
35
|
applies the classification labels it declares, runs the duplicate scan, and runs `epic:bundle` on the
|
|
25
36
|
new Issue so it is offered by its epic; an `auto-ok` epic adds it to the backlog pool
|
|
26
|
-
(`backlogrun-steps.md` → "What one invocation approves"). When it is the second filing of the run,
|
|
27
|
-
|
|
37
|
+
(`backlogrun-steps.md` → "What one invocation approves"). When it is the second filing of the run, the
|
|
38
|
+
command asks the fold question itself and holds a `fold`
|
|
28
39
|
(`split-assessment.md` → "The same two questions decide the filing-time fold").
|
|
29
40
|
|
|
30
41
|
The marker suite pins the rules below.
|
|
31
42
|
|
|
32
43
|
### The depth test — a discretionary filing cites the product work it blocked
|
|
33
44
|
|
|
34
|
-
**Depth is read off the subject rather than judged
|
|
45
|
+
**Depth is read off the subject rather than judged:**
|
|
35
46
|
|
|
36
47
|
| Depth | The subject | Where it lives |
|
|
37
48
|
| --- | --- | --- |
|
|
@@ -39,8 +50,8 @@ The marker suite pins the rules below.
|
|
|
39
50
|
| **1** | The run orchestration that executes an Issue | `fullrun` / `backlogrun`, lanes, the `epic:*` commands, the filing routes themselves |
|
|
40
51
|
| **2** | What measures a run | `josh cost` and the run-timing report |
|
|
41
52
|
|
|
42
|
-
**The depth is recorded on the Issue as a label, and the label is applied when the Issue is filed
|
|
43
|
-
|
|
53
|
+
**The depth is recorded on the Issue as a label, and the label is applied when the Issue is filed.**
|
|
54
|
+
`depth:0`, `depth:1` and `depth:2` are the three, defined once in
|
|
44
55
|
`scripts/issue/issue-labels.ts` and carrying no definition of their own — **the table above is the
|
|
45
56
|
single source**, and a label description that paraphrased it would be a second copy of the rule.
|
|
46
57
|
**Every filing route applies one**, this route and the other three of `prerequisite.md`'s table alike: a `new`
|
|
@@ -55,7 +66,7 @@ gh api repos/{owner}/{repo}/issues/<N>/labels -f 'labels[]=depth:1' # an Issue
|
|
|
55
66
|
|
|
56
67
|
**A repository missing the three gets them from `issue:file` itself** — it creates any missing
|
|
57
68
|
workflow label, with the color and description `DEPTH_LABELS` in `scripts/issue/issue-labels.ts`
|
|
58
|
-
defines, before the create call
|
|
69
|
+
defines, before the create call.
|
|
59
70
|
|
|
60
71
|
- **It is read off the subject, exactly as the table is** — so applying it is not a judgement and not
|
|
61
72
|
a person's to make, which is what separates it from `auto-ok` and `needs-human-review`. Those two
|
|
@@ -81,7 +92,7 @@ Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why the depth
|
|
|
81
92
|
- **`route:tier-a` and `route:interrupt` do not take it either**, at any depth: a filing the run
|
|
82
93
|
cannot proceed without is already citing its own blockage.
|
|
83
94
|
- **A depth-2 filing — one whose subject is what measures a run — carries a further requirement, on
|
|
84
|
-
top of the depth-0 citation above rather than in place of it
|
|
95
|
+
top of the depth-0 citation above rather than in place of it.** A
|
|
85
96
|
discretionary depth-2 filing states two things the depth-0 citation does not force:
|
|
86
97
|
- **The decision the number would change, named** — the Issue number holding the choice it is
|
|
87
98
|
waiting on, or a decision a person is about to make. "Slow", "large" and "worth knowing" are not a
|
|
@@ -106,21 +117,16 @@ drop the one kind of finding both documents agree is never dropped. **That bar i
|
|
|
106
117
|
subject's depth is not.** Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why a
|
|
107
118
|
review branch-2 filing skips the depth test".
|
|
108
119
|
|
|
109
|
-
**This is not the count cap that was rejected.** A cap is rationing — past the number the finding is
|
|
110
|
-
lost, and nothing about it says which findings were worth having. This changes what counts as a
|
|
111
|
-
finding at all, so what it excludes is excluded for a reason a reader can check.
|
|
112
|
-
|
|
113
120
|
**And a PR that *adds* a measurement names its reader in the same way.** The requirement above binds
|
|
114
121
|
a depth-2 Issue that *proposes* a measurement; a pull request that *adds* one — a new report column,
|
|
115
122
|
section, scope or subcommand, a diagnostic step — states in its body the reader that consumes it: the
|
|
116
123
|
Issue number that read the value to decide something, or the path of the rule that reads it. **A
|
|
117
|
-
measurement with no reader is not added
|
|
124
|
+
measurement with no reader is not added.** `route:tier-a` and
|
|
118
125
|
`route:interrupt` carry over unchanged.
|
|
119
126
|
|
|
120
127
|
### The depth-0 share — what is counted
|
|
121
128
|
|
|
122
|
-
**The depth-0 share is the share of open Issues at depth 0
|
|
123
|
-
joshuafolkken/kit#1729).
|
|
129
|
+
**The depth-0 share is the share of open Issues at depth 0.**
|
|
124
130
|
|
|
125
131
|
**The denominator is a rule, not a choice, and this is it:**
|
|
126
132
|
|
|
@@ -136,8 +142,8 @@ counter's judgement.
|
|
|
136
142
|
Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why the depth-0 denominator is fixed".
|
|
137
143
|
|
|
138
144
|
**What the number is for is not decided here.** Changing what `backlog:next` offers on the strength
|
|
139
|
-
of it, and setting a target value, are both
|
|
140
|
-
been measured the same way more than once
|
|
145
|
+
of it, and setting a target value, are both out of scope until the current value has
|
|
146
|
+
been measured the same way more than once.
|
|
141
147
|
|
|
142
148
|
### A delegated child does not take this route
|
|
143
149
|
|
|
@@ -147,13 +153,16 @@ could bite later" line (`backlogrun-child.md` → "What the summary carries, and
|
|
|
147
153
|
parent files what survives — under the depth test above, and inside the run's ceiling.
|
|
148
154
|
|
|
149
155
|
**A delegated child does not append to the ledger either — the parent collapses the duplicates and
|
|
150
|
-
appends what is left.** The child's route is
|
|
151
|
-
the
|
|
152
|
-
count
|
|
156
|
+
appends what is left.** The child's only route is the summary's "Observations that could bite later"
|
|
157
|
+
line; the parent chooses the key, checks the count and writes the line. **The 10-per-run ceiling for this route is the parent's to
|
|
158
|
+
count.** **Lines its own `review:record` and `measure:rerun` write are not this route** — they go to
|
|
159
|
+
its issue's file in its lane (`observation-ledger.md` → "The ledger — where an observation that
|
|
160
|
+
cannot cite a blockage goes").
|
|
153
161
|
|
|
154
162
|
Rationale: `docs/maintainers/observation-filing-rationale.md` → "Why a delegated child neither files
|
|
155
163
|
nor appends".
|
|
156
164
|
|
|
157
165
|
**This file is the single source of every procedure above**, and `SKILL.md` → §2's table carries the
|
|
158
|
-
trigger of the rule they carry out; nothing under `prompts/collaboration-workflow/` restates either
|
|
159
|
-
|
|
166
|
+
trigger of the rule they carry out; nothing under `prompts/collaboration-workflow/` restates either.
|
|
167
|
+
|
|
168
|
+
Provenance: `docs/maintainers/observation-filing-rationale.md` → "Where each rule came from".
|