Status: done
Replay now preserves complete outcomes, released scopes cannot late-store, invalid arguments cannot inherit success, timed-out synchronous work retains conflict/concurrency leases until actual completion, and coalesced results retain correct IDs with one logical policy message.
Close the remaining Important batch findings by preserving complete execution semantics in cache/replay and keeping physical concurrency resources held while timed-out synchronous work is still running.
{}._ExecutionOutcome, including batch_timed_out, rather than inferring phase semantics from error text.release_scope() advances the generation and clears completed/in-flight mappings for the released generation;deduplicated_from result provenance and clone correlation safely:
event_id and tool reply ID match each requested call;event_id is rewritten only when it equals the primary result ID;src/agent_lab/application/events/models.pysrc/agent_lab/application/events/batch.pysrc/agent_lab/application/tools.pysrc/agent_lab/application/runtime.py only if audit/provenance exposure needs alignmenttests/test_event_batch.pytests/test_debug_runtime.pyClose Todo 48 only when all named concurrency/cache findings are permanent regressions and no Critical/Important issues remain.
UV_CACHE_DIR=.uv-cache uv run pytest tests/test_event_batch.py tests/test_debug_runtime.py -qUV_CACHE_DIR=.uv-cache uv run pytestgit diff --check