Skip to content

Tracking: OMP Native Chat → ACP migration (v3 plan) #67

Open
0 of 24 issues completed
Open

Description

@44madfire

Summary

Tracks the v3 plan for 44madfire/orca#20. New OMP chats move to Orca's structured ACP stack (omp acp) once every gating parity row passes and the provider satisfies the contract orca-native-chat-v1. Existing legacy sessions stay legacy. Adopting them, Terminal↔ACP handoff and legacy retirement are post-cutover migration (phase C). This body is the authoritative parity ownership checklist.

Invariant: "For every environment and workflow migrated from legacy OMP Chat to ACP, ACP must preserve or strengthen all existing user-visible and reliability guarantees. Workflows not yet at parity remain explicitly routed to the legacy implementation."

Transport ownership: "v1 does not change transport ownership for an already-existing legacy OMP session. Existing sessions stay legacy; new supported sessions use ACP. Legacy→ACP adoption is a separate migration feature."

Context

Scope

Phase A: #78 launch availability gate + fallback; #68 opt-in omp acp registration.

Phase B (cutover critical path):

Phase C (post-cutover):

Provider (oh-my-pi):

Decisions to record here (recommended default in parentheses):

Non-goals

Depends on

  • None (tracks all units).

Parity rows owned

Every existing-guarantee (EG) row in docs/plans/omp-acp-migration/v3/parity-audit.md, each owned by exactly one issue. Check a row only with a linked passing test.

Gates cutover

Post-cutover (not regressed: legacy sessions stay legacy)

Expansion rows (never gates): P-RSNG-02, P-EDIT-02 (#70); P-THNK-01 (#71); P-RSUM-03 (#73); P-SKIL-01, P-IMAG-01 (#76). #84 strengthens P-TOGL-01.

Acceptance criteria

Required tests

Base branch

acp-migration in 44madfire/orca and 44madfire/oh-my-pi.

The full parity audit (docs/plans/omp-acp-migration/v3/parity-audit.md) is posted as the first comment on this issue.

Activity

  1. 44madfire commented on Oct 7, 2026

    @44madfire
    OwnerAuthor

    OMP Native Chat legacy parity inventory (v3)

    Invariant (verbatim, plan.md §0): "For every environment and workflow migrated from legacy OMP Chat to ACP, ACP must preserve or strengthen all existing user-visible and reliability guarantees. Workflows not yet at parity remain explicitly routed to the legacy implementation."

    v1 does not change transport ownership for already-existing legacy OMP sessions: they stay legacy, so rows that only concern adopting or handing off existing sessions have post-cutover owners and do not gate cutover (column Gates cutover). Every EG row still has exactly one owner.

    Code: Orca stablyai/orca@76d1b7b (paths relative to repo root), oh-my-pi @53f253f. v1 row ids are
    kept where the row is right; corrections are noted in the last column. Status:
    EG = existing guarantee (must be met at least as strongly before ACP is default, owned by exactly
    one issue); NS = not supported today (expansion, never a gate); MECH = legacy mechanism, not
    a user-visible guarantee (folded into the EG row named). Lines without a number were not re-read at a
    specific line and are cited by symbol. [INFERENCE] marks unverified claims the owning issue must
    confirm first.

    Legend for ACP column: = parity by existing generic code, + stronger, Δ needs work (owner
    issue), gap provider fix required (oh-my-pi issue in parentheses).

    Inventory

    ID Guarantee (verified) Legacy evidence Status ACP equivalent / delta Owner Correction vs v1 Gates cutover
    P-DISC-01 When hooks report session_file, Orca reads that exact transcript, no scan src/main/native-chat/session-file-resolver.ts resolveSessionFilePath; test src/main/pi/omp-transcript-metadata.test.ts EG unchanged for legacy chats (they stay legacy); needed again only by adoption (post-cutover) ORCA-4 v1 line range unverified; cited by symbol; Re-framed (v3): adoption-only → post-cutover owner, not a cutover gate no (post-cutover)
    P-DISC-02 Id-based transcript search, pruning subagent artifact dirs session-file-resolver.ts:315 resolveOmpSessionFile EG unchanged for legacy chats; adoption fallback (post-cutover) ORCA-4 Re-framed (v3): adoption-only → post-cutover owner no (post-cutover)
    P-DISC-03 Orca reads the store OMP writes: the env-visible OMP precedence (profile OMP_PROFILE ≻ PI_PROFILE; default-profile PI_CODING_AGENT_DIR; PI_CONFIG_DIR; XDG) mirrored by Orca, plus Orca's own OMP_CODING_AGENT_DIR read-side override (ranked first; OMP never reads it) src/main/ai-vault/omp-session-root.ts:31-73 (:46-47 override); docs/reference/omp-session-roots.md; OMP packages/utils/src/dirs.ts:83-95,306-308,452-481 @53f253f; test omp-session-root.test.ts EG Δ the ACP child must write where a terminal omp from the same shell writes: pin nothing (launch resolution force-sets [spec.accountHomeVariable], src/main/acp/acp-structured-launch-resolution.ts:85-96), pass directory/profile env through, record the resolved agent dir + profile + session-dir override (risk-findings/account-home.md) ORCA-2 Corrected (risk round): v1/v2 listed OMP_CODING_AGENT_DIR as OMP precedence — it is Orca-only; --session-dir/PI_CODING_AGENT_SESSION_DIR (flat layout) and launch-cwd .env are OMP inputs Orca's mirror does not model (legacy relies on hook exact paths, P-DISC-01) yes
    P-DECD-01 Decodes user / assistant / developer→system / toolResult / bash / python / fileMention src/main/native-chat/transcript-line-decoders-omp.ts:32; test transcript-line-decoders.omp.test.ts EG = history (adoption imports with this decoder, journal-legacy-import.ts:152); Δ live mapping verified per role ORCA-5 — yes
    P-DECD-02 custom_message shown only when display === true; legacy custom/hookMessage transcript-line-decoders-omp.ts:39 EG = history; gap live: OMP emits no live custom messages (acp-event-mapper.ts:193) ORCA-5 (OMP-8) — yes
    P-DECD-03 fileMention → @path system note, no file dump transcript-line-decoders-omp.ts:102,220 EG = history; gap live (OMP-8) ORCA-5 (OMP-8) — yes
    P-DECD-04 Bookkeeping / unknown records skipped without error transcript-line-decoders-omp.ts:39 EG = history; live unknown updates become provider.frame (not rendered) ORCA-5 — yes
    P-ORDR-01 Rows in transcript append order; abandoned branches still shown decoder contract, transcript-line-decoders-omp.ts header EG = adopted history (same decoder); live = journal order ORCA-5 — yes
    P-ORDR-02 Streaming > queued/pending > history ordering src/renderer/src/components/native-chat/native-chat-session-assembler.ts:109 compareMessages; test native-chat-preassembled-session-parity.test.ts EG Δ structured pending sends + streaming row ordering pinned ORCA-5 — yes
    P-STRM-01 Live appends render incrementally src/main/native-chat/transcript-watch.ts, transcript-watch-engine.ts:42 EG = streamed deltas ORCA-5 — yes
    P-STRM-02 A brand-new session shows a pending state that settles (resolve poll 500 ms→5 s) transcript-watch.ts:54,84; test transcript-watch-resolve-poll.test.ts EG Δ acquisition states (starting → ready / failed) ORCA-11 — yes
    P-STRM-03 Rotation/truncation reloads a consistent snapshot transcript-watch-engine.ts:158 onReplace; test transcript-watch-inplace-drain-race.test.ts EG Δ reattach after child loss yields consistent history, no gaps/dups ORCA-11 Restated as user guarantee yes
    P-RSNG-01 Thinking is visible (as plain text) transcript-line-decoders-omp.ts:263 EG + agent_thought_chunk → reasoning row (src/main/acp/acp-session-update.ts); must stay discoverable ORCA-5 Line :209-212 → :263 yes
    P-RSNG-02 Collapsible reasoning rows — NS expansion via reasoning channel ORCA-5 (expansion) — —
    P-TOOL-01 toolResult output; isError → failed styling transcript-line-decoders-omp.ts (toolResult branch) EG Δ tool_call_update status failed → failed tool ORCA-5 — yes
    P-TOOL-02 Bash/python execution cells render as tool pairs; nonzero/cancelled = error transcript-line-decoders-omp.ts:89,192 EG = history; gap live (OMP-8) ORCA-5 (OMP-8) — yes
    P-TOOL-03 Tool arguments preserved decoder toolCall branch EG Δ rawInput → tool input ORCA-5 — yes
    P-TOOL-04 !cmd / python input typed in chat runs a TUI execution cell chat text → PTY → packages/coding-agent/src/modes/controllers/input-controller.ts:1141 (oh-my-pi) EG gap: ACP forwards the text to the model (no ! handling in modes/acp/) ORCA-5 (OMP-8) New row yes
    P-EDIT-01 Diff cards for registered edit tool names src/shared/native-chat-edit-normalize.ts:16,29; test src/shared/native-chat-edit-normalize.test.ts EG = ACP diff content → diff card (src/main/acp/acp-tool-timeline.ts:139-144) ORCA-5 Test path: native-chat-diff.test.ts does not exist yes
    P-EDIT-02 Diff cards for OMP edit/write case-sensitive set native-chat-edit-normalize.ts:16 NS expansion when OMP sends diff content ORCA-5 (expansion) — —
    P-META-01 Provider/model/token usage per completed assistant message decoder ompServing EG Δ model + usage visible (picker current value, ring) ORCA-5 — yes
    P-META-02 Context ring = prompt tokens vs model window; omitted on aborted/errored turns src/shared/native-chat-context-usage.ts; src/shared/omp-model-list-probe.ts EG = live usage_update at turn end (acp-agent.ts:2167-2182 oh-my-pi) → context.usage ORCA-5 — yes
    P-META-03 Ring shows last usage immediately on reopen, before a new turn derived from transcript on read EG gap fixed by journal: ACP-created chats read the ring from session.journal.contextUsage() (src/main/native-chat/agent-session-wire/structured-agent-session-options-read.ts:163); adopted chats need OMP-4 usage after load/resume (ORCA-4, C) ORCA-11 New row; Owner ORCA-4 → ORCA-11 (v3): applies to migrated new chats yes
    P-CMPX-01 Compaction renders as boundary row ('Context compacted', presentation: 'compaction') and invalidates usage until next reply transcript-line-decoders-omp.ts:46-51; native-chat-context-usage.ts EG = adopted history (decoder); gap live: no OMP notification (OMP-2), Orca sinks compaction_update (acp-session-update.ts:86-90) ORCA-6 (OMP-2) Line :40-48 → :46-51; replay drops the summary (not "becomes user message") yes
    P-MSWC-01 Resting (pre-session) model list from omp models --json src/shared/agent-session-option-catalog-omp.ts:28; native-chat-session-option-enrichment.ts:87; test agent-session-option-catalog-omp.test.ts EG Δ structured catalog only probes Codex/Claude (structured-agent-model-catalog-wiring.ts:77-88), ACP fallbackModels: () => null (acp-structured-agent-definitions.ts:35) ORCA-3 — yes
    P-MSWC-02 Mid-session model switch (/orca-model <selector>) agent-session-option-catalog-omp.ts:23; test omp-model-switch-capability.test.ts EG + session/set_config_option model (acp-structured-options.ts:91-97; OMP select acp-agent.ts:1739-1786) ORCA-7 — yes
    P-THNK-01 Thinking-level picker stripped agent-session-option-catalog-omp.ts:9 NS expansion via thought_level select ORCA-7 (expansion) — —
    P-SCMD-01 OMP slash catalog (22 commands, help excluded) src/shared/native-chat-slash-commands.ts:100-126; test native-chat-slash-commands.omp.test.ts EG Δ structured composer answers claimed commands "not available" (structured-agent-session-composer.ts:136-140,179-181) ORCA-7 21 → 22; lines :98-124 → :100-126 yes
    P-SCMD-02 Verified commands execute (typed into the TUI); unknown /token blocked src/shared/native-chat-agent-profiles.ts:104-113 EG Δ pass-through only the 11 handled catalog commands; gap: TUI-only builtins, aliases and unknown tokens are forwarded to the model (OMP-7, 40 TUI-only builtins, risk-findings/acp-commands.md); decision D3 ORCA-7 (OMP-7) TUI-only set widened (risk round) yes
    P-SKIL-01 Skills autocomplete/execution idle: use-native-chat-skills.ts:41,102 NS expansion ORCA-14 (expansion) — —
    P-SKIL-02 @ file-mention autocomplete src/renderer/src/components/native-chat/use-native-chat-mention-files.ts (+ .test.tsx) EG = shared composer ORCA-7 NativeChatMentionMenu.tsx does not exist yes
    P-IMAG-01 Native image attachment blocks getAgentImageHandling('omp') === 'unsupported' (src/shared/agent-image-paste.ts:25-27) NS expansion (OMP advertises image: true, acp-agent.ts:649; Orca blocks non-text, acp-structured-turns.ts:36, acp-structured-session-adapter.ts:147) ORCA-14 (expansion) Research claim "OMP chat already supports images" is wrong —
    P-ATTC-01 Dropped/pasted files and images become @path mentions OMP resolves (file-URI form for paths with both quote kinds) agent-image-paste.ts:43-56; OMP expands mentions in AgentSession (agent-session.ts:7791, oh-my-pi) EG = structured composer references images by path when acceptsImages is false (use-native-chat-resolved-path-attachments.ts:19-20,122-123); Δ verify OMP file-URI quoting form ORCA-7 New row (v1 treated images as pure expansion) yes
    P-APPR-01 Approval request parks status blocked src/shared/agent-hook-listener-omp-approval-ownership.test.ts EG Δ pending permission → structured blocked ORCA-8 — yes
    P-APPR-02 Approval card Allow/Deny answers OMP native-chat-interactive-prompt.ts; native-chat-agent-support.ts:57 EG = permission options + CAS-before-reply (acp-structured-acquire.ts:133-149) ORCA-8 — yes
    P-APPR-03 Which tool calls prompt is decided by the user's OMP approval policy (TUI default: none) OMP TUI policy; ACP diverges: session-tools.ts:911-928, acp-permission-gate.ts:7-12 (oh-my-pi) EG gap: ACP prompts every bash/edit/delete/move by default (OMP-6); decision D5 ORCA-8 (OMP-6) New row (replaces scout's "P-YOLO-01") yes
    P-INTR-01 ask questions render as interactive cards and are answered native-chat-interactive-prompt.ts (native-chat-ask) EG Δ Orca advertises no elicitation (acp-session-runtime.ts:107) so OMP strips ask (acp-agent.ts:1227) ORCA-8 New row yes
    P-PLAN-01 /plan toggles plan mode native-chat-slash-commands.ts:106 EG Δ /plan is TUI-only over ACP (builtin-modes.ts:326-345 @53f253f, handleTui only; probe: forwarded to the model with 16 tool calls) → claim and map to ACP session/set_mode plan (acp-agent.ts:746,1829-1839) ORCA-7 New row; corrected (risk round): v2 said OMP handles /plan yes
    P-PLAN-02 Plan proposals wait for the user's decision TUI prompt reachable via the tab's terminal view [INFERENCE] EG (confirm) Δ ACP auto-approves without forms (acp-agent.ts:2020) ORCA-8 New row yes
    P-LCMD-01 /context answered locally, nothing sent to the PTY native-chat-slash-commands.ts:117; use-native-chat-local-command-answer.ts EG Δ OMP /context builtin answers in chat via pass-through ORCA-7 — yes
    P-LCMD-02 /usage executes (output on the terminal screen only) native-chat-slash-commands.ts:118 EG + output rendered in chat via pass-through ORCA-7 — yes
    P-HOOK-01 Turn status working/blocked/done src/main/agent-hooks/server/server-lifecycle.ts; test server-pi-normalization.test.ts EG = StructuredAgentSessionStatusFeed → ingestStructuredStatus (src/main/agent-hooks/server/server-ingest-structured.ts:26) ORCA-11 Path missing server/ in v1 yes
    P-HOOK-02 No turn markers in transcript src/main/native-chat/transcript-turn-lifecycle.ts MECH (→ P-HOOK-01) superseded by ACP prompt lifecycle — Re-classified: mechanism, not a guarantee —
    P-HOOK-03 Escape in an OMP terminal never fakes an interrupt test server-escape-navigation-inference.test.ts EG = terminal OMP unchanged; structured has no PTY ORCA-11 — yes
    P-HOOK-04 Retired pane revives on a new OMP turn src/main/agent-hooks/server/server-status-disposition.ts:74; tests server-omp-retired-ingress.test.ts, server-retired-pane-new-turn.test.ts EG = terminal OMP unchanged; structured rows separate ORCA-11 Source path corrected yes
    P-RSUM-01 Conversation resumes under the same OMP session id/file src/shared/agent-session-resume.ts, src/shared/agent-resume-argv.ts:53 EG = reattach of ACP-created chats via the handle chain with the same id and cwd (src/main/acp/acp-structured-launch-resolution.ts:105-120,110); legacy sessions keep omp --resume (unchanged); adopted sessions = ORCA-4 (C) ORCA-11 Owner ORCA-4 → ORCA-11 (v3) yes
    P-RSUM-02 App restart restores OMP tabs (as terminal view) src/renderer/src/lib/sleeping-agent-session-launch.ts:129; test ai-vault-omp-cold-resume.test.ts EG = terminal OMP unchanged; structured OMP restores from journal ORCA-11 Corrected: restores to terminal, not chat yes
    P-RSUM-03 Structured restart modal src/renderer/src/components/NativeChatResumeOnRestartModal.tsx NS expansion (generic for structured) ORCA-11 (expansion) Path corrected —
    P-MOBL-01 Mobile shows OMP status (state, prompt, tool, interactive prompt) src/renderer/src/runtime/sync-runtime-graph/agent-status-projection.ts EG Δ structured status reaches mobile for registered agents ORCA-10 v1 test file does not exist yes
    P-MOBL-02 Mobile renders legacy OMP chat and drives it: send, Stop (paced Escapes), approvals/answers, model switch, slash commands mobile/src/session/mobile-native-chat-eligibility.ts, src/main/runtime/rpc/methods/native-chat.ts:78,108, mobile/src/session/use-mobile-native-chat-stop.ts:102, use-mobile-native-chat-session-options.ts:73 EG Δ mobile renders no registered agent (mobile-runtime-client-capabilities.ts:16, mobile-native-chat-eligibility.ts:54); decision D4 ORCA-10 Widened: v1 listed read-only streaming yes
    P-ROPT-01 Desktop local workspace (any OMP install shape on Windows: bun global, npm/pnpm shim, standalone) shell wrapper snapshots src/main/__fixtures__/shell-wrapper-snapshots/; PTY launches type omp into a shell EG = structured local; Δ Windows npm/pnpm bun-interpreter shims fall back to cmd.exe /c and %LOCALAPPDATA%\omp is not resolved (risk-findings/windows-spawn.md) — ORCA-2 adds both; any shape that fails the availability handshake stays on legacy chat ORCA-1 Install shapes added (risk round) yes
    P-ROPT-02 WSL workspace (UNC + FS gate) src/main/native-chat/wsl-transcript-fs-gate.ts EG stays legacy: structured refuses WSL (structured-native-chat-launch-route.ts:111-113) ORCA-1 — yes
    P-ROPT-03 Plain SSH: chat gated off, terminal only src/shared/native-chat-agent-support.ts:27; native-chat-availability.ts:53-57 EG (negative) = structured refuses SSH (structured-native-chat-launch-route.ts:97-99) ORCA-1 v1 §5 "SSH expansion" claim is wrong yes
    P-ROPT-04 Paired runtime host src/shared/native-chat-transcript-readability.ts:4-8 EG = structured on runtime: hosts with capabilities ORCA-1 — yes
    P-ROPT-05 Runtime-owned SSH target (runtime-ssh-*): chat readable native-chat-transcript-readability.ts:7; src/shared/execution-host.ts:67-69 EG stays legacy: ACP runs only on the runtime's local host (acp-structured-launch-resolution.ts:80) ORCA-1 New row yes
    P-ROPT-06 Windows host without process start-time proof legacy PTY needs none EG stays legacy: ACP needs proof (supervised-provider-child-location.ts:9,14) ORCA-1 New row yes
    P-ROPT-07 Folder (non-git) workspaces no workspace-kind gate, native-chat-availability.ts:42-60 EG = cwd inside root; adoption uses recorded cwd ORCA-1 New row yes
    P-ERRS-01 Aborted empty turn → "Conversation interrupted"; partial text kept decoder abort branch EG Δ stopReason: cancelled presentation ORCA-5 — yes
    P-ERRS-02 Tool failures styled as errors decoder isError / exit code EG Δ failed tool status ORCA-5 — yes
    P-DDUP-01 No duplicates across sources/reconnect native-chat-session-assembler.ts EG = single journal; replay content discarded (acp-timeline-translator.ts:161-164) ORCA-11 — yes
    P-DDUP-02 Identical same-source messages never collapsed native-chat-session-assembler.ts:239 mergeOne EG Δ journal keeps repeated identical turns ORCA-11 — yes
    P-QUEU-01 A send shows at once as pending until the agent echoes it src/renderer/src/components/native-chat/native-chat-pending.ts; test native-chat-pending.test.ts EG = structured pending sends ORCA-5 New row yes
    P-QUEU-02 Sending while a turn runs steers it without aborting TUI streamingBehavior: "steer" (input-controller.ts:1219-1234, oh-my-pi) EG gap: Orca ACP "Send now" cancels then re-prompts (acp-structured-turns.ts:235-251), OMP prompt() while busy cancels (acp-agent.ts:806-823) → OMP extension _omp/session/steer (OMP-5) via the OMP dialect hook (ORCA-9); composer UX unchanged (Enter mid-turn queues a card, Send now steers without aborting); decision D6 decided ORCA-9 (OMP-5) New row yes
    P-STOP-01 Stop interrupts the turn; the conversation continues use-native-chat-composer-interrupt.ts; mobile use-mobile-native-chat-stop.ts:102 EG = cancel, then stdin EOF + graceful window before any kill (src/main/provider-process/provider-process-close.ts:43-50,67-89); OMP drains the cancel on EOF; aborted entry persisted 34/34 on 18.6.3/win32 (risk-findings/stop-persistence.md); next send reloads (acp-structured-session-adapter.ts:180) ORCA-11 New row; risk resolved (risk round) yes
    P-LNCH-01 An initial launch prompt is delivered exactly once src/renderer/src/lib/native-chat-launch-prompt.ts EG = structured launch prompt delivery ORCA-11 New row yes
    P-NAME-01 First work prompt auto-titles folder workspaces/branches src/main/agent-hooks/first-work-workspace-title-rename.ts:14; test first-work-branch-rename.test.ts EG Δ structured prompts must feed the same rename ORCA-11 New row yes
    P-VAUL-01 AI Vault resume of an OMP session opens a terminal omp --resume src/renderer/src/lib/ai-vault-resume-command.ts; test ai-vault-omp-cold-resume.test.ts EG Δ AI Vault/terminal resume of an ACP-held OMP session refused; guards today cover Claude/Codex only (src/main/ai-vault/structured-session-ownership.ts:96,135; call sites src/main/ipc/ai-vault-resume.ts:30, src/main/runtime/rpc/methods/session-tabs.ts:54, terminal/terminal-send-method.ts:41-46); legacy sessions unchanged ORCA-16 New row; Owner ORCA-4 → ORCA-16 (v3, single writer) yes
    P-TOGL-01 A terminal running OMP (launched or detected) toggles between TUI and chat view native-chat-availability.ts:42-60; src/renderer/src/components/terminal-pane/TerminalPaneNativeChatPortal.tsx EG Not migrated in v1 (D2): terminal-launched/detected OMP keeps the toggle (legacy, unchanged); ACP chats show an explicit notice + "Open OMP in a terminal tab"; persisted handoff = ORCA-17 (C, strengthening) ORCA-12 New row; Owner ORCA-4 → ORCA-12 (v3): explicit routing verified at cutover yes
    P-STAT-01 Sidebar / worktree ps / dashboard show OMP status from the one hook-server store src/main/agent-hooks/server/server-status-application.ts EG = structured feed into the same store (server-ingest-structured.ts:26) ORCA-11 New row yes
    P-NOTF-01 Done/blocked notifications src/main/agent-hooks/server/server-status-update.ts EG Δ verify structured OMP transitions notify ORCA-11 New row yes
    P-PROC-01 One OMP process per chat tab; closing the tab ends it terminal tab lifecycle (src/renderer/src/store/terminals/terminal-tab-creation.ts) EG = one child per structured session; close proves exit ORCA-11 New row yes
    P-TUI-01 Ordinary terminal OMP (status extension, hooks, resume, AI Vault) unchanged shell-wrapper snapshots; src/main/acp/acp-launch-specs.ts:64-76 scrubs pane/hook env from ACP children EG Δ registration must not alter terminal launches or the shared session store ORCA-2 New row (#20 constraint) yes
    P-AUTH-01 Signed-out OMP is recoverable from the tab (TUI login) [INFERENCE] TUI EG (confirm) Δ notSignedIn refusal with loginCommand hint (acp-structured-acquire.ts, AcpAuthRequiredError) ORCA-2 New row yes

    Candidate rows reported by research but not verified (cited file missing or behavior unconfirmed);
    ORCA-7 confirms or drops them: composer drafts per tab (cited use-native-chat-composer-state.ts
    does not exist), large-paste collapse (use-native-chat-composer-handle.ts, 41 lines, behavior
    unconfirmed). Both concern the shared NativeChatComposer, so parity is expected by construction.

    Ownership summary

    Owner Existing-guarantee rows
    ORCA-1 P-ROPT-01, P-ROPT-02, P-ROPT-03, P-ROPT-04, P-ROPT-05, P-ROPT-06, P-ROPT-07
    ORCA-2 P-DISC-03, P-TUI-01, P-AUTH-01
    ORCA-3 P-MSWC-01
    ORCA-4 (C, post-cutover) P-DISC-01, P-DISC-02
    ORCA-5 P-DECD-01, P-DECD-02, P-DECD-03, P-DECD-04, P-ORDR-01, P-ORDR-02, P-STRM-01, P-RSNG-01, P-TOOL-01, P-TOOL-02, P-TOOL-03, P-TOOL-04, P-EDIT-01, P-META-01, P-META-02, P-ERRS-01, P-ERRS-02, P-QUEU-01
    ORCA-6 P-CMPX-01
    ORCA-7 P-MSWC-02, P-SCMD-01, P-SCMD-02, P-SKIL-02, P-ATTC-01, P-PLAN-01, P-LCMD-01, P-LCMD-02
    ORCA-8 P-APPR-01, P-APPR-02, P-APPR-03, P-INTR-01, P-PLAN-02
    ORCA-9 P-QUEU-02
    ORCA-10 P-MOBL-01, P-MOBL-02
    ORCA-11 P-STRM-02, P-STRM-03, P-META-03, P-RSUM-01, P-HOOK-01, P-HOOK-03, P-HOOK-04, P-RSUM-02, P-DDUP-01, P-DDUP-02, P-STOP-01, P-LNCH-01, P-NAME-01, P-STAT-01, P-NOTF-01, P-PROC-01
    ORCA-16 P-VAUL-01
    ORCA-12 P-TOGL-01 (explicit routing, D2); re-verifies every gating row as the default-on gate
    ORCA-17 (C) none owned; strengthens P-TOGL-01 for ACP chats (persisted handoff)

    Expansion (NS) rows, never gates: P-RSNG-02, P-EDIT-02 (ORCA-5); P-THNK-01 (ORCA-7); P-RSUM-03
    (ORCA-11); P-SKIL-01, P-IMAG-01 (ORCA-14). Mechanism: P-HOOK-02.

    Totals: 73 rows — 66 EG (2 marked confirm, 1 negative), 6 NS, 1 MECH. Gating: 64 EG rows gate cutover; 2 (P-DISC-01, P-DISC-02) are post-cutover (adoption). v1 had 51 rows; 22 added in v2, 0 removed, 1 re-classified (P-HOOK-02 → MECH); v3 added no rows.

    Risk-round corrections (2026-10-08)

    Rows corrected from risk-findings/: P-DISC-03 (OMP store precedence; OMP_CODING_AGENT_DIR is Orca-only), P-PLAN-01 (/plan is TUI-only over ACP), P-SCMD-02 (40 TUI-only builtins), P-STOP-01 (Stop-persistence risk resolved), P-ROPT-01 (Windows install shapes). Owners unchanged; no rows added or removed.

    v3 re-framing (user review)

    Owner changes: P-META-03 ORCA-4 → ORCA-11 (journal ring on reopen); P-RSUM-01 ORCA-4 → ORCA-11 (reattach of ACP-created chats); P-VAUL-01 ORCA-4 → ORCA-16 (single writer); P-TOGL-01 ORCA-4 → ORCA-12 (not migrated in v1, explicit routing). P-DISC-01/02 stay with ORCA-4, now post-cutover. P-QUEU-02 delta restated for the OMP steer extension. No row added or removed.

    Floor that must survive until an explicit retirement decision (D7)

    Legacy terminal/transcript chat remains the routed path for: WSL project runtimes (P-ROPT-02),
    runtime-owned SSH targets (P-ROPT-05), Windows hosts without start-time proof (P-ROPT-06),
    terminal-launched or manually started OMP (P-TOGL-01), mobile-launched OMP (caller-render downgrade,
    src/main/runtime/rpc/methods/agent-launch.ts:87-97), existing legacy OMP sessions (until adoption, ORCA-4), hosts whose omp does not satisfy
    orca-native-chat-v1 (ORCA-12), and users without the structured-chat preference
    (src/shared/structured-native-chat-launch-route.ts:77).

  2. 3 remaining items

  3. changed the title [-]Tracking: OMP Native Chat → ACP migration (v2 plan)[/-] [+]Tracking: OMP Native Chat → ACP migration (v3 plan)[/+] on Oct 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions