Follow-up to the 2026-10-18 architecture audit, linked to PAR-449 and the completed architecture rebuild PAR-408. Rules are in docs/architecture.md. Audit baseline: commit 08d99ee; all 18 architecture checks passed, which does not establish full compliance.
Evidence: apps/web/eslint.config.mjs explicitly exempts imports inside domains/** from cross-domain deep-path checks. Audit found 13 alias-based deep cross-domain import statements, including 8 in stories. Examples include sprint UI importing @/domains/issues/client, issue rows importing @/domains/votes/client, and stories reaching other domains' component/fixture paths. Client-specific entry points need deliberate treatment: the README forbids exporting hooks through a barrel that also exports server functions.
Acceptance:
Implementing layer 6: replace the domains/** enforcement hole with an ESLint rule that resolves alias and relative imports; allow explicit index/client/testing surfaces and same-domain internals, reject cross-domain internals, and move story imports behind testing surfaces. Add negative/positive rule fixtures and run lint/typecheck/unit/browser stories without new suppressions.
Implemented in https://github.com/ParadauxIO/taskl.ie/pull/113 as part of the ordered quality stack #107 → #108 → #109 → #110 → #111 → #112 → #113 → #114. Each layer targets its predecessor; #107 targets main. Local final-stack verification: 1,312 backend tests against disposable PostgreSQL 17/pgvector, 1,218 web unit tests, 486 Chromium stories, lint, TypeScript, production build/CSS gate and standalone HTTP smoke all pass. A focused listener cleanup regression also passes after the final lifecycle change. CI results are tracked on the PRs; no merges or deployments performed.
Implemented in stacked PR #121, based on the preceding architecture layer. Cumulative verification at 46d7c31: 1,334 backend tests, 1,230 web unit tests and 480 Chromium story tests passed; lint, typecheck, API drift and production build/CSS checks passed. The complete story suite passed on the CI-prescribed retry after the known PAR-443 iframe import flake. Diagram uploaded and PR base/head verified. Awaiting review; not merged.
Merged PR #121 into main after all eight stack PRs passed CI. Merge commits preserved dependency ancestry; every layer's retargeted diff and exact head were verified. The full stack head 46d7c31 is now an ancestor of main at b5d5ef5. Marked Done. The separate tenant-index clarification remains tracked in PAR-495.
Implementing as one layer of the user-requested code-quality fix stack. Base is current main (rebuild has merged and its remote branch is gone). Plan: add focused behavioral regression coverage, implement this issue without weakening architecture rules, run affected checks and full applicable suites, then publish a stacked PR with validation and dependency links. Stack order: PAR-489 → PAR-492 → PAR-490 → PAR-494 → PAR-491 → PAR-454 → PAR-478 → PAR-493.