---
status: reconciled-partial
coverage_depth: deep-for-shipped-boundary
last_reconciled: 2026-07-17
specs:
  - apps/oshun/web/e2e/agentic-pipeline-invocation.spec.ts
  - apps/oshun/web/e2e/agentic-pipeline-runnow-arete.spec.ts
  - apps/oshun/web/e2e/arete-weekly-review.spec.ts
source: WALKTHROUGH/journeys/agentic-pipeline-customer-invocation.md
---

# Journey result: Agentic pipeline customer invocation

- **Walked**: 2026-05-29 by Claude (Opus 4.8) against commit `bf12b0f7d8` plus
  the profile hydration repair made during that walk.
- **Reconciled**: 2026-07-17 against the current customer Run Now component,
  AgentRun lifecycle routes, guarded execution route, canonical
  `@oshun/agentic-studio` engine, and focused browser/route suites.
- **Verdict**: **partial** — the current product has a real customer
  request→approval→confirm/discard surface and a real server-authoritative
  guarded tool-plan executor. The customer result intentionally stops at
  `queued` after confirmation; provider-backed variant generation, cross-agent
  DAG completion, grounded composition, and a customer-visible final artifact
  are not proved by this walk.
- **Historical runner**:
  `/tmp/claude-oshun-lt-2-walkthrough/walk.mjs agentic-pipeline-customer-invocation`.
  It is retained only as historical provenance.

## Result at a glance

| Surface or boundary              | Proven result                                                                                                           | Authority limit                                                        |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Customer `/arete/review` Run Now | Request creates an approval-gated run; invoker confirms to `queued` or discards to `cancelled`                          | Does not display a fabricated completed draft                          |
| AgentRun lifecycle BFF           | Submit/list/get/approve/discard with owner isolation and approval-role checks                                           | Lifecycle state is not downstream execution output                     |
| Guarded execution BFF            | Validates a server-owned plan, fails closed without tools, executes a registered read-only tool, honors the kill switch | Focused execution contract, not every pipeline variant                 |
| Canonical engine                 | Approval status, completion notification contract, budgets, kill switches, and dispatch primitives                      | Provider/runtime bindings determine whether real generation can finish |
| Historical profile fix           | Stable server snapshots removed the recorded hydration mismatch                                                         | A profile rendering repair, not agentic completion evidence            |

## Evidence map

```mermaid
flowchart LR
    A[Customer Run Now] --> B[POST AgentRun]
    B --> C[awaiting approval]
    C -->|confirm by invoker| D[queued]
    C -->|discard| E[cancelled]
    D --> F[Downstream composer or executor]
    F -. provider-bound completion not proved .-> G[Customer-visible artifact]
    H[POST runs execute] --> I{Server tool catalog}
    I -->|unregistered| J[503 fail closed]
    I -->|registered| K[Governance admission]
    K -->|kill switch| L[terminated before tool]
    K -->|admitted| M[Read-only tool result]
```

## Proven observations

### Customer approval lifecycle

- `AreteReviewDraftRun` is mounted on the natural weekly-review surface and
  calls the live `/v1/agentic/runs` lifecycle rather than a browser-only
  fixture.
- Requesting `arete.weekly_review_draft` creates an `awaiting_approval` run with
  the `user.confirm.before.publish` gate.
- The invoker can confirm the pending run to `queued` or discard it to
  `cancelled`. The UI labels those states honestly and never promotes `queued`
  to “complete.”
- Another user cannot enumerate or approve the invoker's run. The real-HTTP
  suite pins the non-enumerating owner boundary and the approval-role refusal.

### Guarded execution boundary

- `POST /v1/agentic/runs/execute` rejects anonymous and malformed requests.
- The plan and tool registration are server-authoritative. A planned tool that
  is not present in the configured catalog returns
  `503 agent_tools_not_configured` instead of pretending to run.
- A registered read-only Studio tool executes under the governance guard and
  returns its AgentRun status plus `executedCount`.
- An active global kill switch terminates the run before the first tool call.
  The test asserts that no remaining tool executes.
- Budget admission and deeper dispatch behavior are exercised by the BFF/domain
  unit suites; the customer Playwright result does not silently inherit those
  tests as an end-to-end output claim.

### Historical walk and repair

- The 2026-05-29 runner proved `/messages` and `/profile` rendered and that the
  then-new `/v1/agents` and `/v1/orchestrator` endpoints responded.
- It found a React hydration mismatch on `/profile`. The repair gave all profile
  `useSyncExternalStore` hooks a stable seed `getServerSnapshot` and deferred
  render-time date values until mount.
- That repair remains useful product history, but route rendering and profile
  hydration are no longer treated as proof that an agentic job completed.

## Boundaries and gaps

- **Queued is not completed.** Confirmation releases a run to the downstream
  composer. The result contains no provider-produced weekly-review draft and no
  completed AgentRun notification.
- **Two execution surfaces are distinct.** The customer lifecycle routes manage
  approval-gated envelopes. `runs/execute` directly exercises the guarded server
  plan. Current tests prove both but do not claim the customer button invokes
  that direct endpoint.
- **One registered tool is not seven variants.** The execution spec proves a
  read-only catalog tool and governance termination. It does not walk every
  Metis, Nisaba, Arete, Studio, and operator variant.
- **Provider credentials stay fail-closed.** Provider-bound generation and
  grounded composition are not replaced with fixture output when bindings are
  absent.
- **No end-to-end provenance chain.** A customer-triggered run is not followed
  through sub-agent DAG dispatch, Sophia grounding, Isis provenance hashing,
  publication review, and final delivery in one recorded test.
- **The old hydration bug is closed separately.** Its fix should stay guarded by
  profile component/browser tests, not by this agentic result alone.

## Re-run evidence

```bash
PW_BROWSER_CHANNEL=chrome pnpm exec playwright test \
  -c apps/oshun/web/playwright.config.ts \
  apps/oshun/web/e2e/agentic-pipeline-invocation.spec.ts \
  apps/oshun/web/e2e/agentic-pipeline-runnow-arete.spec.ts \
  apps/oshun/web/e2e/arete-weekly-review.spec.ts \
  --workers=1
```

The route suites require the real local BFF harness. Provider-backed completion
must remain skipped/fail-closed when its credentials or runtime are unavailable;
changing the expected state from `queued` to a fixture “success” would weaken
this result.

## Source trail

- [Customer Run Now component](../../apps/oshun/web/src/components/lilith/AreteReviewDraftRun.tsx)
- [AgentRun lifecycle routes](../../apps/oshun/bff/src/routes/agentic-runs-lifecycle.ts)
- [Guarded execution route](../../apps/oshun/bff/src/agentic/runs-route.ts)
- [Canonical agent-run model](../../libs/oshun/agentic-studio/src/runs/agent-run.ts)
- [Governed orchestrator](../../libs/oshun/agentic-studio/src/runs/governed-orchestrator.ts)
- [Customer lifecycle browser spec](../../apps/oshun/web/e2e/agentic-pipeline-runnow-arete.spec.ts)
- [Execution/governance real-HTTP spec](../../apps/oshun/web/e2e/agentic-pipeline-invocation.spec.ts)

## Cross-references

- [Source-reconciled journey](../journeys/agentic-pipeline-customer-invocation.md)
- [Arete weekly-review result](./weekly-review-arete.md)
- [Sophia grounded-answer result](./sophia-grounded-answer.md)
- [Veritas evidence-trail result](./veritas-evidence-trail.md)
- [Journey coverage matrix](../journeys/coverage.md)

## Open questions

- Which executor consumes a confirmed customer `queued` run in each deployment,
  and where is its completion callback made authoritative?
- What customer surface should show provider failure, budget refusal,
  kill-switch termination, and retry without collapsing those states into one
  error?
- Which single trace joins the customer request, approval, tool admissions,
  grounding evidence, provenance chain, review decision, and final artifact?
- Which of the remaining pipeline variants have a shipped customer/operator
  trigger rather than only a registered lifecycle variant?
