Snowflake decision publication service¶
| ID | MOD-079 |
| System | SD07 |
| Repo | bank-platform |
| Build status | Deployed |
| Deployed | Yes |
| Last commit | 39bbf8c1b8255fa6429add330de438d2899dc558 |
The Snowflake decision publication service is the operational apply service defined in ADR-036. It is the only governed path by which Snowflake-generated decisions cross the Snowflake → Neon boundary and take operational effect.
Purpose¶
Snowflake produces decisions — onboarding outcomes, CDD tier assignments, fraud actions, credit pre-approvals, AML case escalations. These decisions must be applied to Neon's operational tables to change how the bank treats a customer. Without a governed publication path, decisions either do not take effect or require ad-hoc database writes that undermine auditability.
This module receives published decision payloads on the decision_inbox.decision_result_inbox table in Neon, validates the contract version and schema, deduplicates on the idempotency_key, and applies the decision to the correct operational table. Every applied decision is recorded in decision_delivery_log with its source computation, contract version, policy references, and effective timestamp.
What it does¶
- Receives versioned decision payloads from Snowflake's
decision_curated.decision_resultview via the ADR-036 publication contract - Validates schema version, entity type, and mandatory fields before applying anything
- Deduplicates on
decision_id+idempotency_key— safe to replay without double-applying - Routes each decision type to its target operational table: onboarding →
customers.onboarding_status; CDD tier →customers.cdd_tier; fraud action →accounts.status; credit pre-approval →credit_decisions; AML escalation →aml_cases.status - Logs every outcome — applied, duplicate, rejected — to
decision_delivery_log
What it does not do¶
This module does not write Tier 3 reporting data. It does not receive raw Snowflake features or intermediate model scores. It does not accept direct database writes from Snowflake — all traffic arrives via the ADR-036 decision inbox contract. For the data tier classification see ADR-038.
Failure handling¶
If the apply step fails after successful inbox receipt, the record remains in the inbox with a failed status and is retried. Dead-letter records older than 24 hours are escalated via the operations work queue (MOD-064). Snowflake does not retry — the inbox record is the durable state.
Module dependencies¶
Depends on¶
| Module | Title | Required? | Contract | Reason |
|---|---|---|---|---|
| MOD-042 | CDC pipeline — Neon logical replication to S3 Iceberg | Required | — | Decision publication writes back to operational Neon databases — requires the CDC pipeline infrastructure to be established for the reverse flow. |
| MOD-104 | AWS shared infrastructure bootstrap | Required | — | AWS shared infrastructure provisioned by MOD-104 (EventBridge buses, S3, KMS, Kinesis, Cognito) is required before this module can be deployed. |
Required by¶
| Module | Title | As | Contract |
|---|---|---|---|
| MOD-048 | System decision log | Hard dependency | — |
| MOD-105 | Product eligibility engine | Hard dependency | — |
| MOD-147 | Related party exposure monitor | Hard dependency | — |
Policies satisfied¶
| Policy | Title | Mode | How |
|---|---|---|---|
| GOV-006 | Internal Audit Policy | LOG |
Every applied decision is recorded with its source Snowflake computation, contract version, policy reference, and operator identity — immutable audit trail. |
| DT-001 | Information Security Policy | GATE |
Only schema-version-validated, policy-sanctioned outcomes cross the Snowflake → Neon boundary — raw features and intermediate scores never leave Snowflake. |
Capabilities satisfied¶
| Capability | Title | Mode | How |
|---|---|---|---|
| CAP-125 | Snowflake write-back API (internal) | AUTO |
Receives versioned decision payloads from Snowflake, deduplicates on idempotency key, validates contract version, and applies the decision to the appropriate Neon operational table via the decision inbox. |
Part of SD07 — Data Platform & Governance Infrastructure
Compiled 2026-05-22 from source/entities/modules/MOD-079.yaml