1 KiB
1 KiB
| type | parent | status | tags | ||
|---|---|---|---|---|---|
| project-doc | Tia | verified |
|
⚖️ Tia — Key Decisions
Pulled from the project memory files. Full entries in Decision Log.
- Derived usage, never accumulated (Decision Log#TD-001) — storage = live SUM; pending excluded.
tieris the only plan column (Decision Log#TD-002) — payment behindisPaidFamily().- Migrations via hot-apply +
Date.now()rule (Decision Log#TD-003) — after Drizzle silently skipped 0003–0010. - R2 served through
/api/imgproxy (Decision Log#TD-004) — Cloudflare bot-mgmt 503'd cross-origin imgs. - (marketing) vs (app) route groups (Decision Log#TD-005) — keep
/static; dashboard at/home. - Downgrade = freeze, not delete — existing members keep roles; only new invites blocked.
- Pre-aggregate analytics with CTEs — the engagement query was a cartesian blow-up; fixed by per-table CTEs to avoid 500s on real data.