abhigyanpatwari/GitNexus · error · SandboxError
transcript_artifacts exceeds the global evidence limit of {M
Error message
transcript_artifacts exceeds the global evidence limit of {MAX_TRANSCRIPT_ARTIFACTS} What it means
Raised by `_preflight_transcript_artifacts` when the running total of transcript artifacts across ALL evidence rows exceeds `MAX_TRANSCRIPT_ARTIFACTS` (=24 = 12 rows x 2). This bounds the total evidence a proposer can read.
Source
Thrown at eval/workflow_bench/evolve.py:374
def _preflight_transcript_artifacts(evidence: list[dict[str, Any]]) -> list[list[Any]]:
"""Bound every transcript reference before any evidence file is read."""
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 excView on GitHub (pinned to d540b00184)
Solutions
- Let evidence flow only through select_evidence(), which caps rows at MAX_EVIDENCE_ROWS.
- Reduce the per-row transcript count or drop the lowest-value rows so the total is <=24.
- If you raised MAX_EVIDENCE_ROWS, raise MAX_TRANSCRIPT_ARTIFACTS to match (rows x per-row).
Defensive patterns
Strategy: validation
Validate before calling
total = sum(len(r.get('transcript_artifacts', [])) for r in evidence)
if total > 24:
raise ValueError(f'transcript_artifacts total {total} exceeds global cap 24') Prevention
- Always pass evidence through select_evidence; do not concatenate extra rows by hand.
- Keep MAX_TRANSCRIPT_ARTIFACTS == MAX_EVIDENCE_ROWS * MAX_TRANSCRIPT_ARTIFACTS_PER_ROW if you change either.
When it happens
Trigger: `proposer_evidence_entries` receives more than 24 transcript_artifacts total across the selected evidence rows. Since `select_evidence` already caps rows at MAX_EVIDENCE_ROWS (12), this only fires when rows are over-packed or the cap constants were lowered.
Common situations: Manually injecting extra rows beyond what select_evidence returns, or lowering MAX_EVIDENCE_ROWS without lowering the per-row cap proportionally so the product still fits.
Related errors
- transcript_artifacts exceeds the per-row session limit of {M
- transcript_artifacts must be a list
- duplicate transcript artifact path: {normalized}
- 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/2b0d6c193a5ea50b.
Report an issue: GitHub.