End-to-end multi-view flows for the Oshun V1 PWA. Per-view checklists verify
that each view individually works; journeys catch the bugs that hide between
views — broken bridges, role-transition gaps, state that doesn't persist across
a navigation, audit trails that miss a step.
Read ../00-conventions.md for the file shape and the
walking discipline. Every journey opens with # Journey: <name> (no
frontmatter) and follows: Personas → Pre-conditions → numbered Steps →
Post-conditions → Failure modes → E2E coverage → Per-view files touched →
Cross-references → Open questions.
This index lists all 58 V1 PWA journeys. The six admin-app journeys live in
the separate Admin journey index,
bringing the Docs Center registry total to 64.
Before a release — walk the journeys whose pre-conditions match the
surfaces you're shipping. The per-view files won't catch a broken handoff; the
journey will.
After a structural change — middleware rewrite, auth refactor, SW cache
version bump, BFF route move. Walk the journeys that touch the affected
substrate.
When a customer reports something weird — find the journey that describes
their flow; the failure mode is probably already listed there.
First-time user's very first Tara sit. Home rail → hub → Begin → mid-sit → completion → reflection. Walkable end-to-end (2026-05-26) — TaraRoom Begin links to /tara/sit/[id]; TaraSitPlayer ships timer/transcript/reflection.
/welcome mode tabs → 10-step onboarding wizard (lineage / pace / sensitivities / accessibility / memory) → patchProfilePreferences → resolveFirstRunEntryTarget → first home with OnboardingResumeBanner. Distinct from the omnibus first-visit walk.
Real search opens an Epictetus passage in the live workspace; the compact daily Dhammapada room and static Marcus Aurelius lanes remain separate, while the room retains a mismatched save id and no joined notebook/plan completion record.
Tenant teacher uploads BYOM → safety scan → Sophia ingestion → KG anchor → tenant teacher approval gate → published CourseBuild appears inline in /metis (the MetisSchoolroom course list — /metis/courses is not a route; only /metis/courses/new exists).
Bound Telegram user sends text or voice note to the bot → BFF webhook → Sophia-grounded composer → reply with disclosure footer + optional TTS audio. Delivery-side counterpart to messages-quiet-hours-and-channel-binding.md.
Legacy reading durably associates annotations with BFF notebook items, while Studio separately authors Nisaba-native Postgres notebooks/cards and study-trail exports; local notes, client citations, silent fixtures, and the id-ignoring specimen remain other authorities. Complements nisaba-scholarly-read.md.
/lilith-studio → scene editor → zone placement → simulate → accessibility checks → publish through editorial release branch → consumer sees the new scene on /tara.
Single template walking any of the six Cross-Domain Autonomous Pipelines (veritas.story_drafting, metis.course_from_byom, tara.seasonal_program, nyx.event_explainer_set, arete.weekly_review_draft, nisaba.edition_study_guide) end-to-end. Includes per-pipeline variants table.
Tenant/operator integration admin creates, rotates, and revokes API keys; uses one against a scoped tenant resource; creates signed webhook subscriptions; fires sandbox simulator deliveries; and verifies audit/search read-back.
Customer flags content → routed to admin inbox → operator action → user notified. The first-pass flag affordance now ships on Veritas / Nisaba / Tara surfaces and browser E2E reads the submitted live report back from the admin moderation queue; operator decision + reporter notification remain open.
Desktop researcher captures a six-item Iris packet, stores one latest per-user BFF record, and can expose it on native Home. Current return stops at an assistant prompt; responsive browser restoration, fixture Library, device inventory, and profile sync are separate evidence.
These findings came from tracing multi-view paths rather than reading each route
in isolation. Their status below is reconciled against the current source.
The historic ghost-button sweep is nearly closed. Tara start actions;
Arete ritual, coach, and navigation actions; Veritas save/source/share
actions; Nyx event and cross-domain links; Nisaba save, speech, citation, and
navigation actions; Metis quiz, assessment, course, citation, and composer
actions; Trust & Safety reporting; studio review decisions; Admin inbox
filtering and row selection; tenant export/invite/member actions; and Nyx
event persistence now have concrete handlers or links. The remaining known
inert controls are Not now, Tell me more, and Apply for one week in the
deeper Arete coaching letter (components/lilith/arete.tsx). Relevant
journey failure-mode sections carry the exact open checks.
user-flag-to-review cannot be walked at all.Resolved. A
TrustSafetyFlagButton flag affordance now ships on Tara
(TaraSitPlayer.tsx:320), Veritas (VeritasArticleActions.tsx:115,
VeritasClaimDetailWorkspace.tsx), and Nisaba
(NisabaPassageActions.tsx:109), and the BFF exposes POST /v1/user-reports
(apps/oshun/bff/src/routes/user-reports.ts:107). The intake-to-admin-queue
segment is now walkable and verified against the moderation workspace; see
shell/07-trust-safety.md.
Lilith crisis substrate is intentionally not a single route. The
substrate lives in libs/oshun/persona-policy-lilith/src/crisis-recovery/
(incident-record, stillness-window, reentry-flow, reframe-protection,
locales, check-ins) and is wired through each Lilith-using surface; the
safety surface mounts in-place on the active surface. User-facing audit lives
at /profile/safety. A dedicated /lilith/crisis route would conflict with
the cascade design.
LCustomerNav active inconsistency in Veritas. Resolved — both the
hub (rooms.tsx#VeritasRoom) and the depth views in
components/lilith/veritas.tsx now mount LCustomerNav active="library".
The earlier "Hub mounts explore; depth mounts library" claim was stale by the
time the journey sweep landed.
Polished vs internal namespace drift carries between views./arete
reads getArete() fixture; /domains/arete/habits reads sampleHabits.
Habits created in one are invisible in the other. Same dual-fixture pattern
in Tara, Nyx, Veritas. Affects how journeys land after navigation.
Display specimens posing as live editors./nisaba/notebook claims "last
edit, 11 min ago" without an edit affordance. The former /metis/lesson quiz
specimen and /metis/assessment blinking-cursor answer specimen have shipped
as real interactive components; the Metis journey docs track their remaining
product gaps separately.
Operator audit trail is the universal stamp. Every operator journey
writes to apps/oshun/bff/src/routes/admin-audit-log.ts (routes
/admin/audit-log/events and /admin/audit-log/investigations). Audit-event
taxonomies are documented per journey: editorial.*, incident.*,
drift.*, tenant.*, flag.*.
One previously grouped BFF gap remains. The tenant invitation and T&S
report writes now ship at POST /v1/admin/tenant-console/members/invite and
POST /v1/user-reports; the author-side editorial submit route remains a
documented journey gap. (The SCIM 2.0 endpoint also ships —
/v1/scim/v2/Users in apps/oshun/bff/src/routes/domain-stubs.ts: GET list,
GET /:id, POST, PATCH /:id, DELETE tombstone; no PUT.)
Recommendation engine BFF target undocumented. The recommendation engine
surfaces in cross-domain bridges (Tara → Nisaba, Nyx → Tara) but the BFF
endpoint is referenced only obliquely
(apps/oshun/bff/src/recommendations/). Each cross-domain journey flags
this.