---
id: ADR-COM-FUL-004
title: Commit authorization with dispatch intent and queue a record pointer
product_area: commerce
module: fulfillment
revision: 1
status: proposed
design_intent: proposed
source_sha:
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
decision: >-
  Retain authorization and a dispatch entry together, then publish a pointer
  that the worker resolves from current records.
constrains:
  - WF-COM-FUL-002
  - WF-COM-FUL-003
  - SVC-COM-FUL-fulfillment
origin: >-
  Platform's queued-work standard (dispatch table, nudge after commit, schedule
  as recovery), as cited by
  services-commerce:modules/fulfillment/services/register/obligation-dispatcher.ts
  and dispatcher-nudge.ts; FND-COM-FUL-040
alternatives:
  - option: Publish while authorization is being committed.
    why_not: >-
      Publication during authorization can outlive rollback of the authorization
      transaction.
  - option: Store the delivery payload in each queue item.
    why_not: >-
      A retained payload can become stale; the current pointer lets the worker
      load present records.
  - option: Dispatch only when a nudge succeeds.
    why_not: A lost nudge needs another dispatch opportunity from the schedule.
consequences:
  - >-
    Authorization and dispatch retention prevent a local commit from omitting
    its dispatch entry.
  - >-
    Queue pointers carry versioned identities rather than a frozen application
    payload.
  - Reserved concurrency one and skip-locked claims control dispatcher overlap.
supersedes: []
evidence:
  - >-
    services-commerce at c8b66a98:
    modules/fulfillment/db/obligation-dispatches.table.ts;
    services/register/obligation-dispatcher.ts, obligation-queue.ts,
    dispatcher-nudge.ts; services/persistence/obligations.ts:openGate.
---

# Commit authorization with dispatch intent and queue a record pointer

## Context

Application delivery occurs outside the transaction that authorizes it.

## Decision

Retain authorization and a dispatch entry together, then publish a pointer that the worker resolves from current records.

## Alternatives Considered

Publish while authorization is being committed. Publication during authorization can outlive rollback of the authorization transaction.

Store the delivery payload in each queue item. A retained payload can become stale; the current pointer lets the worker load present records.

Dispatch only when a nudge succeeds. A lost nudge needs another dispatch opportunity from the schedule.

## Consequences

Dispatch tolerates duplicate publication. The minute schedule supplements a failed nudge without establishing a maximum delay. Platform-standard authority remains unverified.
