# Experience Frontend Validation Report (Quality Report) **Date:** 2026-07-27 **Scope:** FE-11.0 – FE-11.5 (**STOP**) **Backend:** experience-service v0.11.10.0 :8008 ## Automated checks | Check | Command | Result | | --- | --- | --- | | Route thinness | `npm run validate:experience-routes` | Pass — `app/experience/**/page.tsx` ≤25 lines | | Nav filter | `node modules/experience/__tests__/nav-filter.mjs` | Pass | | Accessibility smoke | `node modules/experience/__tests__/a11y-smoke.mjs` | Pass — ARIA roles/labels on DS primitives | | Performance smoke | `node modules/experience/__tests__/perf-smoke.mjs` | Pass — ≥49 routes; API via BFF; no fake JSON | | Architecture boundaries | `npm run validate:architecture` | Pass | | TypeScript | `npm run typecheck` | Pass | Full suite: `npm run validate:experience` ## Manual test plan 1. **Hub & auth:** `/experience/hub` → login → `/experience` dashboard loads 2. **Workspace switcher:** select workspace persists after refresh (localStorage) 3. **CRUD:** create workspace → site → page; edits include `version` 4. **Builder:** `/experience/pages/{id}/builder` — placements, reorder, media drawer, undo/redo 5. **Forms:** form builder saves `form_schema_json`; invalid JSON rejected 6. **Publishing:** publish-targets provisional `publish_id`; preview `/experience/preview/page/{id}` 7. **Analytics:** refresh snapshots → `POST /api/v1/analytics-snapshots/refresh` 8. **Embed:** widget snippet with provisional `publish_id` 9. **Design system:** `/experience/design-system` — RTL/LTR toggle, brand color, charts/map/timeline/kanban 10. **BFF:** browser calls `/api/experience/...` not direct `:8008` ## Seed data ```bash cd backend/services/experience set AUTH_REQUIRED=false set EXPERIENCE_SEED_TENANT_ID= python scripts/seed_experience.py ``` ## Known gaps (by design — stop at FE-11.5) - No official Publish Target Registry — provisional IDs only - No payment, booking, QR, short link, marketplace UI - Published actions UI is catalog + local toggle only - Fine-grained `experience.*` RBAC deferred to identity integration ## Artifacts - Module: `frontend/modules/experience/` - Routes: `frontend/app/experience/` (50 pages) - BFF: `frontend/app/api/experience/[...path]/route.ts` - Snapshot: `docs/service-snapshots/experience-frontend.yaml` - Handover: `docs/phase-handover/phase-experience-fe-11-5.md`