SG0 · Administrator only
The only credential available carries full administrative authority. Every workflow inherits maximum blast radius. Incompatible with the principle that no component holds more authority than its task requires.
SG1 · Role-scoped
Credentials map to coarse roles. Better than SG0, but a workflow needing one field inherits everything that role can reach.
SG2 · Resource-scoped
Authority can be limited to specific resource types and operations. Sufficient for most guarded write designs.
SG3 · Field-scoped or tier-scoped
Authority can be limited to specific fields or disclosure tiers. Required where guarded disclosure must exclude access credentials or payment detail from model context.
R0 · No programmatic read
No programmatic read. A specifically authorized legacy adapter or manual handoff may be needed. Declare provenance, contractual access and staleness; do not create a competing system of record.
R1 · Batch or file extract
Scheduled export only. Imposes a staleness budget equal to the export interval on every dependent workflow.
R2 · On-demand API, current state
Current state readable on request. Sufficient for most conversational reads, insufficient for reconstruction after an incident.
R3 · On-demand API with history
Current state plus historical or point-in-time reads. Required where the reliability checklist calls for reconstructing what a workflow saw at decision time.
W0 · No write capability
The guarded write pattern cannot execute. Any workflow reaching this system must terminate in a human queue with an authoritative handoff record.
W1 · Constrained or queued write
Writes accepted for a narrow set of operations, or accepted asynchronously without a synchronous authoritative receipt. Workflow must treat submission and confirmation as separate events.
W2 · Transactional write, no idempotency
Synchronous writes with a receipt, but a retried request may duplicate. The orchestration layer must supply de-duplication using a natural key, and must define behavior on ambiguous timeout.
W3 · Transactional write, idempotent
Synchronous writes with a receipt and idempotency honored across retries. Multi-system workflows may still require compensation or reconciliation.
EV0 · No event support
State change is invisible until something asks. Every dependent workflow carries a staleness budget that must be declared.
EV1 · Polling only
Change is discoverable by repeated read. Cost and latency scale with property count. Declare the interval and the resulting staleness.
EV2 · Webhook or stream, no replay
Push without a replay path. A consumer outage requires a documented reconciliation or backfill path; otherwise state can diverge.
EV3 · Webhook or stream with replay and versioned schema
Events are pushed, recoverable over a stated window, and carry a versioned schema. This is the target for check-in fan-out without standing manual reconciliation; delivery, processing and recovery must still be verified.
DG0 · None stated or best effort
Treat as lossy. Any workflow depending on it needs a periodic reconciliation read.
DG1 · At-most-once
Events may be lost but never duplicated. Requires reconciliation. Rarely the right choice for hospitality state changes.
DG2 · At-least-once
Events may repeat but are not lost. The correct target. Requires that every consumer be idempotent. Exactly-once should not be claimed or relied on across a vendor boundary.
OG0 · None
Events for the same reservation may arrive out of order. Consumers must use event time rather than receipt time and must tolerate a later event arriving first.
OG1 · Per resource key
Order preserved within a reservation, stay, or unit. Sufficient for hospitality workflows and the realistic target.
OG2 · Global
Total order across all events. Rarely offered, rarely needed, and usually a scalability liability.
SY0 · Manual or unscheduled
A person exports or re-enters the data. Staleness is unbounded and unknowable, so no answer built on it can state its own age.
SY1 · Scheduled batch or crawl
Refreshed on a stated interval. Staleness is bounded by the interval, which must be declared alongside it. Acceptable for policy and procedure content, not for availability or rates.
SY2 · On-request read, cached
Read when asked, behind a short cache. Staleness is bounded by the cache lifetime. The default for structured facts in a uniform estate.
SY3 · Event on change, with replay
Event on change with replay. Supports low-latency updates and recovery over a declared window; freshness still depends on ingestion, processing and the served view.