Skip to content

Commit a37207c

Browse files
fluffy314cursoragent
authored andcommitted
fix(agents): accept Primary-hot warmup KV path
Recognize an already-promoted Primary snapshot as a valid full-KV warmup and include exact reuse counters in any future gate failure. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 5a10dd4 commit a37207c

4 files changed

Lines changed: 44 additions & 3 deletions

File tree

scripts/agent_gan_inference_demo.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@
1818

1919
def _agent_cache_gate(warm_delta: dict, actual_delta: dict) -> bool:
2020
return (
21-
warm_delta["remote_hits"] >= 1
21+
(
22+
warm_delta.get("remote_hits", 0) >= 1
23+
or warm_delta.get("local_hits", 0) >= 1
24+
)
2225
and warm_delta["tokens_reused"] >= 1
2326
and warm_delta["tokens_computed"] == 0
2427
and warm_delta["fallbacks"] == 0

scripts/agent_gan_repl.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,23 @@ def _stage(
157157
return stage
158158

159159

160+
def _gate_failure(name: str, warm: dict, actual: dict) -> RuntimeError:
161+
keys = (
162+
"local_hits",
163+
"remote_hits",
164+
"remote_jobs",
165+
"tokens_reused",
166+
"tokens_computed",
167+
"fallbacks",
168+
"remote_job_failures",
169+
)
170+
compact = lambda delta: {key: delta.get(key, 0) for key in keys}
171+
return RuntimeError(
172+
f"{name} KV gate failed: "
173+
f"warm={compact(warm['delta'])} actual={compact(actual['delta'])}",
174+
)
175+
176+
160177
def main() -> int:
161178
install_signal_protection()
162179
parser = argparse.ArgumentParser()
@@ -274,7 +291,11 @@ def get_stats():
274291
generator_text,
275292
)
276293
if not generator_stage["ok"] and not telemetry_state["degraded"]:
277-
raise RuntimeError("Generator KV gate failed")
294+
raise _gate_failure(
295+
"Generator",
296+
generator_warm,
297+
generator_actual,
298+
)
278299
if remote_run:
279300
_telemetry_request(
280301
f"{args.dashboard}/v1/network/benchmarks/{run_id}",
@@ -337,7 +358,7 @@ def get_stats():
337358
extra_metrics=context_metrics,
338359
)
339360
if not critic_stage["ok"] and not telemetry_state["degraded"]:
340-
raise RuntimeError("Critic KV gate failed")
361+
raise _gate_failure("Critic", critic_warm, critic_actual)
341362
completed = None
342363
if remote_run:
343364
completed = _telemetry_request(

tests/inference_engine/bridge/test_agent_gan_demo.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ def test_agent_gate_accepts_remote_compute_or_exact_remote_cache_hit():
2323
}
2424
assert _agent_cache_gate(warm, actual)
2525
assert _agent_cache_gate({**warm, "remote_jobs": 0}, actual)
26+
assert _agent_cache_gate(
27+
{**warm, "remote_hits": 0, "local_hits": 1, "remote_jobs": 0},
28+
actual,
29+
)
2630
assert not _agent_cache_gate({**warm, "remote_hits": 0}, actual)
2731
assert not _agent_cache_gate({**warm, "tokens_reused": 0}, actual)
2832
assert not _agent_cache_gate({**warm, "fallbacks": 1}, actual)

tests/inference_engine/bridge/test_agent_gan_repl.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from scripts.agent_gan_repl import (
66
PrefillHeartbeat,
77
TokenPrinter,
8+
_gate_failure,
89
_stage,
910
_telemetry_request,
1011
build_critic_messages,
@@ -160,6 +161,18 @@ def timeout(*_args, **_kwargs):
160161
assert "inference will continue" in output
161162

162163

164+
def test_gate_failure_exposes_reuse_counters():
165+
error = _gate_failure(
166+
"Generator",
167+
{"delta": {"local_hits": 0, "remote_hits": 0}},
168+
{"delta": {"local_hits": 0, "fallbacks": 1}},
169+
)
170+
message = str(error)
171+
assert "Generator KV gate failed" in message
172+
assert "'remote_hits': 0" in message
173+
assert "'fallbacks': 1" in message
174+
175+
163176
def test_interactive_prompts_are_deterministic_for_kv_reuse():
164177
generator_a = build_generator_messages("prove RH")
165178
generator_b = build_generator_messages("prove RH")

0 commit comments

Comments
 (0)