M-7: OutboundBatcher.postToken takes turnId; per-turn flush (R-002 BLOCKING) #135

Open
opened 2026-05-12 19:37:33 +00:00 by KofTwentyTwo · 0 comments
KofTwentyTwo commented 2026-05-12 19:37:33 +00:00 (Migrated from github.com)

Goal

OutboundBatcher.postToken takes turnId; flushes per-turn buffer. Pending buffer keyed by turnId. flushAndSend for turnEnded flushes ONLY that turn's pending tokens. On bargeIn, all superseded-turn pending tokens are dropped. R-002 mitigation (CRITICAL).

Scope

  • OutboundBatcher.postToken(turnId:, token:)
  • Pending buffer is [TurnID: [Token]]
  • flushAndSend(turnId:) flushes ONLY that turn
  • On bargeIn, drop pendingBuffer[supersededTurnId]

Files

  • packages/Bus/Sources/Bus/OutboundBatcher.swift

Acceptance

  • Buffer partitioned by turnId
  • Flush is per-turn
  • bargeIn drops superseded turn's pending tokens
  • R-002 BLOCKING: submit-cancel-submit within 30 ms — no turn-1 token appears under turn-2's turnId

Test

S-TURN-001 BLOCKING regression: submit→cancel→submit within 30 ms; assert zero cross-turn token leak.

Parent epic

#11

Source

.planning/architecture/JARVIS-API-MIGRATION-PLAN.md §2.8 (M-7.1)
.planning/architecture/REVIEW-MIGRATION-RISK.md R-002

## Goal OutboundBatcher.postToken takes turnId; flushes per-turn buffer. Pending buffer keyed by turnId. flushAndSend for turnEnded flushes ONLY that turn's pending tokens. On bargeIn, all superseded-turn pending tokens are dropped. R-002 mitigation (CRITICAL). ## Scope - `OutboundBatcher.postToken(turnId:, token:)` - Pending buffer is `[TurnID: [Token]]` - `flushAndSend(turnId:)` flushes ONLY that turn - On `bargeIn`, drop `pendingBuffer[supersededTurnId]` ## Files - `packages/Bus/Sources/Bus/OutboundBatcher.swift` ## Acceptance - [ ] Buffer partitioned by turnId - [ ] Flush is per-turn - [ ] bargeIn drops superseded turn's pending tokens - [ ] **R-002 BLOCKING:** submit-cancel-submit within 30 ms — no turn-1 token appears under turn-2's turnId ## Test `S-TURN-001` BLOCKING regression: submit→cancel→submit within 30 ms; assert zero cross-turn token leak. ## Parent epic #11 ## Source `.planning/architecture/JARVIS-API-MIGRATION-PLAN.md` §2.8 (M-7.1) `.planning/architecture/REVIEW-MIGRATION-RISK.md` R-002
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/Jarvis#135