V1 Web PWA · Walk result

Journey result: First Tara sit

A dated evidence record for V1 Web PWA: observed behavior, current source reconciliation, automation evidence, and explicit proof limits.

verdict: partial· 2026-05-29
8sections5 minread1table

On this page
  • Walked: 2026-05-29 by Claude against commit 3678298cd3; that pass verified the initial Home, Tara hub, and sit-player render path.
  • Reconciled: 2026-07-18 against the current journey, BFF-backed Tara room, player implementation, completion/reflection seams, and four focused browser suites. This was a source reconciliation, not a fresh runtime walk.
  • Verdict: partial — deep automation now proves first-time and returning Home entry, the Tara hub-to-player route, real ambient audio controls, accessible player states, drift recovery, completion UI, offline reflection queueing, and cross-domain exits. Player-connected guidance, durable post-completion reflection sync, non-2xx completion recovery, and one connected course/activity/streak readback remain absent.
  • Primary specs: tara-full-journey.spec.ts, tara-session-player.spec.ts, home-tara-centering-continuity.spec.ts, and first-tara-sit-deepening.spec.ts.

Result at a glance#

Evidence lane Current result Authority limit
Home continuity entry First-time fallback and returning “Resume ritual” states are browser-driven Does not prove onboarding preference-to-rail personalization
Tara hub and player route BFF-backed room, Begin link, exact sit route, unknown-id 404, and browser-back recovery Current recommended sitting and seeded session context
Mid-sit experience Real ambient WAV, play/pause/scrub, idle drift/recovery, transcript, captions, large text, sliders Voice-speed state has no player-connected narration; no haptics
Completion seam Start/completion calls and humane completion presentation are exercised Non-2xx completion is not handled as a retryable failure
Reflection Local UI plus offline queue and explicit reconnect non-drain are proven No authenticated durable online reflection write/readback
Downstream continuity Nisaba, Metis, Arete, Nyx, and assistant exits are visible and navigable No single persisted course, Activity, and streak update chain

Evidence map#

The shipped journey is strong through the session itself. Its dashed tail is where local completion presentation stops short of durable product continuity.

flowchart LR A[Home Tara rail] --> B[Tara room] B --> C[Begin sitting link] C --> D[Tara sit player] D --> E[Ambient audio and accessible controls] E --> F[Completion attempt] F --> G[Local reflection UI] G -->|offline| H[Queued local reflection] H -. no reconnect drain .-> I[Durable reflection record] G --> J[Cross-domain next steps] F -. not connected end to end .-> K[Course row, Activity, and Arete streak] L[Env-gated BFF guidance] -. not connected to player .-> D

Proven observations#

Entry, route, and player states#

  • Home distinguishes a first-time fallback rail from a live returning-session rail and exposes the correct primary action for each. The Tara room then renders the BFF-backed recommended sit and a real Next.js Begin link.
  • The link reaches /tara/sit/when-the-mind-wanders. An unknown sitting id renders the application 404 without mounting a player; its search and browser Back affordances remain usable.
  • Reduced-motion mode removes the tested transport transition. Play, pause, scrub, transcript, captions, large-text, voice-speed, and ambient-mix controls expose their current keyboard and accessible-state contracts.

Session behavior#

  • The ambient element uses a real WAV and responds to the ambient-mix control. The voice-speed slider changes UI state only because no narrated audio element consumes the value.
  • A clock-controlled test advances beyond the 90-second idle threshold, observes the soft drifted state, scrubs to recover to paused, and resumes while preserving the session telemetry hook.
  • The player exposes completion and partial-completion presentation, humane copy, share/export affordances, and the current cross-domain next-step set.

Reflection and offline honesty#

  • Completion attempts the Tara write with duration, state, origin, and the reflection value available at completion time. Because reflection is normally entered afterward, the completion payload does not prove that later copy is durably stored.
  • When the browser goes offline after completion, Save reflection queues a tara:reflection:<id> item, renders queued sync state, and preserves the local draft through reconnect.
  • The suite explicitly asserts that reconnect does not drain the queue. That is honest offline evidence rather than a fabricated sync-success claim.

Boundaries and gaps#

  • Ambient audio is not guided narration. The current WAV is an ambient loop. An env-gated BFF guidance route exists, but this player does not request it; the voice-speed control does not resample or control a narrated track.
  • Completion presentation is not durable reflection. Reflection entered after completion has no authenticated online write/readback contract, and queued offline drafts have no client-side reconnect drain.
  • A fetch call is not robust completion persistence. The current completion effect handles thrown network errors but does not treat every non-2xx response as a queue/retry failure.
  • Visible exits are not downstream state. Navigation to Nisaba, Metis, Arete, Nyx, or the assistant does not prove a saved handoff payload or the intended sequencing policy.
  • Session completion is not course continuity. No one browser path reads a persisted course-row advance, Activity item, and Arete streak change after the sit.
  • Transcript and captions are not synchronized narration. They improve access to the script, but neither is time-coded to a spoken track. Haptic pacing is not implemented.
  • First-time rail state is not onboarding causality. The focused tests cover fallback/live Home states, not a single fresh signup whose selected interest deterministically creates that rail.

Re-run evidence#

The current focused suite can be run serially with:

bash
PW_BROWSER_CHANNEL=chrome pnpm exec playwright test \
  -c apps/oshun/web/playwright.config.ts \
  apps/oshun/web/e2e/tara-full-journey.spec.ts \
  apps/oshun/web/e2e/tara-session-player.spec.ts \
  apps/oshun/web/e2e/home-tara-centering-continuity.spec.ts \
  apps/oshun/web/e2e/first-tara-sit-deepening.spec.ts \
  --workers=1

It requires the real-development-infrastructure web/BFF harness and browser audio/offline shims used by the repository. A green run proves the current session and its explicit local-state boundaries; it must not be reported as a durable reflection, narration, or cross-domain completion pipeline.

Source trail#

Cross-references#

Open questions#

  • Which durable endpoint owns reflection entered after completion, and how will online writes, offline queue drain, conflict resolution, and readback share one receipt model?
  • When will the BFF guidance seam bind to the player and voice-speed control, and what transcript/caption timing and quality policy accompanies that media?
  • How should every non-2xx completion response be surfaced, retried, and deduplicated without double-counting a sit?
  • What event or receipt atomically links sit completion to course progression, Activity, and an Arete streak update?
  • Which product rule orders the cross-domain next steps, and what context is carried into the chosen destination?