# Eve chat-surface parity audit: ChatGPT and Claude.ai as dated references

Assessment date: 2026-09-11. Source baseline: `1d545a6bb9`
(`oshun-mobile-parity-2026-07-04`, merged with `origin/main`).

**Verdict: Eve cannot generate images, video, music, or 3D models from the
conversation, and none of her three chat surfaces can show such media inline or
as an artifact.** The generation toolchains exist elsewhere in the monorepo
(Isis image/video/music/3D, Bellona text-to-3D, the opt-in image/TTS media tool
in the Hermes-parity library) but none is mounted in Eve's governed BFF toolset,
the turn request accepts text only, the shared reply renderer has no image,
audio, video, math, or diagram node, and the model registry records the media
leg as **not admitted** (task 15.1). Beyond media, the surfaces are behind
ChatGPT and Claude.ai on file attachments, artifact/canvas workspaces, code
presentation, turn editing and branching, conversation management, mode/tool
selection, web search, data analysis, and long-running task delivery. Every gap
below is bound to a task in
[`EVE_SOTA_GAP_CLOSURE_TODOS_2026-09-01.md`](../../EVE_SOTA_GAP_CLOSURE_TODOS_2026-09-01.md).

This is an assessment, not an implementation or release-admission change. It
records what the source shows on the stated baseline; it does not claim any new
capability, and it does not lower the bar for the tasks it creates.

## Reference products and what "parity" means here

Two public assistant interfaces were used as the dated comparison set, as
observed on 2026-09-11 from their published product pages and in-product
behaviour: OpenAI ChatGPT (web, desktop, mobile) and Anthropic Claude.ai (web,
desktop, mobile). Both are moving targets; this record names the feature classes
they share, not a screenshot of either. Parity is a measured usefulness outcome
for the operator, not a badge: a feature counts only when a real journey through
Eve's own governance (intent ledger, confirm cards, privacy boundary, capability
declarations) produces the same operator outcome. Copying chrome without the
governed path would violate the charter.

Feature classes shared by both references and treated as the baseline:

- Composer: text with multi-line input, stop generation, file and image
  attachment (upload, paste, drag-drop, mobile camera/library), dictation,
  duplex voice mode, a picker for tools/modes (search, research, create image,
  canvas, extended thinking), model or effort selection, prompt starters,
  slash/mention shortcuts for saved instructions and tools.
- Transcript: full Markdown with syntax-highlighted code blocks that carry a
  language label and copy/download controls, math, diagrams, inline images and
  media players, collapsible reasoning/tool activity, cited sources with links,
  per-message copy, feedback, read-aloud, regenerate, edit-and-resend with
  version navigation, share and export.
- Artifact workspace (Claude Artifacts, ChatGPT Canvas): a side-by-side panel
  for code, documents, HTML/SVG/React previews, data tables and generated media,
  with versions, in-place edits by the assistant, download, save, and publish
  decisions.
- Conversations: auto-titled history with search, rename, pin, archive, delete,
  folders/projects with files and instructions, temporary chats, cross-device
  resume.
- Personalisation: visible memory with edit/delete, custom instructions or
  personality, theme and accessibility settings, connectors (drive, mail, code
  hosts, MCP servers), scheduled tasks, data controls.
- Agentic work in chat: web search with source cards, deep research with a cited
  report, data analysis with sandboxed code execution and file/chart outputs,
  computer use with a live view, long-running task progress and completion
  notifications.
- Media generation: image creation with edits/variations (both), video creation
  (ChatGPT via Sora). Neither reference ships native music or 3D generation;
  Oshun has toolchains for both, so those rows are beyond-parity charter
  requirements rather than parity gaps.

## Surfaces audited

| Surface                             | Source                                                                                                                                                                                                                                                                      | Transport                              | Renderer                                                                   |
| ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | -------------------------------------------------------------------------- |
| Admin copilot drawer (builder side) | [`AdminAssistantChat.tsx`](../../apps/oshun/admin/src/components/AdminAssistantChat.tsx), [`AdminAssistantPanel.tsx`](../../apps/oshun/admin/src/components/AdminAssistantPanel.tsx)                                                                                        | incremental SSE with buffered fallback | shared [`markdown.tsx`](../../libs/oshun/shell-assistant/src/markdown.tsx) |
| Member web panel and dock (Lilith)  | [`AssistantPanel.tsx`](../../apps/oshun/web/src/components/assistant/AssistantPanel.tsx), [`AssistantDock.tsx`](../../apps/oshun/web/src/components/assistant-dock/AssistantDock.tsx), [`ReplyDetails.tsx`](../../apps/oshun/web/src/components/assistant/ReplyDetails.tsx) | incremental SSE                        | shared `markdown.tsx`                                                      |
| Mobile sheet (React Native)         | [`MobileAssistantSheet.tsx`](../../apps/oshun/mobile/src/components/MobileAssistantSheet.tsx), [`MobileAssistantProvider.tsx`](../../apps/oshun/mobile/src/assistant/MobileAssistantProvider.tsx)                                                                           | buffered JSON (task 8.4 open)          | plain text; the shared renderer is React DOM and is not imported here      |

Server contract:
[`routes/assistant.ts`](../../apps/oshun/bff/src/routes/assistant.ts) exposes
sessions (create, list, delete), `turns` (text, `inputMode`, `locale`,
`contextHandoff`, `pageContext`, `clientCapabilities` only), cancel, feedback,
actions, audio (speech-to-text), tts, client-tool results, tour submissions,
metrics, and telemetry. There is no attachment, artifact, generation-job, or
share endpoint.

## Crosswalk

Status vocabulary: **ships** (source and coverage found), **partial** (a
narrower or recovery-only form exists), **absent** (no source path). Evidence is
the file or contract that decides the status. "Task" names the ledger owner that
must close the row.

### Composer and input

| Feature                                                                 | Admin                     | Web                                | Mobile                          | Evidence                                                                                                                                                          | Task                               |
| ----------------------------------------------------------------------- | ------------------------- | ---------------------------------- | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
| Text prompt, stop generation                                            | ships                     | ships                              | ships                           | `Stop assistant reply` controls; `turns/:turnId/cancel` route; cancellation release gate spec                                                                     | 8.5 (post-cancel side-effect gate) |
| File/document attachment (PDF, docs, sheets)                            | absent                    | absent                             | absent                          | turn body accepts `text` plus context fields only; no upload route; no `type="file"` input on any surface                                                         | 8.13, 14.8, 17.24                  |
| Image attach, paste, drag-drop, camera                                  | absent                    | absent                             | absent                          | no `onPaste`/`onDrop`/`dataTransfer` handlers; the only image path is the server-initiated single page screenshot (`inspect_page`), ephemeral and never persisted | 8.13, 17.24                        |
| Dictation (speech-to-text)                                              | ships (browser dictation) | ships (`MediaRecorder` → `/audio`) | absent (direct text submission) | task 8.1 baseline note; `README.voice.md`                                                                                                                         | 8.7                                |
| Duplex voice mode, barge-in, VAD                                        | absent                    | absent                             | absent                          | 8.1 baseline: "not duplex voice-first"                                                                                                                            | 8.7                                |
| Tool/mode picker (search, research, create media, canvas, think longer) | absent                    | absent                             | absent                          | no picker component; tool selection is server-side routing only                                                                                                   | 8.18                               |
| Model or effort selection                                               | absent                    | absent                             | absent                          | no `select`/model control; registry-bound routes only                                                                                                             | 8.18, 15.7                         |
| Prompt starters                                                         | absent                    | ships                              | partial (quick actions tray)    | web suggestion chips; admin has command palette but no starters                                                                                                   | 8.18                               |
| Slash commands, mentions of skills/tours/targets                        | absent                    | absent                             | absent                          | no composer grammar; tours start via tool call                                                                                                                    | 8.18                               |
| Keyboard shortcut help                                                  | ships                     | partial                            | n/a                             | `KeyboardShortcutsHelp.tsx`; web has key handlers, no help sheet                                                                                                  | 8.8                                |

### Transcript and rendering

| Feature                                                          | Admin                   | Web                                               | Mobile                         | Evidence                                                                                                   | Task                |
| ---------------------------------------------------------------- | ----------------------- | ------------------------------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------- | ------------------- |
| Markdown: paragraphs, nested lists, GFM tables, links, RTL       | ships                   | ships                                             | absent (plain text)            | `markdown.tsx` closed subset; no import in the mobile sheet                                                | 8.14                |
| Code blocks with language label, syntax highlight, copy/download | absent                  | absent                                            | absent                         | fences render as `<pre>`; no highlighter, no per-block control                                             | 8.14                |
| Math (LaTeX)                                                     | absent                  | absent                                            | absent                         | no math node in the renderer                                                                               | 8.14                |
| Diagrams (Mermaid or equivalent)                                 | absent                  | absent                                            | absent                         | no diagram node                                                                                            | 8.14                |
| Inline images in replies                                         | absent                  | partial (card `imageUrl` carried, never rendered) | absent                         | `AssistantResponseCard.imageUrl` in `types.ts`; the only `<img>` on web is the page-screenshot preview     | 8.14, 17.23         |
| Audio/video players, 3D viewer in transcript                     | absent                  | absent                                            | absent                         | TTS plays through an audio object; no media node                                                           | 8.14, 17.23         |
| Tool activity and evidence panel                                 | ships (Activity list)   | ships (`ReplyDetails`, evidence, tool filter)     | partial                        | admin `turnActivity`; web reply inspection                                                                 | 8.16                |
| Collapsible reasoning stream                                     | absent                  | absent                                            | absent                         | small-model turn route; no reasoning frames in `turn-stream-frames.ts`                                     | 8.16 (decision)     |
| Citations and sources                                            | partial (docs only)     | ships (docs, grounded cards)                      | partial                        | citation-claim checks; docs search is the only retrieval source                                            | 17.26 (web sources) |
| Copy reply                                                       | absent                  | ships                                             | absent                         | `Copy this reply` only on web                                                                              | 8.16                |
| Per-turn feedback with reasons                                   | absent                  | ships                                             | absent                         | `/turns/:turnId/feedback` route exists; only web renders feedback controls                                 | 8.16                |
| Read aloud per reply                                             | ships (conditional)     | ships                                             | absent                         | `/tts` route; voice config                                                                                 | 8.16                |
| Regenerate (same or alternate route)                             | absent                  | absent                                            | absent                         | no regenerate control; web "Edit message" is a post-failure recovery affordance that resends the same text | 8.16                |
| Edit-and-resend with branch/version navigation                   | partial (recovery only) | partial (recovery only)                           | partial (`Edit message` label) | all three surfaces expose recovery editing; no branch model in `AssistantTurn` or version navigation       | 8.16                |
| Share link, export (Markdown/JSON)                               | absent                  | partial (save grounded reply as Nisaba notebook)  | absent                         | no share/export route                                                                                      | 8.16, 14.8          |
| Typed generative UI (confirm/status/evidence intents)            | ships                   | ships                                             | absent                         | task 8.6 closed; `generative-ui.ts` allowlist                                                              | 8.15 extends        |
| Streaming with live region                                       | ships                   | ships                                             | absent (buffered)              | 8.1 baseline                                                                                               | 8.4                 |

### Artifact workspace

| Feature                                                                      | Admin  | Web                            | Mobile | Evidence                                                                                          | Task       |
| ---------------------------------------------------------------------------- | ------ | ------------------------------ | ------ | ------------------------------------------------------------------------------------------------- | ---------- |
| Side-by-side artifact panel (code, doc, HTML/SVG preview, data table, media) | absent | absent                         | absent | no artifact type in `types.ts` or stream frames; `contextHandoff.artifact` is an input label only | 8.15       |
| Versions, diff, assistant edit-in-place                                      | absent | absent                         | absent | no artifact store bound to sessions                                                               | 8.15       |
| Download, save to owning domain, publish decision                            | absent | partial (Nisaba notebook save) | absent | one-off save path                                                                                 | 8.15, 14.8 |

### Conversation management

| Feature                                      | Admin   | Web                         | Mobile                             | Evidence                                                                                                     | Task      |
| -------------------------------------------- | ------- | --------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------ | --------- |
| History list and switch                      | absent  | ships (`Previous sessions`) | partial (`Assistant turn history`) | `GET /v1/assistant/sessions`; admin creates sessions but lists none                                          | 8.17      |
| Auto titles                                  | partial | partial                     | partial                            | sessions carry metadata but no generated title surfaced                                                      | 8.17      |
| Rename, pin, archive, delete                 | absent  | absent                      | absent                             | `DELETE /v1/assistant/sessions/:sessionId` exists; no UI calls it                                            | 8.17      |
| Search across conversations                  | absent  | absent                      | absent                             | no search route or control                                                                                   | 8.17      |
| Projects/folders with files and instructions | absent  | absent                      | absent                             | no grouping model                                                                                            | 8.17      |
| Temporary chat                               | partial | partial                     | partial                            | `memoryScope: 'off' \| 'session'` exists; no explicit temporary-chat affordance or non-persistence guarantee | 8.17, 9.2 |
| Cross-device resume                          | partial | partial                     | partial                            | durable session store with integration spec; no cross-client hand-off UI                                     | 8.17      |

### Personalisation and settings

| Feature                           | Admin   | Web     | Mobile  | Evidence                                                                                        | Task                               |
| --------------------------------- | ------- | ------- | ------- | ----------------------------------------------------------------------------------------------- | ---------------------------------- |
| Memory view, edit, delete         | partial | partial | partial | `remember_operator_note`/`forget_operator_memory` tools; memory state components; task 9.2 open | 9.2                                |
| Custom instructions / personality | partial | partial | partial | persona switchers disabled with routing copy (8.1); invocation-seeded persona only              | 8.18                               |
| Theme, reduced motion             | partial | ships   | partial | web honours `prefers-reduced-motion`; admin shell theme                                         | 8.8                                |
| Connectors and MCP servers        | absent  | absent  | absent  | Phase 16 has no UI                                                                              | 16.x (no new task; noted for 18.3) |
| Scheduled tasks / watchers UI     | absent  | absent  | absent  | watcher semantics specified (7.3); UI gated by 7.4                                              | 7.4, 8.19                          |
| Data controls (export, delete)    | partial | partial | partial | Phase 14 open                                                                                   | 14.4, 14.8                         |

### Agentic work in chat

| Feature                                                              | Admin  | Web    | Mobile | Evidence                                                                                                                                                                                            | Task    |
| -------------------------------------------------------------------- | ------ | ------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| Web search / browse with source cards                                | absent | absent | absent | Eve BFF tools: `search_docs`, `read_page`, `inspect_page`, domain tools only; the web-search/browser tools in [`@oshun/assistant`](../../libs/oshun/assistant/src/tools/index.ts) are unfused (7.1) | 17.26   |
| Deep research with cited report                                      | absent | absent | absent | no research mode                                                                                                                                                                                    | 17.26   |
| Data analysis / sandboxed code execution with file and chart outputs | absent | absent | absent | `code-exec.tool.ts` exists in the unfused library; no sandbox admission                                                                                                                             | 17.25   |
| Computer use with live view                                          | absent | absent | absent | Phase 6                                                                                                                                                                                             | 6.6–6.8 |
| Long-running task progress and completion notifications              | absent | absent | absent | no background job cards; notification center is admin-only and not chat-bound                                                                                                                       | 8.19    |

### Media generation

| Feature                                            | Admin                          | Web    | Mobile | Reference                        | Existing Oshun toolchain (not reachable from Eve)                                                                                                                                                     | Task               |
| -------------------------------------------------- | ------------------------------ | ------ | ------ | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
| Image generation, edits, variations                | absent                         | absent | absent | ChatGPT, Claude (via connectors) | [`@isis/ai-providers`](../../libs/isis/ai-providers/src/index.ts) Flux/SD3.x adapters; opt-in [`media.tool.ts`](../../libs/oshun/assistant/src/tools/media.tool.ts) image generator + filesystem sink | 15.7, 17.22, 17.23 |
| Video generation                                   | absent                         | absent | absent | ChatGPT (Sora)                   | [`@isis/seedance-provider`](../../libs/isis/seedance-provider/src/index.ts), `@isis/ai-video`, `@yemaya/video-generation`                                                                             | 15.7, 17.22, 17.23 |
| Music / audio / speech generation                  | absent (TTS ships for replies) | absent | absent | neither reference natively       | [`@isis/music-generation`](../../libs/isis/music-generation/src/index.ts) (suno/udio/musicgen/stable-audio), `@isis/audio-generation`, existing TTS route                                             | 15.7, 17.22, 17.23 |
| 3D model generation and viewer                     | absent                         | absent | absent | neither reference natively       | [`@isis/3d-generation`](../../libs/isis/3d-generation/src/index.ts) (Rodin), [`@bellona/text-to-3d`](../../libs/bellona/text-to-3d/src/index.ts) (Meshy/Tripo), `@isis/3d-browser`                    | 15.7, 17.22, 17.23 |
| Provenance, disclosure, licence on generated media | absent                         | absent | absent | both label generated images      | task 14.7 governs; nothing is wired because nothing generates                                                                                                                                         | 14.7, 17.22        |

## Why the media rows are absent, precisely

1. The governed toolsets Eve actually mounts are
   [`agent-tools.ts`](../../apps/oshun/bff/src/assistant/agent-tools.ts),
   [`admin-agent-tools.ts`](../../apps/oshun/bff/src/assistant/admin-agent-tools.ts),
   and the workbench-kit read/write/command tools. None calls a generator.
2. The only Eve-adjacent generation tool, `media.tool.ts`, lives in the
   Hermes-parity library whose fusion scope task 7.1 recorded as unfused; its
   sole BFF consumer is the V10 Ori presence runtime, not the assistant route.
3. The model registry (task 15.1 note) lists the media leg as not admitted, so
   even a mounted tool would have no priced, fail-loud route.
4. The turn contract carries no attachment, and the stream frames carry no
   artifact or media frame, so a generated file would have no way to reach a
   surface or be rendered when it arrived.
5. Privacy (14.7/14.8), security (Phase 4 gate), and evaluation (Phase 12)
   admission for generated and uploaded media has not been done.

## Bound tasks

The 2026-09-11 chat-surface parity expansion adds tasks 8.12–8.20, 12.11, 14.8,
15.7, and 17.22–17.27 to the ledger. Tasks 8.9 and 18.1 now depend on the
expansion so that Phase 8/G9 and final closure cannot pass with these rows open.
Every new task starts unchecked; this document proves nothing about any of them.

## Task 8.12 ratification (2026-09-16)

The dated crosswalk is now adopted as the source-owned
[`eve.chat-surface-parity.v1`](eve-chat-surface-parity/v1.0.0/register.json)
register and validated by
[`eve-chat-surface-parity.schema.json`](eve-chat-surface-parity.schema.json). It
contains all 53 feature rows, all 159 per-surface statuses, exact owner task
IDs, deciding evidence, and source anchors for every one of the 54 `ships` or
`partial` claims. The anchors resolve against the immutable audited revision
`1d545a6bb947910c5f303c70da04bd3d33981bf0`, so subsequent product work cannot
silently rewrite what this dated assessment observed.

Ratification corrected two prose classifications before adoption: mobile
per-turn feedback is `absent` because only the web surface renders feedback
controls, while the admin drawer's failure-recovery edit control makes
edit-and-resend `partial (recovery only)`, matching web and mobile. Placeholder
owners were also made executable: connectors/MCP binds to Tasks 16.5 and 8.18,
and computer use expands to Tasks 6.6, 6.7, and 6.8.

The verifier fails closed when a row is omitted, a status lacks deciding
evidence, an absent or partial row loses its exact ledger owner, a positive
claim lacks a source anchor, an anchor is absent from the dated source, source
bytes change, or outcome parity is weakened to copied chrome. This ratification
changes no user-facing source and closes only Task 8.12; every downstream
feature owner and Phase 8 remain open.
