This commit is contained in:
2026-01-11 14:04:48 +01:00
parent 971aa7288b
commit 2f0b83f030
10 changed files with 436 additions and 173 deletions

View File

@@ -2,11 +2,14 @@
This document defines architecture guardrails that must be enforced via tests + ESLint.
Authoritative contract: [`WEBSITE_CONTRACT.md`](docs/architecture/website/WEBSITE_CONTRACT.md:1).
## 1) RSC boundary guardrails
Fail CI if any `apps/website/app/**/page.tsx`:
- imports from `apps/website/lib/view-models/*`
- imports from Presenter code (presenters live colocated with ViewModels)
- calls `Intl.*` or `toLocale*`
- performs sorting/filtering (`sort`, `filter`, `reduce`) beyond trivial null checks
@@ -15,6 +18,7 @@ Fail CI if any `apps/website/app/**/page.tsx`:
Fail CI if any `apps/website/templates/**`:
- imports from `apps/website/lib/view-models/*`
- imports from presenter code (presenters live colocated with ViewModels)
- imports from `apps/website/lib/display-objects/*`
- calls `Intl.*` or `toLocale*`
@@ -27,4 +31,3 @@ Fail CI if any `apps/website/lib/display-objects/**`:
- calls `Intl.*` or `toLocale*`
Display Objects must be deterministic.