7aea9c32b7
Contributor Attribution Check / check-attribution (pull_request) Failing after 10s
Docs Site Checks / docs-site-checks (pull_request) Successful in 18s
Supply Chain Audit / Scan PR for critical supply chain risks (pull_request) Successful in 9s
Tests / e2e (pull_request) Successful in 1m42s
Nix / nix (ubuntu-latest) (pull_request) Successful in 8m19s
Tests / test (pull_request) Failing after 10m20s
test_concurrent_inserts_settle_at_cap created 160 real AIAgent instances (8 threads × 20 inserts). Each real init does tool-registry scan, MCP discovery, config loading and file I/O — ~200 ms — which exhausts the 30 s pytest-timeout budget under parallel xdist load on a saturated runner (load avg 16-37 on 8 CPUs). Replace _real_agent() with a _StubAgent that exposes only the two attributes the cache enforcement logic actually touches: .client (non-None, checked by active-safety tests) and .close() (cleanup). The stub has no init work and runs in microseconds, so the concurrent insert test finishes in <1 s even under xdist pressure. Sister tests test_fill_to_cap_then_spillover and test_spillover_all_active_keeps_cache_over_cap use the same helper and benefit equally from the lighter fixture. Closes #5.