abhigyanpatwari/GitNexus · error · SandboxError
duplicate transcript artifact path: {normalized}
Error message
duplicate transcript artifact path: {normalized} What it means
Raised by `_preflight_transcript_artifacts` when the same normalized transcript path (`transcripts/<name>`) appears in two artifact entries, whether within one row or across rows. Each transcript must be uniquely addressable.
Source
Thrown at eval/workflow_bench/evolve.py:379
artifacts_by_row: list[list[Any]] = []
seen_paths: set[str] = set()
total = 0
for artifacts_row in evidence:
artifacts = artifacts_row.get("transcript_artifacts", [])
if not isinstance(artifacts, list):
raise SandboxError("transcript_artifacts must be a list")
if len(artifacts) > MAX_TRANSCRIPT_ARTIFACTS_PER_ROW:
raise SandboxError(
f"transcript_artifacts exceeds the per-row session limit of {MAX_TRANSCRIPT_ARTIFACTS_PER_ROW}"
)
total += len(artifacts)
if total > MAX_TRANSCRIPT_ARTIFACTS:
raise SandboxError(f"transcript_artifacts exceeds the global evidence limit of {MAX_TRANSCRIPT_ARTIFACTS}")
for artifact in artifacts:
relative, _, _ = _transcript_artifact_metadata(artifact)
normalized = _normalized_transcript_artifact_path(relative)
if normalized in seen_paths:
raise SandboxError(f"duplicate transcript artifact path: {normalized}")
seen_paths.add(normalized)
artifacts_by_row.append(artifacts)
return artifacts_by_row
def _bound_transcript_artifact(root: Path, metadata: Any) -> str:
relative, expected_digest, expected_size = _transcript_artifact_metadata(metadata)
path = _results_artifact_path(root, relative, transcript=True)
try:
before = path.lstat()
except OSError as exc:
raise SandboxError(f"transcript artifact is unavailable: {path}: {exc}") from exc
if stat.S_ISLNK(before.st_mode) or not stat.S_ISREG(before.st_mode):
raise SandboxError(f"transcript artifact must be a regular non-symlink file: {path}")
if stat.S_IMODE(before.st_mode) & 0o077:
raise SandboxError(f"transcript artifact must be owner-only: {path}")
if before.st_size != expected_size:View on GitHub (pinned to d540b00184)
Solutions
- Dedupe the transcript_artifacts so every `path` value is unique across the whole evidence set.
- If the duplication came from a duplicated row, remove the duplicate row.
- Regenerate results if the runner is emitting colliding transcript paths.
Defensive patterns
Strategy: validation
Validate before calling
seen, dups = set(), []
for r in evidence:
for a in r.get('transcript_artifacts', []):
p = a.get('path')
(dups if p in seen else seen.add(p))
if dups:
raise ValueError(f'duplicate transcript paths: {dups}') Prevention
- Treat each transcript path as a primary key across the whole results.jsonl.
When it happens
Trigger: `proposer_evidence_entries` is given evidence whose `transcript_artifacts` contain two entries with an identical `path` after normalization (e.g. two rows both listing `transcripts/foo.jsonl`).
Common situations: Copy-pasting a row in results.jsonl, or a runner bug that reuses a session transcript path across distinct runs.
Related errors
- transcript_artifacts must be a list
- transcript_artifacts exceeds the per-row session limit of {M
- transcript_artifacts exceeds the global evidence limit of {M
- transcript artifact is unavailable: {path}: {exc}
- transcript artifact must be a regular non-symlink file: {pat
AI-assisted analysis of abhigyanpatwari/GitNexus@d540b00184 (2026-08-12).
Data as JSON: /api/errors/d79467ac18774cf1.
Report an issue: GitHub.