{
  "run_id": "oscarlora--ad-production-kit-claude-haiku-5-5-1792807197520060724",
  "date": "2026-10-24T02:05:15.933053+00:00",
  "repo": "oscarlora/ad-production-kit",
  "kind": "repo",
  "source": "https://github.com/oscarlora/ad-production-kit",
  "commit": "4b91d5b7c88d445f80408d59d6705efcf525a59f",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 287.79084803001024,
  "total_s": 318.4129693508148,
  "steps": [
    "cd <guest-path> && pwd && ls -la && git status 2>&1 | head -3; id -u; python3 --version; cat README.md 2>/dev/null | head -200",
    "ls <guest-path> ; ls /inputs 2>&1; ls <guest-path> 2>&1",
    "cd <guest-path> && cat package.json; ls -la tools studio .coldpass; cat tools/setup.sh | head -150",
    "cd <guest-path> && ls studio; cat studio/README* 2>/dev/null | head -80; ls skills/set-up-adpk; sed -n 1,80p skills/set-up-adpk/SKILL.md; node -v; npm -v; which ffmpeg; uname -a; cat /etc/os-release | head -3",
    "cd <guest-path> && sed -n 150,300p tools/setup.sh",
    "cd <guest-path> && export NODE_USE_ENV_PROXY=1 && timeout 900 bash tools/setup.sh </dev/null 2>&1 | tail -60; echo \"EXIT=${PIPESTATUS[0]}\"",
    "cd <guest-path> && export PATH=\"$HOME/.local/node/bin:$HOME/.local/bin:$PATH\" && node -v && npm -v && cat studio/package.json && sed -n 1,60p studio/dev.mjs && cat tools/check-keys.mjs && node tools/check-keys.mjs --help 2>&1 | head -20; echo ---; node tools/search-media.mjs --help 2>&1 | head -30",
    "cd <guest-path> && echo HOME=$HOME && ls -la workspaces 2>&1; ls workspaces/Shared 2>&1; ls workspaces/Shared/Library 2>&1 | head; find workspaces -maxdepth 4 -name \"*.json\" 2>/dev/null | head -20; sed -n 1,40p tools/lib/catalog.mjs | head -5; ls tools/lib",
    "cd <guest-path> && find workspaces -maxdepth 6 | head -40; cat workspaces/Shared/Library/.sync-state.json | head -c 600; echo; sed -n 1,40p tools/search-media.mjs | head -60",
    "cd <guest-path> && head -30 _catalog/index.md; ls _catalog/json | wc -l; ls _catalog/json | head -3; cat ../../../../tools/search-media.mjs | grep -n \"readRecords\\|keywords-only\\|console.log\" | head",
    "cd <guest-path> && export PATH=\"$HOME/.local/node/bin:$HOME/.local/bin:$PATH\" && node tools/search-media.mjs --media workspaces/Shared/Library/inputs/media --query \"glass breaking\" --keywords-only --limit 3 2>&1; echo EXIT=$?",
    "cd <guest-path> && export PATH=\"$HOME/.local/node/bin:$HOME/.local/bin:$PATH\" && (timeout 900 node dev.mjs > /tmp/studio-manual.log 2>&1 &) ; for i in $(seq 1 80); do sleep 3; if curl -s -m 3 http://127.0.0.1:4179/ | grep -q \"Ad Production Kit\"; then echo UP after $((i*3))s; break; fi; done; tail -15 /tmp/studio-manual.log; curl -s -m 5 -o /dev/null -w \"%{http_code}\\n\" http://127.0.0.1:4179/",
    "cd <guest-path> && find app -path \"*api*\" -name \"route.*\" | head -20; grep -rn \"api/\" app --include=*.tsx -l | head -5",
    "cd <guest-path> && for p in \"api/Shared/Library/media\" \"api/Shared/Library/ads\" \"api/Shared/Library/workflow\"; do echo \"== $p\"; curl -s -m 10 -w \"\\nHTTP %{http_code}\\n\" \"http://127.0.0.1:4179/$p\" | head -c 600; echo; done; sed -n 1,40p \"app/api/[ws]/[brand]/media/route.js\"",
    "cd <guest-path> && pkill -f \"node dev.mjs\"; pkill -f \"next start\\|next dev\\|next-server\"; sleep 2; curl -s -m 3 -o /dev/null -w \"%{http_code}\\n\" http://127.0.0.1:4179/ ; echo \"--- schedule/cron/webhook grep:\"; grep -rniE \"cron|setInterval|--once|--now|webhook|schedule\" tools studio/app studio/lib studio/engine studio/dev.mjs README.md AGENTS.md 2>/dev/null | grep -v node_modules | head -30; echo \"--- tests:\"; find . -path ./studio/node_modules -prune -o -path ./node_modules -prune -o \\( -name \"*.test.*\" -o -name \"*.spec.*\" \\) -print | head; ls .github 2>&1 | head -2; grep -n \"test\" AGENTS.md | head",
    "cd <guest-path> && (ps -eo pid,args | grep -E \"[d]ev\\.mjs|[n]ext-server|[n]ext start\" ); for p in $(ps -eo pid,args | grep -E \"[d]ev\\.mjs|[n]ext-server|[n]ext start\" | awk '{print $1}'); do kill $p; done; sleep 2; curl -s -m 3 -o /dev/null -w \"%{http_code}\\n\" http://127.0.0.1:4179/; echo \"--- schedule/cron/webhook grep:\"; grep -rniE \"cron|setInterval|--once|--now|webhook|schedule\" tools studio/app studio/lib studio/engine studio/dev.mjs README.md AGENTS.md 2>/dev/null | head -30; echo \"--- tests:\"; find . \\( -path ./studio/node_modules -o -path ./node_modules \\) -prune -o \\( -name \"*.test.*\" -o -name \"*.spec.*\" \\) -print | head; grep -n -i \"test\" AGENTS.md | head",
    "ps -eo pid,args | grep -E \"dev|next\" | grep -v grep | head; echo done",
    "cd <guest-path> && grep -rniE \"cron|setInterval|--once|--now|webhook|schedule\" tools studio/app studio/lib studio/engine studio/dev.mjs README.md AGENTS.md | head -30; echo \"--- tests:\"; find . -path ./studio/node_modules -prune -o -path ./node_modules -prune -o \\( -name \"*.test.*\" -o -name \"*.spec.*\" \\) -print | head; grep -n -i \"test\" AGENTS.md | head",
    "cd <guest-path> && N=<guest-path>; $N tools/search-media.mjs --media workspaces/Shared/Library/inputs/media --query \"coin clink\" --keywords-only --limit 3; echo EXIT=$?; $N tools/search-media.mjs --media workspaces/Shared/Library/inputs/media --query \"sci-fi whoosh\" --type audio --keywords-only --limit 3; echo EXIT=$?; python3 -I -c \"\nt=open('README.md',encoding='utf-8').read()\nfor q in ['**Media** (search the library)','- \\`studio/\\` \u2014 the local web app','**Review and upload:**']:\n    print(repr(q), q in t)\n\"",
    "cd <guest-path> && mkdir -p .coldpass && N=<guest-path> && cat > .coldpass/probe.json <<'EOF'\n{\"kind\":\"http\",\"argv\":[\"<guest-path>\",\"studio/dev.mjs\"],\"cwd\":\"<guest-path>\",\"url\":\"http://127.0.0.1:4179/api/Shared/Library/media\",\"expected_text\":\"00001_loud-vocal-scream-sound-effect.mp3\"}\nEOF\ncat > .coldpass/claims.json <<'EOF'\n[{\"kind\":\"claim\",\"claim\":\"Media tab searches the library\",\"source\":\"**Media** (search the library)\",\"input\":\"sci-fi whoosh, audio only, keywords\",\"expected\":\"returns the sci-fi whoosh sound effect from the shared library catalog\",\"probe_kind\":\"cli\",\"argv\":[\"<guest-path>\",\"tools/search-media.mjs\",\"--media\",\"workspaces/Shared/Library/inputs/media\",\"--query\",\"sci-fi whoosh\",\"--type\",\"audio\",\"--keywords-only\",\"--limit\",\"3\"],\"expected_text\":\"00012_fast-sci-fi-metallic-whoosh-sting.mp3\",\"cwd\":\"<guest-path>\"}]\nEOF\ncat > .coldpass/examples.json <<'EOF'\n[{\"kind\":\"example\",\"claim\":\"search a brand's media catalog from the command line (tools/ scripts, search-media --help)\",\"source\":\"tools/search-media.mjs (HELP text) and README.md How it's organized\",\"input\":\"--query glass breaking, keywords only, limit 3\",\"expected\":\"finds the glass breaking shatter sound effect in the shared library\",\"argv\":[\"<guest-path>\",\"tools/search-media.mjs\",\"--media\",\"workspaces/Shared/Library/inputs/media\",\"--query\",\"glass breaking\",\"--keywords-only\",\"--limit\",\"3\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"00018_glass-breaking-shatter.mp3\"},{\"kind\":\"example\",\"claim\":\"check that a workspace's kie.ai key works before generating ads\",\"source\":\"README.md How to set it up, step 3 (kie.ai key) and tools/check-keys.mjs HELP\",\"reason\":\"Not tested: no kie.ai key is available in this guest, and the key is required for ad generation (images, video, voices, music). Only the key-free parts (studio and media search) were exercised.\"}]\nEOF\ncat > .coldpass/cycles.json <<'EOF'\n{\"detected\":false,\"reason\":\"Entry points inspected: README.md, tools/setup.sh, tools/*.mjs, studio/dev.mjs and studio/app (grep for cron, setInterval, --once, --now, webhook, schedule). The only timers are SSE heartbeat intervals (keep-alive pings in studio/app/api/[ws]/[brand]/watch and agent routes), which are not product cycles. The product runs on demand: the agent or the user runs a tool or opens the studio.\",\"checks\":[]}\nEOF\npython3 -I -m json.tool .coldpass/probe.json >/dev/null && python3 -I -m json.tool .coldpass/claims.json >/dev/null && python3 -I -m json.tool .coldpass/examples.json >/dev/null && python3 -I -m json.tool .coldpass/cycles.json >/dev/null && echo JSON_OK; ls -la .coldpass",
    "cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay; echo \"EXIT=$?\"",
    "cd <guest-path> && curl -s -m 3 -o /dev/null -w \"port4179=%{http_code}\\n\" http://127.0.0.1:4179/ ; ps -eo pid,args | grep -E \"[d]ev\\.mjs|[n]ext\" | head -3; mkdir -p .coldpass && cat > .coldpass/report.json <<'EOF'\n{\"outcome\":\"working\",\"fault_owner\":null,\"operation\":\"Install ADPK with the README's setup script, start the local studio web app, and search the shared media library.\",\"operation_scope\":\"Local, no kie.ai key. Covers the studio (http://127.0.0.1:4179) serving the media API and the keyword media search. Not tested: ad generation (images, video, voices, music), which needs a kie.ai API key that this guest does not have. Node 24.22.1 installed to <guest-path> (README requires Node 22.15+). Ubuntu 24.04, running as uid 1000 (no sudo needed since ffmpeg/whisper are not installed on Linux).\",\"steps\":[\"bash tools/setup.sh (run inside the checkout; the README's 'inside ADPK' form of the curl | bash installer)\",\"node studio/dev.mjs (studio launcher, usage in its header; studio built and served on port 4179)\",\"curl http://127.0.0.1:4179/api/Shared/Library/media (returned catalog records, including 00001_loud-vocal-scream-sound-effect.mp3)\",\"node tools/search-media.mjs --media workspaces/Shared/Library/inputs/media --query \\\"sci-fi whoosh\\\" --type audio --keywords-only --limit 3 (returned 00012_fast-sci-fi-metallic-whoosh-sting.mp3)\",\"node tools/search-media.mjs --media workspaces/Shared/Library/inputs/media --query \\\"glass breaking\\\" --keywords-only --limit 3 (returned 00018_glass-breaking-shatter.mp3)\"],\"deviations\":[\"Did not run the curl | bash one-liner: the checkout is already the ADPK snapshot, so setup.sh was run from it (its documented 'inside ADPK' usage). Its get_kit step therefore did not clone, and no git init/fetch was needed.\",\"setup.sh tried 'git config core.hooksPath' which failed silently because the snapshot is not a git repository; no effect on the run.\",\"setup.sh added PATH lines to ~/.bashrc and ~/.profile (HOME is <guest-path>), as the script does by design.\",\"ffmpeg and whisper.cpp were not installed: setup.sh only installs them on macOS; on Linux the media tools say how to get them when first used. Not needed for the operations tested.\",\"The studio was started by hand once to verify it, then stopped before the checker ran its own copy.\",\"Keyword search for 'coin clink' returned 0 results although the index describes a coin clink; not investigated further.\",\"Could not run the kie.ai key check (tools/check-keys.mjs) or any generation step: no key available. Recorded as a blocked example, not as a product failure.\"],\"stuck_step\":null,\"main_blocker\":null,\"plain_failure\":null,\"suggested_fix\":\"No fix needed for the tested operations. To test ad generation, add a kie.ai key to .env as <WS>_KIE_API_KEY and run node tools/check-keys.mjs <WS>.\"}\nEOF\npython3 -I -m json.tool .coldpass/report.json >/dev/null && echo REPORT_OK",
    "cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay | python3 -I -c \"import json,sys; d=json.load(sys.stdin); print('valid=',d['valid'],'problems=',d['problems'],'replay=',d['replay']['status'])\"; echo EXIT=${PIPESTATUS[0]}"
  ],
  "stuck_step": null,
  "error_excerpt": null,
  "what_it_did": "Install ADPK with the README's setup script, start the local studio web app, and search the shared media library.",
  "suggested_fix": null,
  "tokens_in": 717143,
  "tokens_out": 16079,
  "cost_usd": 0.025369059999999992,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "<guest-path>",
          "studio/dev.mjs"
        ],
        "kind": "http",
        "status": 200,
        "bytes": 20513,
        "url": "http://127.0.0.1:4179/api/Shared/Library/media",
        "response_checked": true,
        "response_excerpt": "00001_loud-vocal-scream-sound-effect.mp3\",\"type\":\"audio\",\"mime\":\"audio/mpeg\",\"bytes\":28890,\"duration\":1.7},\"source\":{\"kind\":\"upload\"},\"products\":[],\"people\":[],\"unknown_people\":[],\"text_in_media\":\"\",\"status\":\"cataloged\",\"analysis\":\"Sound: Loud, high-pitched vocal scream or screech with heavy distortion and chorus effects.\\n\\nSource: A human voice screaming, heavily processed with audio effects.\\n\\nShape: Sharp attack <email>, peaking instantly and sustaining before a quick <email>.\\n\\nMarks: Highlights a shock, jump scare, dramatic fail, or comedic reaction moment.\",\"analyzed_by\"",
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 1 connection review, 3 download and execute, 13 known vulnerability, 1 outside write.",
    "expected": "Reviewed as expected for a test run: resolver address lookups that send no data.",
    "findings": [
      {
        "kind": "connection-review",
        "count": 1,
        "note": "Repository processes attempted these non-loopback connections; proxies can hide the final hostname.",
        "location_count": 8,
        "process_count": 8
      },
      {
        "kind": "download-and-execute",
        "count": 3,
        "note": "Source contains download and execute; review its purpose.",
        "location_count": 2
      },
      {
        "kind": "known-vulnerability",
        "count": 13,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 6
      },
      {
        "kind": "outside-write",
        "count": 1,
        "note": "Repository processes attempted these writes outside documented output/cache paths.",
        "location_count": 1,
        "path": "/node_modules/@anthropic-ai/claude-agent-sdk",
        "process_count": 1,
        "processes": [
          {
            "executable": "<guest-path>",
            "owner": "repo",
            "path": "/node_modules/@anthropic-ai/claude-agent-sdk",
            "pid": "2765",
            "source": "<guest-path>"
          }
        ]
      }
    ],
    "context": [],
    "limitations": [
      "A short run cannot establish that code is safe.",
      "Connections show IP addresses; proxies can hide the final hostname.",
      "Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing."
    ],
    "static": {
      "dependency_note": "OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check."
    },
    "evidence_url": "/safety/?run=oscarlora--ad-production-kit-claude-haiku-5-5-1792807197520060724",
    "evidence_file": "/data/safety/oscarlora--ad-production-kit-claude-haiku-5-5-1792807197520060724.json.gz"
  },
  "agent_execution": "native_agent",
  "agent_runtime": "claude-code",
  "agent_runtime_version": "2.1.300 (Claude Code)",
  "tool_transport": "mcp-assigned-vm",
  "platform": "linux",
  "reasoning": "low",
  "service_tier": null,
  "resources": {
    "cpus": 2,
    "memory_mib": 4096,
    "disk_mib": 32768
  },
  "native_tool_calls": 23,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "4b91d5b7c88d445f80408d59d6705efcf525a59f",
    "url": "https://github.com/oscarlora/ad-production-kit"
  },
  "purpose": "test_rerun",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": null,
    "status": "resolved",
    "reason": null
  },
  "fix_id": null,
  "verifies_run_id": "oscarlora--ad-production-kit-claude-haiku-5-5-1792805447340188005",
  "hosting": null,
  "operation_scope": "product operation",
  "tool_calls": 23,
  "guest_setup": null,
  "runtime": null,
  "runtime_version": null,
  "runtime_revision": null,
  "source_revision": null,
  "evidence_version": null,
  "failure_origin": null,
  "evidence_strength": "readme_checked",
  "works": "yes",
  "install_s": null,
  "first_use_s": null,
  "mcp": "none",
  "needs": [],
  "needs_which": null,
  "agent_interface": [
    "api"
  ],
  "license": "MIT",
  "repo_url": "https://github.com/oscarlora/ad-production-kit",
  "cost_to_try": "free",
  "hardware": null,
  "what_failed": null,
  "local_or_hosted": "both",
  "cycle_checks": [
    {
      "kind": "cycle",
      "claim": "Scheduled or looping main behavior",
      "source": "repository entry points",
      "input": "source inspection",
      "expected": "identify the product trigger",
      "verdict": "yes",
      "outcome": "Entry points inspected: README.md, tools/setup.sh, tools/*.mjs, studio/dev.mjs and studio/app (grep for cron, setInterval, --once, --now, webhook, schedule). The only timers are SSE heartbeat intervals (keep-alive pings in studio/app/api/[ws]/[brand]/watch and agent routes), which are not product cycles. The product runs on demand: the agent or the user runs a tool or opens the studio.",
      "evidence": "Entry points inspected: README.md, tools/setup.sh, tools/*.mjs, studio/dev.mjs and studio/app (grep for cron, setInterval, --once, --now, webhook, schedule). The only timers are SSE heartbeat intervals (keep-alive pings in studio/app/api/[ws]/[brand]/watch and agent routes), which are not product cycles. The product runs on demand: the agent or the user runs a tool or opens the studio.",
      "command": ""
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "Media tab searches the library",
      "source": "**Media** (search the library)",
      "input": "sci-fi whoosh, audio only, keywords",
      "expected": "returns the sci-fi whoosh sound effect from the shared library catalog",
      "command": "<guest-path> tools/search-media.mjs --media workspaces/Shared/Library/inputs/media --query 'sci-fi whoosh' --type audio --keywords-only --limit 3",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: 00012_fast-sci-fi-metallic-whoosh-sting.mp3",
      "evidence": "00012_fast-sci-fi-metallic-whoosh-sting.mp3\n        A fast sci-fi digital whoosh sound effect featuring a quick pitch-rising sweep followed by\u2026\n  00005  [audio/?]  00005_sci-fi-digital-ui-transition-sound.mp3\n        Sound: Fast digital UI sound featuring a high-pitched synth laser chirp, swift whoosh, and\u2026\n",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "search a brand's media catalog from the command line (tools/ scripts, search-media --help)",
      "source": "tools/search-media.mjs (HELP text) and README.md How it's organized",
      "input": "--query glass breaking, keywords only, limit 3",
      "command": "<guest-path> tools/search-media.mjs --media workspaces/Shared/Library/inputs/media --query 'glass breaking' --keywords-only --limit 3",
      "evidence": "1 result for \"glass breaking\" [keywords]:\n  00018  [audio/?]  00018_glass-breaking-shatter.mp3\n        A glass breaking: a sharp shatter right at the start (<email> s), then a short scat\u2026",
      "deferred": false,
      "expected": "finds the glass breaking shatter sound effect in the shared library",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "check that a workspace's kie.ai key works before generating ads",
      "source": "README.md How to set it up, step 3 (kie.ai key) and tools/check-keys.mjs HELP",
      "input": "",
      "command": "",
      "evidence": "Not tested: no kie.ai key is available in this guest, and the key is required for ad generation (images, video, voices, music). Only the key-free parts (studio and media search) were exercised.",
      "deferred": false,
      "expected": "documented command completes successfully",
      "verdict": "blocked",
      "outcome": "Not tested: no kie.ai key is available in this guest, and the key is required for ad generation (images, video, voices, music). Only the key-free parts (studio and media search) were exercised."
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "archived": false,
    "commits_90d": 20,
    "last_commit_at": "2026-10-20T02:23:23Z",
    "last_release_at": null,
    "median_reply_hours": null,
    "merged_prs_90d": 1,
    "note": "actively maintained: last commit 3 days ago; 20 commits and 1 merged PRs in 90 days; 0 open issues, 0 open PRs; no releases",
    "open_issues": 0,
    "open_prs": 0,
    "reply_share": null,
    "reply_threads": 0,
    "verdict": "maintained"
  },
  "maintenance_verdict": "maintained",
  "maintenance_note": "actively maintained: last commit 3 days ago; 20 commits and 1 merged PRs in 90 days; 0 open issues, 0 open PRs; no releases",
  "maintained": "active",
  "maintained_note": "last commit 3 days ago",
  "last_commit_at": "2026-10-20T02:23:24Z",
  "last_release_at": null,
  "open_issues": null,
  "answered_issues": null,
  "platforms_claimed": [
    "linux",
    "mac",
    "windows"
  ],
  "topic": "agent-harness",
  "agent_interfaces": [
    {
      "interface": "api",
      "evidence": "independent checker",
      "observed": true,
      "operation_checked": true
    }
  ],
  "agent_interfaces_note": "README metadata is a discovery hint, not pinned documentation proof. Observed interfaces were exercised in this run. An empty list means unknown.",
  "mcp_context": null,
  "tested_at": "2026-10-24T02:05:15.933053+00:00",
  "tested_commit": "4b91d5b7c88d445f80408d59d6705efcf525a59f",
  "tested_with": {
    "agent": "claude-code",
    "agent_version": "2.1.300 (Claude Code)",
    "model": "claude-haiku-5-5",
    "model_route": "claude-haiku-5-5",
    "reasoning": "low",
    "os": "linux",
    "backend": "hyperv",
    "transport": "mcp-assigned-vm"
  },
  "setup_identity": {
    "repo": "oscarlora/ad-production-kit",
    "source": "https://github.com/oscarlora/ad-production-kit",
    "commit": "4b91d5b7c88d445f80408d59d6705efcf525a59f",
    "source_revision": null,
    "os": "linux",
    "architecture": null,
    "backend": "hyperv",
    "model": "claude-haiku-5-5",
    "model_version": "claude-haiku-5-5",
    "agent_execution": "native_agent",
    "agent_runtime": "claude-code",
    "agent_runtime_version": "2.1.300 (Claude Code)",
    "tool_transport": "mcp-assigned-vm",
    "runtime": null,
    "runtime_version": null,
    "runtime_revision": null,
    "sandbox_source": null,
    "guest_setup": null,
    "source_pin": {
      "commit": "4b91d5b7c88d445f80408d59d6705efcf525a59f",
      "url": "https://github.com/oscarlora/ad-production-kit"
    },
    "platform_details": {
      "os": "linux",
      "backend": "hyperv"
    },
    "platform_conflicts": null,
    "reasoning": "low",
    "service_tier": null,
    "resources": {
      "cpus": 2,
      "memory_mib": 4096,
      "disk_mib": 32768
    },
    "operation": "Install ADPK with the README's setup script, start the local studio web app, and search the shared media library.",
    "operation_scope": "product operation",
    "hosting": null,
    "kind": "repo",
    "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
    "evidence_version": null
  },
  "transcript_url": null,
  "report_url": "/reports/oscarlora--ad-production-kit-claude-haiku-5-5-1792807197520060724.json"
}
