todo-48.3-strict-canonical-types-and-scope-token-cleanup.md 1.3 KB

Todo 48.3 Strict Canonical Types and Scope Token Cleanup Plan

Status: in_progress

Goal

Close the final bounded batch findings: canonical identity must use strict JSON type equality, and releasing a scope must retain no permanent generation tombstone.

Scope

  • Compare JSON round-trip values recursively with exact types, matching kernel strictness; IntEnum(1), True, 1, and 1.0 must not be conflated unless a declared normalizer intentionally canonicalizes them.
  • Replace per-scope integer generations with globally unique generation tokens:
    • first execution for a scope allocates a unique token;
    • concurrent calls for the active scope share the token;
    • release_scope() removes the scope token and associated maps;
    • immediate reuse allocates a new token that can never equal an old late task token;
    • late completion checks token equality and cannot store when the scope is absent or reused.
  • Assert thousands of execute/release cycles leave no scope-token, replay, or in-flight growth.

Files

  • Modify: src/agent_lab/application/events/batch.py
  • Modify: tests/test_event_batch.py

Verification

  • UV_CACHE_DIR=.uv-cache uv run pytest tests/test_event_batch.py -q
  • UV_CACHE_DIR=.uv-cache uv run pytest
  • git diff --check