V1 Web PWA · Surface walkthrough

V6 — Egbe Steward web app

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

walked
8sections3 minread

On this page

Context. surface customer · domain v6-steward · route /v6 · auth signed-in · source apps/oshun/web/src/app/v6/page.tsx

Last walked. 2026-06-03 automated runtime probe (Playwright headless) — prod build + mock BFF; render, HTTP 200, server-rendered <h1>, 0 page errors verified. Evidence: WALKTHROUGH/results/walkthrough-runtime-probe-2026-06-03.md

Purpose#

Browser companion for the V6 Egbe Steward App: an asynchronous-stewardship console for the V6 agent-companion experience. It surfaces the Chronicle digest, remote objectives, squad comms, and Crossroads counsel for a steward's agents. Out of the V1 feature map — this is a V6-arc surface that ships in the apps/oshun/web build (documented here for an exhaustive route inventory).

Entry points#

  • Direct URL / bookmark/v6 (signed-in; not in PUBLIC_PATHS)
  • Shell breadcrumbExplore › Egbe Steward App (the page mounts ShellLayout active="explore" with explicit breadcrumbs)

Layout regions#

  • Header: shell header + page header (data-v6-steward-browser) with kicker "V6 steward", model.title, model.summary, and an Open Homestead secondary button
  • Status rail (data-testid="v6-steward-status-strip") — four metrics: Steward, Agents, Open (pending objectives), Crossroads (open count)
  • Sync band (data-testid="v6-steward-action-status") — live action-status line (e.g. "Ready for asynchronous stewardship.")
  • Tablist (role="tablist", aria-label="Steward App sections") — four tabs: Chronicle, Objectives, Squad, Crossroads (icons via lucide-react)
  • Main — the selected section panel

States#

  • Chronicle (default)data-testid="v6-steward-section-chronicle": latest chronicle title, generation-mode digest line, ranked beats list
  • Objectives — input + 48/64/88 priority segments + Issue Objective; list of objectives (status / autonomy mode / target / verb / priority)
  • Squad — message textarea + intent segments (status-check / objective-clarification / permission-response) + Send Squad Comms; message list (intent / delivery state / body)
  • Crossroads (populated) — open-choice prompt + stakes, option buttons, counsel textarea, Submit Counsel
  • Crossroads (empty) — "No Crossroads records need review." when getOpenOrLatestCrossroads(model) returns null
  • Loading / Error / Offline — N/A: the surface is client-rendered from buildV6StewardAppModel() (an in-bundle deterministic model); there is no network read on this page, so no loading/error/offline read states
  • Gated — signed-in (shell); no per-role gate beyond the session
  • Standalone PWA — renders within the shell

Interactions#

  • Open Homestead (button, data-testid="v6-steward-open-homestead") — sets the action-status line to "Opening homestead ." (no navigation wired — status-only)
  • Section tabs (4 buttons, role="tab", data-testid="v6-steward-tab-<id>") — switch selectedSection; aria-selected tracks the active tab
  • Objective label (input, data-testid="v6-steward-objective-input")
  • Priority segments (3 buttons 48/64/88, aria-pressed) — set objectivePriority
  • Issue Objective (button, data-testid="v6-steward-issue-objective") — createV6ObjectiveDraft(...), prepends to the local objectives list, sets status "Objective issued to ." (local state only — no BFF write)
  • Squad message (textarea), intent segments (3 buttons), Send Squad Comms (button) — append a local V6SquadCommsMessage; status "Squad comms sent to ." (local only)
  • Crossroads option buttons (aria-pressed), Counsel (textarea), Submit Counsel (button) — set status "Crossroads counsel submitted:

Data & contracts#

  • Reads: in-bundle model buildV6StewardAppModel() from apps/oshun/mobile/v6/stewardAppModel (shared with the V6 mobile Steward App); no BFF/network read
  • Writes: None on the wire. All actions mutate local React state and the action-status line; the V6 BFF wiring is a future-arc concern
  • Realtime: None.
  • Caching: client component; SSR shell only
  • Auth/role check: session (signed-in); no V1 BFF policy applies (out-of-v1)
  • Contracts: V6Objective, V6SquadCommsMessage, V6StewardSectionId, V6_STEWARD_SECTION_IDS, createV6ObjectiveDraft, getOpenOrLatestCrossroads, getPrimaryV6StewardAgent

Cross-references#

  • Sibling out-of-v1 surfaces: v2.md, v3-landing.md
  • V6 studio counterpart: ../../studio/future/egbe-studio.md
  • Spec: V6/V6_features.md, V6/V6_ARCHITECTURE.md
  • Component sources: apps/oshun/web/src/app/v6/V6StewardWebApp.tsx, apps/oshun/mobile/v6/stewardAppModel.ts

Open questions / known gaps#

  • Every action is local-state only (ACTION_AT_ISO is a fixed constant); confirm the V6 BFF endpoints that will back Issue Objective / Send Squad Comms / Submit Counsel before this surface is promoted past V6 preview.
  • Open Homestead sets a status line but does not navigate — confirm the intended homestead deep-link target.