| Transaction API | Owns authentication, validation, quotas, deadlines, and routing. In this design it participates in: Resolve entity/account/device keys and fetch streaming/profile features in parallel. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents the external caller from also owning the contract and failure behavior of Decision Gateway. | Put protocol, authentication, quotas, and business transitions in one process. Acceptable at low scale, but it couples external traffic risk to domain releases. Here that simpler choice would couple “Online feature missing at decision time” to the external caller. | Costs another hop, policy distribution, and a high-blast-radius fleet. Introduce it when many clients or services need one protocol and protection boundary. Measure the latency, saturation, lag, or mismatch at the Transaction API boundary before extracting or scaling it. |
| Decision Gateway | Owns authentication, validation, quotas, deadlines, and routing. In this design it participates in: Evaluate deterministic rules and model under a fixed feature/model version budget. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Transaction API from also owning the contract and failure behavior of Streaming Feature Engine. | Put protocol, authentication, quotas, and business transitions in one process. Acceptable at low scale, but it couples external traffic risk to domain releases. Here that simpler choice would couple “Adversary probes threshold” to Transaction API. | Costs another hop, policy distribution, and a high-blast-radius fleet. Introduce it when many clients or services need one protocol and protection boundary. Measure the latency, saturation, lag, or mismatch at the Decision Gateway boundary before extracting or scaling it. |
| Streaming Feature Engine | Preserves durable ordering, replay, and consumer checkpoints. In this design it participates in: Combine outputs through policy thresholds and return allow/challenge/review/deny. | Decouples bursts and failure from user acknowledgment. It prevents Decision Gateway from also owning the contract and failure behavior of Online Feature Store. | Call every downstream consumer synchronously. That couples user latency and availability to analytics, notification, indexing, and audit dependencies. Here that simpler choice would couple “Manual-review backlog grows” to Decision Gateway. | Costs eventual consistency, schema evolution, replay tooling, idempotent consumers, and lag operations. Earn it when bursts or downstream failure must not block acknowledgment. Measure the latency, saturation, lag, or mismatch at the Streaming Feature Engine boundary before extracting or scaling it. |
| Online Feature Store | Owns authoritative versioned state or immutable evidence. In this design it participates in: Persist feature snapshot, reasons, and versions before asynchronous case routing. | Defines the source of truth and commit boundary. It prevents Streaming Feature Engine from also owning the contract and failure behavior of Profile Store. | Let each service persist its own interpretation. That removes one clear commit boundary and makes retries, support, and reconciliation ambiguous. Here that simpler choice would couple “Chargeback label arrives months later” to Streaming Feature Engine. | Costs schema migration, replication, backup, and shard ownership. Split storage only when access patterns, retention, or compliance boundaries materially differ. Measure the latency, saturation, lag, or mismatch at the Online Feature Store boundary before extracting or scaling it. |
| Profile Store | Owns authoritative versioned state or immutable evidence. In this design it participates in: Join delayed labels, monitor drift/calibration, and shadow new models before promotion. | Defines the source of truth and commit boundary. It prevents Online Feature Store from also owning the contract and failure behavior of Rules Engine. | Let each service persist its own interpretation. That removes one clear commit boundary and makes retries, support, and reconciliation ambiguous. Here that simpler choice would couple “New model shifts false-positive rate” to Online Feature Store. | Costs schema migration, replication, backup, and shard ownership. Split storage only when access patterns, retention, or compliance boundaries materially differ. Measure the latency, saturation, lag, or mismatch at the Profile Store boundary before extracting or scaling it. |
| Rules Engine | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Resolve entity/account/device keys and fetch streaming/profile features in parallel. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Profile Store from also owning the contract and failure behavior of Model Serving. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Online feature missing at decision time” to Profile Store. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Rules Engine boundary before extracting or scaling it. |
| Model Serving | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Evaluate deterministic rules and model under a fixed feature/model version budget. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Rules Engine from also owning the contract and failure behavior of Ensemble / Policy. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Adversary probes threshold” to Rules Engine. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Model Serving boundary before extracting or scaling it. |
| Ensemble / Policy | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Combine outputs through policy thresholds and return allow/challenge/review/deny. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Model Serving from also owning the contract and failure behavior of Decision Service. | Embed policy in every caller. Rules then drift by deployment version and emergency changes require fleet-wide redeployment. Here that simpler choice would couple “Manual-review backlog grows” to Model Serving. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Ensemble / Policy boundary before extracting or scaling it. |
| Decision Service | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Persist feature snapshot, reasons, and versions before asynchronous case routing. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Ensemble / Policy from also owning the contract and failure behavior of Manual Review Queue. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Chargeback label arrives months later” to Ensemble / Policy. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Decision Service boundary before extracting or scaling it. |
| Manual Review Queue | Preserves durable ordering, replay, and consumer checkpoints. In this design it participates in: Join delayed labels, monitor drift/calibration, and shadow new models before promotion. | Decouples bursts and failure from user acknowledgment. It prevents Decision Service from also owning the contract and failure behavior of Case Management. | Call every downstream consumer synchronously. That couples user latency and availability to analytics, notification, indexing, and audit dependencies. Here that simpler choice would couple “New model shifts false-positive rate” to Decision Service. | Costs eventual consistency, schema evolution, replay tooling, idempotent consumers, and lag operations. Earn it when bursts or downstream failure must not block acknowledgment. Measure the latency, saturation, lag, or mismatch at the Manual Review Queue boundary before extracting or scaling it. |
| Case Management | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Resolve entity/account/device keys and fetch streaming/profile features in parallel. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Manual Review Queue from also owning the contract and failure behavior of Decision Audit Store. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Online feature missing at decision time” to Manual Review Queue. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Case Management boundary before extracting or scaling it. |
| Decision Audit Store | Owns authoritative versioned state or immutable evidence. In this design it participates in: Evaluate deterministic rules and model under a fixed feature/model version budget. | Proves correctness and supports controlled recovery. It prevents Case Management from also owning the contract and failure behavior of Label Pipeline. | Let each service persist its own interpretation. That removes one clear commit boundary and makes retries, support, and reconciliation ambiguous. Here that simpler choice would couple “Adversary probes threshold” to Case Management. | Costs schema migration, replication, backup, and shard ownership. Split storage only when access patterns, retention, or compliance boundaries materially differ. Measure the latency, saturation, lag, or mismatch at the Decision Audit Store boundary before extracting or scaling it. |
| Label Pipeline | Executes idempotent asynchronous work under lease and retry policy. In this design it participates in: Combine outputs through policy thresholds and return allow/challenge/review/deny. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Decision Audit Store from also owning the contract and failure behavior of Model Monitor. | Perform the work before acknowledging the caller. This gives simpler consistency but unbounded tail latency and fragile retries. Here that simpler choice would couple “Manual-review backlog grows” to Decision Audit Store. | Costs leases, checkpoints, retries, DLQs, and lag operations. Separate once execution time or burstiness no longer fits the request deadline. Measure the latency, saturation, lag, or mismatch at the Label Pipeline boundary before extracting or scaling it. |
| Model Monitor | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Persist feature snapshot, reasons, and versions before asynchronous case routing. | Proves correctness and supports controlled recovery. It prevents Label Pipeline from also owning the contract and failure behavior of Shadow Deployment. | Infer correctness from request logs. Logs do not prove durable business state, detect silent drift, or safely repair ambiguous outcomes. Here that simpler choice would couple “Chargeback label arrives months later” to Label Pipeline. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Model Monitor boundary before extracting or scaling it. |
| Shadow Deployment | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Join delayed labels, monitor drift/calibration, and shadow new models before promotion. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Model Monitor from also owning the contract and failure behavior of operators and repair tooling. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “New model shifts false-positive rate” to Model Monitor. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Shadow Deployment boundary before extracting or scaling it. |