diff --git a/scripts/agent_gan_inference_demo.py b/scripts/agent_gan_inference_demo.py index 0ee3db7..9ac263b 100644 --- a/scripts/agent_gan_inference_demo.py +++ b/scripts/agent_gan_inference_demo.py @@ -18,8 +18,11 @@ def _agent_cache_gate(warm_delta: dict, actual_delta: dict) -> bool: return ( - warm_delta["remote_jobs"] >= 1 - and warm_delta["remote_hits"] >= 1 + warm_delta["remote_hits"] >= 1 + and warm_delta["tokens_reused"] >= 1 + and warm_delta["tokens_computed"] == 0 + and warm_delta["fallbacks"] == 0 + and warm_delta["remote_job_failures"] == 0 and actual_delta["local_hits"] >= 1 and actual_delta["remote_jobs"] == 0 and actual_delta["tokens_computed"] == 0 diff --git a/tests/inference_engine/bridge/test_agent_gan_demo.py b/tests/inference_engine/bridge/test_agent_gan_demo.py index cfa6f6a..5b91fd5 100644 --- a/tests/inference_engine/bridge/test_agent_gan_demo.py +++ b/tests/inference_engine/bridge/test_agent_gan_demo.py @@ -6,8 +6,15 @@ ) -def test_agent_gate_requires_remote_warmup_and_primary_hot_inference(): - warm = {"remote_jobs": 1, "remote_hits": 1} +def test_agent_gate_accepts_remote_compute_or_exact_remote_cache_hit(): + warm = { + "remote_jobs": 1, + "remote_hits": 1, + "tokens_reused": 10, + "tokens_computed": 0, + "fallbacks": 0, + "remote_job_failures": 0, + } actual = { "local_hits": 1, "remote_jobs": 0, @@ -15,7 +22,11 @@ def test_agent_gate_requires_remote_warmup_and_primary_hot_inference(): "fallbacks": 0, } assert _agent_cache_gate(warm, actual) - assert not _agent_cache_gate({**warm, "remote_jobs": 0}, actual) + assert _agent_cache_gate({**warm, "remote_jobs": 0}, actual) + assert not _agent_cache_gate({**warm, "remote_hits": 0}, actual) + assert not _agent_cache_gate({**warm, "tokens_reused": 0}, actual) + assert not _agent_cache_gate({**warm, "fallbacks": 1}, actual) + assert not _agent_cache_gate({**warm, "remote_job_failures": 1}, actual) assert not _agent_cache_gate(warm, {**actual, "local_hits": 0}) assert not _agent_cache_gate(warm, {**actual, "fallbacks": 1}) diff --git a/tests/inference_engine/bridge/test_agent_gan_repl.py b/tests/inference_engine/bridge/test_agent_gan_repl.py index b5297fa..3c9e0f0 100644 --- a/tests/inference_engine/bridge/test_agent_gan_repl.py +++ b/tests/inference_engine/bridge/test_agent_gan_repl.py @@ -34,6 +34,9 @@ def test_repl_stage_is_redacted_and_passes_cache_gate(): "remote_jobs": 1, "remote_hits": 1, "tokens_reused": 10, + "tokens_computed": 0, + "fallbacks": 0, + "remote_job_failures": 0, }, } actual = { @@ -101,7 +104,14 @@ def test_stage_includes_full_context_metrics(): warm = { "prefix_tokens": 10, "e2e_s": 1, - "delta": {"remote_jobs": 1, "remote_hits": 1, "tokens_reused": 10}, + "delta": { + "remote_jobs": 1, + "remote_hits": 1, + "tokens_reused": 10, + "tokens_computed": 0, + "fallbacks": 0, + "remote_job_failures": 0, + }, } actual = { "prefix_tokens": 10,