Skip to content

Architecture decisions

Each record captures a decision that is hard to reverse, would surprise a newcomer, and came out of a real trade-off. Easily reversible or obvious choices are deliberately not recorded.

# Decision
0001 The MCP gateway calls the Core Banking API over HTTP
0002 Lambda container images, not ECS Fargate
0003 PostgreSQL with pgvector is the single system of record
0004 Access tokens are validated in the application, not by API Gateway
0005 A NAT instance, not a NAT Gateway, provides egress
0006 Circuit breakers are per instance, with a shared force-open override
0007 Idempotency records are written in the same transaction as the business change
0008 Domain events leave through a transactional outbox onto SQS; no Kafka
0009 OpenAI embeddings, with full-text search as the degraded mode
0010 Deploy with GitHub Actions and CodeDeploy canaries, not CodePipeline
0011 Rows that reference a Transaction carry its initiated_at in a composite foreign key