---
status: reconciled-partial
coverage_depth: deep
last_reconciled: 2026-07-18
specs:
  - 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
source: WALKTHROUGH/journeys/first-tara-sit.md
---

# Journey result: First Tara sit

- **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.

```mermaid
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

- [Source-reconciled journey](../journeys/first-tara-sit.md)
- [Full Tara journey suite](../../apps/oshun/web/e2e/tara-full-journey.spec.ts)
- [Session-player suite](../../apps/oshun/web/e2e/tara-session-player.spec.ts)
- [Home continuity suite](../../apps/oshun/web/e2e/home-tara-centering-continuity.spec.ts)
- [First-sit deepening suite](../../apps/oshun/web/e2e/first-tara-sit-deepening.spec.ts)
- [Tara sit player](../../apps/oshun/web/src/components/lilith/TaraSitPlayer.tsx)
- [Tara room](../../apps/oshun/web/src/components/lilith/rooms.tsx)
- [BFF-backed Tara data loader](../../apps/oshun/web/src/lib/lilith-data/tara.ts)
- [Ambient and guidance routes](../../apps/oshun/bff/src/tara/ambient-audio-routes.ts)
- [Real-audio dependency result](./external-dependencies/real-sit-audio-cdn.md)

## Cross-references

- [First-time visitor result](./first-time-anonymous-visitor.md)
- [Offline first-use journey](../journeys/offline-first-time-use.md)
- [Tara room view](../customer/03-tara/tara.md)
- [Home view](../customer/02-home-discovery/home.md)
- [Arete streak view](../customer/04-arete/arete-streak.md)
- [Journey coverage matrix](../journeys/coverage.md)

## 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?
