Explains when to choose distributed transactions, its trade-offs, prerequisites, warning signs, and viable alternatives. It fixes adoption boundaries and observable failure evidence while keeping environment-specific limits configurable.
Package status: reference context ready for human review. The contract and test scenarios are complete, but no claim is made that an adopting implementation has passed them.
Decision
For Distributed transactions, adopt a recorded architecture decision with owned interfaces and dependency direction. Record the choice, drivers, prerequisites, alternatives, trade-offs, reversibility, and invalidation signals before implementation begins. This decision block focuses specifically on adoption decision. This package is a reference contract: the adopting team must choose numeric limits, providers, jurisdictions, and operational owners from evidence in its own environment.
Scope
- The Distributed transactions actors, inputs, outputs, states, policy or schema versions, and externally visible outcomes required for the adoption decision focus of this decision block.
- Primary and alternate interfaces, background work, caches, integrations, support paths, and evidence that can exercise the same boundary.
- Adoption-specific configuration, rollout, recovery, and verification responsibilities needed to apply the reference safely.
Outside this block
- Choosing a universal vendor, framework, jurisdiction, numeric threshold, retention period, or service-level objective for every adopter.
- Claiming that packaged scenarios have run against a downstream implementation or that this reference grants legal, security, or accessibility certification.
Contract
- Name the decision drivers, alternatives, constraints, reversibility, and conditions that would invalidate the chosen structure.
- Assign data, behavior, interface, deployment, and operational ownership at every boundary; shared code does not erase ownership.
- Permit dependencies only in the documented direction and exchange stable contracts rather than another component's internal model.
- Define timeout, capacity, consistency, degradation, deployment, migration, and recovery behavior for each remote or asynchronous boundary.
- Tie the choice to observed scale and organizational constraints rather than fashion or a hypothetical future load.
- Name the smallest reversible experiment that would reduce the largest remaining uncertainty.
- Prefer a single transactional authority for each invariant and use a versioned saga, outbox, inbox, reservation, or reconciliation protocol only when work must cross durable boundaries.
- Give every step and compensation durable identity, expected state, timeout, retry, ordering, and terminal outcome and expose partial progress without claiming atomicity the system cannot provide.
- For the adoption decision variant, enforce this declared boundary: explains when to choose distributed transactions, its trade-offs, prerequisites, warning signs, and viable alternatives.
Implementation guidance
- Score viable alternatives against the same drivers and keep rejected options with the reason and review trigger.
- Model Distributed transactions inputs, outputs, actors, states, invariants, side effects, and evidence before selecting framework or vendor details.
- Store the applicable Distributed transactions contract or policy version with material state so migrations, replay, and support decisions remain attributable.
- Introduce the path behind controlled rollout, compare expected and observed outcomes, and keep a tested recovery route until adoption evidence is complete.
Failure handling and safeguards
- A boundary failure remains contained, produces a stable caller outcome, and has a tested rollback or forward-recovery path.
- Invalid or contradictory Distributed transactions state is rejected or quarantined; the implementation never guesses a value that broadens authority or duplicates an effect.
- Retries are bounded and use durable identity; after exhaustion, work reaches an inspectable terminal state with an accountable owner.
Verification and operations
- Review the decision after a representative implementation slice and whenever an invalidation signal crosses its agreed boundary.
- Monitor Distributed transactions success, denial, validation failure, dependency failure, retry exhaustion, and recovery by contract version without sensitive payload dimensions.
- Re-run paired positive and negative fixtures after policy, schema, dependency, migration, or boundary changes and preserve the resulting evidence.
Adoption assumptions
- Names and values in the example are a concrete fixture, not universal defaults; adopters replace them through documented evidence and ownership.
- The adopting system can provide authenticated identity, durable operation or record versions, bounded telemetry, and a controlled path for change.
The executable-looking examples in this package are fixtures and acceptance contracts. Run the collection validator to check structure and metadata, then translate and execute the scenarios in the target repository before recording implementation evidence.