feat(boundaries): add layouts-v2 zone so v2 shell layout can use components-v2

AD-G2 ("OrganizerLayoutV2 wraps AppShellV2") was in tension with AD-G5:
src/layouts/OrganizerLayoutV2.vue classified as the v1 `layouts` zone,
which is deliberately barred from components-v2. New `layouts-v2` zone
(src/layouts/*V2*.vue, mode:file) gets pages-v2-equivalent v2 capability;
the v1 `layouts` zone is unchanged so v2 isolation is preserved. RFC
AD-G5 amended; locked by 3 boundaries-v2.spec.ts regression tests (7/7).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-17 02:03:00 +02:00
parent 6e5c5bbec3
commit a341a60412
3 changed files with 62 additions and 3 deletions

View File

@@ -30,9 +30,19 @@ Tailwind + FormField + DataTable conventions) remain binding.
`useAuthStore`/`useOrganisationStore`. One new `useShellUiStore` holds
only sidebar/theme/density + right-drawer state. `provide`/`inject`
from crewli-starter is replaced per-port (no `inject()` survives).
- **AD-G5 — Boundaries.** New `components-v2`/`pages-v2` zones; the only
v1→v2 bridge is a narrow `components-foundation` zone (FormField,
Icon). No back-porting (structurally enforced).
- **AD-G5 — Boundaries.** New `components-v2`/`pages-v2`/`layouts-v2`
zones; the only v1→v2 bridge is a narrow `components-foundation` zone
(FormField, Icon). No back-porting (structurally enforced). The v2
shell layout (`src/layouts/*V2*.vue`, e.g. `OrganizerLayoutV2`) is the
`layouts-v2` zone — same v2 capability as `pages-v2` (may import
`components-v2` + `navigation`) so AD-G2's "`OrganizerLayoutV2` wraps
`AppShellV2`" holds. The v1 `layouts` zone is unchanged and still
cannot import `components-v2`, so v2 isolation is preserved (only
top-level `*V2*.vue` layout files gain v2 capability;
`src/layouts/components/AppShellV2.vue` stays in `layouts` since it
imports only `stores`). Locked by `tests/unit/boundaries-v2.spec.ts`
(`layouts-v2 → components-v2` allowed; v1 `layouts → components-v2`
forbidden).
- **AD-G6 — Testing.** TEST-INFRA-001 (✅ Resolved) Playwright-CT +
visual foundation is kept as the CI gate; Storybook a11y is
complementary. v2 visual baselines are captured from the v2 component