HKUDS/Vibe-Trading · error · ValueError
manifest file {manifest_path} is missing or unreadable ({exc
Error message
manifest file {manifest_path} is missing or unreadable ({exc.strerror or 'I/O error'}) What it means
Once the manifest path passes the allowlist check, load_manifest reads the file with read_text(encoding='utf-8'); an OSError (file missing, no read permission, generic I/O error) is wrapped into ValueError including strerror. This means the path was acceptable but the file couldn't be opened/read.
Source
Thrown at agent/src/tools/strategy_discovery_tool.py:467
way.
"""
manifest_path = Path(str(path)).expanduser()
try:
resolved_manifest = manifest_path.resolve()
except (OSError, RuntimeError) as exc:
raise ValueError(
f"manifest path {manifest_path} could not be resolved: {exc}"
) from exc
if not _manifest_path_allowed(resolved_manifest):
raise ValueError(
f"manifest path {manifest_path} is outside the runtime root and "
"the allowed run roots; place the manifest under one of them "
"(e.g. next to the runs it lists)"
)
try:
raw = manifest_path.read_text(encoding="utf-8")
except OSError as exc:
raise ValueError(
f"manifest file {manifest_path} is missing or unreadable "
f"({exc.strerror or 'I/O error'})"
) from exc
try:
parsed = json.loads(raw)
except json.JSONDecodeError as exc:
raise ValueError(
f"manifest file {manifest_path} is not valid JSON: {exc.msg} "
f"at line {exc.lineno} column {exc.colno}"
) from exc
if isinstance(parsed, list):
return parsed
if isinstance(parsed, dict):
runs = parsed.get("runs")
if not isinstance(runs, list):
raise ValueError(
f"manifest file {manifest_path} must be a JSON object with a "
"'runs' array or a bare JSON array of run specs"View on GitHub (pinned to 80ffdda44c)
Solutions
- Verify the file exists and is readable: ls -l <path> and cat <path> from the same user running the tool
- Fix permissions (chmod a+r) or ownership if needed
- Correct the path/filename to point at the actual manifest file
Example fix
# before core(manifest_path="runs/manifest.json") # actual file is manifest_v2.json # after core(manifest_path="runs/manifest_v2.json")
Defensive patterns
Strategy: validation
Validate before calling
from pathlib import Path
p = Path(manifest_path)
if not p.is_file() or not p.stat().st_mode & 0o004:
raise FileNotFoundError(f"manifest missing or unreadable: {p}")
core(manifest_path=manifest_path, ...) Try / catch
except ValueError as e: if 'missing or unreadable' in str(e): prompt user to check the path/permissions
Prevention
- Check existence and read permission before refresh
- Beware races with cleanup jobs deleting run dirs
When it happens
Trigger: Manifest file deleted between listing and loading; wrong filename/extension (manifest.json vs manifest.jsonl); insufficient file permissions (mode 600 owned by another user); unreadable mount.
Common situations: CI artifacts not checked out; race with a cleanup job removing run dirs; permission mismatch when the agent runs as a different user than the one who wrote the manifest.
Related errors
- manifest path {manifest_path} could not be resolved: {exc}
- manifest path {manifest_path} is outside the runtime root an
- manifest file {manifest_path} is not valid JSON: {exc.msg} a
- manifest file {manifest_path} must be a JSON object with a '
- {str(e)}
AI-assisted analysis of HKUDS/Vibe-Trading@80ffdda44c (2026-08-28).
Data as JSON: /api/errors/cb9ddea33f41051c.
Report an issue: GitHub.