Files
orca/config/scripts/vitest-sqlite-runtime-files.mjs
T
Brennan Benson 7a78dbd3c7 Native chat: one settlement transaction for everything an ended run left (4/5, rebuild of #26867) (#28111)
* feat(native-chat): record which agent run wrote each journal item

Each journal item row, subagent roster entry and background-task entry now
records ownerFence: the lease fence of the agent run whose output produced it.
Optional, persisted, no row version bump and no migration. The journal's
itemFence() returns it, so the turn-verdict rules and per-run provider activity
read the producing run rather than the writer's fence.

* feat(native-chat): one current-work projection for every host reader; record death first

The host decides what work is current in one place
(structured-agent-session-current-work.ts) from the lease, the exit this host
saw, the runtimes it replaced, its live child and each item's provenance.
Every host reader (queue, Stop, prompt answers, commands, status feed, idle
sweep, teardown snapshot, history pages and frames, orchestration mailbox)
reads it, so a dead agent's leftovers stop reading Working or holding the queue
even when their cleanup write failed. The journal's activeTurnId()/liveTurnScope()
become the raw runningTurn().

On exit the host records the child's end first and signals generationEnded,
which republishes frames, the status feed and settlement waits and wakes the
queue drain with no journal row. Pages and frames carry optional working and
actionablePromptIds fields.

* feat(native-chat): clients read the host's working answer; refuse answers to a stopped agent plainly

Desktop and mobile prefer the host's working and actionablePromptIds fields
when present (merged across batches like latestTurn) and fall back to today's
row derivation against an older host. A prompt an ended agent raised stops
looking active; answering it is refused before any provider sees it, with
"<Agent> has stopped, so your answer was not sent. Send a message to continue."
Cancelling it only dismisses it in the journal: it no longer triggers the
chat's Stop, pauses the queue or withdraws queued cards.

* feat(native-chat): one settlement transaction for everything an ended run left

An exit now settles, in one lifecycle batch planned at its own turn in the
write queue, everything its run left (turn, calls, prompts, reasoning,
unanswered sends) plus leftovers of earlier ended runs, and only the subagent
roster entries and background tasks those runs observed, by each entry's own
provenance. Main's stale settle moves to stale-state-settlement.ts with fence
scoping; dead-generation-settlement.ts becomes a planner;
leftover-settlement.ts combines them.

Resume eligibility widens in one case: this host saw the root exit at the
lease's fence and the release write failed; the acquisition replaces the
owner only once a probe proves it gone.

* refactor(native-chat): keep structuredAgentSessionHandsOver file-local until a caller needs it

Nothing outside the projection calls it in this part; Part 5 exports it for the start-failure row.

* test(native-chat): fewer provenance tests: fold reopen and unstated-owner checks into the main case

Drops the epoch-replacement case (Part 2 rewind test reads the same values through the same rebuild) and the corrupt-value case (no version writes one).

* test(native-chat): drop current-work mirrors: the viewKey unit case and the still-live rewind case

The flow cases keep every outcome: dead leftovers read as nothing, Stop has nothing to stop, a waiting card drains, a live owner publishes as before, and a rewind never promotes dead work.

* test(native-chat): fewer client tests: one flow per client, one fallback each

Keeps desktop and phone Working from the host (with the older-host fallback), the reducer merge contract, the ended question Cancel that only dismisses, the agent-named refusal and the resolution receipt. Drops per-helper prompt tests, the transcript-placement test, the stop-note client reduction, the Steer cards that match main, and per-reason refusal rows.

* test(native-chat): fewer settlement tests: keep the exit-delivery flows and the per-entry scoping flow

Drops the no-added-delay timing check, the frame-once check, two stamping unit cases and the Codex combined case (the roster flow test covers its outcome).

* test(native-chat): drop the resume-eligibility predicate mirror; move the unstamped-entry case to Part 1

* test(native-chat): an unstamped roster entry from an older build reads as its row provenance

Moved here from Part 4 so it sits beside stampJournalEntryProvenance.

* test(native-chat): build the older-build roster row inline, after main removed its body helper

Main #27947 writes one row per subagent and deleted journal-subagent-group-body; a roster row from an older build is still what this case reads.

* refactor(native-chat): provenance is per item only; drop per-entry stamping

Main's #27947 writes one saved row per subagent, and each background task already has its own row,
so an item's own ownerFence names the run of every entry a producer still writes. Per-entry stamps
inside a row mattered only for the shared roster rows saved before #27947, and no run writes into
those any more, so the row's own provenance settles them correctly. Removes the entry stamping,
the optional ownerFence on roster entries and background tasks, and their tests.

* fix(native-chat): an item's provenance is set when it is created; revisions keep it

A newer run's provider can revise an item an older run created: Pi's start and an ACP
session/load both report context usage onto the newest saved turn. Restamping that turn with
the newer run let the newer run's exit settle the older run's unverifiable turn as interrupted.
Only creation states an owner now, as main's itemFences rule did.

* test(native-chat): keep the provenance test below the production lines it covers

* fix(native-chat): an ended agent's card Cancel commits with its receipt, through dismissPrompt

The ended-generation dismissal wrote the cancelled resolution without the Cancel's operation
receipt and without the dismissal's failure handling, so a receipt write failing after it would
answer "outcome unknown" over a card already closed. It now goes through dismissPrompt, which
carries the uncommitted receipt in the same append and answers dismissalNotSaved on failure; a
null `answer` skips the adapter, since no live provider holds an ended generation's card (Pi's
adapter refuses a fence with no live session outright).

* Native chat: a resumed subagent or Claude background task belongs to the run executing it

A subagent row that run 1 created and run 2 resumed kept run 1's creation
fence, so settling run 1's death marked run 2's live subagent unverifiable.
Claude background tasks reuse their rows the same way (a matching parent tool
use, or a parentless row).

Rows of reusable child execution now also name their execution owner: the
fence of the child process whose report the write copies, captured when that
report arrives, never the lease that is current when a queued write flushes.
- Subagent rows: the host captures the live child's fence when its child-work
  report changes the records, and rewrites a running subagent another child now
  reports even when its text is unchanged.
- Claude background-task rows: written through that child's own event sink,
  which stamps its bound fence.
- Creation provenance (`ownerFence`) is unchanged. Writes that do not state an
  owner (settlement, Pi's start usage, ACP session/load replay, ACP tasks) keep
  it, and a row without one falls back to its creation fence.

`journal.itemFence()` now answers whose execution an item is
(`executionOwner ?? ownerFence`), so every settlement and liveness read, inside
its write transaction, follows the run that resumed the work.

Also drops the event sink's compatibility alias for the identity resolver (the
Codex sink names the resolver itself), keeping the sink under its line limit.

* Native chat: a subagent row is written through the child whose report it copies

Review of c0add67cca: the subagent row writer read its execution owner from
the host's installed child when a report landed. A child that is still being
acquired reports a resumed subagent before the host installs it, so its row
was written at once under the old owner, then the attach's settlement of what
the previous child left marked it unverifiable, and nothing rewrote it until
the next report.

Each adapter (Claude, Codex, ACP) now hands its child-work report to the host
with that child's own event sink, the write path its rows already take. The
host passes it through the status feed to the subagent row writer, which writes
the rows that report changes through that sink with `executes`. They land in
the child's own order, after the attach's settlement, at the fence the sink is
bound to, and that fence is the row's execution owner. A running subagent a
child has not written yet is written once even when its text is unchanged.
Changes the host makes itself (a Stop's acknowledgement, an end) still write
directly and keep the row's owner. The shared child-work evidence type is
unchanged: the sink travels as a separate argument.

Test: a Claude helper the next child reports again while it is still starting
stays working after that start's settlement, through the shipping adapter and
host. It fails on c0add67cca (the row lands `unverifiable`).

* Native chat: the subagent row writer always awaits a promise

CI's type-aware lint flagged the row writer handing `Promise.all` a value
that could be undefined when a sink has no `written()` barrier. A sink without
one now reads as landed.

* Native chat: keep refused subagent writes, and carry both owners through a rewind

Review of b161aa38b1 / 129f36d49b:
- `admitChildWork`'s producer is optional again, so the host's own
  turn-started report compiles.
- A subagent row written through the reporting child's sink uses the sink's
  checked admission. A write it refuses under backpressure is queued again
  once what the sink holds has landed; a refusal or a failed write frees that
  child's claim on the row, so a later report retries it.
- A rewind carried `itemFence()` (now whose execution an item is) into the
  rebuilt row's creation `ownerFence`, and dropped `executionOwner`. Retained
  rows now carry both as stored (`journal.itemProvenance`), the rewind record
  keeps `executionOwner` beside `ownerFence`, and both rebuild paths write it
  back: epoch replacement and the context rewind, which builds its rows from
  the same replacement items.

Test: the two-fence test now rebuilds the epoch from the resumed rows and
settles the first run's death again; the resumed rows stay live. It fails if
the epoch replacement drops `executionOwner`.

* test: run the resumed-child owner test in the Node SQLite project

It opens a real journal database, so it belongs on the list the SQLite runtime
boundary test checks.
2026-10-15 19:35:36 -07:00

305 lines
24 KiB
JavaScript

import { SQLITE_DATABASE_RUNTIME_INCLUDE } from './vitest-sqlite-database-runtime-files.mjs'
// Real SQLite fixtures keep Node publication and close semantics.
export const SQLITE_RUNTIME_INCLUDE = [
...SQLITE_DATABASE_RUNTIME_INCLUDE,
'src/main/ipc/repos/project-host-setup-wsl-move-fence.test.ts',
'src/main/ipc/repos/repo-ipc-wsl-move-fence.test.ts',
'src/main/runtime/runtime-managed-worktree-metadata-wsl-move.test.ts',
'src/main/persistence/moving-wsl-projects/wsl-move-session-freeze.test.ts',
'src/main/wsl-move-scan-pruning.test.ts',
'src/main/repo-backfill-wsl-move.test.ts',
'src/main/acp/acp-structured-host-live-listing.test.ts',
'src/main/acp/acp-structured-host-configured-default.test.ts',
'src/main/pi/rpc-configured-default.test.ts',
'src/main/acp/acp-structured-omp-recordings.test.ts',
'src/main/acp/acp-text-stream-identity.test.ts',
'src/main/acp/acp-text-message-ownership.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-clear-queued-command.test.ts',
'src/main/acp/acp-structured-sign-in.test.ts',
'src/main/acp/acp-structured-auth.test.ts',
'src/main/acp/acp-structured-prompt-failure.test.ts',
'src/main/acp/acp-timeline-turn-failures.test.ts',
'src/main/acp/acp-structured-session-adapter.test.ts',
'src/main/acp/acp-conversation-copy.test.ts',
'src/main/pi/rpc-turn-races.test.ts',
'src/main/acp/acp-structured-child-session-end.test.ts',
'src/main/acp/acp-structured-child-stop.test.ts',
'src/main/acp/acp-structured-child-work-admission.test.ts',
'src/main/acp/acp-structured-child-work.test.ts',
'src/main/acp/acp-structured-host-subagent-stop.test.ts',
'src/main/acp/acp-timeline-grok-subagent-retention.test.ts',
'src/main/active-view-persistence-boundary.test.ts',
'src/main/automations/automation-dispatch-host-fence.test.ts',
'src/main/automations/automation-owner-fencing.test.ts',
'src/main/automations/automation-skip-coalescing.test.ts',
'src/main/automations/automation-update-host-retarget.test.ts',
'src/main/automations/automation-workspace-host-attribution.test.ts',
'src/main/automations/automation-wsl-move-refusal.test.ts',
'src/main/automations/automation-zero-grace-tick-latency.test.ts',
'src/main/automations/retained-run-reconciliation.test.ts',
'src/main/automations/run-completion-watcher.test.ts',
'src/main/automations/service-precheck.test.ts',
'src/main/automations/service.test.ts',
'src/main/claude/claude-api-retry-idle-sweep.test.ts',
'src/main/claude/claude-api-retry-row.test.ts',
'src/main/claude/claude-context-usage-restart.test.ts',
'src/main/claude/claude-context-usage-unloaded-turn.test.ts',
'src/main/claude/claude-informational-row.test.ts',
'src/main/claude/claude-stream-json-connection.test.ts',
'src/main/claude/claude-structured-journal-translation.test.ts',
'src/main/claude/claude-structured-provider-fallback.test.ts',
'src/main/claude/claude-subagent-permission-request.test.ts',
'src/main/claude/claude-subagent-resume-after-restart.test.ts',
'src/main/codex/codex-provider-retry-idle-sweep.test.ts',
'src/main/codex/codex-structured-journal-context-usage.test.ts',
'src/main/codex/codex-structured-journal-exit-convergence.test.ts',
'src/main/codex/codex-structured-journal-goal-revision.test.ts',
'src/main/codex/codex-structured-journal-repeated-questions.test.ts',
'src/main/codex/codex-structured-journal-settlement-rollback.test.ts',
'src/main/codex/codex-structured-journal-subagent-readers.test.ts',
'src/main/codex/codex-structured-journal-translation-turn-lifecycle.test.ts',
'src/main/codex/codex-structured-journal-turn-settles-once-journal.test.ts',
'src/main/codex/codex-structured-question-order.test.ts',
'src/main/ipc/pty/ipc/spawn-commit-ssh-lease-cardinality.test.ts',
'src/main/ipc/repos/folder-workspace-attachment-handlers.test.ts',
'src/main/ipc/ssh-host-server-on-connect-wiring.test.ts',
'src/main/native-chat/agent-session-attachments/agent-session-attachment-claims.test.ts',
'src/main/native-chat/agent-session-attachments/agent-session-attachment-sweep.test.ts',
'src/main/native-chat/agent-session-wire/agent-session-bounded-frames.test.ts',
'src/main/native-chat/agent-session-wire/agent-session-history-byte-accounting.test.ts',
'src/main/native-chat/agent-session-wire/agent-session-history-conversation-window.test.ts',
'src/main/native-chat/agent-session-wire/agent-session-history-forward-read-budget.test.ts',
'src/main/native-chat/agent-session-wire/agent-session-history-page.test.ts',
'src/main/native-chat/agent-session-wire/agent-session-stop-note-projection.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-accept-then-deliver.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-acquire-isolation.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-acquisition-options.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-acquisition-runtime-stamp.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-adopted-import.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-append-delivery.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-at-rest-commands.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-attach-reconciliation.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-attachment-admission.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-background-stop-unreadable.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-compact-stop.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-echo-working.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-hung-start-stop.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-opening-send-hold.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-option-queue.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-queued-stop.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-root-exit.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-stop-ends-session.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-stop-exit-ends-record.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-subagent-row.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-stop-note-end.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-claude-stop-turn-end.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-close-aborts-start.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-close-verdict.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-codex-stop-note-end.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-codex-stop-row.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-command-publication.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-conversation-close.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-conversation-stop.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-conversations.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-crash-mid-start.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-crash-turn-end.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-create-adoption.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-create.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-dead-generation-settlement.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-drivability.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-event-sink.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-failed-create-owner-verdict.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-failed-create-sink-release.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-current-work.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-forget-status.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-grouped-prompt.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-held-child-lease-renewal.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-host-held-child-renewal.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-host-runtime-state.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-host-test-abandon.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-host.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-idle-sweep.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-journal-corruption.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-late-proof-tool-ends.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-late-settlement.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-lease-renewer.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-exit-delivery.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-ended-prompt-cancel.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-legacy-handoff-record.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-live-turn-window.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-main-agent-working-agreement.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-newer-content-host.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-option-settlement.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-send-options.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-owed-work-release.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-pre-spawn-first-answer.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-processless-reservation.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-prompt-answer-receipts.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-prompt-cancel.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-provider-child-record.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-provider-restore.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-provider-started-catalog.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-provider-started.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-queued-action-receipts.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-queued-gate.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-queued-newer-orca.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-queued-pause-lift.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-queued-repeat-press.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-read-restore.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-readable-restorer.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-reasoning-sweep.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-recovered-turn-clock.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-recovery-exits.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-recovery-resolution.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-refusal-retry.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-repeat-press.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-repeated-stop.test.ts',
'src/main/native-chat/native-chat-visuals-sweep.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-resend-answer.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-replaced-server-turn.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-resend-ledger-refusal.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-resolved-append.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-resumed-child-owner.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-restart-offer-newer-orca.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-restart-offer-withdrawal.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-restart-provider-output.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-restart-recovery-output.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-restart-restore.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-restart-status-publication.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-restart-stream-duration.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-rewind-at-rest.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-rewind-live-send.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-rewind-provenance.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-rewind.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-clear-rewind.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-send-idempotency.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-send-open-stale-turn.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-send-preparation.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-send-restarts-failed-start.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-settled-attach-retry.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-shutdown-cut-row.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-signed-out-child.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-stale-turn-verdict.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-stale-turn-open.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-start-failure-writer.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-startup-attempt-host.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-startup-attempt-registrations.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-startup-reconcile-failure.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed-child-work.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed-child.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed-children.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed-clock.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed-launch-directory.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed-stopping.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-status-feed.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-status-reentry.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-stop-note-opened-turn.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-stop-note-withdrawn-send.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-stop-receipts.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-stopping-journal.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-subagent-recency.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-subagent-rows.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-subscriber-background-tasks.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-subscribers.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-target-reconcile.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-thread-goal.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-transition.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-turns.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-unnamed-stop-races.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-unopened-tab.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-unsent-send-hold.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-view-start-after-failed-start.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-wedged-profile-migration.test.ts',
'src/main/native-chat/agent-session-wire/structured-agent-session-wire-admission.test.ts',
'src/main/native-chat/agent-session-wire/structured-conversation-command.test.ts',
'src/main/opencode/opencode-acp-stored-messages.test.ts',
'src/main/orcad/orcad-automations.test.ts',
'src/main/orcad/orcad-local-serve-selection.test.ts',
'src/main/orcad/orcad-managed-idle-exit-chat-provider.test.ts',
'src/main/orcad/serve-profile-ssh-targets.test.ts',
'src/main/pi/rpc-launch-resolution.test.ts',
'src/main/runtime/agent-session-conversation-clear-commit.test.ts',
'src/main/runtime/agent-session-conversation-name-store.test.ts',
'src/main/runtime/agent-session-death-evidence-persistence.test.ts',
'src/main/runtime/agent-session-launch-directory.test.ts',
'src/main/runtime/agent-session-launch-env-admission.test.ts',
'src/main/runtime/agent-session-lease-renewal.test.ts',
'src/main/runtime/agent-session-record-options.test.ts',
'src/main/runtime/agent-session-record-store-tab-table.test.ts',
'src/main/runtime/agent-session-record-store.test.ts',
'src/main/runtime/agent-session-permission-backfill.test.ts',
'src/main/runtime/agent-session-released-reservation-replay.test.ts',
'src/main/runtime/agent-session-runtime-attribution.test.ts',
'src/main/runtime/agent-session-store-transactions.test.ts',
'src/main/runtime/agent-session-unsaved-creation-supersession.test.ts',
'src/main/runtime/automation-change-publication.test.ts',
'src/main/runtime/host-terminal-close-persistence-durability.test.ts',
'src/main/runtime/orca-runtime-terminal-close-records.test.ts',
'src/main/runtime/orca-runtime-terminal-surface-close.test.ts',
'src/main/runtime/orchestration/orchestration-party-location.test.ts',
'src/main/runtime/orchestration/structured-worker-journal-page.test.ts',
'src/main/runtime/rpc/methods/agent-launch-caller-selection.test.ts',
'tests/e2e/agent-launch-cli.unit.test.ts',
'src/main/runtime/rpc/methods/agent-launch-folder-workspace-create.test.ts',
'src/main/runtime/rpc/methods/agent-launch-instant-tab.test.ts',
'src/main/runtime/orca-runtime.test.ts',
'src/main/runtime/worktree-agent-first-surface.test.ts',
'tests/e2e/agent-launch-setup-choice.unit.test.ts',
'src/main/runtime/rpc/methods/agent-launch-pane-reservation.test.ts',
'src/main/runtime/rpc/methods/agent-launch-prestart-failure.test.ts',
'src/main/runtime/rpc/methods/agent-launch-replay.test.ts',
'src/main/runtime/rpc/methods/agent-launch-session-reservation.test.ts',
'src/main/runtime/rpc/methods/structured-agent-session-adoption-replay.test.ts',
'src/main/runtime/rpc/methods/structured-agent-session-at-rest.test.ts',
'src/main/runtime/rpc/methods/structured-agent-session-create-message.test.ts',
'src/main/runtime/rpc/methods/structured-agent-session-hold.test.ts',
'src/main/runtime/rpc/methods/structured-agent-session-options-workspace-scope.test.ts',
'src/main/runtime/rpc/methods/structured-agent-session-restart-unregistered-agent.test.ts',
'src/main/runtime/rpc/methods/structured-agent-session-unsubscribe.test.ts',
'src/main/runtime/rpc/methods/structured-chat-tab-table.test.ts',
'src/main/runtime/runtime-managed-worktree-metadata-sweep.test.ts',
'src/main/runtime/runtime-orchestration-sender-names.test.ts',
'src/main/runtime/runtime-worktree-agent-rows-verdict.test.ts',
'src/main/runtime/runtime-worktree-structured-agent-rows-liveness.test.ts',
'src/main/runtime/structured-agent-session-codex-interrupt-order.test.ts',
'src/main/runtime/structured-agent-session-codex-opening-send-hold.test.ts',
'src/main/runtime/runtime-client-agent-launch-settings-durability.test.ts',
'src/main/runtime/structured-agent-session-codex-settlement-order.test.ts',
'src/main/runtime/structured-agent-session-integration-replay.test.ts',
'src/main/runtime/structured-agent-session-integration.test.ts',
'src/main/runtime/structured-agent-session-mobile-restore.test.ts',
'src/main/runtime/structured-agent-session-paired-caller.test.ts',
'src/main/runtime/structured-agent-session-rollback-compatibility.test.ts',
'src/main/runtime/structured-agent-session-spawn-token-descendants.test.ts',
'src/main/runtime/structured-agent-session-startup-reconcile.test.ts',
'src/main/runtime/structured-claude-attachment-grant.test.ts',
'src/main/runtime/structured-claude-pending-rewind.test.ts',
'src/main/runtime/structured-foreground-command-strip.test.ts',
'src/main/ssh-expired-lease-pane-readoption.test.ts',
'src/main/ssh-reattach-pane-cardinality.test.ts',
'src/main/ssh/orcad-migration-cutover-coordinator.test.ts',
'src/main/ssh/orcad-migration-delta-move.test.ts',
'src/main/ssh/orcad-migration-delta-snapshot.test.ts',
'src/main/ssh/orcad-migration-repository-link.test.ts',
'src/main/ssh/orcad-migration-snapshot-resume.test.ts',
'src/main/ssh/orcad-migration-source-fence.test.ts',
'src/main/ssh/orcad-migration-ssh-relay-source.test.ts',
'src/main/ssh/orcad-migration-stuck-host-profiles.test.ts',
'src/main/ssh/orcad-runtime-conversion.test.ts',
'src/main/ssh/orcad-unreachable-setup-release.test.ts',
'src/main/ssh/ssh-target-orcad-preflight.test.ts',
'src/main/worktree-identity-persistence.test.ts',
'src/main/worktree-removal-close-records.test.ts',
'src/main/worktree-removal-session-partition-fencing.test.ts',
'tests/e2e/codex-child-approval-activity-row.unit.test.ts',
'tests/e2e/cross-version-wire/agent-session-newer-chat-refusal.unit.test.ts',
'tests/e2e/cross-version-wire/agent-session-stop-event-downgrade.unit.test.ts',
'tests/e2e/cross-version-wire/cross-version-agent-session-wire.unit.test.ts',
'tests/e2e/cross-version-wire/submission-positions-downgrade.unit.test.ts',
'tests/e2e/folder-upgrade-identity-persistence.unit.test.ts',
'tests/e2e/host-agent-launch-settings-hook-bookkeeping.unit.test.ts',
'tests/e2e/structured-agent-session-read-owner.unit.test.ts',
'tests/e2e/structured-chat-owner-status-activation.unit.test.ts'
]