{
  "schemaVersion": "eve.chat-surface-parity.v1",
  "taskId": "8.12",
  "assessmentDate": "2026-09-11",
  "ratifiedDate": "2026-09-16",
  "baseline": {
    "products": ["ChatGPT", "Claude.ai"],
    "observedOn": "2026-09-11",
    "sourceRevision": "1d545a6bb947910c5f303c70da04bd3d33981bf0",
    "auditPath": "docs/audits/EVE_CHAT_UI_PARITY_AUDIT_2026-09-11.md"
  },
  "parityDefinition": {
    "criterion": "Measured operator outcome through Eve governance; visual similarity or copied chrome is insufficient.",
    "requiredGovernancePaths": [
      "intent-ledger",
      "confirm-cards",
      "privacy-boundary",
      "capability-declarations"
    ],
    "statusVocabulary": {
      "ships": "The dated surface source carries the operator-visible outcome.",
      "partial": "A narrower surface affordance or shared substrate exists, but the outcome is incomplete.",
      "absent": "No qualifying operator path exists on the dated surface.",
      "not-applicable": "The interaction does not apply to that surface class."
    }
  },
  "surfaces": [
    {
      "id": "admin-drawer",
      "label": "Admin copilot drawer",
      "sourcePaths": [
        "apps/oshun/admin/src/components/AdminAssistantChat.tsx",
        "apps/oshun/admin/src/components/AdminAssistantPanel.tsx"
      ],
      "transport": "incremental SSE with buffered fallback",
      "renderer": "libs/oshun/shell-assistant/src/markdown.tsx"
    },
    {
      "id": "member-web",
      "label": "Member web panel and dock",
      "sourcePaths": [
        "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
        "apps/oshun/web/src/components/assistant-dock/AssistantDock.tsx",
        "apps/oshun/web/src/components/assistant/ReplyDetails.tsx"
      ],
      "transport": "incremental SSE",
      "renderer": "libs/oshun/shell-assistant/src/markdown.tsx"
    },
    {
      "id": "mobile-sheet",
      "label": "Mobile sheet",
      "sourcePaths": [
        "apps/oshun/mobile/src/components/MobileAssistantSheet.tsx",
        "apps/oshun/mobile/src/assistant/MobileAssistantProvider.tsx"
      ],
      "transport": "buffered JSON at the dated source revision",
      "renderer": "plain React Native Text at the dated source revision"
    }
  ],
  "featureCount": 53,
  "features": [
    {
      "id": "composer.text-prompt-stop-generation",
      "category": "composer",
      "feature": "Text prompt, stop generation",
      "statuses": {
        "admin-drawer": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/components/AdminAssistantChat.tsx",
              "literal": "aria-label=\"Stop assistant reply\"",
              "line": 1330,
              "blobSha256": "8fd2ec0f2976f460e2d032d3723411b0d939317a13a4b08ad4aed84dacbc2bb2",
              "basis": "surface-implementation"
            }
          ]
        },
        "member-web": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "aria-label=\"Stop assistant reply\"",
              "line": 5943,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "surface-implementation"
            }
          ]
        },
        "mobile-sheet": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/mobile/src/components/MobileAssistantSheet.tsx",
              "literal": "accessibilityLabel=\"Stop assistant reply\"",
              "line": 386,
              "blobSha256": "519dc4fc5d75a8255a43c805644fcc748e125ccdcbd746271ad9c1a92b73cd13",
              "basis": "surface-implementation"
            }
          ]
        }
      },
      "decidingEvidence": "`Stop assistant reply` controls; `turns/:turnId/cancel` route; cancellation release gate spec",
      "ownerTaskIds": ["8.5"],
      "originalOwnerCell": "8.5 (post-cancel side-effect gate)"
    },
    {
      "id": "composer.file-document-attachment-pdf-docs-sheets",
      "category": "composer",
      "feature": "File/document attachment (PDF, docs, sheets)",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "turn body accepts `text` plus context fields only; no upload route; no `type=\"file\"` input on any surface",
      "ownerTaskIds": ["8.13", "14.8", "17.24"],
      "originalOwnerCell": "8.13, 14.8, 17.24"
    },
    {
      "id": "composer.image-attach-paste-drag-drop-camera",
      "category": "composer",
      "feature": "Image attach, paste, drag-drop, camera",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "no `onPaste`/`onDrop`/`dataTransfer` handlers; the only image path is the server-initiated single page screenshot (`inspect_page`), ephemeral and never persisted",
      "ownerTaskIds": ["8.13", "17.24"],
      "originalOwnerCell": "8.13, 17.24"
    },
    {
      "id": "composer.dictation-speech-to-text",
      "category": "composer",
      "feature": "Dictation (speech-to-text)",
      "statuses": {
        "admin-drawer": {
          "state": "ships",
          "qualifier": "browser dictation",
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/lib/admin-voice.ts",
              "literal": "const recorder = new MediaRecorder(stream);",
              "line": 167,
              "blobSha256": "c40fc663aeae597f8de5c6841674018ff78edf258d43bfa18ae3098628593e6a",
              "basis": "surface-implementation"
            }
          ]
        },
        "member-web": {
          "state": "ships",
          "qualifier": "MediaRecorder → /audio",
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "const recognition = new SpeechRecognitionAPI();",
              "line": 3998,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "surface-implementation"
            }
          ]
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": "direct text submission",
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "task 8.1 baseline note; `README.voice.md`",
      "ownerTaskIds": ["8.7"],
      "originalOwnerCell": "8.7"
    },
    {
      "id": "composer.duplex-voice-mode-barge-in-vad",
      "category": "composer",
      "feature": "Duplex voice mode, barge-in, VAD",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "8.1 baseline: \"not duplex voice-first\"",
      "ownerTaskIds": ["8.7"],
      "originalOwnerCell": "8.7"
    },
    {
      "id": "composer.tool-mode-picker-search-research-create-media-canvas-think-longer",
      "category": "composer",
      "feature": "Tool/mode picker (search, research, create media, canvas, think longer)",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "no picker component; tool selection is server-side routing only",
      "ownerTaskIds": ["8.18"],
      "originalOwnerCell": "8.18"
    },
    {
      "id": "composer.model-or-effort-selection",
      "category": "composer",
      "feature": "Model or effort selection",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "no `select`/model control; registry-bound routes only",
      "ownerTaskIds": ["8.18", "15.7"],
      "originalOwnerCell": "8.18, 15.7"
    },
    {
      "id": "composer.prompt-starters",
      "category": "composer",
      "feature": "Prompt starters",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "{ label: 'Journal prompt'",
              "line": 992,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "surface-implementation"
            }
          ]
        },
        "mobile-sheet": {
          "state": "partial",
          "qualifier": "quick actions tray",
          "sourceEvidence": [
            {
              "path": "apps/oshun/mobile/src/components/MobileAssistantSheet.tsx",
              "literal": "context.quickPrompts.map((prompt, index) => (",
              "line": 727,
              "blobSha256": "519dc4fc5d75a8255a43c805644fcc748e125ccdcbd746271ad9c1a92b73cd13",
              "basis": "qualified-substrate"
            }
          ]
        }
      },
      "decidingEvidence": "web suggestion chips; admin has command palette but no starters",
      "ownerTaskIds": ["8.18"],
      "originalOwnerCell": "8.18"
    },
    {
      "id": "composer.slash-commands-mentions-of-skills-tours-targets",
      "category": "composer",
      "feature": "Slash commands, mentions of skills/tours/targets",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "no composer grammar; tours start via tool call",
      "ownerTaskIds": ["8.18"],
      "originalOwnerCell": "8.18"
    },
    {
      "id": "composer.keyboard-shortcut-help",
      "category": "composer",
      "feature": "Keyboard shortcut help",
      "statuses": {
        "admin-drawer": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/components/KeyboardShortcutsHelp.tsx",
              "literal": "aria-label=\"Keyboard shortcut help\"",
              "line": 76,
              "blobSha256": "2b04f0b1e102b4880284d45c269ee63be70db71e989103ce06beadb356891eaf",
              "basis": "surface-implementation"
            }
          ]
        },
        "member-web": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "if (event.key === 'Escape')",
              "line": 4637,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "qualified-substrate"
            }
          ]
        },
        "mobile-sheet": {
          "state": "not-applicable",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "`KeyboardShortcutsHelp.tsx`; web has key handlers, no help sheet",
      "ownerTaskIds": ["8.8"],
      "originalOwnerCell": "8.8"
    },
    {
      "id": "transcript.markdown-paragraphs-nested-lists-gfm-tables-links-rtl",
      "category": "transcript",
      "feature": "Markdown: paragraphs, nested lists, GFM tables, links, RTL",
      "statuses": {
        "admin-drawer": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/components/AdminAssistantChat.tsx",
              "literal": "renderAssistantMarkdown(message.text)",
              "line": 975,
              "blobSha256": "8fd2ec0f2976f460e2d032d3723411b0d939317a13a4b08ad4aed84dacbc2bb2",
              "basis": "surface-implementation"
            }
          ]
        },
        "member-web": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "renderAssistantMarkdown(msg.text)",
              "line": 5039,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "surface-implementation"
            }
          ]
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": "plain text",
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "`markdown.tsx` closed subset; no import in the mobile sheet",
      "ownerTaskIds": ["8.14"],
      "originalOwnerCell": "8.14"
    },
    {
      "id": "transcript.code-blocks-with-language-label-syntax-highlight-copy-download",
      "category": "transcript",
      "feature": "Code blocks with language label, syntax highlight, copy/download",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "fences render as `<pre>`; no highlighter, no per-block control",
      "ownerTaskIds": ["8.14"],
      "originalOwnerCell": "8.14"
    },
    {
      "id": "transcript.math-latex",
      "category": "transcript",
      "feature": "Math (LaTeX)",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "no math node in the renderer",
      "ownerTaskIds": ["8.14"],
      "originalOwnerCell": "8.14"
    },
    {
      "id": "transcript.diagrams-mermaid-or-equivalent",
      "category": "transcript",
      "feature": "Diagrams (Mermaid or equivalent)",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "no diagram node",
      "ownerTaskIds": ["8.14"],
      "originalOwnerCell": "8.14"
    },
    {
      "id": "transcript.inline-images-in-replies",
      "category": "transcript",
      "feature": "Inline images in replies",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "partial",
          "qualifier": "card imageUrl carried, never rendered",
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "imageUrl?: string;",
              "line": 244,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "qualified-substrate"
            }
          ]
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "`AssistantResponseCard.imageUrl` in `types.ts`; the only `<img>` on web is the page-screenshot preview",
      "ownerTaskIds": ["8.14", "17.23"],
      "originalOwnerCell": "8.14, 17.23"
    },
    {
      "id": "transcript.audio-video-players-3d-viewer-in-transcript",
      "category": "transcript",
      "feature": "Audio/video players, 3D viewer in transcript",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "TTS plays through an audio object; no media node",
      "ownerTaskIds": ["8.14", "17.23"],
      "originalOwnerCell": "8.14, 17.23"
    },
    {
      "id": "transcript.tool-activity-and-evidence-panel",
      "category": "transcript",
      "feature": "Tool activity and evidence panel",
      "statuses": {
        "admin-drawer": {
          "state": "ships",
          "qualifier": "Activity list",
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/components/AdminAssistantChat.tsx",
              "literal": "data-testid=\"admin-assistant-turn-activity\"",
              "line": 1273,
              "blobSha256": "8fd2ec0f2976f460e2d032d3723411b0d939317a13a4b08ad4aed84dacbc2bb2",
              "basis": "surface-implementation"
            }
          ]
        },
        "member-web": {
          "state": "ships",
          "qualifier": "ReplyDetails, evidence, tool filter",
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "<ReplyDetails",
              "line": 7583,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "surface-implementation"
            }
          ]
        },
        "mobile-sheet": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/mobile/src/components/MobileAssistantSheet.tsx",
              "literal": "Grounding: {formatTranscriptStateLabel",
              "line": 404,
              "blobSha256": "519dc4fc5d75a8255a43c805644fcc748e125ccdcbd746271ad9c1a92b73cd13",
              "basis": "qualified-substrate"
            }
          ]
        }
      },
      "decidingEvidence": "admin `turnActivity`; web reply inspection",
      "ownerTaskIds": ["8.16"],
      "originalOwnerCell": "8.16"
    },
    {
      "id": "transcript.collapsible-reasoning-stream",
      "category": "transcript",
      "feature": "Collapsible reasoning stream",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "small-model turn route; no reasoning frames in `turn-stream-frames.ts`",
      "ownerTaskIds": ["8.16"],
      "originalOwnerCell": "8.16 (decision)"
    },
    {
      "id": "transcript.citations-and-sources",
      "category": "transcript",
      "feature": "Citations and sources",
      "statuses": {
        "admin-drawer": {
          "state": "partial",
          "qualifier": "docs only",
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/components/AdminAssistantPanel.tsx",
              "literal": "data-testid=\"admin-assistant-context-evidence\"",
              "line": 353,
              "blobSha256": "12d7fe7fe6a43cfeafaa1c51a5791741bdf417e789b82b679aed9fa58c06f833",
              "basis": "qualified-substrate"
            }
          ]
        },
        "member-web": {
          "state": "ships",
          "qualifier": "docs, grounded cards",
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "citations?: AssistantTurnCitation[];",
              "line": 279,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "surface-implementation"
            }
          ]
        },
        "mobile-sheet": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/mobile/src/components/MobileAssistantSheet.tsx",
              "literal": "contextHandoff?.evidenceState.status",
              "line": 224,
              "blobSha256": "519dc4fc5d75a8255a43c805644fcc748e125ccdcbd746271ad9c1a92b73cd13",
              "basis": "qualified-substrate"
            }
          ]
        }
      },
      "decidingEvidence": "citation-claim checks; docs search is the only retrieval source",
      "ownerTaskIds": ["17.26"],
      "originalOwnerCell": "17.26 (web sources)"
    },
    {
      "id": "transcript.copy-reply",
      "category": "transcript",
      "feature": "Copy reply",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "aria-label=\"Copy this reply\"",
              "line": 5410,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "surface-implementation"
            }
          ]
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "`Copy this reply` only on web",
      "ownerTaskIds": ["8.16"],
      "originalOwnerCell": "8.16"
    },
    {
      "id": "transcript.per-turn-feedback-with-reasons",
      "category": "transcript",
      "feature": "Per-turn feedback with reasons",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "data-assistant-feedback-up={msg.turnId}",
              "line": 5448,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "surface-implementation"
            }
          ]
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "`/turns/:turnId/feedback` route exists; only web renders feedback controls",
      "ownerTaskIds": ["8.16"],
      "originalOwnerCell": "8.16"
    },
    {
      "id": "transcript.read-aloud-per-reply",
      "category": "transcript",
      "feature": "Read aloud per reply",
      "statuses": {
        "admin-drawer": {
          "state": "ships",
          "qualifier": "conditional",
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/components/AdminAssistantChat.tsx",
              "literal": "data-testid=\"admin-assistant-speak-reply\"",
              "line": 1015,
              "blobSha256": "8fd2ec0f2976f460e2d032d3723411b0d939317a13a4b08ad4aed84dacbc2bb2",
              "basis": "surface-implementation"
            }
          ]
        },
        "member-web": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "speak={ttsEnabled ? speakText : undefined}",
              "line": 7621,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "surface-implementation"
            }
          ]
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "`/tts` route; voice config",
      "ownerTaskIds": ["8.16"],
      "originalOwnerCell": "8.16"
    },
    {
      "id": "transcript.regenerate-same-or-alternate-route",
      "category": "transcript",
      "feature": "Regenerate (same or alternate route)",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "no regenerate control; web \"Edit message\" is a post-failure recovery affordance that resends the same text",
      "ownerTaskIds": ["8.16"],
      "originalOwnerCell": "8.16"
    },
    {
      "id": "transcript.edit-and-resend-with-branch-version-navigation",
      "category": "transcript",
      "feature": "Edit-and-resend with branch/version navigation",
      "statuses": {
        "admin-drawer": {
          "state": "partial",
          "qualifier": "recovery only",
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/components/AdminAssistantChat.tsx",
              "literal": "data-testid=\"admin-assistant-turn-edit\"",
              "line": 1254,
              "blobSha256": "8fd2ec0f2976f460e2d032d3723411b0d939317a13a4b08ad4aed84dacbc2bb2",
              "basis": "qualified-substrate"
            }
          ]
        },
        "member-web": {
          "state": "partial",
          "qualifier": "recovery only",
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "Edit message",
              "line": 6034,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "qualified-substrate"
            }
          ]
        },
        "mobile-sheet": {
          "state": "partial",
          "qualifier": "Edit message label",
          "sourceEvidence": [
            {
              "path": "apps/oshun/mobile/src/components/MobileAssistantSheet.tsx",
              "literal": "testID=\"mobile-assistant-turn-edit\"",
              "line": 448,
              "blobSha256": "519dc4fc5d75a8255a43c805644fcc748e125ccdcbd746271ad9c1a92b73cd13",
              "basis": "qualified-substrate"
            }
          ]
        }
      },
      "decidingEvidence": "all three surfaces expose recovery editing; no branch model in `AssistantTurn` or version navigation",
      "ownerTaskIds": ["8.16"],
      "originalOwnerCell": "8.16"
    },
    {
      "id": "transcript.share-link-export-markdown-json",
      "category": "transcript",
      "feature": "Share link, export (Markdown/JSON)",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "partial",
          "qualifier": "save grounded reply as Nisaba notebook",
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "data-assistant-save-to-notebook={msg.id}",
              "line": 5512,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "qualified-substrate"
            }
          ]
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "no share/export route",
      "ownerTaskIds": ["8.16", "14.8"],
      "originalOwnerCell": "8.16, 14.8"
    },
    {
      "id": "transcript.typed-generative-ui-confirm-status-evidence-intents",
      "category": "transcript",
      "feature": "Typed generative UI (confirm/status/evidence intents)",
      "statuses": {
        "admin-drawer": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/components/AdminAssistantChat.tsx",
              "literal": "'data-assistant-generative-ui': action.generatedUi.component",
              "line": 1069,
              "blobSha256": "8fd2ec0f2976f460e2d032d3723411b0d939317a13a4b08ad4aed84dacbc2bb2",
              "basis": "surface-implementation"
            }
          ]
        },
        "member-web": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "'data-assistant-generative-ui': action.generatedUi.component",
              "line": 5635,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "surface-implementation"
            }
          ]
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "task 8.6 closed; `generative-ui.ts` allowlist",
      "ownerTaskIds": ["8.15"],
      "originalOwnerCell": "8.15 extends"
    },
    {
      "id": "transcript.streaming-with-live-region",
      "category": "transcript",
      "feature": "Streaming with live region",
      "statuses": {
        "admin-drawer": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/components/AdminAssistantChat.tsx",
              "literal": "accept: 'text/event-stream'",
              "line": 375,
              "blobSha256": "8fd2ec0f2976f460e2d032d3723411b0d939317a13a4b08ad4aed84dacbc2bb2",
              "basis": "surface-implementation"
            }
          ]
        },
        "member-web": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "streamAssistantTurn",
              "line": 99,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "surface-implementation"
            }
          ]
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": "buffered",
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "8.1 baseline",
      "ownerTaskIds": ["8.4"],
      "originalOwnerCell": "8.4"
    },
    {
      "id": "artifacts.side-by-side-artifact-panel-code-doc-html-svg-preview-data-table-media",
      "category": "artifacts",
      "feature": "Side-by-side artifact panel (code, doc, HTML/SVG preview, data table, media)",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "no artifact type in `types.ts` or stream frames; `contextHandoff.artifact` is an input label only",
      "ownerTaskIds": ["8.15"],
      "originalOwnerCell": "8.15"
    },
    {
      "id": "artifacts.versions-diff-assistant-edit-in-place",
      "category": "artifacts",
      "feature": "Versions, diff, assistant edit-in-place",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "no artifact store bound to sessions",
      "ownerTaskIds": ["8.15"],
      "originalOwnerCell": "8.15"
    },
    {
      "id": "artifacts.download-save-to-owning-domain-publish-decision",
      "category": "artifacts",
      "feature": "Download, save to owning domain, publish decision",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "partial",
          "qualifier": "Nisaba notebook save",
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "handleSaveTurnToNotebook",
              "line": 3582,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "qualified-substrate"
            }
          ]
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "one-off save path",
      "ownerTaskIds": ["8.15", "14.8"],
      "originalOwnerCell": "8.15, 14.8"
    },
    {
      "id": "conversations.history-list-and-switch",
      "category": "conversations",
      "feature": "History list and switch",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "ships",
          "qualifier": "Previous sessions",
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "<h4>Previous sessions</h4>",
              "line": 7280,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "surface-implementation"
            }
          ]
        },
        "mobile-sheet": {
          "state": "partial",
          "qualifier": "Assistant turn history",
          "sourceEvidence": [
            {
              "path": "apps/oshun/mobile/src/components/MobileAssistantSheet.tsx",
              "literal": "accessibilityLabel=\"Assistant turn history\"",
              "line": 757,
              "blobSha256": "519dc4fc5d75a8255a43c805644fcc748e125ccdcbd746271ad9c1a92b73cd13",
              "basis": "qualified-substrate"
            }
          ]
        }
      },
      "decidingEvidence": "`GET /v1/assistant/sessions`; admin creates sessions but lists none",
      "ownerTaskIds": ["8.17"],
      "originalOwnerCell": "8.17"
    },
    {
      "id": "conversations.auto-titles",
      "category": "conversations",
      "feature": "Auto titles",
      "statuses": {
        "admin-drawer": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/components/AdminAssistantChat.tsx",
              "literal": "title: `Admin console — ${workspaceId}`",
              "line": 385,
              "blobSha256": "8fd2ec0f2976f460e2d032d3723411b0d939317a13a4b08ad4aed84dacbc2bb2",
              "basis": "qualified-substrate"
            }
          ]
        },
        "member-web": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/bff/src/routes/assistant.ts",
              "literal": "// GET /v1/assistant/sessions — List sessions for the current user",
              "line": 4961,
              "blobSha256": "ae0c5c954b30fbfbcca3f3c2d71afef7cf811b132e7cee2d678e70f6679b999f",
              "basis": "qualified-substrate"
            }
          ]
        },
        "mobile-sheet": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/mobile/src/components/MobileAssistantSheet.tsx",
              "literal": "title: context.label,",
              "line": 1424,
              "blobSha256": "519dc4fc5d75a8255a43c805644fcc748e125ccdcbd746271ad9c1a92b73cd13",
              "basis": "qualified-substrate"
            }
          ]
        }
      },
      "decidingEvidence": "sessions carry metadata but no generated title surfaced",
      "ownerTaskIds": ["8.17"],
      "originalOwnerCell": "8.17"
    },
    {
      "id": "conversations.rename-pin-archive-delete",
      "category": "conversations",
      "feature": "Rename, pin, archive, delete",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "`DELETE /v1/assistant/sessions/:sessionId` exists; no UI calls it",
      "ownerTaskIds": ["8.17"],
      "originalOwnerCell": "8.17"
    },
    {
      "id": "conversations.search-across-conversations",
      "category": "conversations",
      "feature": "Search across conversations",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "no search route or control",
      "ownerTaskIds": ["8.17"],
      "originalOwnerCell": "8.17"
    },
    {
      "id": "conversations.projects-folders-with-files-and-instructions",
      "category": "conversations",
      "feature": "Projects/folders with files and instructions",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "no grouping model",
      "ownerTaskIds": ["8.17"],
      "originalOwnerCell": "8.17"
    },
    {
      "id": "conversations.temporary-chat",
      "category": "conversations",
      "feature": "Temporary chat",
      "statuses": {
        "admin-drawer": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/components/AdminAssistantChat.tsx",
              "literal": "memoryScope: payload.continuity?.memory?.scope ?? 'session'",
              "line": 155,
              "blobSha256": "8fd2ec0f2976f460e2d032d3723411b0d939317a13a4b08ad4aed84dacbc2bb2",
              "basis": "qualified-substrate"
            }
          ]
        },
        "member-web": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "memoryScope = 'session'",
              "line": 1602,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "qualified-substrate"
            }
          ]
        },
        "mobile-sheet": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/mobile/src/components/MobileAssistantSheet.tsx",
              "literal": "const memoryScope: AssistantMemoryScope = 'session';",
              "line": 942,
              "blobSha256": "519dc4fc5d75a8255a43c805644fcc748e125ccdcbd746271ad9c1a92b73cd13",
              "basis": "qualified-substrate"
            }
          ]
        }
      },
      "decidingEvidence": "`memoryScope: 'off' \\",
      "ownerTaskIds": ["8.17", "9.2"],
      "originalOwnerCell": "8.17, 9.2"
    },
    {
      "id": "conversations.cross-device-resume",
      "category": "conversations",
      "feature": "Cross-device resume",
      "statuses": {
        "admin-drawer": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/bff/src/routes/assistant.ts",
              "literal": "app.get(\n    '/v1/assistant/sessions'",
              "line": 4963,
              "blobSha256": "ae0c5c954b30fbfbcca3f3c2d71afef7cf811b132e7cee2d678e70f6679b999f",
              "basis": "qualified-substrate"
            }
          ]
        },
        "member-web": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "<h4>Previous sessions</h4>",
              "line": 7280,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "qualified-substrate"
            }
          ]
        },
        "mobile-sheet": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/bff/src/routes/assistant.ts",
              "literal": "app.get(\n    '/v1/assistant/sessions'",
              "line": 4963,
              "blobSha256": "ae0c5c954b30fbfbcca3f3c2d71afef7cf811b132e7cee2d678e70f6679b999f",
              "basis": "qualified-substrate"
            }
          ]
        }
      },
      "decidingEvidence": "durable session store with integration spec; no cross-client hand-off UI",
      "ownerTaskIds": ["8.17"],
      "originalOwnerCell": "8.17"
    },
    {
      "id": "personalisation.memory-view-edit-delete",
      "category": "personalisation",
      "feature": "Memory view, edit, delete",
      "statuses": {
        "admin-drawer": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/components/AdminAssistantChat.tsx",
              "literal": "action.name === 'forget_operator_memory'",
              "line": 97,
              "blobSha256": "8fd2ec0f2976f460e2d032d3723411b0d939317a13a4b08ad4aed84dacbc2bb2",
              "basis": "qualified-substrate"
            }
          ]
        },
        "member-web": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "data-assistant-context-memory-scope=",
              "line": 6065,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "qualified-substrate"
            }
          ]
        },
        "mobile-sheet": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/mobile/src/components/MobileAssistantSheet.tsx",
              "literal": "testID=\"mobile-assistant-memory-state\"",
              "line": 313,
              "blobSha256": "519dc4fc5d75a8255a43c805644fcc748e125ccdcbd746271ad9c1a92b73cd13",
              "basis": "qualified-substrate"
            }
          ]
        }
      },
      "decidingEvidence": "`remember_operator_note`/`forget_operator_memory` tools; memory state components; task 9.2 open",
      "ownerTaskIds": ["9.2"],
      "originalOwnerCell": "9.2"
    },
    {
      "id": "personalisation.custom-instructions-personality",
      "category": "personalisation",
      "feature": "Custom instructions / personality",
      "statuses": {
        "admin-drawer": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/components/AdminAssistantPanel.tsx",
              "literal": "data-assistant-context-persona=",
              "line": 229,
              "blobSha256": "12d7fe7fe6a43cfeafaa1c51a5791741bdf417e789b82b679aed9fa58c06f833",
              "basis": "qualified-substrate"
            }
          ]
        },
        "member-web": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "data-assistant-persona-switcher=",
              "line": 6154,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "qualified-substrate"
            }
          ]
        },
        "mobile-sheet": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/mobile/src/components/MobileAssistantSheet.tsx",
              "literal": "testID=\"mobile-assistant-persona-handoff-state\"",
              "line": 618,
              "blobSha256": "519dc4fc5d75a8255a43c805644fcc748e125ccdcbd746271ad9c1a92b73cd13",
              "basis": "qualified-substrate"
            }
          ]
        }
      },
      "decidingEvidence": "persona switchers disabled with routing copy (8.1); invocation-seeded persona only",
      "ownerTaskIds": ["8.18"],
      "originalOwnerCell": "8.18"
    },
    {
      "id": "personalisation.theme-reduced-motion",
      "category": "personalisation",
      "feature": "Theme, reduced motion",
      "statuses": {
        "admin-drawer": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/admin/src/components/AdminAssistantPanel.tsx",
              "literal": "className={styles.panel}",
              "line": 222,
              "blobSha256": "12d7fe7fe6a43cfeafaa1c51a5791741bdf417e789b82b679aed9fa58c06f833",
              "basis": "qualified-substrate"
            }
          ]
        },
        "member-web": {
          "state": "ships",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
              "literal": "@media (prefers-reduced-motion: reduce)",
              "line": 1367,
              "blobSha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
              "basis": "surface-implementation"
            }
          ]
        },
        "mobile-sheet": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/mobile/src/motion/MobileMotionSurface.tsx",
              "literal": "const reducedMotion = useReducedMotionPreference();",
              "line": 64,
              "blobSha256": "6957764b6afc7badc359663293c164e2e98e9410ad502fbc344ff0d92915327e",
              "basis": "qualified-substrate"
            }
          ]
        }
      },
      "decidingEvidence": "web honours `prefers-reduced-motion`; admin shell theme",
      "ownerTaskIds": ["8.8"],
      "originalOwnerCell": "8.8"
    },
    {
      "id": "personalisation.connectors-and-mcp-servers",
      "category": "personalisation",
      "feature": "Connectors and MCP servers",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "Phase 16 has no UI",
      "ownerTaskIds": ["16.5", "8.18"],
      "originalOwnerCell": "16.x (no new task; noted for 18.3)"
    },
    {
      "id": "personalisation.scheduled-tasks-watchers-ui",
      "category": "personalisation",
      "feature": "Scheduled tasks / watchers UI",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "watcher semantics specified (7.3); UI gated by 7.4",
      "ownerTaskIds": ["7.4", "8.19"],
      "originalOwnerCell": "7.4, 8.19"
    },
    {
      "id": "personalisation.data-controls-export-delete",
      "category": "personalisation",
      "feature": "Data controls (export, delete)",
      "statuses": {
        "admin-drawer": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/bff/src/routes/assistant.ts",
              "literal": "app.delete(\n    '/v1/assistant/sessions/:sessionId'",
              "line": 4991,
              "blobSha256": "ae0c5c954b30fbfbcca3f3c2d71afef7cf811b132e7cee2d678e70f6679b999f",
              "basis": "qualified-substrate"
            }
          ]
        },
        "member-web": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/bff/src/routes/assistant.ts",
              "literal": "app.delete(\n    '/v1/assistant/sessions/:sessionId'",
              "line": 4991,
              "blobSha256": "ae0c5c954b30fbfbcca3f3c2d71afef7cf811b132e7cee2d678e70f6679b999f",
              "basis": "qualified-substrate"
            }
          ]
        },
        "mobile-sheet": {
          "state": "partial",
          "qualifier": null,
          "sourceEvidence": [
            {
              "path": "apps/oshun/bff/src/routes/assistant.ts",
              "literal": "app.delete(\n    '/v1/assistant/sessions/:sessionId'",
              "line": 4991,
              "blobSha256": "ae0c5c954b30fbfbcca3f3c2d71afef7cf811b132e7cee2d678e70f6679b999f",
              "basis": "qualified-substrate"
            }
          ]
        }
      },
      "decidingEvidence": "Phase 14 open",
      "ownerTaskIds": ["14.4", "14.8"],
      "originalOwnerCell": "14.4, 14.8"
    },
    {
      "id": "agentic-work.web-search-browse-with-source-cards",
      "category": "agentic-work",
      "feature": "Web search / browse with source cards",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "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)",
      "ownerTaskIds": ["17.26"],
      "originalOwnerCell": "17.26"
    },
    {
      "id": "agentic-work.deep-research-with-cited-report",
      "category": "agentic-work",
      "feature": "Deep research with cited report",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "no research mode",
      "ownerTaskIds": ["17.26"],
      "originalOwnerCell": "17.26"
    },
    {
      "id": "agentic-work.data-analysis-sandboxed-code-execution-with-file-and-chart-outputs",
      "category": "agentic-work",
      "feature": "Data analysis / sandboxed code execution with file and chart outputs",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "`code-exec.tool.ts` exists in the unfused library; no sandbox admission",
      "ownerTaskIds": ["17.25"],
      "originalOwnerCell": "17.25"
    },
    {
      "id": "agentic-work.computer-use-with-live-view",
      "category": "agentic-work",
      "feature": "Computer use with live view",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "Phase 6",
      "ownerTaskIds": ["6.6", "6.7", "6.8"],
      "originalOwnerCell": "6.6–6.8"
    },
    {
      "id": "agentic-work.long-running-task-progress-and-completion-notifications",
      "category": "agentic-work",
      "feature": "Long-running task progress and completion notifications",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "no background job cards; notification center is admin-only and not chat-bound",
      "ownerTaskIds": ["8.19"],
      "originalOwnerCell": "8.19"
    },
    {
      "id": "media-generation.image-generation-edits-variations",
      "category": "media-generation",
      "feature": "Image generation, edits, variations",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "[`@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",
      "ownerTaskIds": ["15.7", "17.22", "17.23"],
      "originalOwnerCell": "15.7, 17.22, 17.23"
    },
    {
      "id": "media-generation.video-generation",
      "category": "media-generation",
      "feature": "Video generation",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "[`@isis/seedance-provider`](../../libs/isis/seedance-provider/src/index.ts), `@isis/ai-video`, `@yemaya/video-generation`",
      "ownerTaskIds": ["15.7", "17.22", "17.23"],
      "originalOwnerCell": "15.7, 17.22, 17.23"
    },
    {
      "id": "media-generation.music-audio-speech-generation",
      "category": "media-generation",
      "feature": "Music / audio / speech generation",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": "TTS ships for replies",
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "[`@isis/music-generation`](../../libs/isis/music-generation/src/index.ts) (suno/udio/musicgen/stable-audio), `@isis/audio-generation`, existing TTS route",
      "ownerTaskIds": ["15.7", "17.22", "17.23"],
      "originalOwnerCell": "15.7, 17.22, 17.23"
    },
    {
      "id": "media-generation.3d-model-generation-and-viewer",
      "category": "media-generation",
      "feature": "3D model generation and viewer",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "[`@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`",
      "ownerTaskIds": ["15.7", "17.22", "17.23"],
      "originalOwnerCell": "15.7, 17.22, 17.23"
    },
    {
      "id": "media-generation.provenance-disclosure-licence-on-generated-media",
      "category": "media-generation",
      "feature": "Provenance, disclosure, licence on generated media",
      "statuses": {
        "admin-drawer": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "member-web": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        },
        "mobile-sheet": {
          "state": "absent",
          "qualifier": null,
          "sourceEvidence": []
        }
      },
      "decidingEvidence": "task 14.7 governs; nothing is wired because nothing generates",
      "ownerTaskIds": ["14.7", "17.22"],
      "originalOwnerCell": "14.7, 17.22"
    }
  ],
  "sourceSnapshot": [
    {
      "path": "apps/oshun/admin/src/components/AdminAssistantChat.tsx",
      "sha256": "8fd2ec0f2976f460e2d032d3723411b0d939317a13a4b08ad4aed84dacbc2bb2",
      "bytes": 54328
    },
    {
      "path": "apps/oshun/admin/src/components/AdminAssistantPanel.tsx",
      "sha256": "12d7fe7fe6a43cfeafaa1c51a5791741bdf417e789b82b679aed9fa58c06f833",
      "bytes": 27685
    },
    {
      "path": "apps/oshun/admin/src/components/KeyboardShortcutsHelp.tsx",
      "sha256": "2b04f0b1e102b4880284d45c269ee63be70db71e989103ce06beadb356891eaf",
      "bytes": 5990
    },
    {
      "path": "apps/oshun/admin/src/lib/admin-voice.ts",
      "sha256": "c40fc663aeae597f8de5c6841674018ff78edf258d43bfa18ae3098628593e6a",
      "bytes": 13231
    },
    {
      "path": "apps/oshun/bff/src/routes/assistant.ts",
      "sha256": "ae0c5c954b30fbfbcca3f3c2d71afef7cf811b132e7cee2d678e70f6679b999f",
      "bytes": 214188
    },
    {
      "path": "apps/oshun/mobile/src/assistant/MobileAssistantProvider.tsx",
      "sha256": "74229cb8d850a382606567ae395060e89da4d865021fd1d98e74033111bd09e9",
      "bytes": 2671
    },
    {
      "path": "apps/oshun/mobile/src/components/MobileAssistantSheet.tsx",
      "sha256": "519dc4fc5d75a8255a43c805644fcc748e125ccdcbd746271ad9c1a92b73cd13",
      "bytes": 85161
    },
    {
      "path": "apps/oshun/mobile/src/motion/MobileMotionSurface.tsx",
      "sha256": "6957764b6afc7badc359663293c164e2e98e9410ad502fbc344ff0d92915327e",
      "bytes": 8729
    },
    {
      "path": "apps/oshun/web/src/components/assistant-dock/AssistantDock.tsx",
      "sha256": "7300cc4d7e53eab3a12cf1831ad1530341ec0e4e6330de16ed383fac5f0b07c2",
      "bytes": 9429
    },
    {
      "path": "apps/oshun/web/src/components/assistant/AssistantPanel.tsx",
      "sha256": "1c587d779a6dcff0403f848656aefe7708a1ea5ba69e703a45a58d4e624e4887",
      "bytes": 321792
    },
    {
      "path": "apps/oshun/web/src/components/assistant/ReplyDetails.tsx",
      "sha256": "fd9ce9506d59bdae93346736cc77f0798f85efd42be87d3df5af600ebf8087f5",
      "bytes": 19628
    },
    {
      "path": "libs/oshun/shell-assistant/src/markdown.tsx",
      "sha256": "a9ddd4ce568a2efbb3f1e83059bcb5360f1f9a024beed0c623b42f8321f81407",
      "bytes": 20091
    }
  ],
  "limitations": [
    "This ratifies the dated source revision; it does not claim later source changes or close any feature owner task.",
    "A partial status records only its stated qualifier and must not be interpreted as end-to-end parity.",
    "Public reference products are moving targets; task 8.20 owns regeneration and final closure.",
    "No UI behavior, production route, or release admission changes as a result of this register."
  ]
}
