274466c050
- TagWriteLifecycle_OverGrpc_*: live-verified the gRPC tag-config write surface (EnsureTags create, AddTagExtendedProperties, StartJob rename, DeleteTags) against a self-cleaning synthetic sandbox tag. Hardened for the live server: pre-clean both names for a clean slate, retry the async StartJob rename (transiently rejectable right after create), tolerate the known extended-property read-back parser gap (value marker 0x01 vs compact-string 0x09 — a read-side gap, not a write failure), and assert no litter remains after cleanup (TagExistsAsync). Two consecutive clean passes. - ReadEventsAsync_OverGrpc_*: pins the current bounded reality — StartEventQuery succeeds but GetNextEventQueryResultBuffer long-polls on no data, so the bounded read throws ProtocolEvidenceMissingException on the idle dev box (no hang). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B6mcaT2PjRFKcogzp9UkfC