V1 Web PWA · Surface walkthrough

Studio Hathor · Validation

A per-surface walkthrough of the V1 Web PWA studio surface: layout, states, interactions, data, and cross-references.

walked
9sections5 minread

On this page

Context. surface studio · domain hathor · route /studio/hathor/validation · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/hathor/validation/page.tsx

Last walked. 2026-06-29 real-BFF route addendum — Playwright now covers the signed-in admin route, all embedded admin-scoped catalog GETs, unified-dashboard POST validation, embedded Timeline/Causality/Taxonomy POST validation, client-only dashboard validation errors, dashboard catalog-failure isolation, pending submit disablement, non-admin fail-closed state, anonymous redirect, route map, quick actions including Contradictions, 44px automated touch checks, and the shared axe gate. Evidence: WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md §228; apps/oshun/web/e2e/studio-hathor-validation.spec.ts. 2026-05-29 automated runtime walk evidence: WALKTHROUGH/results/runtime-sweep-2026-05-29.md; body re-derived 2026-06-03 from current source (lane-console architecture)

Purpose#

Aggregator surface that composes Hathor's lore-validation lanes: a Capability Summary plus the embedded Unified Validation Dashboard, Lore Validation Timeline, Lore Validation Causality, and Lore Validation Taxonomy workspaces. It also links to the dedicated Lore Validation Contradictions detector. The page itself issues no /v1 fetch — each embedded lane owns its own admin-scoped, fail-closed backend wiring.

Entry points#

  • Breadcrumb — Studio › Hathor Unified Validation Dashboard › Validation
  • Quick-action links to unified-validation-dashboard, lore-validation-timeline, lore-validation-causality, lore-validation-taxonomy, lore-validation-contradictions, and Back to Studio
  • Direct URL / bookmark — yes; alternates.canonical set
  • Studio overview — see ../../studio-overview.md

Layout regions#

page.tsx renders inside <ShellLayout active="studio">:

  • Breadcrumb panel (data-hathor-validation-breadcrumbs): Studio → Hathor Unified Validation Dashboard → Validation (current)
  • Workspace <section data-hathor-validation-workspace>:
    • <h1> (WorkspaceHeading) "Hathor Validation Workspace"
    • Summary <p data-hathor-validation-summary>
  • Capability Summary (data-hathor-validation-capability-summary, <h2>)
    • Unified Validation Dashboard Lane (data-hathor-validation-dashboard-lane, <h2>) → <StudioHathorUnifiedValidationDashboardWorkspace />
    • Lore Validation Timeline Lane (data-hathor-validation-timeline-lane, <h2>) → <StudioHathorLoreValidationTimelineWorkspace />
    • Lore Validation Causality Lane (data-hathor-validation-causality-lane, <h2>) → <StudioHathorLoreValidationCausalityWorkspace />
    • Lore Validation Taxonomy Lane (data-hathor-validation-taxonomy-lane, <h2>) → <StudioHathorLoreValidationTaxonomyWorkspace />
  • Route Map panel (data-hathor-validation-route-map): <h2> "Route Map" + data-hathor-validation-route-count="7" + 7 entries from STUDIO_HATHOR_VALIDATION_ROUTE_MAP
  • Quick-action lane (data-hathor-validation-quick-actions, data-hathor-validation-quick-action-count="6"): six Link.quickAction anchors with stable data-hathor-validation-quick-action IDs (see Entry points)

States#

This page owns no fetch; each embedded lane carries its own loading / unauthorized / error / ready / pending / result states:

  • Unified Validation Dashboard Lane — delegated to the dashboard workspace; route-level E2E covers catalog ready, result, validation-error, pending-submit, unauthorized, and catalog-error states from this aggregator.
  • Lore Validation Timeline Lane — delegated to the timeline workspace; route-level E2E covers ready catalog and seeded POST result from this aggregator, with deeper lane-specific states in the dedicated route spec.
  • Lore Validation Causality Lane — delegated to the causality workspace; route-level E2E covers ready catalog and seeded POST result from this aggregator, with deeper lane-specific states in the dedicated route spec.
  • Lore Validation Taxonomy Lane — delegated to the taxonomy workspace; route-level E2E covers ready catalog and seeded POST result from this aggregator, with deeper lane-specific states in the dedicated route spec.

Interactions#

Embedded lanes#

  • Unified Validation Dashboard Lane — edit events and eras JSON, run seeded inconsistent validation, edit to a clean payload, verify pending lockout, and verify malformed / non-array / empty client-side validation branches do not POST.
  • Lore Validation Timeline Lane — submit the seeded order-violation payload from the aggregator and verify the real BFF TIMELINE_ORDER_VIOLATION result.
  • Lore Validation Causality Lane — submit the seeded cycle payload from the aggregator and verify the real BFF CAUSALITY_CYCLE_DETECTED result.
  • Lore Validation Taxonomy Lane — submit the seeded cycle payload from the aggregator and verify the real BFF TAXONOMY_CYCLE_DETECTED result.

Route Map panel#

  • 7 route entries — verify match with STUDIO_HATHOR_VALIDATION_ROUTE_MAP, including the contradictions diagnostic route-map entry.

Quick-action lane#

  • "Open Hathor Unified Validation Dashboard workspace" (→ /studio/hathor/unified-validation-dashboard)
  • "Open Hathor Lore Validation Timeline workspace" (→ /studio/hathor/lore-validation-timeline)
  • "Open Hathor Lore Validation Causality workspace" (→ /studio/hathor/lore-validation-causality)
  • "Open Hathor Lore Validation Taxonomy workspace" (→ /studio/hathor/lore-validation-taxonomy)
  • "Open Hathor Lore Validation Contradictions workspace" (→ /studio/hathor/lore-validation-contradictions)
  • "Back to Studio workspace index" (→ /studio)

Data & contracts#

  • Reads / Writes: none at the aggregator level; embedded lanes own their /v1/admin/hathor/* fetches:
    • GET/POST /v1/admin/hathor/unified-validation-dashboard(/validate)
    • GET/POST /v1/admin/hathor/lore-validation-timeline(/validate)
    • GET/POST /v1/admin/hathor/lore-validation-causality(/validate)
    • GET/POST /v1/admin/hathor/lore-validation-taxonomy(/validate)
  • Realtime: none
  • Caching: embedded client fetches use cache: 'no-store' + buildBffAuthHeaders
  • Auth/role check: each embedded lane is admin-scoped fail-closed; route is behind the signed-in + studio proxy gate

Cross-references#

E2E coverage#

  • apps/oshun/web/e2e/studio-hathor-validation.spec.ts — signed-in admin route; real BFF catalog GETs for Unified Dashboard, Timeline, Causality, and Taxonomy; seeded and clean unified-dashboard suite POSTs; seeded Timeline / Causality / Taxonomy POSTs from the embedded hub lanes; malformed JSON / non-array / empty dashboard zero-POST branches; dashboard catalog-failure isolation while sibling lanes remain ready; non-admin fail-closed state across every embedded lane; anonymous redirect-before-render; route-map and quick-action anchors, including Contradictions; automated 44px checks; shared axe gate.
  • Supporting lane-level specs: studio-hathor-lore-validation-timeline.spec.ts, studio-hathor-lore-validation-causality.spec.ts, studio-hathor-lore-validation-taxonomy.spec.ts, and studio-hathor-lore-validation-contradictions.spec.ts cover each dedicated validator route more deeply.

Open questions / known gaps#

  • Hathor is confirmed in V1 per WALKTHROUGH/matrix/routes.csv and WALKTHROUGH/matrix/coverage.md (product-owner confirmation recorded 2026-05-29 for Bellona / Hathor / Neith).
  • The aggregator links to the dedicated contradictions route but does not embed the contradiction detector form inline; confirm whether the detector should join this aggregator as a fifth embedded lane.
  • Route Map advertises dashboard/, timeline/, causality/, taxonomy/, contradictions/, and governance/ sub-routes with no page.tsx yet.
  • Manual screen-reader pass remains for the live browser surface; automated axe and touch-target coverage now pass for the route-level controls.