Implement Phase 0b base project against the frozen test contract

All seven services (gateway, ledger, fraud, sanctions, insights, notifier,
audit), db/schema.sql plus optional_indexes.sql, scripts/seed.py and
smoke.py, the gateway-served frontend, and docker-compose.yml. Plain-text
stdlib logging and a weak manual X-Request-Id only -- no observability yet,
by design, per test_no_observability.py. Implements all 13 named chaos-flag
pathologies from docs/PATHOLOGIES.md behind Redis-backed runtime flags.

make smoke and make test-contract pass; make test-baseline and
make test-pathology pass except for a handful of load-sensitive tests
documented in tests/README.md rather than papered over.
This commit is contained in:
Movses Aslanyan
2026-09-05 08:12:30 +03:30
parent ccf1783779
commit 91afea92a1
51 changed files with 2757 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
"""n_plus_one, cold_cache, unbounded_cache -- phase-0-base-project-spec.md §7.
All three are owned by `insights`."""
from common.chaos_flags import is_enabled
async def n_plus_one_enabled() -> bool:
return await is_enabled("n_plus_one")
async def cold_cache_enabled() -> bool:
return await is_enabled("cold_cache")
async def unbounded_cache_enabled() -> bool:
return await is_enabled("unbounded_cache")
# unbounded_cache: memoize summaries in a module-level dict keyed by
# (account_id, timestamp_ms) -- effectively never hits, never evicts, grows
# forever. This is the pathology itself, not a fix for anything -- never
# clear it, never cap it.
UNBOUNDED_CACHE: dict = {}