{
  "tokens_out": 21717,
  "outcome": "unsupported",
  "suggested_fix": "fault_owner=test. Correction: the harness must place the pinned checkout in a directory named pyrig-weekly-health-check (matching [project] name in pyproject.toml) and run the README sync there, or otherwise supply cwd whose basename is pyrig-weekly-health-check. Also: put .venv/bin on PATH for pyrig sync (prek is called by name), and provide a .git (prek install requires one). Expect exit 1 on the first sync that changes files; the rerun exits 0 silently.",
  "cycle_checks": null,
  "fault": {
    "owner": "prerequisite",
    "status": "diagnosed",
    "reason": "Checkout directory name is 'workspace', not 'pyrig-weekly-health-check'. pyrig uses the cwd name as the project name, so sync renames the plugin's project and regenerates files under src/workspace instead of the pinned identity.",
    "evidence": []
  },
  "runtime_revision": null,
  "agent_execution": "native_agent",
  "time_to_working_s": null,
  "usage_complete": true,
  "runtime": null,
  "architecture": null,
  "local_or_hosted": null,
  "agent_interfaces_note": null,
  "platform_details": null,
  "platforms_claimed": null,
  "maintenance": null,
  "evidence_strength": null,
  "purpose": "repair",
  "topic": null,
  "needs_which": null,
  "tested_with": null,
  "native_bundle": null,
  "agent_runtime": "claude-code",
  "maintenance_note": null,
  "runtime_version": null,
  "does_what_it_says": null,
  "commit": "a6718cb140941f312217448c44cc0b4e19c2702f",
  "failure_origin": null,
  "stuck_step": "<host-path> sync (README Usage section, after `uv run pyrig sync` equivalent)",
  "repo_url": null,
  "needs": null,
  "checks": [
    {
      "status": "PASS",
      "details": {
        "working": false,
        "argv": [
          "--help"
        ],
        "kind": "cli",
        "returncode": 0,
        "stdout": "                                                                                \n Usage: pyrig [OPTIONS] COMMAND [ARGS]...                                       \n                                                                                \n A Python project setup and management tool built on infrastructure as code and \n convention over configuration.                                                 \n                                                                                \n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --version                            Show the version and exit.              \u2502\n\u2502 --verbose             -v      <int>  Increase verbosity: -v (DEBUG), -vv     \u2502\n\u2502                                      (modules), -vvv (timestamps)            \u2502\n\u2502                                      [default: 0]                            \u2502\n\u2502 --quiet               -q      <int>  Decrease verbosity: -q (WARNING), -qq   \u2502\n[excerpt truncated]",
        "stderr": "",
        "needs_credentials": false,
        "needs_browser": false,
        "scope": "partial: install"
      },
      "check": "install",
      "optional": false
    }
  ],
  "open_issues": null,
  "agent_runtime_version": "2.1.300 (Claude Code)",
  "verifies_run_id": "Winipedia--pyrig-weekly-health-check-claude-haiku-5-5-1792348898515433994",
  "total_s": 229.32144594192505,
  "license": null,
  "tool_calls": 28,
  "model_version": "claude-haiku-5-5",
  "example_checks": [],
  "mcp": null,
  "other_model": null,
  "first_use_s": null,
  "native_tool_calls": 28,
  "last_commit_at": null,
  "source": "https://github.com/Winipedia/pyrig-weekly-health-check",
  "models_agree": null,
  "maintenance_verdict": null,
  "cost_usd": 0.029976980000000004,
  "safety": null,
  "answered_issues": null,
  "what_failed": null,
  "steps": [
    "cd <host-path> && pwd && ls -la && cat README.md 2>/dev/null | head -200; echo \"---\"; ls -la .coldpass 2>/dev/null; ls <host-path> 2>/dev/null",
    "cd <host-path> && find src tests -maxdepth 6 | head -50; echo ---; cat pyproject.toml; echo ---; cat .python-version; echo ---; ls -la <host-path> 2>/dev/null; find / -path /proc -prune -o -name \"pyrig-weekly*\" -print 2>/dev/null | head; echo ---; which uv python3; python3 --version; cat <host-path> | head -150",
    "cd <host-path> && (command -v uv || (curl -LsSf https://astral.sh/uv/install.sh | sh)) 2>&1 | tail -5; export PATH=\"$HOME/.local/bin:$PATH\"; uv --version; ls <host-path> 2>/dev/null; ls -la .venv 2>/dev/null | head -2",
    "cd <host-path> && export PATH=\"$HOME/.local/bin:$PATH\" NODE_USE_ENV_PROXY=1 && timeout 280 uv sync 2>&1 | tail -30; echo \"exit=${PIPESTATUS[0]}\"; ls .venv/bin | grep -E '^pyrig' ",
    "cd <host-path> && export PATH=\"$HOME/.local/bin:$PATH\" NODE_USE_ENV_PROXY=1 && timeout 280 <host-path> sync 2>&1 | tail -40; echo \"exit=${PIPESTATUS[0]}\"",
    "cd <host-path> && ls -la .venv/bin/prek && export PATH=\"<host-path>\" && timeout 280 pyrig sync > /tmp/sync1.log 2>&1; echo \"exit=$?\"; tail -c 1500 /tmp/sync1.log; echo; git status 2>&1 | head -2; ls -la .github/workflows 2>/dev/null",
    "cd <host-path> && export PATH=\"<host-path>\" && prek install 2>&1 | head -20; echo \"exit=${PIPESTATUS[0]}\"; grep -n -iE \"error|fatal|not a git|warning\" /tmp/sync1.log | head -20",
    "cd /tmp && rm -rf /tmp/pinclone && timeout 120 git clone -q https://github.com/Winipedia/pyrig-weekly-health-check /tmp/pinclone 2>&1 | tail -3; cd /tmp/pinclone 2>/dev/null && git cat-file -t a6718cb140941f312217448c44cc0b4e19c2702f 2>&1; git log --oneline -1 2>&1",
    "cd /tmp/pinclone && git rev-parse --short HEAD && git checkout -q a6718cb140941f312217448c44cc0b4e19c2702f && git rev-parse --short HEAD && cd /tmp && diff -rq --exclude=.git --exclude=.venv --exclude=.coldpass /tmp/pinclone <host-path>; echo \"diff_exit=$?\"",
    "cd /tmp && diff /tmp/pinclone/pyproject.toml <host-path>; echo ===; diff /tmp/pinclone/README.md <host-path> | head -40; echo ===; diff /tmp/pinclone/.github/settings.json <host-path> | head -30; echo ===; find <host-path> -type f | head; echo ===; cat <host-path> 2>/dev/null | head -20; echo ===; ls -la <host-path> 2>/dev/null",
    "cd <host-path> && set -e && rm -rf src/workspace && cp /tmp/pinclone/pyproject.toml pyproject.toml && cp /tmp/pinclone/README.md README.md && cp /tmp/pinclone/.github/settings.json .github/settings.json && cp -r /tmp/pinclone/.git .git && git status --short | head -20; echo \"status_exit=$?\"; git rev-parse --short HEAD; echo ---; diff -rq --exclude=.git --exclude=.venv --exclude=__pycache__ /tmp/pinclone <host-path>; echo \"diff_exit=$?\"",
    "cd <host-path> && export PATH=\"<host-path>\" NODE_USE_ENV_PROXY=1 && timeout 280 pyrig sync > /tmp/sync2.log 2>&1; echo \"exit=$?\"; grep -v '^[\u2502\u256d\u2570]' /tmp/sync2.log | tail -30; echo ---; git status --short",
    "cd <host-path> && grep -E '^[A-Za-z_.]*(Error|Exception)[: ]|Error:|error:' /tmp/sync2.log | head -10; echo ---; grep -n -iE 'pyrig|name' <host-path> 2>/dev/null | head -5; ls <host-path> | grep -i pyrig",
    "cd <host-path> && sed 's/[\u2502\u256d\u2570\u256e\u256f\u2500\u2503]//g' /tmp/sync2.log | grep -v '^\\s*$' | tail -12; echo ---; grep -rn \"getcwd\\|cwd().name\\|\\.name\" .venv/lib/python3.12/site-packages/pyrig/rig/configs/base/*.py 2>/dev/null | head; grep -rln \"def get_project_name\\|project_name\" .venv/lib/python3.12/site-packages/pyrig/ | head -5",
    "cd <host-path> && grep -o '[A-Za-z.]*Error[^\u2502]*' /tmp/sync2.log | sort | uniq -c | head; grep -n \"project_name\\|def name\" .venv/lib/python3.12/site-packages/pyrig/rig/tools/version_control/remote/controller.py | head -5; grep -rn \"cwd()\\|Path.cwd\\|getcwd\" .venv/lib/python3.12/site-packages/pyrig/src/pyrig/rig/configs/ 2>/dev/null | head -5; grep -rln \"def get_project_name\\|def project_name\" .venv/lib/python3.12/site-packages/pyrig* | grep -v pycache | head",
    "cd <host-path> && tail -c 600 /tmp/sync2.log; echo; echo ---; grep -n -A12 \"def project_name\" .venv/lib/python3.12/site-packages/pyrig/rig/tools/packages/manager.py | head -30",
    "cd <host-path> && git checkout -q -- . && rm -rf src/workspace && git status --short; echo \"clean_exit=$?\"; rm -rf /tmp/pyrig-weekly-health-check && cp -r /tmp/pinclone /tmp/pyrig-weekly-health-check && cd /tmp/pyrig-weekly-health-check && export PATH=\"<host-path>\" NODE_USE_ENV_PROXY=1 && timeout 280 <host-path> sync > /tmp/sync3.log 2>&1; echo \"exit=$?\"; tail -c 800 /tmp/sync3.log; echo; git -C /tmp/pyrig-weekly-health-check status --short",
    "cd /tmp && grep -n -E \"Failed|failed|Error|error|Traceback|Exception|hook\" /tmp/sync3.log | sed 's/[\u2502\u256d\u2570\u256e\u256f\u2500\u2503]//g' | head -40; echo; wc -l /tmp/sync3.log",
    "cd /tmp/pyrig-weekly-health-check && grep -rn \"def sync\\|prek\\|pre-commit\\|hook\" <host-path> | head -20; echo ---; grep -rn \"def sync\\|def run\\|prek\" <host-path> 2>/dev/null | head; grep -rln \"prek\" <host-path> --include=*.py | grep -v pycache | head",
    "cd /tmp/pyrig-weekly-health-check && git status --short | head -30; echo \"---rerun\"; export PATH=\"<host-path>\" NODE_USE_ENV_PROXY=1 && timeout 280 <host-path> sync > /tmp/sync4.log 2>&1; echo \"exit=$?\"; sed 's/[\u2502\u256d\u2570\u256e\u256f\u2500\u2503]//g' /tmp/sync4.log | grep -v '^\\s*$' | tail -25; git status --short | head",
    "rm -rf /tmp/pyrig-weekly-health-check && cp -r /tmp/pinclone /tmp/pyrig-weekly-health-check && cd /tmp/pyrig-weekly-health-check && export PATH=\"<host-path>\" NODE_USE_ENV_PROXY=1 && timeout 280 <host-path> sync > /tmp/sync5.log 2>&1; echo \"first_exit=$?\"; cat /tmp/sync5.log | sed 's/[\u2502\u256d\u2570\u256e\u256f\u2500\u2503]//g' | tail -15; echo ---; git status --short | head; cd /tmp/pyrig-weekly-health-check && git status --porcelain --ignored | head -5",
    "cd /tmp/pyrig-weekly-health-check && cat .scratch.py; echo \"--- scratch run:\"; <host-path> -I .scratch.py > /tmp/scratch.out 2>&1; echo \"exit=$?\"; tail -c 400 /tmp/scratch.out; echo; grep -rn \"scratch\" <host-path> <host-path> 2>/dev/null | head -8",
    "cd <host-path> && grep -rn \"def sync\" pyrig/rig/cli/*.py pyrig/rig/cli/commands/*.py 2>/dev/null | head -5; f=$(grep -rln \"def sync\" pyrig/rig/cli/commands/ 2>/dev/null | grep -v pycache | head -1); echo \"FILE=$f\"; grep -n -A30 \"def sync\" $f 2>/dev/null | head -60",
    "cd <host-path> && grep -n \"checks\\|def validate\\|--validate\\|expected_returncode\\|stays_running\" check.py | head -60",
    "cd <host-path> && sed -n 470,560p check.py",
    "rm -rf /tmp/pyrig-weekly-health-check && cd <host-path> && git status --short && echo \"clean(tracked)=$?\" && git rev-parse --short HEAD && ls -d src/workspace 2>/dev/null; ls .coldpass 2>/dev/null; pgrep -af pyrig || echo \"no pyrig processes\"; <host-path> --help >/dev/null 2>&1; echo \"help_exit=$?\"",
    "cd <host-path> && mkdir -p .coldpass && cat > .coldpass/probe.json <<'EOF'\n{\"checks\":[{\"check\":\"install\",\"kind\":\"cli\",\"argv\":[\"<host-path>\",\"--help\"],\"cwd\":\"<host-path>\",\"env\":{\"PATH\":\"<host-path>\"}}]}\nEOF\ncat > .coldpass/report.json <<'EOF'\n{\"outcome\":\"blocked\",\"operation\":\"README Usage: `uv run pyrig sync` (pyrig regenerates .github/workflows/health_check.yml with weekly schedule)\",\"operation_scope\":\"Install verified (uv sync, pyrig entry points present, pyrig --help exits 0). The README sync operation was NOT completed in <host-path> pyrig derives the project name from the cwd directory name (pyrig/rig/tools/packages/manager.py project_name() returns Path.cwd().name), so in this checkout it renames the project to 'workspace', rewrites pyproject.toml/README.md/.github/settings.json and creates src/workspace/. A same-operation run from a directory named pyrig-weekly-health-check (copy of the pinned commit) succeeded: first run exit 1 with 'Updated ...' lines (exit 1 is by design when files change), rerun exit 0 with no changes.\",\"steps\":[\"curl -LsSf https://astral.sh/uv/install.sh | sh  (uv 0.13.1)\",\"uv sync  (installed deps incl. pyrig 19.2.0, pyrig-weekly-health-check 1.1.3 editable; exit 0)\",\"<host-path> sync  (run 1: FileNotFoundError 'prek' because .venv/bin not on PATH)\",\"PATH=<host-path> pyrig sync  (run 2: CalledProcessError prek install, 'Not in a Git repository')\",\"git clone https://github.com/Winipedia/pyrig-weekly-health-check /tmp/pinclone; verified a6718cb; copied its .git into workspace (tree matches pinned commit except for sync rewrites, which were reverted with git checkout)\",\"PATH=venv pyrig sync in <host-path> (run 3: exit 1; renamed project to 'workspace', created src/workspace; reverted)\",\"copy of pinned tree in /tmp/pyrig-weekly-health-check: pyrig sync exit 1 (first run, files created/updated), rerun exit 0 with clean git status\"],\"deviations\":[\"README Usage `uv add pyrig-weekly-health-check --dev` not run: this repo is the plugin itself, and uv add would rewrite its pyproject/uv.lock. Used `uv sync` for the same install instead.\",\"`pyrig sync` needs .venv/bin on PATH (prek is invoked by bare name); the absolute-path invocation alone fails with FileNotFoundError 'prek'.\",\"Workspace had no .git; prek install requires one. Copied the pinned .git from the clone of a6718cb into <host-path> (tree otherwise identical to the pinned commit).\",\"Did not run pyrig sync in <host-path> to completion: it renames the project to 'workspace' by design. Reverted with git checkout and removed src/workspace.\",\"Probe is partial install evidence only (pyrig --help), not the sync operation, because the operation cannot produce the plugin's own output from this directory name.\"],\"stuck_step\":\"<host-path> sync (README Usage section, after `uv run pyrig sync` equivalent)\",\"main_blocker\":\"Checkout directory name is 'workspace', not 'pyrig-weekly-health-check'. pyrig uses the cwd name as the project name, so sync renames the plugin's project and regenerates files under src/workspace instead of the pinned identity.\",\"suggested_fix\":\"fault_owner=test. Correction: the harness must place the pinned checkout in a directory named pyrig-weekly-health-check (matching [project] name in pyproject.toml) and run the README sync there, or otherwise supply cwd whose basename is pyrig-weekly-health-check. Also: put .venv/bin on PATH for pyrig sync (prek is called by name), and provide a .git (prek install requires one). Expect exit 1 on the first sync that changes files; the rerun exits 0 silently.\",\"fault_owner\":\"test\"}\nEOF\n<env-var>=<host-path> python3 -I <host-path> --validate; echo \"validate_exit=$?\"; python3 -I -c \"import json;json.load(open('<host-path>'));print('report ok')\"; git status --short",
    "cd <host-path> && <env-var>=<host-path> python3 -I <host-path> --probe 2>&1 | head -c 1200; echo; echo \"exit=$?\"; git status --short"
  ],
  "platform_conflicts": null,
  "claims_note": null,
  "maintained_note": null,
  "repo": "Winipedia/pyrig-weekly-health-check",
  "service_tier": null,
  "maintained": null,
  "source_pin": null,
  "operation_scope": "partial checks",
  "reasoning": "low",
  "claims": [],
  "platform": "linux",
  "cost_to_try": null,
  "backend": null,
  "tool_transport": "mcp-assigned-vm",
  "hardware": null,
  "agent_interface": null,
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "date": "2026-10-18T18:48:20.935192+00:00",
  "kind": "repo",
  "resources": {
    "cpus": 2,
    "memory_mib": 4096,
    "disk_mib": 32768
  },
  "error_excerpt": "Checkout directory name is 'workspace', not 'pyrig-weekly-health-check'. pyrig uses the cwd name as the project name, so sync renames the plugin's project and regenerates files under src/workspace instead of the pinned identity.",
  "pass": null,
  "evidence_version": null,
  "source_revision": null,
  "run_id": "Winipedia--pyrig-weekly-health-check-claude-haiku-5-5-1792349071613732595",
  "last_release_at": null,
  "furthest_model": null,
  "model": "claude-haiku-5-5",
  "what_it_did": "README Usage: `uv run pyrig sync` (pyrig regenerates .github/workflows/health_check.yml with weekly schedule)",
  "sandbox_source": null,
  "other_run_id": null,
  "hosting": null,
  "tested_commit": null,
  "guest_setup": null,
  "mcp_context": null,
  "agent_interfaces": [],
  "setup_identity": null,
  "works": null,
  "install_s": null,
  "fix_id": "fix-eea25adbcc81b1776ef8",
  "tokens_in": 933586,
  "tested_at": null,
  "test_version": "readme-055845953af60ef08c5ae829ccf06aa15ffc5bcf02f948f4e7d0244f61db1869",
  "recovery": {
    "source": "legacy-oct16-18",
    "original_run_id": "Winipedia--pyrig-weekly-health-check-claude-haiku-5-5-1792349071613732595",
    "historical": true,
    "ledger_sha256": "c5e6a833c182c1e2aecf69d0bd0020aec63c65d98f3e933e4b32232340312736"
  },
  "transcript_url": "/transcripts/Winipedia--pyrig-weekly-health-check-claude-haiku-5-5-1792349071613732595.txt",
  "report_url": "/reports/Winipedia--pyrig-weekly-health-check-claude-haiku-5-5-1792349071613732595.json"
}
