V1 Web PWA · Surface walkthrough

Studio Hathor · Lore Fact-Checking

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

walked
8sections2 minread

On this page

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

Last walked. 2026-05-29 automated runtime walk (Playwright headless) — render, /v1 data (2xx), console/page-errors, expected content, screenshot verified; live screen-reader, touch, offline, and telemetry-delivery checks pending a manual AT pass. Evidence: WALKTHROUGH/results/runtime-sweep-2026-05-29.md; body re-derived 2026-06-03 from current source (lane-console architecture)

Purpose#

Admin lane console that fact-checks a chronicle source against the lore corpus — running the real fact-checking algorithm to emit a verdict, per-issue diagnostics, and aggregate stats. The operator pastes a chronicle source, opts into speaker normalization, and the lane returns clean/flagged diagnostics.

Entry points#

  • Quick-action link from /studio/hathor/research-grounding (verify against that page's source)
  • Direct URL / bookmark — yes; alternates.canonical set to /studio/hathor/lore-fact-checking
  • Studio overview — see ../../studio-overview.md

Layout regions#

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

  • Workspace <StudioHathorLoreFactCheckingWorkspace /> (data-hathor-lore-fact-checking-workspace):
    • WorkspaceHeading <h1> — "Hathor Lore Fact-Checking Workspace"
    • Summary <p data-hathor-lore-fact-checking-summary>
    • The fact-checking form lane (loading / unauthorized / error / form / result)
  • Route Map panel data-hathor-lore-fact-checking-route-map<h2> "Route Map" listing the 5 STUDIO_HATHOR_LORE_FACT_CHECKING_ROUTE_MAP entries (claims / evidence / conflicts / governance child paths)
  • Quick-action lane — two Link.quickAction anchors: Research Grounding, Back to Studio workspace index

States#

  • Loadingdata-hathor-lfc-loading while the GET catalog request is in flight
  • Unauthorized (admin-scope 401/403)data-hathor-lfc-unauthorized
  • Errordata-hathor-lfc-error
  • Ready (form) — chronicle-source textarea + normalize toggle + submit
  • Resultdata-hathor-lfc-result with data-hathor-lfc-verdict, data-hathor-lfc-stats, and data-hathor-lfc-diagnostics (per-issue data-hathor-lfc-diagnostic) or data-hathor-lfc-clean
  • Validation errordata-hathor-lfc-check-error

Interactions#

Fact-checking lane#

  • Chronicle source — chronicle-source textarea (<span>Chronicle source</span>)
  • Normalize speakersdata-hathor-lfc-normalize toggle (<span>Normalize speakers</span>)
  • Submit<button data-hathor-lfc-check-submit> "Fact-check chronicle" → POST CHECK_ENDPOINT

Route Map panel#

  • Route entries — verify match with STUDIO_HATHOR_LORE_FACT_CHECKING_ROUTE_MAP (5 entries)

Quick-action lane#

  • "Open Hathor Research Grounding workspace"/studio/hathor/research-grounding
  • "Back to Studio workspace index"/studio

Data & contracts#

  • Reads: GET /v1/admin/hathor/lore-fact-checking (LFC_ENDPOINT) — the fact-check catalog
  • Writes: POST /v1/admin/hathor/lore-fact-checking/check (CHECK_ENDPOINT) with the chronicle source + options
  • Realtime: none
  • Caching: client fetch on mount, cache: 'no-store', buildBffAuthHeaders()
  • Auth/role check: admin-scoped, fail-closed on 401/403; route additionally gated signed-in + studio by the BFF proxy

Cross-references#

Open questions / known gaps#

  • Hathor is unconfirmed-v1 per WALKTHROUGH/matrix/routes.csv. Confirm whether the dedicated /studio/hathor/ lane consoles ship at V1 or are internal-only.
  • Confirm what backing corpus the fact-checker compares against (the lane runs the algorithm but the corpus source is not surfaced in the UI).