You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(cli): preserve committed worktrees on forced shutdown
Situation
Compliance: pass
Tests: green
Merge state: mergeable (informational)
Configured checks: PR must be raised via no-mistakes (compliance: pass), Generated files must not be hand-edited (informational: pass), build-and-test (macos-latest) (test: pass), build-and-test (ubuntu-latest) (test: pass), build-and-test (windows-latest) (test: pass)
Freshness: complete target observation as of 2026-08-12T23:55:49Z
Notes: compliance=pass tests=green
Related work
Note
Related-work context is truncated (comparison_incomplete): comparison across open pull requests is incomplete, so a relation may be missed; this says nothing about the target itself. The candidate list, shared paths, and references are advisory display only and never an overlap or action gate.
kunchenguid/gnhf#164 - fix(agents): recover pi JSON output that follows prose - exact shared path: AGENTS.md
kunchenguid/gnhf#168 - fix: preserve worktree with commits on force-shutdown - exact shared paths: src/cli.test.ts, src/cli.ts
kunchenguid/gnhf#169 - feat: add --sign-commits flag for optional git commit signing - exact shared path: src/cli.ts
kunchenguid/gnhf#179 - feat(agents): wait for the usage window to reset instead of aborting on rate limits - exact shared path: AGENTS.md
kunchenguid/gnhf#186 - feat: add --score-command metric gate with keep/discard and non-improving stop - exact shared paths: src/cli.test.ts, src/cli.ts
kunchenguid/gnhf#191 - fix(cli): preserve worktrees across Linux sleep re-exec - exact shared paths: AGENTS.md, src/cli.ts
Advisory context only. Shared paths and references are not an auto-merge overlap gate.
Auto-merge criteria
Note
Read-only preflight from the authoritative auto-merge evaluator. A displayed MET result never authorizes a merge: Wheelhouse re-evaluates every gate and performs G7 immediately before acting.
✅ METG6 - class C is opt-in and default-off - not applicable to class B
VISION.md-dependent checks
⚪ UNAVAILABLEG6 - behavior aligns with VISION.md - not evaluated because a trusted default-branch VISION.md is required
⚪ UNAVAILABLEG6 - behavior verdict recommends merge - not evaluated because a trusted default-branch VISION.md is required
⚪ UNAVAILABLEG6 - verdict uses current VISION.md revision - not evaluated because no vision-bound behavior verdict exists
⚪ UNAVAILABLEG6 - verdict uses current base revision - not evaluated because no vision-bound behavior verdict exists
G7 (final gate)
⚪ UNAVAILABLEG7 - immediate live recheck and manual merge gate - runs only immediately before merge: card claim, VISION, head/base, mergeability, checks, opt-out label, and unchanged manual workflow gate
Triage
Summary: Fixes a forced-shutdown data-loss bug in --worktree mode where process.exit() fired the process.on('exit') cleanup handler before the normal preservation block could null worktreeCleanup, causing committed worktrees to be deleted; the fix adds a commit-state guard to the exit handler and prints the preserved path before the timeout exit.
Reason: Clean Class B restoration with all CI passing, manual double-SIGINT reproduction evidence attached, and a behavior-oriented regression test that was hardened to fail on unfixed code. Scope is tightly limited to the commit-bearing preservation guard and path-report on the two affected exit paths; zero-commit cleanup is explicitly preserved and confirmed by a passing e2e control. No sibling-task conflicts detected.
From the current admitted automatic triage assessment for this exact revision. Tick Accept recommendation to apply it - it is advisory and never an auto-merge authorization.
Your decision
Tick one box for a quick call, or reply with a slash-command (/merge, /close, /decline <reason>, /hold, /comment <text>, /request-changes <text>):
Accept recommendation
Merge it
Close / decline
Investigate - deep code-grounded review (leaves this card open)
Hold - I'll handle this manually
Only the repository owner can drive this decision - everyone else's edits and comments are ignored.
Decision needed - gnhf#189
PR review by jasonqlwilliams-alt ·
merge-readySituation
passgreenmergeable(informational)PR must be raised via no-mistakes(compliance: pass),Generated files must not be hand-edited(informational: pass),build-and-test (macos-latest)(test: pass),build-and-test (ubuntu-latest)(test: pass),build-and-test (windows-latest)(test: pass)2026-08-12T23:55:49ZRelated work
Note
Related-work context is truncated (
comparison_incomplete): comparison across open pull requests is incomplete, so a relation may be missed; this says nothing about the target itself. The candidate list, shared paths, and references are advisory display only and never an overlap or action gate.fix(agents): recover pi JSON output that follows prose- exact shared path:AGENTS.mdfix: preserve worktree with commits on force-shutdown- exact shared paths:src/cli.test.ts,src/cli.tsfeat: add --sign-commits flag for optional git commit signing- exact shared path:src/cli.tsfix: preserve worktree on force-shutdown timeout- exact shared path:src/cli.tsfeat: add gemini-cli support- exact shared path:AGENTS.mdfeat(agents): wait for the usage window to reset instead of aborting on rate limits- exact shared path:AGENTS.mdfeat: add --score-command metric gate with keep/discard and non-improving stop- exact shared paths:src/cli.test.ts,src/cli.tsfix(cli): preserve worktrees across Linux sleep re-exec- exact shared paths:AGENTS.md,src/cli.tsAdvisory context only. Shared paths and references are not an auto-merge overlap gate.
Auto-merge criteria
Note
Read-only preflight from the authoritative auto-merge evaluator. A displayed MET result never authorizes a merge: Wheelhouse re-evaluates every gate and performs G7 immediately before acting.
Scope
Scope - merge-ready PR review- kind=pr-review bucket=merge-readySafety
Safety - complete healthy scan- repo scan is ok and completeSafety - target PR is open- target PR is open and unmergedSafety - no per-PR auto-merge opt-out- target labels could not be readSafety - head SHA unchanged- scan and live head 3c6782dcG0 (repo)
G0 - repository auto-merge enabled- enabled by effective repository policyG0 - default-branch VISION.md present- default-branch VISION.md 72826290G1 (card)
G1 - trusted unique decision card- trusted unique machine-created card [gnhf#189] fix(cli): preserve committed worktrees on forced shutdown #2321G1 - card published after triage- decision controls are publishedG1 - exclusive card claim- claim is acquired and revalidated only at the act boundaryG2 (files)
G2 - complete immutable file list- 3 immutable changed path entries readG2 - workflow and security exclusions clear- no unconditional workflow/security/governance exclusionsG3 (author)
G3 - non-maintainer human contributor- jasonqlwilliams-alt is a non-maintainer humanG3 - prior merged contribution in this repo- jasonqlwilliams-alt has at least one prior merged PR in gnhfG4 (checks)
G4 - configured checks green- comp=pass tests=green (merge-ready)G4 - PR mergeable- live mergeable is MERGEABLEG4 - merge state clean- live merge state is 'blocked'G5 (size)
G5 - changed-file limit- 3 changed files <= 20G5 - changed-line limit- 124 changed lines <= 1000G6 (triage + behavior)
G6 - automatic triage credential configured- model credential is configured; card triage eligibility is evaluated separatelyG6 - successful triage for current head- successful triage for head 3c6782dcG6 - top-level recommendation is merge- explicit merge recommendationG6 - eligible behavior class- class B with bounded corrected-defect and restored-behavior evidenceG6 - existing/default behavior unchanged- no existing/default behavior changeG6 - class C is opt-in and default-off- not applicable to class BG6 - behavior aligns with VISION.md- not evaluated because a trusted default-branch VISION.md is requiredG6 - behavior verdict recommends merge- not evaluated because a trusted default-branch VISION.md is requiredG6 - verdict uses current VISION.md revision- not evaluated because no vision-bound behavior verdict existsG6 - verdict uses current base revision- not evaluated because no vision-bound behavior verdict existsG7 (final gate)
G7 - immediate live recheck and manual merge gate- runs only immediately before merge: card claim, VISION, head/base, mergeability, checks, opt-out label, and unchanged manual workflow gateTriage
Recommended action
mergeFrom the current admitted automatic triage assessment for this exact revision. Tick Accept recommendation to apply it - it is advisory and never an auto-merge authorization.
Your decision
Tick one box for a quick call, or reply with a slash-command (
/merge,/close,/decline <reason>,/hold,/comment <text>,/request-changes <text>):Only the repository owner can drive this decision - everyone else's edits and comments are ignored.