abhigyanpatwari/GitNexus · error · ValueError

candidate overlay is byte-identical to the incumbent skills

Error message

candidate overlay is byte-identical to the incumbent skills

What it means

Raised by commit_candidate_overlay after it stages the proposer's skill overlay into the sandbox git clone and runs `git diff --cached --quiet`. Exit code 0 means the staged tree is byte-identical to HEAD, so the candidate introduced no change. The harness refuses to spend a benchmark run on a no-op candidate, since promotion evidence would be pure noise.

Source

Thrown at eval/workflow_bench/evolution.py:404

    mkdir_command = ["/bin/mkdir", "-p", f"{SANDBOX_TMP}/wfbench-empty-hooks"]
    mkdir_result = sandbox.run(
        mkdir_command,
        timeout=60,
        env=build_sandbox_environment(),
    )
    if not mkdir_result.ok:
        raise ManagedProcessError(mkdir_command, mkdir_result)

    command, added = _sandbox_overlay_git(sandbox, ["add", "--", *relative_paths])
    if not added.ok:
        raise ManagedProcessError(command, added)
    command, changed = _sandbox_overlay_git(
        sandbox,
        ["diff", "--cached", "--quiet", "--no-ext-diff", "--no-textconv", "--"],
    )
    if changed.returncode == 0:
        raise ValueError("candidate overlay is byte-identical to the incumbent skills")
    if changed.returncode != 1:
        raise ManagedProcessError(command, changed)

    command, committed = _sandbox_overlay_git(
        sandbox,
        [
            "commit",
            "--quiet",
            "--no-verify",
            "-m",
            "benchmark candidate skill overlay",
        ],
        extra_config=(
            "user.name=workflow-bench",
            "user.email=workflow-bench@invalid",
        ),
    )
    if not committed.ok:

View on GitHub (pinned to d540b00184)

Solutions

  1. Before staging, diff the overlay against the incumbent: `diff -r <incumbent>/.claude/skills/<skill> <overlay>/.claude/skills/<skill>` and confirm at least one changed byte.
  2. Re-read the proposer's proposal file — if it claims a change but the bytes match, the proposer's in-session edit failed; regenerate the candidate.
  3. If the no-op is intentional (e.g. testing the gate), catch the ValueError and treat the generation as 'no candidate produced'.

Example fix

# before
commit_candidate_overlay(overlay, worktree=clone, sandbox=session)

# after: skip no-op overlays before they reach git
from eval.workflow_bench.evolution import candidate_overlay_payload
import pathlib

def _incumbent_bytes(clone, rel):
    p = pathlib.Path(clone) / rel
    return p.read_bytes() if p.exists() else b""

digest, payload = candidate_overlay_payload(overlay)
if all(_incumbent_bytes(clone, rel.as_posix()) == content for rel, content in payload):
    raise SystemExit("no-op candidate; refusing to stage")
commit_candidate_overlay(overlay, worktree=clone, sandbox=session)
Defensive patterns

Strategy: validation

Validate before calling

from pathlib import Path
from eval.workflow_bench.evolution import candidate_overlay_payload

def overlay_changes_anything(overlay: Path, clone: Path) -> bool:
    """True if at least one overlay byte differs from the incumbent clone."""
    _, payload = candidate_overlay_payload(overlay)
    for rel, content in payload:
        incumbent = clone / Path(*rel.parts)
        if not incumbent.exists() or incumbent.read_bytes() != content:
            return True
    return False

# gate the call
if not overlay_changes_anything(overlay, clone):
    raise SystemExit("no-op candidate; skip commit_candidate_overlay")

Prevention

When it happens

Trigger: The proposer copied the incumbent skill verbatim into the overlay; its only edit was a sed/heredoc that matched nothing; whitespace/encoding that already matched; or the overlay only touches skills no benchmarked arm loads (so the bytes round-trip). Any of these leaves `git add` with nothing to diff against HEAD.

Common situations: First-generation conservative proposers; an overlay built with `cp <incumbent> <overlay>` where the follow-up edit step was skipped or failed silently inside the no-Write-tool proposer session; re-running the same candidate twice.

Related errors


AI-assisted analysis of abhigyanpatwari/GitNexus@d540b00184 (2026-08-12). Data as JSON: /api/errors/00495ad03a17480b. Report an issue: GitHub.