{
  "run_id": "pydanny--cached-property-claude-haiku-5-5-1793089866243260991",
  "date": "2026-10-27T08:34:27.581379+00:00",
  "repo": "pydanny/cached-property",
  "kind": "repo",
  "source": "https://github.com/pydanny/cached-property",
  "commit": "c032196d9afdf4b21d041c7d1492c95f5d1d6740",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-d5b140d3c0f8b95c2dd6fe6fc381a303cacb92679582c22317d8e78b572f0cf2",
  "pass": null,
  "outcome": "unverified",
  "time_to_working_s": null,
  "total_s": 201.33808255195618,
  "steps": [
    "cd <guest-path> && pwd && ls -la && id -u && python3 --version && (git status 2>&1 | head -3) && cat README* 2>/dev/null | head -150",
    "cd <guest-path> && tail -c +5900 README.md; echo ----; cat Makefile; echo ----; cat tox.ini; echo ----; cat requirements.txt; echo ----; cat setup.cfg; ls tests .coldpass; cat .github/workflows/* 2>/dev/null | head -60",
    "cd <guest-path> && grep -n -i \"install\\|pip\\|async\\|threaded\\|ttl\\|expire\" README.md | head -60; echo ----; sed -n 1,200p cached_property.py | head -40; ls -la .coldpass",
    "cd <guest-path> && grep -n \"^#\" README.md; python3 -m venv --help >/dev/null 2>&1 && echo VENV_OK || echo VENV_MISSING; python3 -m pip --version 2>&1 | head -1",
    "mkdir -p <guest-path> && python3 -m venv <guest-path> && <guest-path> -m pip install -q -r <guest-path> 2>&1 | tail -5; echo EXIT=$?; <guest-path> --version",
    "cd <guest-path> && <guest-path> -p no:cacheprovider 2>&1 | tail -15; echo EXIT=${PIPESTATUS[0]}",
    "cd <guest-path> && <guest-path> -p no:cacheprovider --collect-only -q 2>/dev/null | sed 's/::/ /g' | awk '{print $NF}' | sed 's/.*:://' | sort | uniq | tr '\\n' ' '; echo; <guest-path> -p no:cacheprovider -q -k \"ttl or reset or threaded or async\" 2>&1 | tail -1",
    "cd <guest-path> && for k in test_reset_cached_property test_ttl_expiry test_threads; do <guest-path> -p no:cacheprovider -q -k \"$k\" 2>&1 | tail -1; done; grep -n \"def test_reset\\|def test_ttl_expiry\" -r tests | head",
    "cd <guest-path> && cat > probe.json <<'EOF'\n{\"checks\":[{\"check\":\"install\",\"kind\":\"cli\",\"argv\":[\"<guest-path>\",\"-p\",\"no:cacheprovider\"],\"cwd\":\"<guest-path>\",\"expected_returncode\":0,\"expected_text\":\"27 passed\"}]}\nEOF\npython3 -I -m json.tool probe.json >/dev/null && echo OK",
    "cd <guest-path> && cat > claims.json <<'EOF'\n[\n{\"kind\":\"claim\",\"claim\":\"Results of cached functions can be invalidated by outside forces: deleting the cached attribute from __dict__ forces recomputation\",\"source\":\"Results of cached functions can be invalidated by outside forces.\",\"input\":\"tests/test_cached_property.py reset tests (-k test_reset_cached_property)\",\"expected\":\"all 6 reset tests pass\",\"probe_kind\":\"cli\",\"argv\":[\"<guest-path>\",\"-p\",\"no:cacheprovider\",\"-q\",\"-k\",\"test_reset_cached_property\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"6 passed\"},\n{\"kind\":\"claim\",\"claim\":\"The ttl versions of cached_property reset the cached value after a time\",\"source\":\"Sometimes you want the price of things to reset after a time.\",\"input\":\"tests/test_cached_property.py ttl tests (-k test_ttl_expiry)\",\"expected\":\"both ttl expiry tests pass\",\"probe_kind\":\"cli\",\"argv\":[\"<guest-path>\",\"-p\",\"no:cacheprovider\",\"-q\",\"-k\",\"test_ttl_expiry\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"2 passed\"}\n]\nEOF\npython3 -I -m json.tool claims.json >/dev/null && echo OK",
    "cd <guest-path> && cat > examples.json <<'EOF'\n[{\"kind\":\"example\",\"claim\":\"The documented test command runs the library's test suite\",\"source\":\"Makefile test target and .github/workflows Test with pytest step (pytest)\",\"input\":\"pytest run from the checkout root\",\"expected\":\"27 tests pass\",\"argv\":[\"<guest-path>\",\"-p\",\"no:cacheprovider\"],\"cwd\":\"<guest-path>\",\"env\":{},\"expected_text\":\"27 passed\"}]\nEOF\ncat > cycles.json <<'EOF'\n{\"detected\":false,\"reason\":\"Inspected README.md, setup.py, Makefile, tox.ini, requirements.txt and .github workflow. cached-property is a single importable module (cached_property.py) with no scheduler, cron, loop, --once/--now flag, or webhook. CI schedules are not product cycles.\",\"checks\":[]}\nEOF\npython3 -I -m json.tool examples.json >/dev/null && python3 -I -m json.tool cycles.json >/dev/null && echo OK",
    "ls -la <guest-path> /inputs/coldpass-preflight.py 2>&1; cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -60",
    "cd <guest-path> && grep -n \"def test_threads\" -A22 tests/test_cached_property.py | head -45; echo ----; sed -n 40,80p cached_property.py | head -60",
    "cd <guest-path> && grep -n \"def run_threads\" -B2 -A12 tests/test_cached_property.py",
    "cd <guest-path> && cat > claims.json <<'EOF'\n[\n{\"kind\":\"claim\",\"claim\":\"Results of cached functions can be invalidated by outside forces (del obj.__dict__[name] forces recomputation)\",\"source\":\"Results of cached functions can be invalidated by outside forces.\",\"testable\":false,\"reason\":\"cached-property is a library only: cached_property.py has no CLI, MCP server, or HTTP endpoint. The README shows Python usage only, and the only runnable command is the unit test suite, which the checker does not accept as a product operation. The reset behaviour is covered by tests/test_cached_property.py test_reset_cached_property (6 passed under pytest -k), but this is not a replayable product probe.\"},\n{\"kind\":\"claim\",\"claim\":\"The ttl versions of cached_property reset the cached value after a time\",\"source\":\"Sometimes you want the price of things to reset after a time.\",\"testable\":false,\"reason\":\"cached-property is a library only with no CLI, MCP server, or HTTP endpoint. The TTL behaviour is covered only by unit tests (test_ttl_expiry, 2 passed under pytest -k), which the checker does not accept as a product operation.\"}\n]\nEOF\npython3 -I -m json.tool claims.json >/dev/null && echo OK && cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | python3 -c \"import sys,json; d=json.loads(sys.stdin.read()); print(d['valid']); print(json.dumps(d['problems'],indent=1)[:1500]); print(d['replay']['status'])\"",
    "mkdir -p <guest-path> && cd <guest-path> && cat > report.json <<'EOF'\n{\"outcome\":\"unsupported\",\"fault_owner\":\"repo\",\"operation\":\"Install cached-property and run its documented unit test suite (pytest, as in the Makefile test target and CI workflow)\",\"operation_scope\":\"Library only (single module cached_property.py). Python 3.12.3 venv at <guest-path> with requirements.txt (pytest 8.3.3). No CLI, MCP server, HTTP endpoint, browser, credentials, or scheduled cycle exists. Shared CDP endpoint not used because nothing in the product needs a browser.\",\"steps\":[\"python3 -m venv <guest-path>\",\"<guest-path> -m pip install -r requirements.txt\",\"<guest-path> -p no:cacheprovider  (27 passed, 6 warnings)\"],\"deviations\":[\"Used a venv outside the checkout so the workspace stays clean; the package was not pip-installed because it is a single module imported from the checkout root.\",\"README has no install section; installed requirements.txt as CI does.\",\"Makefile and CI run plain 'pytest'; added -p no:cacheprovider so no .pytest_cache is written into the checkout.\",\"/inputs/coldpass-preflight.py does not exist in this guest; ran the checker at <guest-path> with the same flags.\",\"README Python usage snippets were not executed as a product operation because they are not a runnable command and agent-written scripts are not product evidence.\",\"Claims are marked testable:false because the library has no replayable entrypoint; the checker rejects the unit suite as a product operation.\"],\"stuck_step\":\"Replaying README claims and examples as product operations: the library exposes no CLI, server, or endpoint, and the documented example (pytest) output includes a thread traceback from the repo's own tests.\",\"main_blocker\":\"No runnable product entrypoint for the README's behaviour, plus a test-helper bug that prints 'TypeError: int object is not callable' in the threaded tests.\",\"plain_failure\":\"The library installs and its 27 unit tests pass, but the README describes only Python code to type into an interpreter, with no command that can be run to try it. The checker therefore cannot confirm the caching promises through a real product run. Separately, the repository's threaded tests pass a cached value instead of a method as the thread target, so they print a crash-looking error while still reporting success.\",\"suggested_fix\":\"Add a documented runnable entry (for example a small example script or doctest-runnable README section) so the caching behaviour can be exercised directly. In tests/test_cached_property.py, make run_threads target a real method (for example self.add_cached()) and fix the threaded tests so they exercise concurrent access without thread exceptions.\"}\nEOF\npython3 -I -m json.tool report.json >/dev/null && echo REPORT_OK; ls -la <guest-path>; ls <guest-path>",
    "cd <guest-path> && rm -rf __pycache__ tests/__pycache__ && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | python3 -c \"import sys,json; d=json.loads(sys.stdin.read()); print('valid=',d['valid']); print('replay=',d['replay']['status']); print([p[:120] for p in d['problems']])\""
  ],
  "stuck_step": "Replaying README claims and examples as product operations: the library exposes no CLI, server, or endpoint, and the documented example (pytest) output includes a thread traceback from the repo's own tests.",
  "error_excerpt": "No runnable product entrypoint for the README's behaviour, plus a test-helper bug that prints 'TypeError: int object is not callable' in the threaded tests.",
  "what_it_did": "Install cached-property and run its documented unit test suite (pytest, as in the Makefile test target and CI workflow)",
  "suggested_fix": "Add a documented runnable entry (for example a small example script or doctest-runnable README section) so the caching behaviour can be exercised directly. In tests/test_cached_property.py, make run_threads target a real method (for example self.add_cached()) and fix the threaded tests so they exercise concurrent access without thread exceptions.",
  "tokens_in": 418902,
  "tokens_out": 15256,
  "cost_usd": 0.019312720000000002,
  "usage_complete": true,
  "checks": [
    {
      "status": "PASS",
      "details": {
        "working": false,
        "argv": [
          "<guest-path>",
          "-p",
          "no:cacheprovider"
        ],
        "kind": "cli",
        "pytest_phases": {
          "producer": "coldpass-pytest-phases-v1",
          "complete": true,
          "reports": [
            {
              "nodeid": "tests/test_async_cached_property.py::TestCachedProperty::test_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_async_cached_property.py::TestCachedProperty::test_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_async_cached_property.py::TestCachedProperty::test_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_async_cached_property.py::TestCachedProperty::test_none_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_async_cached_property.py::TestCachedProperty::test_none_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_async_cached_property.py::TestCachedProperty::test_none_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_async_cached_property.py::TestCachedProperty::test_reset_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_async_cached_property.py::TestCachedProperty::test_reset_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_async_cached_property.py::TestCachedProperty::test_reset_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedProperty::test_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedProperty::test_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedProperty::test_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedProperty::test_none_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedProperty::test_none_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedProperty::test_none_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedProperty::test_reset_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedProperty::test_reset_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedProperty::test_reset_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedProperty::test_set_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedProperty::test_set_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedProperty::test_set_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_none_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_none_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_none_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_reset_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_reset_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_reset_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_set_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_set_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_set_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_threads",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_threads",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedProperty::test_threads",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_none_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_none_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_none_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_reset_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_reset_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_reset_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_set_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_set_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_set_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_ttl_expiry",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_ttl_expiry",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestCachedPropertyWithTTL::test_ttl_expiry",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_none_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_none_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_none_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_reset_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_reset_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_reset_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_set_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_set_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_set_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_threads",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_threads",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_threads",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_threads_ttl_expiry",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_threads_ttl_expiry",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_threads_ttl_expiry",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_ttl_expiry",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_ttl_expiry",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_cached_property.py::TestThreadedCachedPropertyWithTTL::test_ttl_expiry",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_coroutine_cached_property.py::TestCachedProperty::test_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_coroutine_cached_property.py::TestCachedProperty::test_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_coroutine_cached_property.py::TestCachedProperty::test_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_coroutine_cached_property.py::TestCachedProperty::test_none_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_coroutine_cached_property.py::TestCachedProperty::test_none_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_coroutine_cached_property.py::TestCachedProperty::test_none_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_coroutine_cached_property.py::TestCachedProperty::test_reset_cached_property",
              "when": "setup",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_coroutine_cached_property.py::TestCachedProperty::test_reset_cached_property",
              "when": "call",
              "outcome": "passed",
              "xfail": false
            },
            {
              "nodeid": "tests/test_coroutine_cached_property.py::TestCachedProperty::test_reset_cached_property",
              "when": "teardown",
              "outcome": "passed",
              "xfail": false
            }
          ],
          "trust": "same-process-untrusted"
        },
        "returncode": 0,
        "stdout": "============================= test session starts ==============================\nplatform linux -- Python 3.12.3, pytest-8.3.3, pluggy-1.7.0\nrootdir: <guest-path>\nplugins: cov-5.0.0\ncollected 27 items\n\ntests/test_async_cached_property.py ...                                  [ 11%]\ntests/test_cached_property.py .....................                      [ 88%]\ntests/test_coroutine_cached_property.py ...                              [100%]\n\n=============================== warnings summary ===============================\ntests/test_cached_property.py::TestThreadedCachedProperty::test_threads\n[excerpt truncated]",
        "stderr": "",
        "needs_credentials": false,
        "needs_browser": false,
        "scope": "partial: install"
      },
      "check": "install",
      "optional": false
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 2 known vulnerability.",
    "expected": "Reviewed as expected for a test run: attempted writes that failed, so nothing was written.",
    "findings": [
      {
        "kind": "known-vulnerability",
        "count": 2,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 1,
        "path": "pytest"
      }
    ],
    "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=pydanny--cached-property-claude-haiku-5-5-1793089866243260991",
    "evidence_file": "/data/safety/pydanny--cached-property-claude-haiku-5-5-1793089866243260991.json.gz"
  },
  "agent_execution": "native_agent",
  "agent_runtime": "claude-code",
  "agent_runtime_version": "2.1.310 (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": 17,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "c032196d9afdf4b21d041c7d1492c95f5d1d6740",
    "url": "https://github.com/pydanny/cached-property"
  },
  "purpose": "test_rerun",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": "repo",
    "status": "diagnosed",
    "reason": "No runnable product entrypoint for the README's behaviour, plus a test-helper bug that prints 'TypeError: int object is not callable' in the threaded tests."
  },
  "fix_id": null,
  "verifies_run_id": "pydanny--cached-property-claude-haiku-5-5-1793088195231693952",
  "hosting": null,
  "operation_scope": "partial checks",
  "tool_calls": 17,
  "guest_setup": null,
  "runtime": null,
  "runtime_version": null,
  "runtime_revision": null,
  "source_revision": null,
  "evidence_version": null,
  "failure_origin": null,
  "evidence_strength": "nothing_checked",
  "works": "untested",
  "install_s": null,
  "first_use_s": null,
  "mcp": "none",
  "needs": [],
  "needs_which": null,
  "agent_interface": [],
  "license": "BSD-3-Clause",
  "repo_url": "https://github.com/pydanny/cached-property",
  "cost_to_try": null,
  "hardware": null,
  "what_failed": "No runnable product entrypoint for the README's behaviour, plus a test-helper bug that prints 'TypeError: int object is not callable' in the threaded tests.",
  "local_or_hosted": null,
  "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": "Inspected README.md, setup.py, Makefile, tox.ini, requirements.txt and .github workflow. cached-property is a single importable module (cached_property.py) with no scheduler, cron, loop, --once/--now flag, or webhook. CI schedules are not product cycles.",
      "evidence": "Inspected README.md, setup.py, Makefile, tox.ini, requirements.txt and .github workflow. cached-property is a single importable module (cached_property.py) with no scheduler, cron, loop, --once/--now flag, or webhook. CI schedules are not product cycles.",
      "command": ""
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "Results of cached functions can be invalidated by outside forces (del obj.__dict__[name] forces recomputation)",
      "source": "Results of cached functions can be invalidated by outside forces.",
      "input": "",
      "expected": "",
      "command": "",
      "verdict": "blocked",
      "outcome": "cached-property is a library only: cached_property.py has no CLI, MCP server, or HTTP endpoint. The README shows Python usage only, and the only runnable command is the unit test suite, which the checker does not accept as a product operation. The reset behaviour is covered by tests/test_cached_property.py test_reset_cached_property (6 passed under pytest -k), but this is not a replayable product probe.",
      "evidence": "cached-property is a library only: cached_property.py has no CLI, MCP server, or HTTP endpoint. The README shows Python usage only, and the only runnable command is the unit test suite, which the checker does not accept as a product operation. The reset behaviour is covered by tests/test_cached_property.py test_reset_cached_property (6 passed under pytest -k), but this is not a replayable product probe.",
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "The ttl versions of cached_property reset the cached value after a time",
      "source": "Sometimes you want the price of things to reset after a time.",
      "input": "",
      "expected": "",
      "command": "",
      "verdict": "blocked",
      "outcome": "cached-property is a library only with no CLI, MCP server, or HTTP endpoint. The TTL behaviour is covered only by unit tests (test_ttl_expiry, 2 passed under pytest -k), which the checker does not accept as a product operation.",
      "evidence": "cached-property is a library only with no CLI, MCP server, or HTTP endpoint. The TTL behaviour is covered only by unit tests (test_ttl_expiry, 2 passed under pytest -k), which the checker does not accept as a product operation.",
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "The documented test command runs the library's test suite",
      "source": "Makefile test target and .github/workflows Test with pytest step (pytest)",
      "input": "pytest run from the checkout root",
      "command": "<guest-path> -p no:cacheprovider",
      "evidence": "urn self.run(*args, **kwds)\n\ntests/test_coroutine_cached_property.py::TestCachedProperty::test_reset_cached_property\n  /usr/lib/python3.12/unittest/case.py:690: DeprecationWarning: It is deprecated to return a value that is not None from a test case (<bound method TestCachedProperty.test_reset_cached_property of <tests.test_coroutine_cached_property.TestCachedProperty testMethod=test_reset_cached_property>>)\n    return self.run(*args, **kwds)\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n======================== 27 passed, 6 warnings in 4.56s ========================",
      "deferred": false,
      "expected": "27 tests pass",
      "returncode": 0,
      "verdict": "no",
      "outcome": "command output contains a crash diagnostic"
    }
  ],
  "does_what_it_says": null,
  "maintenance": {
    "archived": false,
    "commits_90d": 0,
    "last_commit_at": "2024-10-25T15:43:11Z",
    "last_release_at": "2024-10-25T15:49:17Z",
    "median_reply_hours": 562.5,
    "merged_prs_90d": 0,
    "note": "abandoned: last commit 731 days ago; 0 commits and 0 merged PRs in 90 days; 28 open issues, 19 open PRs; 6 of 30 recent threads got a maintainer reply, median first reply 562.5h; latest release 2024-10-25",
    "open_issues": 28,
    "open_prs": 19,
    "reply_share": 0.2,
    "reply_threads": 30,
    "verdict": "abandoned"
  },
  "maintenance_verdict": "abandoned",
  "maintenance_note": "abandoned: last commit 731 days ago; 0 commits and 0 merged PRs in 90 days; 28 open issues, 19 open PRs; 6 of 30 recent threads got a maintainer reply, median first reply 562.5h; latest release 2024-10-25",
  "maintained": "dormant",
  "maintained_note": "last commit 689 days ago; 2 open issues, 1 answered or closed",
  "last_commit_at": "2024-12-07T05:23:03Z",
  "last_release_at": "2024-10-25T15:49:17Z",
  "open_issues": 2,
  "answered_issues": 1,
  "platforms_claimed": [
    "linux"
  ],
  "topic": "coding",
  "agent_interfaces": [
    {
      "interface": "cli",
      "evidence": "independent checker",
      "observed": true,
      "operation_checked": false
    }
  ],
  "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-27T08:34:27.581379+00:00",
  "tested_commit": "c032196d9afdf4b21d041c7d1492c95f5d1d6740",
  "tested_with": {
    "agent": "claude-code",
    "agent_version": "2.1.310 (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": "pydanny/cached-property",
    "source": "https://github.com/pydanny/cached-property",
    "commit": "c032196d9afdf4b21d041c7d1492c95f5d1d6740",
    "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.310 (Claude Code)",
    "tool_transport": "mcp-assigned-vm",
    "runtime": null,
    "runtime_version": null,
    "runtime_revision": null,
    "sandbox_source": null,
    "guest_setup": null,
    "source_pin": {
      "commit": "c032196d9afdf4b21d041c7d1492c95f5d1d6740",
      "url": "https://github.com/pydanny/cached-property"
    },
    "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 cached-property and run its documented unit test suite (pytest, as in the Makefile test target and CI workflow)",
    "operation_scope": "partial checks",
    "hosting": null,
    "kind": "repo",
    "test_version": "readme-d5b140d3c0f8b95c2dd6fe6fc381a303cacb92679582c22317d8e78b572f0cf2",
    "evidence_version": null
  },
  "transcript_url": "/transcripts/pydanny--cached-property-claude-haiku-5-5-1793089866243260991.txt",
  "report_url": "/reports/pydanny--cached-property-claude-haiku-5-5-1793089866243260991.json"
}
