Skip to content

[gnhf#198] fix(agents): recover empty final responses once #2452

Description

@github-actions

Decision needed - gnhf#198

PR review by jasonqlwilliams-alt · merge-ready

fix(agents): recover empty final responses once

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.

Wheelhouse cannot claim that no related work exists.

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

  • MET Scope - merge-ready PR review - kind=pr-review bucket=merge-ready

Safety

  • MET Safety - complete healthy scan - repo scan is ok and complete
  • MET Safety - target PR is open - target PR is open and unmerged
  • UNAVAILABLE Safety - no per-PR auto-merge opt-out - target labels could not be read
  • MET Safety - head SHA unchanged - scan and live head 74cdae97

G0 (repo)

  • MET G0 - repository auto-merge enabled - enabled by effective repository policy
  • MET G0 - default-branch VISION.md present - default-branch VISION.md 72826290

G1 (card)

  • MET G1 - trusted unique decision card - trusted unique machine-created card [gnhf#198] fix(agents): recover empty final responses once #2452
  • MET G1 - card published after triage - decision controls are published
  • UNAVAILABLE G1 - exclusive card claim - claim is acquired and revalidated only at the act boundary

G2 (files)

  • MET G2 - complete immutable file list - 25 immutable changed path entries read
  • UNMET G2 - workflow and security exclusions clear - G2 touches excluded path(s): workflow-action:.github/workflows/no-mistakes-required.yml

G3 (author)

  • MET G3 - non-maintainer human contributor - jasonqlwilliams-alt is a non-maintainer human
  • MET G3 - prior merged contribution in this repo - jasonqlwilliams-alt has at least one prior merged PR in gnhf

G4 (checks)

  • MET G4 - configured checks green - comp=pass tests=green (merge-ready)
  • MET G4 - PR mergeable - live mergeable is MERGEABLE
  • UNMET G4 - merge state clean - live merge state is 'blocked'

G5 (size)

  • UNMET G5 - changed-file limit - 25 changed files > 20
  • UNMET G5 - changed-line limit - 2805 changed lines > 1000

G6 (triage + behavior)

  • MET G6 - automatic triage credential configured - model credential is configured; card triage eligibility is evaluated separately
  • MET G6 - successful triage for current head - successful triage for head 74cdae97
  • UNMET G6 - top-level recommendation is merge - top-level triage recommendation is not an explicit merge
  • UNMET G6 - eligible behavior class - MANUAL REVIEW REQUIRED - Existing/default behavior changes do not qualify for automatic-merge class A, B, or C.
  • UNMET G6 - existing/default behavior unchanged - the triage verdict reports an existing/default behavior change
  • UNAVAILABLE G6 - class C is opt-in and default-off - not evaluated because behavior class is invalid
  • VISION.md-dependent checks
    • MET G6 - behavior aligns with VISION.md - alignment confirmed
    • UNMET G6 - behavior verdict recommends merge - merge not recommended
    • MET G6 - verdict uses current VISION.md revision - verdict and default branch use 72826290
    • MET G6 - verdict uses current base revision - verdict and live base use 64329d1d

G7 (final gate)

  • UNAVAILABLE 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 gate

Triage

  • Summary: Add one-shot empty-response recovery: when a covered agent's completed turn produces no final answer, gnhf sends exactly one continuation nudge in the same session and accumulates usage across both turns; Pi and Copilot are explicitly excluded with documented reasons; the CI workflow is updated to poll the live PR body via gh api instead of reading from the event payload.
  • Product implications: Owner decision required. The pipeline review leaves one unresolved error: buildClaudeArgs strips -c/--continue for the continuation turn but retains --fork-session, so the configuration agentArgsOverride.claude: [--continue, --fork-session] causes the retry to add --resume while keeping --fork-session, causing Claude to fork a new session rather than resuming the exact one captured from the first turn. The PR body self-flags this as High risk requiring explicit owner approval or correction before merge. Two lower-severity open warnings remain: the codex compact short-option denylist (e.g. -C/tmp) may miss attached values, and a whitespace-only Copilot assistant.message bypasses the d...

Recommended action

  • Agent recommendation: request-changes
  • Reason: The open pipeline error at claude.ts:172 is not a minor edge case: --fork-session is a documented Claude flag and the combination --continue + --fork-session is a supported agentArgsOverride configuration. In that configuration the continuation creates a forked session rather than resuming the exact one, violating the PR's stated exact-session and no-session-broadening requirements and making the new README paragraph inaccurate for a supported configuration. The contributor requests explicit owner approval or correction on precisely this point. Resolution options are: strip --fork-session from continuation turn args alongside -c/--continue, or detect the combination and skip recovery with...

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.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions