@joshuafolkken/kit 1.1455.0 → 1.1514.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/settings.json +6 -6
- package/.claude/skills/dependency-update/SKILL.md +26 -55
- package/.claude/skills/epic-commands/SKILL.md +83 -156
- package/.claude/skills/epic-commands/epic-bundle.md +51 -79
- package/.claude/skills/epic-commands/execution-waves.md +43 -81
- package/.claude/skills/verify-ui/SKILL.md +24 -50
- package/.claude/skills/workflow-commands/SKILL.md +7 -9
- package/.claude/skills/workflow-commands/background-commands.md +31 -46
- package/.claude/skills/workflow-commands/backlogrun-child.md +65 -85
- package/.claude/skills/workflow-commands/backlogrun-lanes.md +86 -125
- package/.claude/skills/workflow-commands/backlogrun-park.md +68 -118
- package/.claude/skills/workflow-commands/backlogrun-progress.md +17 -28
- package/.claude/skills/workflow-commands/backlogrun-recovery.md +17 -26
- package/.claude/skills/workflow-commands/backlogrun-steps.md +35 -52
- package/.claude/skills/workflow-commands/backlogrun.md +31 -50
- package/.claude/skills/workflow-commands/chain-rule.md +31 -40
- package/.claude/skills/workflow-commands/delegation.md +12 -8
- package/.claude/skills/workflow-commands/entry-sequence.md +1 -3
- package/.claude/skills/workflow-commands/followup.md +55 -77
- package/.claude/skills/workflow-commands/fullrun-steps.md +3 -5
- package/.claude/skills/workflow-commands/fullrun.md +4 -6
- package/.claude/skills/workflow-commands/halfrun.md +3 -7
- package/.claude/skills/workflow-commands/into-target.md +1 -2
- package/.claude/skills/workflow-commands/issue-comments.md +43 -60
- package/.claude/skills/workflow-commands/issue-scout.md +3 -2
- package/.claude/skills/workflow-commands/kickoff.md +65 -74
- package/.claude/skills/workflow-commands/latest-gate.md +2 -6
- package/.claude/skills/workflow-commands/needs-human-review.md +2 -5
- package/.claude/skills/workflow-commands/observation-filing.md +59 -118
- package/.claude/skills/workflow-commands/observation-ledger.md +52 -112
- package/.claude/skills/workflow-commands/pre-gate-cut.md +88 -142
- package/.claude/skills/workflow-commands/prerequisite.md +11 -17
- package/.claude/skills/workflow-commands/progress-watcher.md +23 -33
- package/.claude/skills/workflow-commands/prrun.md +3 -5
- package/.claude/skills/workflow-commands/retrospective.md +35 -54
- package/.claude/skills/workflow-commands/split-assessment.md +32 -58
- package/.claude/skills/workflow-commands/target-repository.md +1 -2
- package/.claude/skills/workflow-commands/working-tree-hold.md +54 -73
- package/.codex/hooks.json +6 -6
- package/.github/actions/setup-node/action.yml +1 -1
- package/.github/workflows/ci.yml +1 -1
- package/.github/workflows/publish.yml +2 -2
- package/CLAUDE.md +7 -6
- package/cspell/index.yaml +7 -0
- package/dist/CLAUDE.md +7 -6
- package/dist/commands/document-section-cli.js +67 -34
- package/dist/hooks/batch-guard.js +6 -6
- package/dist/hooks/chunk-4KKD2UTK.js +66 -0
- package/dist/hooks/{chunk-GPLGZ6IC.js → chunk-6TS2JD6D.js} +14 -3
- package/dist/hooks/chunk-7DSBJVFH.js +50 -0
- package/dist/hooks/{chunk-5H4SSDSD.js → chunk-A65Y4YOR.js} +3 -3
- package/dist/hooks/{chunk-3C4XRYG6.js → chunk-APUO6U4J.js} +102 -19
- package/dist/hooks/{chunk-IX6TTTI6.js → chunk-EFXE6C37.js} +8 -22
- package/dist/hooks/chunk-GP4IEC4O.js +20 -0
- package/dist/hooks/chunk-JP45SOCJ.js +56 -0
- package/dist/hooks/{chunk-OLMO72ON.js → chunk-LAOV7NLM.js} +1 -1
- package/dist/hooks/chunk-M4HGZV7U.js +83 -0
- package/dist/hooks/{chunk-TBJFTSUY.js → chunk-O6GDRNJB.js} +9 -7
- package/dist/hooks/{chunk-HFGWYGUV.js → chunk-PF2NZL2A.js} +5 -5
- package/dist/hooks/{chunk-WNLVGT7E.js → chunk-PTICX4OL.js} +4 -5
- package/dist/hooks/{chunk-HHI6FO3R.js → chunk-RT27QRJW.js} +763 -1515
- package/dist/hooks/{chunk-7WQBPLUN.js → chunk-SYOTDYCI.js} +1149 -1095
- package/dist/hooks/{chunk-LIAFCXL7.js → chunk-TNUMY6NL.js} +1519 -1332
- package/dist/hooks/chunk-UPUZF3AN.js +279 -0
- package/dist/hooks/{chunk-Z4XI7CZS.js → chunk-WK6SMBIC.js} +1932 -784
- package/dist/hooks/codex-hook-adapter.js +17 -14
- package/dist/hooks/duplicate-read-guard.js +7 -7
- package/dist/hooks/format-edited.js +5 -4
- package/dist/hooks/inputs.json +302 -247
- package/dist/hooks/investigation-guard.js +8 -11
- package/dist/hooks/pretool-guard.js +16 -13
- package/dist/hooks/session-lang.js +372 -26
- package/dist/hooks/stop-guard.js +2593 -189
- package/dist/josh.js +2128 -282
- package/dist/managed-marker/index.js +1 -2
- package/dist/version/index.js +15 -12
- package/eslint/base.js +2 -1
- package/eslint/rules/unicorn.js +16 -0
- package/lefthook/base.yml +5 -3
- package/package.json +14 -12
- package/prompts/coding-standards.md +12 -22
- package/prompts/collaboration-workflow/file-edits.md +25 -45
- package/prompts/collaboration-workflow/gh-rest.md +19 -36
- package/prompts/collaboration-workflow/glossary.md +5 -7
- package/prompts/collaboration-workflow/issue-citation.md +6 -14
- package/prompts/collaboration-workflow/issue-template.md +40 -32
- package/prompts/collaboration-workflow/lane-instructions.md +35 -0
- package/prompts/collaboration-workflow/operating-rules.md +33 -46
- package/prompts/collaboration-workflow/output-bounds.md +15 -15
- package/prompts/collaboration-workflow/overview.md +14 -19
- package/prompts/collaboration-workflow/plan-comment.md +13 -13
- package/prompts/collaboration-workflow/principles.md +57 -54
- package/prompts/collaboration-workflow/proposal-request.md +1 -9
- package/prompts/collaboration-workflow/report-format.md +41 -49
- package/prompts/collaboration-workflow/residency.md +15 -11
- package/prompts/collaboration-workflow/rule-delivery.md +7 -15
- package/prompts/collaboration-workflow/shell-body.md +10 -20
- package/prompts/collaboration-workflow/turn-batching.md +8 -14
- package/prompts/collaboration-workflow/upstream-interrupt.md +26 -34
- package/prompts/collaboration-workflow/wip-cap.md +26 -32
- package/prompts/collaboration-workflow.md +25 -25
- package/prompts/refactoring.md +33 -43
- package/prompts/review-rubric.md +84 -129
- package/prompts/review.md +110 -141
- package/prompts/sonar-hotspot-handling.md +22 -50
- package/prompts/testing-guide.md +48 -99
- package/scripts/adopt/adopt-toolkits.ts +2 -4
- package/scripts/agent/agent-argv.ts +20 -4
- package/scripts/agent/agent-exit-record.ts +23 -1
- package/scripts/agent/agent-role-profile.ts +101 -45
- package/scripts/agent/agent-safe-text.ts +60 -0
- package/scripts/agent/claude-agent-argv.ts +14 -0
- package/scripts/agent/codex-agent-argv.ts +9 -2
- package/scripts/agent/lane-instructions.ts +144 -0
- package/scripts/backlog/backlog-budget-cli.ts +1 -2
- package/scripts/backlog/backlog-budget.ts +4 -4
- package/scripts/backlog/backlog-drive-carried.ts +26 -0
- package/scripts/backlog/backlog-drive-cli.ts +10 -5
- package/scripts/backlog/backlog-drive-named.ts +3 -5
- package/scripts/backlog/backlog-drive-restore.ts +28 -2
- package/scripts/backlog/backlog-drive-seats.ts +27 -0
- package/scripts/backlog/backlog-drive.ts +11 -6
- package/scripts/backlog/backlog-occupied.ts +56 -0
- package/scripts/backlog/backlog-ready.ts +59 -15
- package/scripts/behavior/behavior-rules.ts +3 -2
- package/scripts/cost-runtime/codex-usage.ts +4 -2
- package/scripts/cost-runtime/cost-cli.ts +1 -2
- package/scripts/delegation/duplicate-read-guard.ts +2 -2
- package/scripts/delegation/investigation-guard.ts +15 -65
- package/scripts/delegation/investigation-reads.ts +1 -2
- package/scripts/discovery/repo-discovery.ts +4 -2
- package/scripts/discovery/repo-origin.ts +2 -4
- package/scripts/doctor/doctor-logic.ts +6 -3
- package/scripts/document/document-byte-budget.ts +28 -27
- package/scripts/document/document-byte-check.ts +1 -2
- package/scripts/document/document-section-cli.ts +17 -5
- package/scripts/document/entry-read-budget.ts +3 -3
- package/scripts/document/read-set-cli.ts +4 -1
- package/scripts/epic/epic-audit-orphans.ts +5 -8
- package/scripts/epic/epic-audit-rationale.ts +8 -2
- package/scripts/epic/epic-audit.ts +52 -1
- package/scripts/epic/epic-bundle-cli.ts +1 -2
- package/scripts/epic/epic-bundle-evidence.ts +49 -26
- package/scripts/epic/epic-bundle-referenced.ts +14 -3
- package/scripts/epic/epic-bundle.ts +17 -9
- package/scripts/epic/epic-chains.ts +6 -2
- package/scripts/epic/epic-close-comment.ts +1 -2
- package/scripts/followup/git-followup-workflow.ts +19 -1
- package/scripts/gate/check-inputs.ts +129 -0
- package/scripts/gate/check-reuse.ts +162 -0
- package/scripts/gate/core-budget.ts +93 -44
- package/scripts/gate/core-wait.ts +130 -0
- package/scripts/gate/free-cores.ts +49 -0
- package/scripts/gate/gate-ledger.ts +17 -3
- package/scripts/gate/gate-plan.ts +23 -1
- package/scripts/gate/gate-report.ts +15 -2
- package/scripts/gate/gate-run-steps.ts +150 -0
- package/scripts/gate/held-mark.ts +55 -0
- package/scripts/gate/machine-capacity.ts +70 -11
- package/scripts/gate/pre-commit-type-check.ts +14 -1
- package/scripts/gate/verification-gate.ts +65 -127
- package/scripts/gh/git-gh-issue-rest.ts +1 -0
- package/scripts/gh/git-gh-issue-write.ts +24 -2
- package/scripts/gh/git-pr.ts +19 -3
- package/scripts/git/git-common-directory.ts +3 -3
- package/scripts/git/git-diff-reads.ts +16 -9
- package/scripts/git/git-execa-error.ts +1 -2
- package/scripts/git/main-merge-regenerate.ts +78 -0
- package/scripts/git/main-merge.ts +14 -5
- package/scripts/hooks/batch-guard.ts +5 -8
- package/scripts/hooks/format-edited-file.ts +10 -4
- package/scripts/hooks/pre-commit-lint.ts +91 -0
- package/scripts/hooks/pre-push-unit.ts +15 -4
- package/scripts/hooks/pretool-guard.ts +48 -79
- package/scripts/hooks/reserved-run.ts +1 -0
- package/scripts/hooks/run-hook.sh +10 -12
- package/scripts/hooks/step-zero-notice.ts +3 -2
- package/scripts/hooks/stop-actions.ts +204 -0
- package/scripts/hooks/stop-guard.ts +62 -21
- package/scripts/init/hook-command-rewrite.ts +6 -2
- package/scripts/init/hook-launch.ts +12 -7
- package/scripts/init/init-logic-deploy-vps.ts +4 -2
- package/scripts/issue/behavior-change-lint.ts +12 -6
- package/scripts/issue/expected-effect-lint.ts +59 -0
- package/scripts/issue/issue-cite-cli.ts +35 -15
- package/scripts/issue/issue-classification.ts +1 -1
- package/scripts/issue/issue-lint-cli.ts +5 -3
- package/scripts/issue/issue-scout-cli.ts +22 -16
- package/scripts/issue/markdown-section.ts +19 -5
- package/scripts/josh/command-usage.ts +110 -0
- package/scripts/josh/file-map-stamp.ts +1 -3
- package/scripts/josh/hook-decision.ts +17 -2
- package/scripts/josh/josh-command-map.ts +2 -0
- package/scripts/josh/josh-command-types.ts +55 -9
- package/scripts/josh/josh-commands-ai.ts +13 -0
- package/scripts/josh/josh-commands-development.ts +1 -1
- package/scripts/josh/josh-commands-hooks.ts +6 -0
- package/scripts/josh/josh-commands-lane.ts +10 -1
- package/scripts/josh/josh-commands-workflow.ts +5 -0
- package/scripts/josh/josh-logic.ts +6 -15
- package/scripts/josh/josh-usage-automation.ts +121 -0
- package/scripts/josh/josh-usage-backlog.ts +180 -0
- package/scripts/josh/josh-usage-developer.ts +230 -0
- package/scripts/josh/josh-usage-hooks.ts +38 -0
- package/scripts/josh/josh-usage-issue.ts +205 -0
- package/scripts/josh/josh-usage-review.ts +101 -0
- package/scripts/josh/josh-usage-run.ts +252 -0
- package/scripts/josh/josh-usage-session.ts +238 -0
- package/scripts/josh/josh-usage-workflow.ts +212 -0
- package/scripts/josh/josh.ts +14 -5
- package/scripts/josh/package-directory.ts +20 -0
- package/scripts/lane/lane-await.ts +3 -2
- package/scripts/lane/lane-capacity.ts +8 -2
- package/scripts/lane/lane-check-stats.ts +56 -0
- package/scripts/lane/lane-child-invocation.ts +49 -5
- package/scripts/lane/lane-dispatch.ts +3 -3
- package/scripts/lane/lane-guard-policy.ts +5 -5
- package/scripts/lane/lane-handoff.ts +8 -1
- package/scripts/lane/lane-install.ts +12 -4
- package/scripts/lane/lane-ledger.ts +52 -1
- package/scripts/lane/lane-limit-cli.ts +8 -9
- package/scripts/lane/lane-load.ts +9 -2
- package/scripts/lane/lane-measure-cli.ts +4 -0
- package/scripts/lane/lane-parked.ts +18 -0
- package/scripts/lane/lane-preserve.ts +29 -1
- package/scripts/lane/lane-process-load.ts +125 -0
- package/scripts/lane/lane-process-stats.ts +93 -0
- package/scripts/lane/lane-registry.ts +17 -10
- package/scripts/lane/lane-restart.ts +5 -26
- package/scripts/lane/lane-session-action.ts +146 -0
- package/scripts/lane/lane-session-broker.ts +68 -125
- package/scripts/lane/lane-spent.ts +14 -3
- package/scripts/lane/lane-stats.ts +1 -0
- package/scripts/lane/lane-withdraw-cli.ts +71 -0
- package/scripts/lane/lane-withdraw.ts +182 -0
- package/scripts/lint/format.ts +4 -4
- package/scripts/lint/lint-parallel.ts +10 -3
- package/scripts/lint/lint-related-scope.ts +4 -1
- package/scripts/managed-marker/managed-marker-logic.ts +1 -2
- package/scripts/notify/telegram-test.ts +10 -5
- package/scripts/overrides/lockfile-overrides.ts +1 -3
- package/scripts/propagate/propagate.ts +1 -2
- package/scripts/release/release-progress.ts +3 -2
- package/scripts/report/report-format-reference.ts +2 -0
- package/scripts/report/report-lint.ts +7 -4
- package/scripts/review/acceptance-map-check.ts +61 -0
- package/scripts/review/acceptance-map.ts +205 -0
- package/scripts/review/review-brief-cli.ts +1 -1
- package/scripts/review/review-record-cli.ts +6 -2
- package/scripts/rules/agent-model.ts +59 -0
- package/scripts/rules/delivered-rules.ts +11 -2
- package/scripts/rules/destructive-command.ts +6 -9
- package/scripts/rules/direct-filing.ts +3 -7
- package/scripts/rules/early-heartbeat.ts +7 -18
- package/scripts/rules/file-body.ts +6 -13
- package/scripts/rules/filing-cap.ts +4 -6
- package/scripts/rules/firing-point.ts +6 -5
- package/scripts/rules/git-force.ts +5 -9
- package/scripts/rules/guard-remedy.ts +117 -0
- package/scripts/rules/implementation-cut.ts +37 -35
- package/scripts/rules/index-guard.ts +4 -7
- package/scripts/rules/issue-comments.ts +67 -16
- package/scripts/rules/josh-git-bare.ts +3 -6
- package/scripts/rules/lane-background.ts +10 -21
- package/scripts/rules/lane-carry-conflict.ts +7 -17
- package/scripts/rules/lane-interactive-ask.ts +6 -11
- package/scripts/rules/lane-park.ts +5 -13
- package/scripts/rules/lane-split-park.ts +2 -7
- package/scripts/rules/lane-switch-main.ts +9 -12
- package/scripts/rules/last-prompt.ts +50 -5
- package/scripts/rules/oracle-consulted.ts +4 -5
- package/scripts/rules/oracle-list-cli.ts +7 -0
- package/scripts/rules/piped-verification.ts +84 -32
- package/scripts/rules/poll-loop.ts +7 -17
- package/scripts/rules/pre-gate-cut.ts +7 -21
- package/scripts/rules/prior-comment-read.ts +7 -5
- package/scripts/rules/protected-files.ts +5 -9
- package/scripts/rules/raw-field-body.ts +3 -7
- package/scripts/rules/rule-body-guard.ts +4 -11
- package/scripts/rules/rule-list.ts +4 -1
- package/scripts/rules/rule-registry-rows.ts +10 -0
- package/scripts/rules/rule-registry.ts +7 -4
- package/scripts/rules/rule-rewrite.ts +114 -0
- package/scripts/rules/rule-value.ts +7 -1
- package/scripts/rules/run-tail-rule.ts +6 -22
- package/scripts/rules/shell-body-trigger.ts +4 -6
- package/scripts/rules/shell-segments.ts +22 -0
- package/scripts/rules/stop-decision.ts +77 -0
- package/scripts/rules/stop-rules.ts +164 -77
- package/scripts/rules/tail-commands.ts +15 -1
- package/scripts/rules/test-declared-commit.ts +4 -10
- package/scripts/rules/third-party-write.ts +5 -10
- package/scripts/rules/worktree-guard.ts +5 -12
- package/scripts/run/board/run-board-cli.ts +2 -0
- package/scripts/run/board/run-board-closed.ts +8 -2
- package/scripts/run/board/run-board-github.ts +19 -3
- package/scripts/run/board/run-board-header.ts +4 -1
- package/scripts/run/board/run-board-idle.ts +31 -0
- package/scripts/run/board/run-board-labels.ts +2 -0
- package/scripts/run/board/run-board-layout.ts +1 -1
- package/scripts/run/board/run-board-read.ts +25 -12
- package/scripts/run/board/run-board-reason.ts +17 -4
- package/scripts/run/board/run-board-render-legend.ts +1 -0
- package/scripts/run/board/run-board-render-slot.ts +1 -1
- package/scripts/run/board/run-board-render-waits.ts +41 -0
- package/scripts/run/board/run-board-render.ts +6 -1
- package/scripts/run/board/run-board-row-yield.ts +1 -0
- package/scripts/run/board/run-board-state.ts +9 -0
- package/scripts/run/board/run-board-status.ts +89 -23
- package/scripts/run/board/run-board-thanks.ts +7 -2
- package/scripts/run/board/run-board-tick.ts +37 -8
- package/scripts/run/carry/run-carry-args.ts +1 -3
- package/scripts/run/carry/run-carry-conversation.ts +7 -2
- package/scripts/run/cut/run-cut-cli.ts +18 -22
- package/scripts/run/cut/run-cut-decline.ts +72 -0
- package/scripts/run/cut/run-cut-ready.ts +74 -0
- package/scripts/run/cut/run-cut-report.ts +29 -0
- package/scripts/run/cut/run-cut.ts +10 -1
- package/scripts/run/detached-launch.ts +23 -4
- package/scripts/run/entry/run-entry-cli.ts +8 -1
- package/scripts/run/event/run-event-render.ts +1 -0
- package/scripts/run/event/run-event-scope.ts +19 -1
- package/scripts/run/event/run-event-stream-emit.ts +13 -6
- package/scripts/run/event/run-event-stream.ts +4 -0
- package/scripts/run/hold/run-hold-cli.ts +14 -3
- package/scripts/run/hold/run-hold-session.ts +46 -0
- package/scripts/run/hold/run-hold.ts +13 -4
- package/scripts/run/launch-priority.ts +32 -0
- package/scripts/run/merge/run-merge-cli.ts +16 -42
- package/scripts/run/merge/run-merge-ship.ts +59 -1
- package/scripts/run/merge/run-merge-signals.ts +99 -0
- package/scripts/run/merge/run-merge-steps.ts +11 -1
- package/scripts/run/merge/run-merge.ts +22 -9
- package/scripts/run/run-ending.ts +31 -3
- package/scripts/run/run-liveness.ts +1 -1
- package/scripts/run/run-parent-cut-hook.ts +5 -10
- package/scripts/run/run-poll-hook.ts +157 -0
- package/scripts/run/run-preflight.ts +1 -2
- package/scripts/run/run-step-cli.ts +22 -15
- package/scripts/run/run-step-section.ts +85 -0
- package/scripts/run/run-stop-notify.ts +1 -2
- package/scripts/run/run-watcher-guard.ts +6 -3
- package/scripts/run/ship/run-ship-cli.ts +5 -12
- package/scripts/run/ship/run-ship-detach.ts +9 -0
- package/scripts/run/ship/run-ship-next.ts +10 -2
- package/scripts/run/ship/run-ship-overlap.ts +195 -0
- package/scripts/run/ship/run-ship-pre-detach.ts +33 -15
- package/scripts/run/ship/run-ship-preflight.ts +28 -2
- package/scripts/run/ship/run-ship-return.ts +31 -7
- package/scripts/run/ship/run-ship-review-steps.ts +25 -14
- package/scripts/run/ship/run-ship-review.ts +15 -2
- package/scripts/run/ship/run-ship-steps.ts +1 -1
- package/scripts/run/ship/run-ship-stop-context.ts +206 -0
- package/scripts/run/ship/run-ship-sync.ts +14 -6
- package/scripts/run/tidy/run-tidy-cli.ts +3 -3
- package/scripts/run/tidy/run-tidy-lanes.ts +3 -2
- package/scripts/safe-chain/project-config.ts +7 -2
- package/scripts/sync/sync-hook-safety.ts +8 -2
- package/scripts/test/test-e2e-guard.ts +30 -5
- package/scripts/test/test-unit-guard.ts +16 -1
- package/scripts/test/unit-worker-share.ts +26 -3
- package/scripts/time-runtime/time-batch-guard.ts +3 -3
- package/scripts/time-runtime/time-hook-transcript.ts +3 -2
- package/scripts/time-runtime/time-shell.ts +39 -4
- package/scripts/time-runtime/time-spans.ts +1 -0
- package/scripts/time-runtime/time-tool-call.ts +7 -0
- package/scripts/version/effective-upstream.ts +3 -4
- package/scripts/version/kit-version-config.ts +8 -2
- package/scripts/version/latest-corepack.ts +1 -2
- package/scripts/version/release-hold.ts +11 -4
- package/scripts/version/version-commands.ts +12 -4
- package/templates/gitignore +6 -2
- package/dist/hooks/chunk-D5QBTOCZ.js +0 -68
- package/dist/hooks/chunk-UT7YC3N2.js +0 -56
|
@@ -1,99 +1,82 @@
|
|
|
1
1
|
# An Issue's comments are part of the Issue
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
Issue. Rationale and history: `docs/maintainers/issue-comments-rationale.md` → "Why comments are read".
|
|
3
|
+
Read before implementing a `#N` Issue.
|
|
5
4
|
|
|
6
5
|
**Every `#N` entry point reads the Issue's comments before it implements** — `fullrun`, `halfrun` and
|
|
7
|
-
`kickoff`; a `backlogrun` named issue and epic child inherit it through `fullrun
|
|
8
|
-
|
|
6
|
+
`kickoff`; a `backlogrun` named issue and epic child inherit it through `fullrun`. One call, in the same
|
|
7
|
+
turn as whatever else the run needs:
|
|
9
8
|
|
|
10
9
|
```bash
|
|
11
10
|
pnpm josh issue:read <N> [<N> ...] # body and comments, one call per batch
|
|
12
11
|
gh api repos/{owner}/{repo}/issues/<N>/comments --jq '.[] | {user: .user.login, created_at, body}'
|
|
13
12
|
```
|
|
14
13
|
|
|
15
|
-
**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
`--repo`. Never `gh issue view <N> --comments` — it is GraphQL-backed and a cloud session is answered
|
|
19
|
-
`403`.
|
|
14
|
+
**Type the first line**; it **says when a comment listing could not be read rather than showing no
|
|
15
|
+
comments**. The `gh api` form is for a **cross-repository** read (the command takes no `--repo`). Never
|
|
16
|
+
`gh issue view <N> --comments` — GraphQL-backed, `403` in a cloud session.
|
|
20
17
|
|
|
21
18
|
**This repository writes its agreements into comments and then reads only bodies.** **What the
|
|
22
|
-
reading is for
|
|
23
|
-
|
|
24
|
-
agreement reached after filing; a recorded stash or an in-flight branch; and a **correction of the
|
|
19
|
+
reading is for**: the scope boundary — work a comment moved elsewhere or added here; an auto-decision
|
|
20
|
+
already made; a split or epic agreement; a recorded stash or in-flight branch; a **correction of the
|
|
25
21
|
body's own diagnosis**.
|
|
26
22
|
|
|
27
23
|
## When a comment contradicts the body
|
|
28
24
|
|
|
29
|
-
**The later text is the agreement in force
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
summary which comment superseded what.
|
|
25
|
+
**The later text is the agreement in force** — the comment is the newer, so it wins. **This is settled
|
|
26
|
+
by ordering, never by judging which reads better.** Name in the work summary which comment superseded
|
|
27
|
+
what.
|
|
33
28
|
|
|
34
29
|
**Two answers are not the run's to make, and each is decided from what the comment says:**
|
|
35
30
|
|
|
36
|
-
- **A comment that reassigns part of the scope to another Issue** takes that part out of scope
|
|
37
|
-
|
|
38
|
-
completion report.
|
|
31
|
+
- **A comment that reassigns part of the scope to another Issue** takes that part out of scope, whatever
|
|
32
|
+
the body's criteria say; name the Issue it went to in the completion report.
|
|
39
33
|
- **A comment saying the Issue no longer has a reason to exist** — the defect does not reproduce, or it
|
|
40
|
-
was fixed elsewhere — takes the exit in
|
|
41
|
-
|
|
34
|
+
was fixed elsewhere — takes the exit in "When the work turns out to be already merged". Closing an
|
|
35
|
+
Issue is Tier C.
|
|
42
36
|
|
|
43
|
-
Everything else
|
|
44
|
-
|
|
45
|
-
(`split-assessment.md`), not a second kind of stop.
|
|
37
|
+
Everything else, **a widened scope included**, is ordinary work; a widening into several
|
|
38
|
+
separately-mergeable deliverables is the split assessment's business (`split-assessment.md`).
|
|
46
39
|
|
|
47
40
|
## When the work turns out to be already merged
|
|
48
41
|
|
|
49
|
-
**A
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
procedure and not two. **Parking it is not the place**: `needs-decision` means "waiting for an answer
|
|
53
|
-
nobody has given", and here the answer exists.
|
|
42
|
+
**A comment says so, or the run itself verifies it** by finding every acceptance criterion already
|
|
43
|
+
satisfied in merged code — one procedure either way. **Parking it is not the place**: `needs-decision`
|
|
44
|
+
means "waiting for an answer", and here the answer exists.
|
|
54
45
|
|
|
55
|
-
**The exit is the `already-done` label.**
|
|
56
|
-
|
|
57
|
-
`
|
|
58
|
-
holding a lane. **Only a person removes it, by closing the Issue.**
|
|
46
|
+
**The exit is the `already-done` label.** `epic:next`, `backlog:next` and `auto-ok:next` stop offering
|
|
47
|
+
the Issue (`scripts/issue/issue-labels.ts` → `NOT_DIRECTLY_RUNNABLE_LABELS`, `epic-classify.ts` →
|
|
48
|
+
`human`), and `epic:busy` stops counting it. **Only a person removes it, by closing the Issue.**
|
|
59
49
|
|
|
60
50
|
```bash
|
|
61
51
|
gh api repos/{owner}/{repo}/labels -f name=already-done -f color=6f42c1 -f description="Verified already merged — a person closes it" --silent 2>/dev/null || true
|
|
62
52
|
gh api repos/{owner}/{repo}/issues/<N>/labels -f 'labels[]=already-done'
|
|
63
53
|
```
|
|
64
54
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
merged the work and, for each acceptance criterion the Issue states, the file and lines that satisfy
|
|
69
|
-
it. **A claim with no citations is not the finding this exit is for.**
|
|
55
|
+
1. **Record the evidence as an Issue comment, before the label**: the merging pull request or commit
|
|
56
|
+
and, per acceptance criterion, the file and lines that satisfy it. **A claim with no citations is not
|
|
57
|
+
the finding this exit is for.**
|
|
70
58
|
2. **Apply `already-done`** — the two commands above.
|
|
71
|
-
3. **Commit nothing, push nothing, open no pull request.**
|
|
72
|
-
`pnpm josh run:release <N>`, which also removes `in-progress
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
**Nothing about this is a license to skip the work when it merely looks familiar.** The bar is step 1's
|
|
81
|
-
citations: a criterion you cannot point at merged code for is a criterion this run still owes.
|
|
59
|
+
3. **Commit nothing, push nothing, open no pull request.** Release the hold with
|
|
60
|
+
`pnpm josh run:release <N>`, which also removes `in-progress`.
|
|
61
|
+
4. **Then behave as the entry point does for a parked child.** A typed `fullrun` / `halfrun` sends a
|
|
62
|
+
`confirmation` Telegram naming the Issue and the covering merge, and stops; a `backlogrun` child is
|
|
63
|
+
park-and-continue (`backlogrun-park.md` → "park and continue").
|
|
64
|
+
5. **Never close the Issue** — Tier C at every entry point.
|
|
65
|
+
|
|
66
|
+
**Looking familiar is no license to skip the work**: a criterion you cannot point at merged code for is
|
|
67
|
+
one this run still owes.
|
|
82
68
|
|
|
83
69
|
## A long thread
|
|
84
70
|
|
|
85
|
-
**The fetch is one call
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
brief a delegated unit to return **the agreements in force plus the comment URLs that carry them**,
|
|
89
|
-
never the comment text.
|
|
71
|
+
**The fetch is one call; what costs is carrying it** — hence the projection to author, timestamp and
|
|
72
|
+
body. A thread longer than the Issue is the pre-implementation reading `delegation.md` describes: brief
|
|
73
|
+
a unit to return **the agreements in force plus the comment URLs that carry them**, never the text.
|
|
90
74
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
not the hook** — a session
|
|
75
|
+
**Under Claude Code the hook prepends the comments to a line that opens with a body-only `gh api` read
|
|
76
|
+
and refuses every other body-only read; the Codex adapter refuses them all** (`prompts/collaboration-workflow/rule-delivery.md`).
|
|
77
|
+
**This file is the rule, not the hook** — a session without hooks still owes the read.
|
|
94
78
|
|
|
95
79
|
## A person's update mid-run
|
|
96
80
|
|
|
97
|
-
When the hook, `review:attest --check` or `followup` shows an Issue update, read it as above
|
|
98
|
-
|
|
99
|
-
does not catch: `docs/josh-commands-backlog.md` → "`josh issue:ack`".
|
|
81
|
+
When the hook, `review:attest --check` or `followup` shows an Issue update, read it as above, fix what it
|
|
82
|
+
changes, then `pnpm josh issue:ack <N>`. The watch: `docs/josh-commands-backlog.md` → "`josh issue:ack`".
|
|
@@ -28,8 +28,9 @@ pnpm josh issue:file "<title>" --body-file <complete-draft.md> --depth <n> --dis
|
|
|
28
28
|
`add_to_epic` / `create_epic` Tier A and `ask` a stop, in exactly the reading `into-target.md`'s
|
|
29
29
|
`into <target>` suffix would have given by hand. Where the user typed `into <target>`, that naming wins.
|
|
30
30
|
- **`Epic: not asked` is not `Epic: none`.** The epic half decides from the issue numbers the body
|
|
31
|
-
names
|
|
32
|
-
|
|
31
|
+
names in its acceptance criteria or its `parent: #N` line; a background mention does not count.
|
|
32
|
+
**Cite `#N` there whenever the work follows an existing Issue** — one line is enough, and naming
|
|
33
|
+
the epic itself (`parent: #<E>`) is answered with that epic.
|
|
33
34
|
- **`epic:bundle` then runs on the new Issue, in the same call.** Act on its printed answer; a `⚠`
|
|
34
35
|
means rerun `pnpm josh epic:bundle <N>` — the Issue exists, so never refile; a placing answer
|
|
35
36
|
reads the `epic-commands` skill.
|
|
@@ -1,92 +1,83 @@
|
|
|
1
1
|
# `kickoff` — Planning phase only (plan → Issue → Telegram notify → stop)
|
|
2
2
|
|
|
3
3
|
- `kickoff #<N>`: **First `pnpm josh run:entry <N> --to kickoff`** (`docs/how-to/run-issues.md`) — it claims
|
|
4
|
-
nothing and prints the stage line alone; `start: reached`
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
the split path instead of
|
|
18
|
-
**promote `#N`** with `pnpm josh epic --promote <N> <N1> <N2>
|
|
19
|
-
<path|->]`
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
4
|
+
nothing and prints the stage line alone; on `start: reached` report the stage line and **stop**. Then:
|
|
5
|
+
1. Read Issue #N **and every comment on it** — `pnpm josh issue:read <N>`; the later text is the
|
|
6
|
+
agreement in force (`issue-comments.md`, which also carries the answers that stop the run).
|
|
7
|
+
2. **Normalize the title** to clear English: `gh api -X PATCH repos/{owner}/{repo}/issues/<N> -f title="<title>"`.
|
|
8
|
+
3. Analyze requirements → **scope assessment per `split-assessment.md`**.
|
|
9
|
+
4. Post the plan — a blank body takes `gh api -X PATCH repos/{owner}/{repo}/issues/<N> -f body="<plan>"`,
|
|
10
|
+
otherwise `pnpm josh issue:comment <N> --body-file <path>` — in the session language
|
|
11
|
+
(`JOSH_SESSION_LANG`, default `ja`).
|
|
12
|
+
5. **Apply the `run:planned` label** — the next command's `run:entry` starts at the implementation
|
|
13
|
+
(`gh api repos/{owner}/{repo}/issues/<N>/labels -f 'labels[]=run:planned' --silent`).
|
|
14
|
+
6. Send the Telegram notification, its last line `Next: halfrun #<N> | prrun #<N> | fullrun #<N>` →
|
|
15
|
+
**stop** (do not implement).
|
|
16
|
+
|
|
17
|
+
**Two or more separately-mergeable deliverables** take the split path instead of a plan: create the
|
|
18
|
+
children as in `kickoff new`, then either **promote `#N`** with `pnpm josh epic --promote <N> <N1> <N2>
|
|
19
|
+
... [--ordered] [--rationale-file <path|->]` (when `#N` is a request, a discussion or a container), or
|
|
20
|
+
keep `#N` as a child and create a new epic with `pnpm josh epic`. That branch is Tier A: choose and
|
|
21
|
+
record the reasoning on the Issue. Present `backlogrun #<E> --only` and stop.
|
|
22
|
+
|
|
23
|
+
Telegram: `pnpm josh notify --task-type planning --issue-url "<issue-url>" --body=$'-
|
|
24
|
+
<bullet1>\n- <bullet2>\n...'`. `--task-type` sets the icon (`planning` 📋 / `completion` ✅ /
|
|
25
|
+
`failure` ❌ / `kickoff_retry` 🔄 / `confirmation` ⏸️); `--repo-name` and `--issue-title` are
|
|
26
|
+
auto-fetched. The Issue URL must be included.
|
|
26
27
|
|
|
27
28
|
**`kickoff` does not claim the working-tree hold, and does not release one** — it touches GitHub, never
|
|
28
|
-
the tree
|
|
29
|
+
the tree (`working-tree-hold.md`).
|
|
29
30
|
|
|
30
31
|
**The target repository is named in front of the Issue reference** — `kickoff kit#new`,
|
|
31
|
-
`kickoff joshuafolkken/kit#<N
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
checked out here. A target whose owner is not this session's is third-party: Tier C, so it stops rather
|
|
36
|
-
than filing.
|
|
32
|
+
`kickoff joshuafolkken/kit#<N>` (`target-repository.md`). `kickoff` needs no checkout: name the target in
|
|
33
|
+
every `gh api` path, reads included, and never clone. The exception is the split path's epic — `pnpm josh
|
|
34
|
+
epic` writes only the repository it runs in, and the promote arm stops when that repository is not
|
|
35
|
+
checked out here. A third-party owner is Tier C: stop rather than file.
|
|
37
36
|
|
|
38
37
|
**Read `split-assessment.md` → "The question" first** — `kickoff #N` assesses scope exactly as
|
|
39
|
-
`kickoff new` does.
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
`kickoff new` does. The default is not to split: separability and a scope clearly over one verification
|
|
39
|
+
gate must hold **together**. The rest of `split-assessment.md` is read when a split is found.
|
|
40
|
+
|
|
41
|
+
- `kickoff new` or `kickoff new "<title>"`: (0) **Scope assessment** per `split-assessment.md` — one
|
|
42
|
+
deliverable takes the **single-issue path**, several the **multi-issue split path**.
|
|
43
|
+
- **Single-issue path**: (1) Derive an English title, or use the one given. (2) `pnpm josh issue:file
|
|
44
|
+
"<title>" --body-file <body-file> --depth <n>` plus the labels the words typed after `new` name
|
|
45
|
+
("Words typed after `new`", below; body per `prompts/collaboration-workflow/issue-template.md`) —
|
|
46
|
+
its duplicate scan runs first, and a candidate covering the same work stops the run (`SKILL.md` →
|
|
47
|
+
`issue-scout.md`). Capture `<N>`. (3) Post the plan as `kickoff #<N>` does. (4) Telegram. (5)
|
|
48
|
+
**Stop**.
|
|
49
|
+
- **Multi-issue split path**: (1) Per deliverable, `pnpm josh issue:file "<sub-title>" --body-file
|
|
50
|
+
<body-file> --depth <n> --route split` plus the labels the words after `new` name (duplicate scan
|
|
51
|
+
per `issue-scout.md`). A split filed into another repository gives every child body the `## Origin`
|
|
52
|
+
backlink, the epic the same link as prose (never a checkbox row, which disables its auto-close), and
|
|
53
|
+
the originating Issue lists children and epic under `## Upstream issues`. (2) **Epic — always, for
|
|
54
|
+
every split into two or more Issues**: `pnpm josh epic "<epic-title>" <N1> <N2> ... [--ordered]
|
|
55
|
+
[--rationale-file <path|->] [--origin <owner/repo#N>]`, capturing `<E>`. It builds the `epic` label,
|
|
56
|
+
the task-list rows (`- [ ] #N`), the machine-readable `Dependencies` and the `backlogrun` line; check
|
|
57
|
+
a hand-edited epic with `pnpm josh epic:check <E>`. (3) Telegram listing every created Issue. (4)
|
|
58
|
+
Present `backlogrun #<E> --only`. (5) **Stop**.
|
|
59
|
+
|
|
60
|
+
**The epic itself is never implemented** — `backlogrun` runs its *children*, and `pnpm josh followup`
|
|
61
|
+
closes it once every child is closed. Children with no required order take `None — the children are
|
|
62
|
+
independent; any execution order works.` under `Dependencies`. **Only when the execution order
|
|
63
|
+
matters** (`execution-waves.md` → "When a wave may be declared") pass `--ordered`, which treats the
|
|
64
|
+
argument order as the dependency order.
|
|
42
65
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
per
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
Post the plan in the session language, using the same body/comment logic as `kickoff #<N>`. (4) Send
|
|
51
|
-
Telegram notification. (5) **Stop** — do not implement. **Multi-issue split path**: (1) For each
|
|
52
|
-
independent deliverable, derive a focused English title and create a separate Issue with the
|
|
53
|
-
`route:split` label (its duplicate scan is read per `issue-scout.md`): `pnpm josh issue:file
|
|
54
|
-
"<sub-title>" --body-file <body-file> --depth <n> --route split` plus the labels the words typed after `new` name. Capture each Issue number. **When the split is filed into a repository other than
|
|
55
|
-
the one this session is running in**, every child body gets the `## Origin` backlink described in the
|
|
56
|
-
cross-package rule the AI documents keep resident, the epic body carries the same link as prose or a
|
|
57
|
-
plain bullet (never as a checkbox row, which would disable its auto-close), and the originating Issue
|
|
58
|
-
lists the children and the epic under `## Upstream issues`. (2) **Epic — always, for every split into
|
|
59
|
-
two or more Issues.** There is no count or ordering condition. **Create it with `pnpm josh epic
|
|
60
|
-
"<epic-title>" <N1> <N2> ... [--ordered] [--rationale-file <path|->] [--origin <owner/repo#N>]`**,
|
|
61
|
-
capturing its number `<E>` from the printed URL. The command satisfies the epic's four mechanical
|
|
62
|
-
requirements by construction — the `epic` label, the task-list rows (`- [ ] #N`), the machine-readable
|
|
63
|
-
`Dependencies`, and the printed `backlogrun` line. Check an epic you wrote or edited by hand with `pnpm
|
|
64
|
-
josh epic:check <E>`. Only where `josh` is unavailable, fall back to the manual procedure: ensure the
|
|
65
|
-
label exists (`gh api repos/{owner}/{repo}/labels -f name=epic -f color=5319e7 -f description="Tracks
|
|
66
|
-
a batch of child issues from one split" --silent 2>/dev/null || true`), then create the epic with `gh
|
|
67
|
-
api repos/{owner}/{repo}/issues -f title="<epic-title>" -f 'labels[]=epic' -F body=@<body-file>`. Its body
|
|
68
|
-
follows the epic format in `prompts/collaboration-workflow/issue-template.md` — split rationale,
|
|
69
|
-
dependencies, the `backlogrun` command, and a child task list in task-list syntax (`- [ ] #N`). The epic
|
|
70
|
-
exists as the **non-closing home for the split rationale**. When the children have no required order,
|
|
71
|
-
write `None — the children are independent; any execution order works.` under `Dependencies`. **The
|
|
72
|
-
epic itself is never implemented** — a `backlogrun` takes a named epic and runs its *children*. `pnpm josh
|
|
73
|
-
followup` closes it automatically once every child is closed. **Only when the execution order
|
|
74
|
-
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
|
|
75
|
-
order; on the manual fallback path, after the child Issues exist, `gh api
|
|
76
|
-
repos/{owner}/{repo}/issues/<N2>/dependencies/blocked_by -F issue_id="$(gh api
|
|
77
|
-
repos/{owner}/{repo}/issues/<N1> --jq .id)"` for each dependent pair (the endpoint takes the blocker's
|
|
78
|
-
**database id**, not its issue number; a failure here is non-fatal). Never fold the relation into the
|
|
79
|
-
creation call. (3) Send Telegram notification listing all created issues. (4) Present the command
|
|
80
|
-
`backlogrun #<E> --only`. (5) **Stop** — do not implement.
|
|
66
|
+
**Only where `josh` is unavailable**, the manual fallback: `gh api repos/{owner}/{repo}/labels -f
|
|
67
|
+
name=epic -f color=5319e7 -f description="Tracks a batch of child issues from one split" --silent
|
|
68
|
+
2>/dev/null || true`, then `gh api repos/{owner}/{repo}/issues -f title="<epic-title>" -f
|
|
69
|
+
'labels[]=epic' -F body=@<body-file>` with the epic format of `issue-template.md`; an order is
|
|
70
|
+
recorded per pair with `gh api repos/{owner}/{repo}/issues/<N2>/dependencies/blocked_by -F
|
|
71
|
+
issue_id="$(gh api repos/{owner}/{repo}/issues/<N1> --jq .id)"` (the blocker's **database id**; a
|
|
72
|
+
failure is non-fatal), never folded into the creation call.
|
|
81
73
|
|
|
82
|
-
`pnpm josh issue:file` lints the body and applies the classification labels it declares
|
|
74
|
+
`pnpm josh issue:file` lints the body and applies the classification labels it declares (`issue-template.md`; `docs/josh-commands-backlog.md` → `josh issue:file`).
|
|
83
75
|
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.
|
|
84
76
|
|
|
85
77
|
## Words typed after `new`
|
|
86
78
|
|
|
87
|
-
**`auto-ok` is judged by `pnpm josh issue:file`, never typed** —
|
|
88
|
-
|
|
89
|
-
(`issue-template.md`).
|
|
79
|
+
**`auto-ok` is judged by `pnpm josh issue:file`, never typed** — the excluded labels and the body's
|
|
80
|
+
`- 人の判断:` declaration; a `不要` declaration also needs a run label (`issue-template.md`).
|
|
90
81
|
`auto ok` typed after `new` adds nothing.
|
|
91
82
|
|
|
92
83
|
**Words after `new`** (`kickoff new high`) are read like `into <target>`, never inferred. Each adds its
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
# The dependency update — when `josh latest` runs
|
|
2
2
|
|
|
3
3
|
`josh latest` updates every dependency, the published ranges, `pnpm audit` and pnpm, in that
|
|
4
|
-
order and over the network.
|
|
5
|
-
references it and none restates it. History: `docs/maintainers/latest-gate-rationale.md` → "Where
|
|
6
|
-
each rule came from".
|
|
4
|
+
order and over the network.
|
|
7
5
|
|
|
8
6
|
## Ask the command; do not decide
|
|
9
7
|
|
|
@@ -59,8 +57,6 @@ merge is CI**: the `Security Audit` job runs on every pull request and is one of
|
|
|
59
57
|
|
|
60
58
|
**The lock file the update rewrites lands with whichever issue ran it.** `josh latest` leaves
|
|
61
59
|
`pnpm-lock.yaml` modified and that issue's `pnpm josh git -y` commits it. Should the issue then fail
|
|
62
|
-
CI on a bump rather than on its own change, fix it forward before parking the issue for it.
|
|
63
|
-
for the elapsed-time window: `docs/maintainers/latest-gate-rationale.md` → "Why an elapsed-time
|
|
64
|
-
window rather than once per batch".
|
|
60
|
+
CI on a bump rather than on its own change, fix it forward before parking the issue for it.
|
|
65
61
|
|
|
66
62
|
`docs/josh-commands-automation.md` documents the command itself.
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# `needs-human-review` — the child that stops before its commit
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
answers `human_review: yes`. Rationale and history: `docs/maintainers/needs-human-review-rationale.md`
|
|
5
|
-
→ "Why the label exists".
|
|
3
|
+
Read the moment `pnpm josh issue:state <N>` answers `human_review: yes`.
|
|
6
4
|
|
|
7
5
|
An issue carrying **`needs-human-review`** is degraded to a `halfrun`-shaped stop, whichever entry
|
|
8
6
|
point reached it — `fullrun` or `backlogrun` — and the label may be applied **only by a person**.
|
|
@@ -46,8 +44,7 @@ gh api repos/{owner}/{repo}/labels -f name=needs-human-review -f color=d93f0b -f
|
|
|
46
44
|
**It is not `needs-decision`**: `needs-decision` withholds a run's *start*; this withholds its *end*.
|
|
47
45
|
So a `needs-human-review` issue is still offered, and a child stopped by it **goes on holding its
|
|
48
46
|
repository** — `scripts/issue/issue-labels.ts` keeps it out of `NOT_DIRECTLY_RUNNABLE_LABELS` and
|
|
49
|
-
`scripts/epic/epic-busy.ts` keeps it out of the parked set
|
|
50
|
-
→ "Why it is not `needs-decision`").
|
|
47
|
+
`scripts/epic/epic-busy.ts` keeps it out of the parked set.
|
|
51
48
|
|
|
52
49
|
Each entry point's own branch stays in its own file — `fullrun.md`, `halfrun.md`,
|
|
53
50
|
`backlogrun.md` — and routes here for the definition.
|