Estimate: 30m · Depends on: 6.2.3, 6.2.4, 6.2.5
The story-closing verification (Principle #18; the epic-wide journey stays Story 6.7).
Vitest (integration, real Postgres): the (role × visibility × action) matrix driven from a table so a new action without a matrix row fails (the totality-guard pattern); the persist→resolve property suite (every generated AST round-trips; malformed + future-versioned envelopes recover typed; stale referents degrade per field/option/label/component); name-uniqueness collisions; star aggregation; built-in immutability; subscription due-ness (frozen clock) + the as-subscriber resolution paths; the delete-dependents enumeration + cascade.
Playwright E2E (tests/e2e/saved-filters.spec.ts): the recipe journey — build → Save as (Project) → applied chip → edit a row → dirty → Save → second user applies + stars + edits → Save-as-only → directory rename / visibility flip / admin change-owner → subscribe → delete with the dependents warning → the private filter invisible to the second user throughout its private phase. a11y: the strict axe sweep over the save dialog, dropdown (all groups), directory, and subscription editor.
pnpm test:coverage keeps all 6.2 files ≥90%.tests/integration/ + tests/e2e/ conventions; the harness/selector memories