---
status: reconciled-partial
coverage_depth: deep
last_reconciled: 2026-07-17
specs:
  - apps/oshun/web/e2e/arete-living-offering-create.spec.ts
  - apps/oshun/web/e2e/arete-offering-actions.spec.ts
  - apps/oshun/web/e2e/arete-offering-coach-preview.spec.ts
  - apps/oshun/web/e2e/arete-coach-bff.spec.ts
source: WALKTHROUGH/journeys/arete-living-offering-create.md
---

# Journey result: Arete living-offering create

- **Walked**: 2026-05-29 by Claude (Opus 4.8) against commit `3678298cd3`.
- **Reconciled**: 2026-07-17 against the current offering workspace, Lilith
  preflight, Arete BFF routes, gallery read-back, receipt envelope, and focused
  Playwright suites. This source review is not a rerun of the historical walker.
- **Verdict**: **partial** — the old surface-only result has become a deep,
  member-scoped create/keep/send path with fail-closed safety, recoverable BFF
  errors, coach preview, and receipt evidence. The coach still does not compose
  the score grid, delivery policy is not enforced at playback, and the receipt
  does not prove signed rendered media.
- **Historical runner**:
  `/tmp/claude-oshun-lt-2-walkthrough/walk.mjs arete-living-offering-create`.
  The temporary path is retained as provenance only; the repository specs below
  are the portable rerun surface.

## Result at a glance

| Evidence lane              | Current result                                                                                                      | Authority limit                          |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| Composition workspace      | Editable intention, scene preview, selectable fixture score, material reorder, recipient, and occasion controls     | Score options remain fixture-backed      |
| Coach preview              | Framework-specific live BFF guidance, honest 503 state, and successful retry                                        | Does not rewrite the score composition   |
| Lilith safety preflight    | Keep/send assess the browser intention first; blocking or unavailable safety prevents the write                     | Pre-submit preview can still show prose  |
| Keep/send lifecycle        | Real member-scoped draft and sent rows, gallery reload, selected recipient/occasion, and recoverable write failure  | Watch-once/expiry policy is not enforced |
| Receipt                    | C2PA-labelled envelope with manifest id and privacy hashes; raw intention is absent from the receipt panel and JSON | No rendered media bytes are signed       |
| Historical Atelier surface | `/atelier` and `/atelier/new` rendered during the 2026-05-29 walk                                                   | Not the current offering completion seam |

## Evidence map

The shipped path joins composition, preflight, and persistence. Coaching and
score selection are adjacent interactions; the receipt describes a record, not
the output of a media renderer.

```mermaid
flowchart LR
    A[Edit private intention] --> B[Preview fixture score and scene]
    A --> C[Request coach guidance]
    C --> D[Framework-specific BFF response]
    D -. does not rewrite .-> B
    A --> E{Keep or send}
    E --> F{Lilith safety assessment}
    F -->|blocked or unavailable| G[No offering write]
    F -->|safe| H[Member-scoped offering row]
    H --> I[Draft or sent gallery read-back]
    A --> J[Request receipt envelope]
    J --> K[Manifest id and privacy hashes]
    K -. no media bytes .-> L[Binary signing remains open]
```

## Proven observations

### Historical walk

- `/arete/offerings`, `/atelier`, and `/atelier/new` rendered, and the then-
  expected offering and scene endpoints responded. That observation repaired the
  prior 404s; it did not exercise the complete composition lifecycle.
- The record's former “pass (surfaces)” label was accurate only for reachability
  on 2026-05-29. It is not retained as a present journey verdict.

### Current composition and coach evidence

- `/arete/offering` exposes a real intention textarea. Edited prose updates the
  scene preview; recipient and occasion edits update the masthead, send label,
  write body, receipt request, and later gallery row.
- Score selection and material reorder are interactive and accessibility-
  labelled. The score choices originate in the page data, not the coach reply.
- The coach preview POSTs the selected framework and user message to
  `/v1/arete/coach/responses`. Stoic, CBT, ACT, reflective, and general guidance
  use distinct server responses; a 503 clears stale guidance and leaves an
  explicit retry path.

### Current safety, persistence, and receipt evidence

- Save and Send first POST the exact browser-entered intention to the Lilith
  safety-assessment route with the authenticated context. A blocking result
  mounts crisis resources and makes no offering write.
- A safety-assessment error also fails closed. An offering-write error keeps the
  active action enabled, and the browser suite proves the next attempt reaches
  `draft-kept` or `delivered` through the live BFF.
- Clean writes read back from `/v1/arete/offerings` and
  `/v1/arete/offerings/sent` under the same member. The rendered gallery carries
  the selected recipient, occasion, and private-intention preview.
- “See the C2PA receipt” sends the current score and sharing context to the BFF.
  The response exposes a manifest id plus cue-privacy and private-intent hashes,
  while both the direct JSON and UI omit the raw intention.

## Boundaries and gaps

- **Coach guidance is not score composition.** The coach produces framework-
  specific prose. It does not dynamically generate or replace the fixture-backed
  score grid shown in the composition workspace.
- **Receipt is not rendered-media signing.** The BFF issues a useful receipt
  envelope, but this route does not invoke the Living Scenes/Aja renderer or
  prove a signature over concrete output bytes.
- **Delivery is a record, not enforced playback policy.** Sent rows persist and
  read back; “watch once,” one-device use, expiry, and downstream revocation are
  not demonstrated here.
- **Safety happens at action time.** The fail-closed assessment guards
  keep/send. The live scene preview can still reflect edited prose before that
  preflight.
- **Adjacent tone handoff is open.** A blocking crisis branch is covered, but a
  below-threshold signal is not shown switching the selected coaching framework
  to the reflective tone band.
- **Framework aliases collapse.** Goals, habits, and motivation modes map to the
  general BFF framework; the UI must not imply a distinct server scoring model.

## Re-run evidence

The portable focused suites are:

```bash
PW_BROWSER_CHANNEL=chrome pnpm exec playwright test \
  -c apps/oshun/web/playwright.config.ts \
  apps/oshun/web/e2e/arete-living-offering-create.spec.ts \
  apps/oshun/web/e2e/arete-offering-actions.spec.ts \
  apps/oshun/web/e2e/arete-offering-coach-preview.spec.ts \
  apps/oshun/web/e2e/arete-coach-bff.spec.ts \
  --workers=1
```

These suites require the web/BFF real-development-infrastructure harness. A
green source reconciliation must not be reported as a fresh runtime walk.

## Source trail

- [Offering route](../../apps/oshun/web/src/app/arete/offering/page.tsx)
- [Composition workspace](../../apps/oshun/web/src/components/lilith/AreteOfferingWorkspace.tsx)
- [Composition controls](../../apps/oshun/web/src/components/lilith/AreteOfferingCompositionControls.tsx)
- [Safety, keep/send, and receipt actions](../../apps/oshun/web/src/components/lilith/AreteOfferingActions.tsx)
- [Arete BFF routes](../../apps/oshun/bff/src/routes/domain-stubs.ts)
- [Coach BFF route](../../apps/oshun/bff/src/routes/arete.ts)
- [Primary composition spec](../../apps/oshun/web/e2e/arete-living-offering-create.spec.ts)
- [Action and read-back spec](../../apps/oshun/web/e2e/arete-offering-actions.spec.ts)
- [Offering coach-preview spec](../../apps/oshun/web/e2e/arete-offering-coach-preview.spec.ts)
- [Coach real-HTTP spec](../../apps/oshun/web/e2e/arete-coach-bff.spec.ts)

## Cross-references

- [Source-reconciled journey](../journeys/arete-living-offering-create.md)
- [Journey coverage matrix](../journeys/coverage.md)
- [Crisis-aware tone-policy result](./crisis-aware-tone-policy.md)
- [Arete habit-create result](./arete-create-habit.md)
- [External dependency decisions](./external-dependencies/README.md)

## Open questions

- Should coach guidance remain explanatory, or should the product expose an
  explicit “apply to score” action with provenance and undo?
- At what point must safety assessment hide or halt the pre-submit scene
  preview?
- Which service enforces watch count, device binding, expiry, and revocation for
  a sent offering?
- What exact renderer and key-custody path upgrades the envelope into a
  signature over produced media bytes?
