51b471c128
Three integration points that connect B6a's buffer-side primitives to the customer-facing flow per Q5: - IdempotencyKeyConcern.handleTriggerRequest falls through to buffer.lookupIdempotency after a PG miss. Buffered hits return isCached:true with a synthesised TaskRun via the existing findRunByIdWithMollifierFallback. Skipped when resumeParentOnCompletion is set: waitpoint blocking requires a PG row that doesn't exist yet; the follow-up accept SETNX still dedupes the trigger itself. Buffer outages fail open to "no cache hit" so the trigger hot path is never wedged by a transient Redis issue. - mollifyTrigger passes idempotencyKey + taskIdentifier through to buffer.accept. The SETNX race loser receives duplicate_idempotency with the winner's runId; the API response echoes it with isCached:true, matching PG-side cache-hit shape. - ResetIdempotencyKeyService calls buffer.resetIdempotency alongside the existing PG updateMany. 404 only fires when both stores report nothing bound. Buffer outage during reset is logged and treated as a miss; PG-side reset still works.