V1 Web PWA · Journey

Journey: Veritas evidence trail

A source-reconciled journey record for V1 Web PWA — shipped behavior, state boundaries, failure modes, and the automation evidence available today.

automated · 3 specs verdict: partial· 2026-05-29
9sections7 minread1table

On this page
Journey at a glance
ActorsQuick readerEvidence inspectorTopic followerLibrary saver
Automation3 E2E spec(s) · verdict: partial· 2026-05-29

Journey flow#

Generated from the authored steps below — click a node to jump to that section.

flowchart TD s1["1. Read the BFF-backed lead"] s2["2. Jump from the article to its evidence rail"] s3["3. Inspect claim mode"] s4["4. Open a source profile"] s5["5. Compare counter-evidence"] s6["6. Read story and topic context"] s7["7. Verify the citation contract across depth…"] s8["8. Save the lead and read it on a clean device"] s1 --> s2 --> s3 --> s4 --> s5 --> s6 --> s7 --> s8 click s1 href "#1-read-the-bff-backed-lead" click s2 href "#2-jump-from-the-article-to-its-evidence-rail" click s3 href "#3-inspect-claim-mode" click s4 href "#4-open-a-source-profile" click s5 href "#5-compare-counter-evidence" click s6 href "#6-read-story-and-topic-context" click s7 href "#7-verify-the-citation-contract-across-depth-boards" click s8 href "#8-save-the-lead-and-read-it-on-a-clean-device" s8 --> v(["verdict: partial"]) click v href "../results/veritas-evidence-trail.html" style v stroke:#d6a531,color:#d6a531

Veritas is a hybrid evidence walk. The lead at /veritas comes from the live BFF adapter; claim, source, counterclaim, story, and topic depth boards are polished fixture-backed surfaces. The journey verifies that each board is internally inspectable and that exact citation fields stay aligned. It does not pretend that every board is linked into one uninterrupted route.

Surface Data/runtime boundary
Today's lead BFF-backed Veritas mock adapter
Lead evidence rail Live lead payload and in-page jump
Claim/source/counterclaim/story Depth fixtures
Topic follow Real followed-topic BFF write/read
Save to notebook Real saved-items BFF write and clean-device hydrate
Retraction Adjacent journey, not this evidence walk

Personas#

  • Quick reader — reads the grounded lead and confidence summary without entering every depth board.
  • Evidence inspector — selects claims, opens sources, and reads provenance and counter-evidence.
  • Topic follower — persists a Veritas topic follow through the BFF.
  • Library saver — saves the lead and expects it on another signed-in browser context.

Pre-conditions#

  • The customer session is valid; persistence checks use the same seeded user.
  • The Veritas adapter is available. Standard E2E uses OSHUN_VERITAS_ADAPTER=mock; a separate outage stack proves the honest failure state.
  • Depth fixtures from veritas-depth.ts are present for the claim, source, counterclaim, story, and topic routes.
  • The saved-items and followed-topic BFF routes are available for the two cross-reload writes.
  • No service worker or offline mode is required by this journey.

Steps#

1. Read the BFF-backed lead#

  • /veritas renders a dated lead, headline, byline, article body, confidence summary, and evidence rail from getVeritas().
  • Every lead claim presents a confidence value and named sources.
  • A live BFF non-2xx response renders an honest no-lead state rather than grounded article actions.
  • The depth boards below do not inherit this live payload; they are independent fixture projections.

2. Jump from the article to its evidence rail#

  • Read sources targets #veritas-evidence-rail on the current page.
  • Focus and scroll land at the real lead evidence region.
  • Save to notebook and Share excerpt remain separate article actions.
  • This action does not navigate to /veritas/claim. Claim mode is reached directly or from a saved/bookmarked route.

3. Inspect claim mode#

  • /veritas/claim renders focusable, underlined claim sentences and a selected-claim rail.
  • Hover, focus, click, and the all-claims table select the same claim model.
  • The selected rail exposes confidence, aligned source count, source quality band, date, quote, and source-profile href.
  • The high/medium/low legend explains the underline encoding without making color the only selected-state cue.
  • There is no lead-to-claim navigation asserted in this journey.

4. Open a source profile#

  • Source rows are real links, not decorative rows.
  • Selecting Statnett navigates to /veritas/source/statnett-operator-data.
  • The profile renders source-specific facts, band rationale, track record, conflicts, notable retractions, and recent history.
  • The profile's source id, name, and quality band align with the selected claim citation.

5. Compare counter-evidence#

  • /veritas/counterclaims renders two sides with named sources, stances, quality bands, pull quotes, and evidence disclosures.
  • Native <details> controls open and close from pointer and keyboard.
  • Each inspection panel carries provenance, reviewer attribution, inspected time, excerpt hash, weakness rationale, and a resolution action.
  • The board ends with a fixture verdict and next steps.
  • The claim surface does not currently provide a tested navigation link to this board; direct route is the honest fallback.

6. Read story and topic context#

  • /veritas/story renders chronological event, update, contested, and retracted fixture entries plus a data-derived SVG confidence trajectory.
  • Retraction entries use text treatment as well as color and the change notes explain the trajectory.
  • /veritas/topic renders settled/open claims, reading-history cells, primary sources, gaps, and follow state.
  • Follow/unfollow writes through the real Veritas followed-topic BFF, survives reload, and cleans up.
  • Some subnav and in-copy destinations remain direct-route or text-only; these boards should not be documented as one continuous link graph.

7. Verify the citation contract across depth boards#

  • Claim citations expose source name, quality band, href, date, and quote.
  • The chosen source profile agrees with those source identity and band fields.
  • Counterclaim evidence adds provenance, reviewer attestation, inspection time, and excerpt hash.
  • This is UI citation-contract consistency across fixture models. It is not a live Sophia answer or a runtime-generated Sophia evidence pack.

8. Save the lead and read it on a clean device#

  • Save to notebook writes a saved item of kind passage through the real saved-items BFF.
  • The record preserves formatLabel: "Today's lead", resumePath: "/veritas", and resumeLabel: "Resume reading".
  • A clean second browser context for the same user opens /library?domain=veritas&kind=passage and hydrates the row without copied local storage.
  • This save proves saved-item persistence, not capture of the complete claim/source fixture graph.

Post-conditions#

  • The reader can inspect the live lead evidence rail and each fixture-backed depth board without mistaking their data origins.
  • Citation identity and quality metadata remain consistent from a selected claim to its source profile and counterclaim evidence.
  • Topic follow and lead save survive reload through their real BFF paths.
  • Broken or absent cross-board links are represented as route discontinuities, not silently described as working transitions.
  • Retraction delivery and cascade behavior remain owned by the adjacent retraction journey.

Failure modes#

  • Veritas adapter outage/veritas renders the no-lead state and suppresses grounded actions.
  • Read sources treated as navigation — it is an in-page anchor, so an assertion for /veritas/claim would be false.
  • Depth fixture treated as live evidence — claim and related boards do not prove backend grounding or shared live state.
  • Missing route link — direct URL remains the tested fallback for several depth surfaces.
  • Source-id regression — a selected citation must land on its own dynamic source route, not the generic fallback profile.
  • Topic write failure — the UI must not claim a persisted follow after BFF read-back fails.
  • Saved-item write failure — a local optimistic label is not sufficient; clean-context Library hydrate is the completion proof.
  • Citation drift — source id, band, date, quote, or provenance disagree between the fixture boards.
  • Retraction expectation — correction letters and downstream markers are outside this journey.

E2E coverage#

Coverage is deep for the hybrid contract. It proves live lead, follow, and save seams plus fixture-board interaction; it does not prove a shared live evidence graph, a Sophia runtime, complete cross-route linking, or retraction delivery.

Per-view files touched by this journey#

Cross-references#

  • veritas-to-nisaba-deeper.md — explicit cross-domain source-lineage bridge.
  • veritas-retraction-cascade-customer-view.md — correction and retraction evidence lanes.
  • nisaba-scholarly-read.md — a separate scholarly-reading and notebook flow.
  • apps/oshun/web/src/lib/lilith-data/veritas.ts — lead loader.
  • apps/oshun/web/src/lib/lilith-data/veritas-depth.ts — depth fixtures.
  • apps/oshun/web/src/components/lilith/VeritasClaimInteractive.tsx — selected claim/source interaction.

Open questions#

  • Which depth boards should be rebuilt from a shared live claim graph?
  • Which missing cross-board links are intentional, and which should become first-class navigation?
  • Should the lead expose a direct claim-mode action in addition to its in-page evidence jump?
  • What runtime evidence proves Sophia grounding on the customer surface?
  • Should a notebook save capture a versioned evidence graph rather than only the lead resume record?
  • Which explicit offline contract, if any, should be added and tested?