Skip to content

fix(review): preserve native 4R frozen-diff handoff for sandboxed reviewers #1967

Description

@blak0p

Pre-flight Checklist

  • I have searched existing issues and this is not a duplicate
  • I understand that PRs will be rejected if the linked issue does not have status:approved

📝 Bug Description

The native 4R review handoff exposes the frozen candidate as a large base64 diff plus an ordered changed-path manifest, but the reviewer-agent transport does not deliver that immutable diff inline. The native contract is valid at the producer boundary but unusable by sandboxed reviewer agents.

This was discovered while reviewing PR #1966 (fix(orchestrator): guard trusted exploration handoffs, linked to #1178). It is a transport and sandbox-boundary failure, not an operating-system-specific failure.

🔄 Steps to Reproduce

  1. Enable review mode.
  2. Start a high-risk review for a candidate large enough to produce the native frozen handoff.
  3. Consent to the review.
  4. Observe that the native contract returns a 134,902-byte base64 candidate diff and an ordered changed-path manifest.
  5. Hand the frozen evidence to the four native review lenses.
  6. Observe that reviewer agents expect an inline diff but cannot access external paths containing the candidate.
  7. Attempt to read the raw handoff through the available tool; the raw base64 content is truncated.
  8. Decode the available /tmp diff and verify that its SHA-256 matches the native candidate diff; the reviewer sandbox still cannot access that path.

✅ Expected Behavior

The adapter should decode the native candidate diff and inject the immutable decoded diff together with the ordered manifest inline into every reviewer-agent handoff. If the diff is missing or truncated, the handoff must fail closed as unavailable rather than asking reviewers to infer or locate evidence externally.

❌ Actual Behavior

The native producer returns complete evidence, but the reviewer agents receive only an inaccessible external path and/or truncated raw base64. They cannot inspect the candidate diff in their sandbox, even though the decoded /tmp artifact has the matching SHA-256.

🖥️ Environment

Gentle AI Version

Review lineage at PR #1966 / native 4R contract under review (exact release version is not material to reproduction)

Operating System

Linux (Fedora/RHEL)

AI Agent / Client

OpenCode

📋 Affected Area

Other

💡 Logs / Error Output

Native handoff facts:

  • Candidate diff: 134,902 bytes when base64-encoded.
  • Native output also contains the ordered changed-path manifest.
  • The reviewer tool read truncates the raw base64 payload.
  • The decoded /tmp diff SHA-256 matches the native candidate diff.
  • The reviewer sandbox cannot access /tmp or other external paths.

Additional Context

Impact:

  • Reviewers cannot produce valid findings grounded in the candidate diff or a valid receipt.
  • The review must not claim PASS when the frozen evidence was unavailable.
  • Archive/finalization is blocked because the 4R review has no valid findings/receipt.

Technical agreement / proposed direction:

  • Add an adapter boundary that decodes and injects the immutable candidate diff plus ordered manifest inline for reviewer agents.
  • Treat missing or truncated evidence as unavailable and fail closed.
  • Add tests covering a large candidate diff and reviewers running in a sandbox with no external-path access.

Scope boundaries:

Exact review lineage: native 4R frozen-diff handoff failure discovered during review of PR #1966, fix(orchestrator): guard trusted exploration handoffs, linked to issue #1178.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions