From 4634d2c03b2ec007c7f374e62266ba43edff84b4 Mon Sep 17 00:00:00 2001 From: Brennan Benson <79079362+brennanb2025@users.noreply.github.com> Date: Mon, 14 Sep 2026 00:19:39 -0700 Subject: [PATCH 01/12] fix(native-chat): let the provider reopen a Claude turn it resumed itself (#20518) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(native-chat): let the provider reopen a Claude turn it resumed itself A Claude turn could only be opened by Orca's own send echo, while any `result` frame closed it. The provider resumes work on its own — a background task reports in and wakes the agent after `result` settled the turn — and nothing Orca sent ever arrives to reopen one, so the session projected `idle` for the rest of the work. The model's own output is the evidence a turn is running, the way Codex's `turn/start` is, so it opens one; whichever opened it, the next `result` settles it. Subagent frames still open nothing: children outlive the turn that spawned them, and their work is their parent turn's, never a turn of its own. * fix(native-chat): bracket a resumed turn around the output that opened it A resumed turn was published after the frame's own rows, so its first tool call sat above the turn record. Every reader that scans back to the turn record and stops — the active-tool reader behind the sidebar's tool line, and the turn-window activity selector — looked straight past it, and the row showed working with no tool until a second call landed. The turn now opens before its frame is journaled. A send's turn keeps its existing order: the user echo is that turn's anchor and is written first. Prompt journaling moves to its own module, verbatim, to keep the translator clear of the line cap. * refactor(native-chat): declare the turn open at each content site The resumed-turn rule was a predicate that re-derived whether a frame had produced anything, duplicating work the frame handler had already done. The content sites know: each one now calls an idempotent ensureTurnOpen before it journals, and the guard against reopening a live turn lives in that one place. Behaviour is unchanged; claude-turn-opening.ts is left owning only the send echo, which is the one opener that anchors its turn to a user row. * fix(native-chat): gate both turn edges on root-ness The reopen path already refused nested output; the guard now reads before the already-running check so both edges state root-ness first. The close path had no nesting check at all, so a child's result would have ended the turn that spawned it. The two edges read parent_tool_use_id differently on purpose, and both fail towards not over-claiming: opening needs proof of root-ness, so an absent field opens nothing; closing needs proof of nesting, so an absent field still closes. No real Claude stream has been observed carrying a nested result — the session that prompted this work has none in any subagent stream — so the close-side guard is symmetry, not a demonstrated fix. * fix(native-chat): stop provider output reopening a turn nothing can close Self-audit found two paths the reopen rule opened where no event could ever settle the turn it created, leaving the row working for the life of the session. Both now suppress reopening until an accepted send lifts it: - a frame arriving after the session ended, when no event will settle anything - a turn the provider failed, or the user stopped, where the next thing the provider says is not a resumption Each has a one-lever ablation: removing the suppression read alone fails exactly those two tests, and both fail as working-instead-of-idle. * fix(native-chat): open a resumed turn from its first streamed delta Streamed deltas short-circuit before the frame handler, so a resumed turn whose first output is streamed text — the common case, since partial messages are a pinned launch contract — kept reading idle while its partial text was already journaled and visible. The streamed path now opens the turn too. Also from the same audit: - a nested result no longer swallows its own failure diagnostic; the turn gate now guards only settlement, and the provider-fallback row is written either way - root-ness treats an absent parent_tool_use_id as root, so a build that omits the field cannot silently stop opening turns - the suppression latch only ever sets on a failed result; a later clean result cannot lift it, and only an accepted send does The opener moves into claude-turn-opening.ts so both entry points share one root-then-suppression-then-idempotency order. * fix(native-chat): preserve resumed-turn lifecycle semantics --- src/main/claude/claude-prompt-journaling.ts | 46 ++ ...ude-structured-journal-translation.test.ts | 13 +- .../claude-structured-journal-translation.ts | 170 ++++--- .../claude-structured-provider-fallback.ts | 36 +- src/main/claude/claude-turn-lifecycle-item.ts | 10 +- src/main/claude/claude-turn-opening.ts | 104 +++++ .../claude/claude-turn-resumption.test.ts | 428 ++++++++++++++++++ src/shared/agent-session-journal-types.ts | 3 +- 8 files changed, 721 insertions(+), 89 deletions(-) create mode 100644 src/main/claude/claude-prompt-journaling.ts create mode 100644 src/main/claude/claude-turn-opening.ts create mode 100644 src/main/claude/claude-turn-resumption.test.ts diff --git a/src/main/claude/claude-prompt-journaling.ts b/src/main/claude/claude-prompt-journaling.ts new file mode 100644 index 00000000000..99b163fe197 --- /dev/null +++ b/src/main/claude/claude-prompt-journaling.ts @@ -0,0 +1,46 @@ +// Journaling an approval or question prompt, and remembering the rows it wrote +// so a cancellation can tombstone exactly those. + +import type { AgentJournalItemIdentity } from '../../shared/agent-session-journal-types' +import { agentJournalItemKey } from '../../shared/agent-session-journal-item-key' +import type { StructuredAgentSessionEventSink } from '../native-chat/agent-session-wire/structured-agent-session-event-sink' +import type { ClaudeStructuredSessionEvent } from './claude-structured-session-state' +import { + claudeApprovalItem, + claudePromptIdentity, + claudeQuestionItems +} from './claude-structured-prompt-items' + +export type ClaudePromptJournalDeps = { + sink: StructuredAgentSessionEventSink + bindPromptItemId?: (journalItemId: string, promptKey: string, questionId?: string) => void + /** Prompt key → the rows it wrote, owned by the translator so a cancel can sweep them. */ + promptItems: Map +} + +export function journalClaudePrompt( + deps: ClaudePromptJournalDeps, + event: Extract +): void { + const identities: AgentJournalItemIdentity[] = [] + if (event.prompt.kind === 'question') { + for (const question of claudeQuestionItems({ + sessionId: event.sessionId, + prompt: event.prompt + })) { + identities.push(question.identity) + deps.sink.appendItem(question.identity, question.body) + deps.bindPromptItemId?.(agentJournalItemKey(question.identity), event.prompt.promptKey) + } + } else { + const identity = claudePromptIdentity({ + sessionId: event.sessionId, + promptKey: event.prompt.promptKey + }) + identities.push(identity) + deps.sink.appendItem(identity, claudeApprovalItem(event.prompt)) + deps.bindPromptItemId?.(agentJournalItemKey(identity), event.prompt.promptKey) + } + deps.promptItems.set(event.prompt.promptKey, identities) + deps.sink.publish() +} diff --git a/src/main/claude/claude-structured-journal-translation.test.ts b/src/main/claude/claude-structured-journal-translation.test.ts index 7a8ecf54344..65be68bb05f 100644 --- a/src/main/claude/claude-structured-journal-translation.test.ts +++ b/src/main/claude/claude-structured-journal-translation.test.ts @@ -220,10 +220,15 @@ describe('Claude structured journal translation', () => { for (const event of turn.start) { translator.handle(event) } + expect(lifecycleAppends(state.items)).toEqual([ + ['turn-lifecycle:msg_01-message-start', 'running'] + ]) + expect(assistantMessages(state.items)).toEqual([]) + for (const delta of turn.deltas) { translator.handle(delta) } - expect(state.items).toEqual([]) + expect(assistantMessages(state.items)).toEqual([]) const run = scheduled as (() => void) | null run?.() @@ -568,7 +573,11 @@ describe('Claude structured journal translation', () => { translator.handle(message('assistant', 'assistant-thinking', [{ type: 'thinking', thinking }])) - expect(state.items.at(-1)?.body).toEqual({ + // The frame also opens the turn it produced in, so pick the reasoning row itself. + const reasoning = state.items.find( + (item) => item.body.kind === 'message' && item.body.role === 'reasoning' + ) + expect(reasoning?.body).toEqual({ kind: 'message', role: 'reasoning', blocks: [ diff --git a/src/main/claude/claude-structured-journal-translation.ts b/src/main/claude/claude-structured-journal-translation.ts index 8b71149cba2..702ff5f6b26 100644 --- a/src/main/claude/claude-structured-journal-translation.ts +++ b/src/main/claude/claude-structured-journal-translation.ts @@ -10,7 +10,6 @@ import type { ClaudeStructuredSessionEvent } from './claude-structured-session-s import { claudeMessageBody, claudeMessageIdentity, - claudeHasReplayContent, claudeOutputEnvelope, claudeStreamingMessageBody, claudeThinkingIdentity, @@ -22,15 +21,11 @@ import { readClaudeMessageEnvelope, type ClaudeToolUse } from './claude-structured-item-translation' -import { - claudeApprovalItem, - claudePromptIdentity, - claudeQuestionItems -} from './claude-structured-prompt-items' +import { journalClaudePrompt } from './claude-prompt-journaling' import type { ClaudePromptRegistry } from './claude-structured-prompt-replies' import { claudeProviderFrameActivity } from '../native-chat/agent-session-wire/provider-frame-activity' import { - appendUnmodeledClaudeContent, + appendUnmodeledContent, claudeProviderFrameKind, claudeResultFailure, createClaudeProviderFrameFallback, @@ -39,6 +34,14 @@ import { import { ClaudeSubagentRoster } from './claude-subagent-roster' import { createClaudeStreamedBlockRegistry } from './claude-streamed-block-identity' import { createClaudeStreamedTextCheckpoints } from './claude-streamed-text-checkpoints' +import { + claudeStreamTurnStartSource, + claudeStreamTurnSource, + claudeTurnOpenedBySendEcho, + createClaudeTurnOpener, + isRootClaudeFrame, + type ClaudeTurnSource +} from './claude-turn-opening' import { claudeTurnEndForResult, claudeTurnLifecycleItem, @@ -84,6 +87,10 @@ export function createClaudeJournalTranslator( const promptItems = new Map() const streamedBlocks = createClaudeStreamedBlockRegistry() let currentTurn: ClaudeCurrentTurn | null = null + /** Provider output may not reopen a turn after the session ended or a turn + * failed: nothing would ever close the turn it opened, and the row would read + * working for the life of the session. Only an accepted send lifts it. */ + let reopenSuppressed = false const groupKeyOf = (turn: ClaudeCurrentTurn | null): string | null => turn ? `${turn.sessionId}:${turn.turnId}` : null const providerFallback = createClaudeProviderFrameFallback( @@ -110,6 +117,28 @@ export function createClaudeJournalTranslator( deps.sink.publish({ coalescingKey: item.publishCoalescingKey }) } + /** Open a turn, ending whichever one was still open. A new turn starting is the + * only end the previous one gets when its result never arrives; settling it + * later would sweep THIS turn. */ + const openTurn = (turn: ClaudeCurrentTurn, observedAt: number): void => { + if (currentTurn) { + subagents.settleTurn(groupKeyOf(currentTurn)) + publishLifecycle(currentTurn, { state: 'interrupted', completedAt: observedAt }) + } + currentTurn = turn + publishLifecycle(turn) + deps.sink.setActivity?.(null) + } + + /** The provider produced, so a turn is running. Idempotent: every frame of one + * reply stays inside the turn its first frame opened. A subagent's output is + * its parent turn's work and never a turn of its own. */ + const ensureTurnOpen = createClaudeTurnOpener({ + isTurnOpen: () => currentTurn !== null, + isSuppressed: () => reopenSuppressed, + open: openTurn + }) + const publishActivity = (kind: string, payload: unknown): void => { if (!currentTurn) { return @@ -120,8 +149,12 @@ export function createClaudeJournalTranslator( } } - const handleStream = (message: Record): boolean => { + const handleStream = (message: Record, observedAt: number): boolean => { const delta = streamedBlocks.observe(message) + // `message_start` is the provider's turn boundary. Keep the first text + // delta as a compatibility fallback for streams that omit it. + const source = delta ? claudeStreamTurnSource(message) : claudeStreamTurnStartSource(message) + ensureTurnOpen(message, source, observedAt) if (!delta) { return false } @@ -149,11 +182,23 @@ export function createClaudeJournalTranslator( (body && envelope.role === 'assistant' ? streamedBlocks.reconcile(envelope) : null) ?? claudeMessageIdentity(envelope) streamedText.forget(agentJournalItemKey(identity)) + const thinking = claudeThinkingText(outputEnvelope) + const source: ClaudeTurnSource = { + sessionId: envelope.sessionId, + uuid: envelope.uuid, + assistant: envelope.role === 'assistant' + } + const openOutputTurn = (): void => ensureTurnOpen(message, source, observedAt) if (body) { + // Opening before the append is what brackets a turn around its own first + // output; a reader that scans back to the turn record and stops would + // otherwise look straight past the row that opened it. + ensureTurnOpen(message, source, observedAt) deps.sink.appendItem(identity, body) changed = true } for (const tool of claudeToolUses(outputEnvelope)) { + ensureTurnOpen(message, source, observedAt) tools.set(tool.id, tool) deps.sink.appendItem( claudeToolIdentity(envelope.sessionId, tool.id), @@ -177,8 +222,8 @@ export function createClaudeJournalTranslator( tools.delete(result.toolUseId) changed = true } - const thinking = claudeThinkingText(outputEnvelope) if (thinking) { + ensureTurnOpen(message, source, observedAt) deps.sink.appendItem(claudeThinkingIdentity(envelope.sessionId, envelope.uuid), { kind: 'message', role: 'reasoning', @@ -188,28 +233,19 @@ export function createClaudeJournalTranslator( }) changed = true } - changed = appendUnmodeledClaudeContent(providerFallback, outputEnvelope, message) || changed - if ( - envelope.role === 'user' && - startsTurn && - claudeHasReplayContent(envelope) && - message.parent_tool_use_id === null - ) { - if (currentTurn) { - // A new turn starting is the only end the previous one gets when its - // result never arrives; settling it later would sweep THIS turn. - subagents.settleTurn(groupKeyOf(currentTurn)) - publishLifecycle(currentTurn, { state: 'interrupted', completedAt: observedAt }) - } - currentTurn = { - sessionId: envelope.sessionId, - turnId: envelope.uuid, - startedAt: observedAt, - // A user echo lands on its own message identity, so this is the user row's key. - userItemId: agentJournalItemKey(identity) - } - publishLifecycle(currentTurn) - deps.sink.setActivity?.(null) + changed = + appendUnmodeledContent(providerFallback, outputEnvelope, message, openOutputTurn) || changed + // The send's turn is anchored to the user row journaled just above it. + const sendEchoTurn = claudeTurnOpenedBySendEcho({ + envelope, + frame: message, + startsTurn, + observedAt, + userItemId: agentJournalItemKey(identity) + }) + if (sendEchoTurn) { + reopenSuppressed = false + openTurn(sendEchoTurn, observedAt) } if (changed) { deps.sink.publish() @@ -217,30 +253,6 @@ export function createClaudeJournalTranslator( return true } - const handlePrompt = (event: Extract): void => { - const identities: AgentJournalItemIdentity[] = [] - if (event.prompt.kind === 'question') { - for (const question of claudeQuestionItems({ - sessionId: event.sessionId, - prompt: event.prompt - })) { - identities.push(question.identity) - deps.sink.appendItem(question.identity, question.body) - deps.bindPromptItemId?.(agentJournalItemKey(question.identity), event.prompt.promptKey) - } - } else { - const identity = claudePromptIdentity({ - sessionId: event.sessionId, - promptKey: event.prompt.promptKey - }) - identities.push(identity) - deps.sink.appendItem(identity, claudeApprovalItem(event.prompt)) - deps.bindPromptItemId?.(agentJournalItemKey(identity), event.prompt.promptKey) - } - promptItems.set(event.prompt.promptKey, identities) - deps.sink.publish() - } - return { handle: (event) => { if (event.type === 'ended') { @@ -255,15 +267,18 @@ export function createClaudeJournalTranslator( }) currentTurn = null } + // A frame that arrives after the child is gone must not open a turn no + // event can close. + reopenSuppressed = true deps.sink.setActivity?.(null) return } - if (event.type === 'message' && handleStream(event.message)) { + if (event.type === 'message' && handleStream(event.message, event.observedAt ?? Date.now())) { return } streamedText.flush() if (event.type === 'prompt') { - handlePrompt(event) + journalClaudePrompt({ ...deps, promptItems }, event) } else if (event.type === 'prompt-cancelled') { for (const identity of promptItems.get(event.promptKey) ?? []) { deps.sink.appendTombstone(identity) @@ -271,22 +286,33 @@ export function createClaudeJournalTranslator( promptItems.delete(event.promptKey) deps.sink.publish() } else if (event.type === 'message' && event.message.type === 'result') { - // The turn is over however it ended, so a foreground child still - // reported as working will never be settled by an event. - subagents.settleTurn(groupKeyOf(currentTurn)) - if (currentTurn) { - publishLifecycle( - currentTurn, - claudeTurnEndForResult(event.message, event.observedAt ?? Date.now()) - ) - currentTurn = null + // Every turn this translator opens is root by construction, so a nested + // result settles the child that produced it and never the turn. The + // diagnostic below still runs: a child's failure is reportable even when + // it ends no turn. + const settlesTurn = isRootClaudeFrame(event.message) + if (settlesTurn) { + // The turn is over however it ended, so a foreground child still + // reported as working will never be settled by an event. + // A turn that failed, or that the user stopped, is not resumed by + // whatever the provider says next; the next send is what resumes it. + // The latch only ever sets here; an accepted send is what lifts it. + reopenSuppressed ||= event.message.is_error === true + subagents.settleTurn(groupKeyOf(currentTurn)) + if (currentTurn) { + publishLifecycle( + currentTurn, + claudeTurnEndForResult(event.message, event.observedAt ?? Date.now()) + ) + currentTurn = null + } + deps.sink.setActivity?.(null) + // The turn is over. A block still awaiting its final keeps the text the + // flush above journaled, but its live state goes: an interrupted turn + // would otherwise retain that text for the life of the session. + streamedBlocks.clear() + streamedText.settle() } - deps.sink.setActivity?.(null) - // The turn is over. A block still awaiting its final keeps the text the - // flush above journaled, but its live state goes: an interrupted turn - // would otherwise retain that text for the life of the session. - streamedBlocks.clear() - streamedText.settle() const kind = claudeProviderFrameKind(event.message) // Ordinary turn bookkeeping stays suppressed; a reported failure never does. const failure = claudeResultFailure(event.message) diff --git a/src/main/claude/claude-structured-provider-fallback.ts b/src/main/claude/claude-structured-provider-fallback.ts index 68aec07976b..167ab37ce98 100644 --- a/src/main/claude/claude-structured-provider-fallback.ts +++ b/src/main/claude/claude-structured-provider-fallback.ts @@ -106,16 +106,22 @@ export function createClaudeProviderFrameFallback( acquisitionId: string ): { /** `displayText` leads the row when Claude knows the sentence the frame itself does not name. */ - append: (kind: string, payload: unknown, displayText?: string | null) => void + append: ( + kind: string, + payload: unknown, + displayText?: string | null, + beforeAppend?: () => void + ) => boolean } { let sequence = 0 return { - append: (kind, payload, displayText) => { + append: (kind, payload, displayText, beforeAppend) => { sequence += 1 const translated = unhandledProviderFrameJournalItem('claude', kind, payload) if (!translated) { - return + return false } + beforeAppend?.() const bounded = displayText ? boundInlineText(displayText, DEFAULT_JOURNAL_PAYLOAD_LIMITS).text : null @@ -127,6 +133,7 @@ export function createClaudeProviderFrameFallback( bounded ? { ...translated.body, text: bounded } : translated.body ) sink.publish() + return true } } } @@ -136,24 +143,27 @@ export type ClaudeProviderFrameFallback = ReturnType + message: Record, + beforeAppend: () => void ): boolean { let changed = false for (const part of envelope.content.filter((part) => !isModeledClaudeContent(part))) { const partType = claudeText(claudeRecord(part)?.type) ?? 'unknown' - fallback.append( - `message:${envelope.role}:content:${partType}`, - part, - readableProviderFrameText(part) ?? CLAUDE_UNRENDERABLE_CONTENT_TEXT - ) - changed = true + changed = + fallback.append( + `message:${envelope.role}:content:${partType}`, + part, + readableProviderFrameText(part) ?? CLAUDE_UNRENDERABLE_CONTENT_TEXT, + beforeAppend + ) || changed } if (envelope.content.length === 0 && envelope.role === 'assistant') { - fallback.append(`message:${envelope.role}:empty`, message) - changed = true + // Empty provider placeholders do not prove work began, and may have no + // later result capable of closing a turn. + changed = fallback.append(`message:${envelope.role}:empty`, message) || changed } return changed } diff --git a/src/main/claude/claude-turn-lifecycle-item.ts b/src/main/claude/claude-turn-lifecycle-item.ts index 00d7c4dd65e..664a06f0898 100644 --- a/src/main/claude/claude-turn-lifecycle-item.ts +++ b/src/main/claude/claude-turn-lifecycle-item.ts @@ -2,6 +2,7 @@ import type { AgentJournalItemIdentity, AgentJournalTurnItem } from '../../shared/agent-session-journal-types' +import { agentJournalItemKey } from '../../shared/agent-session-journal-item-key' import { agentJournalTurnBody } from '../../shared/agent-session-turn-record' import type { StructuredAgentSessionAppendOptions } from '../native-chat/agent-session-wire/structured-agent-session-event-sink' import { claudeText } from './claude-structured-item-translation' @@ -10,7 +11,8 @@ export type ClaudeCurrentTurn = { sessionId: string turnId: string startedAt: number - /** Provider key of the user echo that opened the turn. */ + /** Provider key of the user echo, or the lifecycle row itself when provider + * output opened a turn with no user row to receive its timing. */ userItemId: string } @@ -50,6 +52,12 @@ export function claudeTurnLifecycleIdentity( } } +/** Keep provider-resumed timing off the preceding prompt on clients that treat + * a missing user key as an older-host lifecycle row. */ +export function claudeProviderResumedTurnTimingAnchor(sessionId: string, turnId: string): string { + return agentJournalItemKey(claudeTurnLifecycleIdentity(sessionId, turnId)) +} + /** The lifecycle row is revised to its terminal state, never tombstoned, so the * turn's host-clock endpoints outlive the turn. */ export function claudeTurnLifecycleItem( diff --git a/src/main/claude/claude-turn-opening.ts b/src/main/claude/claude-turn-opening.ts new file mode 100644 index 00000000000..9b4be37eb8e --- /dev/null +++ b/src/main/claude/claude-turn-opening.ts @@ -0,0 +1,104 @@ +// Whether Orca's own send echo opens a turn. +// +// The provider's own output opens one too — see `ensureTurnOpen` in the +// translator, which the content sites call as they journal. Orca's turn used to +// open only here, while any `result` frame closed it, and that asymmetry is what +// leaves a working session reading idle: the provider resumes on its own when a +// background task reports in and wakes the agent, and nothing Orca sent ever +// arrives to reopen a turn. + +import { + claudeHasReplayContent, + claudeRecord, + claudeText, + type ClaudeMessageEnvelope +} from './claude-structured-item-translation' +import { + claudeProviderResumedTurnTimingAnchor, + type ClaudeCurrentTurn +} from './claude-turn-lifecycle-item' + +export type ClaudeSendEchoTurnInput = { + envelope: ClaudeMessageEnvelope + /** The raw frame: an absent `parent_tool_use_id` is not the same claim as an + * explicit `null`, and only a root frame carries a root turn. */ + frame: Record + /** Orca dispatched this send and the provider is replaying it back. */ + startsTurn: boolean + observedAt: number + /** Provider key of the user row this turn is anchored to. */ + userItemId: string +} + +/** The turn a replayed send echo opens, or null when this frame is not one. */ +export function claudeTurnOpenedBySendEcho( + input: ClaudeSendEchoTurnInput +): ClaudeCurrentTurn | null { + const { envelope } = input + return envelope.role === 'user' && + input.startsTurn && + claudeHasReplayContent(envelope) && + input.frame.parent_tool_use_id === null + ? { + sessionId: envelope.sessionId, + turnId: envelope.uuid, + startedAt: input.observedAt, + userItemId: input.userItemId + } + : null +} + +/** Whether a frame is the root turn's own, rather than a child's. An absent + * `parent_tool_use_id` is a root frame: only a string names a parent, and a + * build that omits the field on root frames must not silently stop opening + * turns. */ +export function isRootClaudeFrame(frame: Record): boolean { + return typeof frame.parent_tool_use_id !== 'string' +} + +export type ClaudeTurnSource = { sessionId: string; uuid: string; assistant: boolean } + +/** Reads a turn source off a raw frame, for the streamed path that has no envelope. */ +export function claudeStreamTurnSource(frame: Record): ClaudeTurnSource | null { + const sessionId = claudeText(frame.session_id) + const uuid = claudeText(frame.uuid) + // A streamed delta only ever carries model output. + return sessionId && uuid ? { sessionId, uuid, assistant: true } : null +} + +/** A streamed assistant message has begun, before its first content delta. */ +export function claudeStreamTurnStartSource( + frame: Record +): ClaudeTurnSource | null { + const event = claudeRecord(frame.event) + return frame.type === 'stream_event' && event?.type === 'message_start' + ? claudeStreamTurnSource(frame) + : null +} + +/** The provider produced, so a turn is running. Root-ness first, then the + * suppression latch, then idempotency — every frame of one reply stays inside + * the turn its first frame opened. */ +export function createClaudeTurnOpener(deps: { + isTurnOpen: () => boolean + isSuppressed: () => boolean + open: (turn: ClaudeCurrentTurn, observedAt: number) => void +}): (frame: Record, source: ClaudeTurnSource | null, observedAt: number) => void { + return (frame, source, observedAt) => { + if (!source?.assistant || !isRootClaudeFrame(frame)) { + return + } + if (deps.isSuppressed() || deps.isTurnOpen()) { + return + } + deps.open( + { + sessionId: source.sessionId, + turnId: source.uuid, + startedAt: observedAt, + userItemId: claudeProviderResumedTurnTimingAnchor(source.sessionId, source.uuid) + }, + observedAt + ) + } +} diff --git a/src/main/claude/claude-turn-resumption.test.ts b/src/main/claude/claude-turn-resumption.test.ts new file mode 100644 index 00000000000..96d364f91a5 --- /dev/null +++ b/src/main/claude/claude-turn-resumption.test.ts @@ -0,0 +1,428 @@ +// Regression for a structured Claude session that reported idle while it was +// working. Reproduced from the journal of the reported session +// (962e6f25…/epoch 3d214e6f…, 2026-09-13): a `result` settled the turn at +// 13:56:06, a background task reported in at 13:58:59, and the agent then ran +// tool calls until 14:05:18 — nine minutes in which the shared projector, and +// so the sidebar row and the chat indicator, read `idle`. + +import { describe, expect, it, vi } from 'vitest' +import type { + AgentJournalItemBody, + AgentJournalItemIdentity, + AgentJournalRenderItem +} from '../../shared/agent-session-journal-types' +import { agentJournalItemKey } from '../../shared/agent-session-journal-item-key' +import { + legacyAgentJournalTurnStatusBody, + readAgentJournalTurn +} from '../../shared/agent-session-turn-record' +import { selectStructuredAgentSettledTurns } from '../../shared/structured-agent-session-turn-timing' +import { + hasUnansweredStructuredAgentSessionDispatch, + projectStructuredAgentSessionStatus, + projectStructuredAgentSessionStatusSummary +} from '../../shared/structured-agent-session-projection' +import { activeStructuredAgentSessionToolCall } from '../../shared/structured-agent-session-live-turn' +import type { StructuredAgentSessionEventSink } from '../native-chat/agent-session-wire/structured-agent-session-event-sink' +import { createClaudeJournalTranslator } from './claude-structured-journal-translation' + +const SESSION = 'claude-session' + +function harness() { + const appended: { identity: AgentJournalItemIdentity; body: AgentJournalItemBody }[] = [] + const sink: StructuredAgentSessionEventSink = { + appendItem: (identity, body) => appended.push({ identity, body }), + appendTombstone: () => {}, + publish: vi.fn() + } + const translator = createClaudeJournalTranslator({ sink, fallbackIdPrefix: 'test' }) + // The reducer keys items by identity and orders them by first append, so the + // render list the projector reads is the deduplicated append order. + const items = (): AgentJournalRenderItem[] => { + const byKey = new Map() + appended.forEach(({ identity, body }, index) => { + const key = agentJournalItemKey(identity) + const existing = byKey.get(key) + byKey.set(key, { + itemId: key, + revision: (existing?.revision ?? 0) + 1, + body, + sequence: existing?.sequence ?? index, + observedAt: index + }) + }) + return [...byKey.values()].sort((a, b) => a.sequence - b.sequence) + } + return { translator, items, appended } +} + +function frame( + type: 'assistant' | 'user', + uuid: string, + content: unknown[], + parentToolUseId: string | null = null +) { + return { + type: 'message' as const, + sessionId: 'orca-session', + ...(type === 'user' && parentToolUseId === null ? { startsTurn: true as const } : {}), + message: { + type, + uuid, + session_id: SESSION, + parent_tool_use_id: parentToolUseId, + message: { role: type, content } + } + } +} + +/** The captured `task-notification` wake-up: a main-thread user frame Orca never + * dispatched, so it carries no replay waiter and cannot start a turn. */ +function taskNotification(uuid: string) { + return { + type: 'message' as const, + sessionId: 'orca-session', + message: { + type: 'user', + uuid, + session_id: SESSION, + parent_tool_use_id: null, + message: { + role: 'user', + content: [{ type: 'text', text: 'bfnmj08v6' }] + } + } + } +} + +/** A partial-message text delta. `--include-partial-messages` is a pinned launch + * contract, so this is the shape a resumed turn's first output usually takes. */ +function textDelta(uuid: string, messageId: string, text: string) { + return { + type: 'message' as const, + sessionId: 'orca-session', + message: { + type: 'stream_event', + uuid, + session_id: SESSION, + parent_tool_use_id: null, + event: { type: 'content_block_delta', index: 0, delta: { type: 'text_delta', text } }, + message: { id: messageId } + } + } +} + +function streamMessageStart(uuid: string, parentToolUseId: string | null = null) { + return { + type: 'message' as const, + sessionId: 'orca-session', + message: { + type: 'stream_event', + uuid, + session_id: SESSION, + parent_tool_use_id: parentToolUseId, + event: { type: 'message_start', message: { id: `msg-${uuid}`, role: 'assistant' } } + } + } +} + +function result(uuid: string, parentToolUseId: string | null = null, durationMs = 322_937) { + return { + type: 'message' as const, + sessionId: 'orca-session', + message: { + type: 'result', + subtype: 'success', + uuid, + session_id: SESSION, + parent_tool_use_id: parentToolUseId, + duration_ms: durationMs + } + } +} + +function projected(items: readonly AgentJournalRenderItem[]): string { + // No submission is outstanding: the send was acknowledged long ago, which is + // exactly the state in which the reported session fell back to idle. + expect(hasUnansweredStructuredAgentSessionDispatch([], null)).toBe(false) + return projectStructuredAgentSessionStatus(items, [], null) +} + +describe('a Claude turn the provider resumed on its own', () => { + it('reports working while the agent runs tool calls after a result settled the turn', () => { + const { translator, items } = harness() + + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + expect(projected(items())).toBe('working') + + translator.handle(result('r1')) + // The agent really did stop here, so idle is correct. + expect(projected(items())).toBe('idle') + + // A background task reports in and wakes the agent; it starts working again. + translator.handle(taskNotification('n1')) + translator.handle(frame('assistant', 'a1', [{ type: 'text', text: 'Back on it.' }])) + expect(projected(items())).toBe('working') + + translator.handle( + frame('assistant', 'a2', [ + { type: 'tool_use', id: 'toolu_1', name: 'Bash', input: { command: 'rg foo' } } + ]) + ) + expect(projected(items())).toBe('working') + + // The next result settles the turn the provider opened, so nothing over-claims. + translator.handle(result('r2')) + expect(projected(items())).toBe('idle') + }) + + it('gives the resumed turn its own record, anchored away from the preceding user row', () => { + const { translator, items } = harness() + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + translator.handle(result('r1')) + translator.handle(frame('assistant', 'a1', [{ type: 'text', text: 'Back on it.' }])) + + const turns = items().flatMap((item) => { + const turn = readAgentJournalTurn(item.body) + return turn ? [turn] : [] + }) + expect(turns.map((turn) => turn.state)).toEqual(['completed', 'running']) + expect(turns[1]?.turnId).toBe('a1') + expect(turns[1]?.userItemId).toBe('legacy:claude:claude-session:turn-lifecycle%3Aa1') + }) + + it('does not replace the preceding prompt timing with provider-resumed work', () => { + const { translator, items } = harness() + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + translator.handle(result('r1', null, 1_000)) + translator.handle(frame('assistant', 'a1', [{ type: 'text', text: 'Back on it.' }])) + translator.handle(result('r2', null, 9_000)) + + const translatedItems = items() + const originalTurn = translatedItems + .map((item) => readAgentJournalTurn(item.body)) + .find((turn) => turn?.turnId === 'u1') + expect(originalTurn?.userItemId).toBeDefined() + if (!originalTurn?.userItemId) { + throw new Error('expected the original turn to name its user row') + } + const userItem: AgentJournalRenderItem = { + itemId: originalTurn.userItemId, + revision: 1, + sequence: -1, + observedAt: 0, + body: { kind: 'message', role: 'user', blocks: [{ type: 'text', text: 'go' }] } + } + const currentItems = [userItem, ...translatedItems] + expect(selectStructuredAgentSettledTurns(currentItems).get(userItem.itemId)).toMatchObject({ + workedSeconds: 1 + }) + + const legacyItems = currentItems.map((item) => { + const turn = readAgentJournalTurn(item.body) + return item.body.kind === 'turn' && turn + ? { ...item, body: legacyAgentJournalTurnStatusBody(turn, item.itemId) } + : item + }) + expect(selectStructuredAgentSettledTurns(legacyItems).get(userItem.itemId)).toMatchObject({ + workedSeconds: 1 + }) + }) + + it('leaves a settled turn settled when only a subagent is still producing', () => { + const { translator, items } = harness() + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + translator.handle(result('r1')) + + // Children outlive the turn that spawned them; their streams are not a turn. + translator.handle(streamMessageStart('child-start', 'toolu_parent')) + expect(projected(items())).toBe('idle') + }) + + it('does not reopen a turn that is already running', () => { + const { translator, items } = harness() + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + translator.handle(frame('assistant', 'a1', [{ type: 'text', text: 'one' }])) + translator.handle(frame('assistant', 'a2', [{ type: 'text', text: 'two' }])) + + const running = items().filter((item) => readAgentJournalTurn(item.body)?.state === 'running') + expect(running).toHaveLength(1) + expect(readAgentJournalTurn(running[0]!.body)?.turnId).toBe('u1') + expect(projected(items())).toBe('working') + }) + + it('reports the first tool call of a resumed turn as the live tool', () => { + const { translator, items } = harness() + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + // A real first turn leaves prose behind, which is what makes the session listable. + translator.handle(frame('assistant', 'a0', [{ type: 'text', text: 'Launched it.' }])) + translator.handle(result('r1')) + + // The provider resumes straight into a tool call, with no prose first. The + // turn has to bracket its own first output or every reader that stops at the + // turn record looks straight past it. + translator.handle( + frame('assistant', 'a1', [ + { type: 'tool_use', id: 'toolu_1', name: 'Bash', input: { command: 'rg foo' } } + ]) + ) + + expect(projected(items())).toBe('working') + expect(activeStructuredAgentSessionToolCall(items())?.name).toBe('Bash') + expect(projectStructuredAgentSessionStatusSummary(items(), [], null).toolName).toBe('Bash') + }) + + it('leaves the turn running when a nested result settles a child', () => { + const { translator, items } = harness() + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + translator.handle(frame('assistant', 'a0', [{ type: 'text', text: 'working on it' }])) + + // A child's result ends the child, not the turn that spawned it. No real + // stream has been observed carrying one; this holds the symmetry with the + // open path, which already refuses to open a turn from nested output. + translator.handle(result('r-child', 'toolu_parent')) + expect(projected(items())).toBe('working') + + translator.handle(result('r-root')) + expect(projected(items())).toBe('idle') + }) + + it('never opens a turn from a frame that arrives after the session ended', () => { + const { translator, items } = harness() + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + translator.handle(frame('assistant', 'a0', [{ type: 'text', text: 'on it' }])) + translator.handle({ type: 'ended', sessionId: 'orca-session', reason: 'exit', observedAt: 1 }) + expect(projected(items())).toBe('idle') + + // Nothing can close a turn opened now, so nothing may open one. + translator.handle(streamMessageStart('late-start')) + expect(projected(items())).toBe('idle') + }) + + it('does not let provider chatter resume a turn the provider failed', () => { + const { translator, items } = harness() + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + translator.handle(frame('assistant', 'a0', [{ type: 'text', text: 'on it' }])) + translator.handle({ + type: 'message' as const, + sessionId: 'orca-session', + message: { + type: 'result', + subtype: 'error', + uuid: 'r-fail', + session_id: SESSION, + parent_tool_use_id: null, + is_error: true + } + }) + expect(projected(items())).toBe('idle') + + translator.handle(frame('assistant', 'a1', [{ type: 'text', text: 'still talking' }])) + expect(projected(items())).toBe('idle') + + // The next accepted send is what resumes it. + translator.handle(frame('user', 'u2', [{ type: 'text', text: 'again' }])) + expect(projected(items())).toBe('working') + }) + + it('reports working from the first streamed delta of a resumed turn', () => { + const { translator, items } = harness() + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + translator.handle(frame('assistant', 'a0', [{ type: 'text', text: 'on it' }])) + translator.handle(result('r1')) + expect(projected(items())).toBe('idle') + + // The resumed reply streams in before any whole assistant frame lands. + translator.handle(textDelta('d1', 'msg-1', 'Back ')) + translator.handle(textDelta('d2', 'msg-1', 'on it.')) + expect(projected(items())).toBe('working') + }) + + it('opens before a resumed stream produces its first content delta', () => { + const { translator, items } = harness() + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + translator.handle(result('r1')) + + translator.handle(streamMessageStart('message-start-1')) + + expect(projected(items())).toBe('working') + expect(readAgentJournalTurn(items().at(-1)?.body)?.turnId).toBe('message-start-1') + expect(items().some((item) => item.body.kind === 'status')).toBe(false) + }) + + it('opens before journaling substantive fallback output', () => { + const { translator, items } = harness() + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + translator.handle(result('r1')) + + translator.handle( + frame('assistant', 'a1', [{ type: 'future_content', message: 'new provider output' }]) + ) + + const resumed = items().slice(-2) + expect(readAgentJournalTurn(resumed[0]?.body)?.state).toBe('running') + expect(resumed[1]?.body).toMatchObject({ + kind: 'status', + providerFrame: { kind: 'message:assistant:content:future_content' } + }) + expect(projected(items())).toBe('working') + }) + + it('does not open a turn for an empty assistant placeholder', () => { + const { translator, items } = harness() + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + translator.handle(result('r1')) + + translator.handle(frame('assistant', 'empty-1', [])) + + expect(projected(items())).toBe('idle') + expect(items().at(-1)?.body).toMatchObject({ + kind: 'status', + providerFrame: { kind: 'message:assistant:empty' } + }) + }) + + it('still reports a nested result failure even though it settles no turn', () => { + const { translator, items, appended } = harness() + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + translator.handle(frame('assistant', 'a0', [{ type: 'text', text: 'on it' }])) + const before = appended.length + translator.handle({ + type: 'message' as const, + sessionId: 'orca-session', + message: { + type: 'result', + subtype: 'error', + uuid: 'r-child-fail', + session_id: SESSION, + parent_tool_use_id: 'toolu_parent', + is_error: true, + result: 'child blew up' + } + }) + expect(projected(items())).toBe('working') + expect(appended.length).toBeGreaterThan(before) + }) + + it('keeps the failure latch set when a later root result succeeds', () => { + const { translator, items } = harness() + translator.handle(frame('user', 'u1', [{ type: 'text', text: 'go' }])) + translator.handle(frame('assistant', 'a0', [{ type: 'text', text: 'on it' }])) + translator.handle({ + type: 'message' as const, + sessionId: 'orca-session', + message: { + type: 'result', + subtype: 'error', + uuid: 'r-fail', + session_id: SESSION, + parent_tool_use_id: null, + is_error: true + } + }) + // A clean result arriving afterwards must not lift the latch. + translator.handle(result('r-late-ok')) + translator.handle(frame('assistant', 'a1', [{ type: 'text', text: 'still talking' }])) + expect(projected(items())).toBe('idle') + }) +}) diff --git a/src/shared/agent-session-journal-types.ts b/src/shared/agent-session-journal-types.ts index 7ba5b277e6d..fc603fdca08 100644 --- a/src/shared/agent-session-journal-types.ts +++ b/src/shared/agent-session-journal-types.ts @@ -170,7 +170,8 @@ export type AgentJournalTurnLifecycle = { turnId: string state: AgentJournalTurnLifecycleState /** Provider key of the user item that opened the turn; clients resolve a - * submission alias through it. Absent on rows from older hosts. */ + * submission alias through it. A lifecycle row may key itself when provider + * output opened a turn with no user item; absent means an older host. */ userItemId?: string startedAt?: number completedAt?: number From 539d4d1f32b4d6d16bd4f910ebdc4b9b99bbf624 Mon Sep 17 00:00:00 2001 From: Brennan Benson <79079362+brennanb2025@users.noreply.github.com> Date: Mon, 14 Sep 2026 00:23:20 -0700 Subject: [PATCH 02/12] fix(native-chat): resume structured chats cleanly after restart (#20509) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(native-chat): retire provider ownership on restart * fix(native-chat): stop showing a restart eviction as a provider death Restarting Orca turned a resumable structured chat into a user-visible `Provider exited: recorded pid absent on host`. Quit never released the durable lease, so restart probed the recorded pid, adjudicated the session evicted, and wrote a synthetic status row against a chat that was perfectly resumable. The fix is the missing teardown phase plus the missing fence check: quit now evicts every provider child this host owns — stopping it, settling its journal and handing the lease back — and the release compare-and-swaps on the fence it expected. Restart then finds a released lease and reopens the chat silently. What the user sees is decided by the typed death evidence rather than the shape of a settlement id: only an `exit-observed` death writes copy, and that copy now carries its cause so an auth failure and an OOM kill do not read alike. The reassuring wording stays. Historical synthetic rows are filtered out of the render projection, which needs no schema change and leaves every real provider-exit row alone. Also: - Bound the new eviction phase well below the quit deadline; a quit that dies mid-eviction leaves the lease unreleased, which is the original bug. - Scope the interruption verdict to work that was mid-response. A provider that died while waiting on an approval interrupted nothing. - Keep host bookkeeping in step with the adapter: the provider-child flag clears when the child is proven stopped, not seven steps later. - Drop the router's duplicate shutdown gate and acquisition drain — both adapters already own theirs — and latch the router closed so a late acquire cannot fan a session back out to closed adapters. - Attach the real cause to the settlement failure a quit reports, and remove a recovery-ticket field that was hardcoded at its only construction site. * fix(native-chat): scope the legacy status filter to the copy it retires The read-time filter hid every status row carrying a `restart-eviction:` identity. That identity is still minted, so a genuine provider death settled under it would have been dropped from every rendered page. Match the retired `Provider exited` copy as well, so only the legacy rows are hidden. Three smaller corrections alongside it: - The settlement retry path now applies the same unfinished-work check the live exit path uses, so a provider that died waiting on an approval no longer gets told a response was in progress. - Bound the exit reason before composing the outcome copy, so a stderr dump in the reason cannot push the "you can continue" sentence past the row's byte cap. - Correct the teardown comment: tail rows are protected by eviction's own per-session ordering, and `closeAll` is a backstop for children eviction never took, including one whose eviction was refused. * fix(native-chat): retire legacy status rows at the projection source The read-time filter that hides the retired `Provider exited …` rows ran on the way OUT of the page builder, after the paging math had already measured the unfiltered timeline. A backward window landing entirely on those rows returned an empty page that still reported `hasOlder: true` with a null `window.oldest`, so the renderer's backfill loop re-asked from the same anchor forever. Its only no-progress guard compares `window.oldest?.sequence` to the anchor, and `undefined === n` never breaks. The live subscription opens behind that loop, so the transcript never finished loading either. Filter where items ENTER the page pipeline instead: the reduced snapshot gets one renderable timeline, the forward path gets one renderable batch, and the window bound, effective limit, `hasOlder`, `window.oldest` and `nextCursor` are all computed over that single array. A window with nothing left behind it now reports end-of-history. Also restore the eviction retry contract. Clearing `hasProviderChild` as soon as the adapter proves the child gone is honest, but it is a different fact from the wind-down this host still owes. A retry after a step aborted between the two was reading "no child here" and skipping both the dead-generation settlement and the lease release the aborted attempt had promised to repeat. The obligation is now tracked separately and cleared only by a release that actually landed. And rename the filter to the copy it retires: it drops only rows carrying the retired `Provider exited` text, not restart-eviction status rows in general. * fix(native-chat): read the wind-down a close owes from the live child An eviction recorded "nothing owed" whenever it ran over a session with no provider child of its own, and the retry then read that record in preference to the child in front of it. A session suspended to an agent terminal is exactly that shape, and the trip back to native re-acquires into the SAME session object rather than replacing it, so the next close skipped both the dead-generation settlement and the lease release — leaving the record claiming a live owner this host had just stopped, and a pending send unsettled. The obligation is now derived the way the quit sweep already derived it, from one shared predicate: a live child always owes a wind-down, and a remembered `false` only carries the obligation forward, never cancels it. Also drops a memoization in the history page that could never hit. Its key was the snapshot's items array, which the reducer rebuilds on every `snapshot()` call, so each backward page allocated a fresh key; the one reader that does share a snapshot across pages reads forward and never calls it. The comment claimed a multi-page read filtered once, which was not true of either path. Tests: the handoff round trip that strands the lease, and the quit sweep picking up an eviction whose close retry never came. * chore(native-chat): scope three helpers to their file and pin the teardown order retryUnexpectedExitSettlement, hasUnfinishedStructuredAgentSessionWork and isRetiredProviderExitStatusItem each have no consumer outside the file that defines them, so they no longer advertise an external contract. The quit-path phase list documents its order as load-bearing, but nothing asserted it. Pin the phase names so evict-owned-sessions cannot drift out of its slot between drain-attaches and flush-event-sinks. * fix(native-chat): stop the router reporting a stop it never observed `closeAll` cleared the route table and set one boolean, after which that boolean was the only surviving evidence about any session. Two call sites then spent it: `releaseAcquisition` and the stop path each turned a route-lookup MISS into reported success. Eviction reads a `true` from the stop path as proof the provider child is gone and releases the durable lease on it, so a session the router never routed could have its lease handed back on the strength of "I have no record, but everything is closed." Loss of contact is not evidence of process death. The fix keeps the evidence instead of the inference: adapter shutdown only resolves once every child is proven stopped, so `closeAll` now marks each routed session `stopped` rather than forgetting it. A routed session still answers `true` from its own retained proof; a session with no route answers `false`, which leaves it indexed for a real retry. `releaseAcquisition` drops its short-circuit and asks the adapters, which answer from their own session maps. The acquire-side latch is unchanged: once closed, the router stays closed and refuses new work. Behaviour that changed: a post-`closeAll` stop for a session the router never routed, or one the host already acknowledged as released, now reports unproven instead of proven. That matches what the same call already answered before `closeAll`, and no real flow reaches it — quit evicts every owned session before `closeAll` runs, and eviction only asks the adapter for sessions whose provider child this host acquired through the router. * test(native-chat): ratchet the retired provider-exit copy out of production The retirement filter hides a status row on two facts: a restart-eviction item id and copy that opens with the retired prefix. The identity half is still minted today, so the filter cannot tell a new producer's row from the legacy row it exists to hide — any future writer of that copy would be dropped from every transcript with no trace. Until now that safety property lived only in a doc comment. Scan the shipped tree for a string literal that OPENS with the retired prefix, which is exactly what the filter's `startsWith` reads. Comments are stripped first, so prose about the retirement is not a producer, and the filter's own constant is exempt. Tests are excluded: writing the copy is how the filter is exercised. * revert(native-chat): drop the read-time retired provider-exit filter Fix forward instead. The lifecycle change in this branch stops any new `Provider exited: ` row from being written; rows a previous build already persisted stay in those transcripts and age out with them. A permanent read-time filter for a cosmetic, shrinking set was not worth its maintenance cost, and its paging seam was the only place a backward window could land entirely on hidden rows. Removes the filter module and its test, restores agent-session-history-page.ts to its pre-branch form, and drops the tests that only existed to prove the filter did not over-match or wedge the backfill loop. The copy ratchet stays and now carries the whole guarantee: with no filter in front of it, any production writer that resurrects the retired prefix reaches the user's transcript directly. --- .../codex-structured-journal-settlement.ts | 15 +- ...red-journal-translation-settlement.test.ts | 10 +- ...dex-structured-journal-translation.test.ts | 10 +- ...tructured-session-background-tasks.test.ts | 1 - ...retired-provider-exit-copy-ratchet.test.ts | 79 +++++ ...tured-agent-session-adapter-router.test.ts | 197 ++++++++++- ...structured-agent-session-adapter-router.ts | 82 ++++- .../structured-agent-session-adapter.ts | 2 + ...session-dead-generation-settlement.test.ts | 315 ++++++++++++++++++ ...gent-session-dead-generation-settlement.ts | 204 ++++++++++++ .../structured-agent-session-eviction.test.ts | 5 + .../structured-agent-session-eviction.ts | 13 + ...tructured-agent-session-handoff-forward.ts | 1 + .../structured-agent-session-handoff-types.ts | 2 + .../structured-agent-session-handoff.test.ts | 5 + .../structured-agent-session-host-handoff.ts | 1 + .../structured-agent-session-host-lifetime.ts | 91 ++++- .../structured-agent-session-host-teardown.ts | 32 +- .../structured-agent-session-host-types.ts | 5 + .../structured-agent-session-host.ts | 11 +- ...ured-agent-session-journal-handles.test.ts | 12 +- .../structured-agent-session-lease-release.ts | 18 +- ...red-agent-session-provider-restore.test.ts | 9 +- ...tured-agent-session-recovery-exits.test.ts | 15 +- ...ctured-agent-session-refusal-retry.test.ts | 9 +- ...red-agent-session-settlement-retry.test.ts | 190 +++++++++++ ...ructured-agent-session-settlement-retry.ts | 56 ++-- ...red-agent-session-surface-lifetime.test.ts | 299 ++++++++++++++++- ...ent-session-teardown-handoff-drain.test.ts | 21 ++ ...ured-agent-session-unexpected-exit.test.ts | 247 ++++++++++---- ...tructured-agent-session-unexpected-exit.ts | 189 ++++------- ...gent-session-surface-release-transition.ts | 4 +- ...uctured-agent-session-runtime-exit.test.ts | 117 +++++++ .../structured-agent-session-runtime.ts | 38 ++- 34 files changed, 1999 insertions(+), 306 deletions(-) create mode 100644 src/main/native-chat/agent-session-wire/agent-session-retired-provider-exit-copy-ratchet.test.ts create mode 100644 src/main/native-chat/agent-session-wire/structured-agent-session-dead-generation-settlement.test.ts create mode 100644 src/main/native-chat/agent-session-wire/structured-agent-session-dead-generation-settlement.ts create mode 100644 src/main/native-chat/agent-session-wire/structured-agent-session-settlement-retry.test.ts diff --git a/src/main/codex/codex-structured-journal-settlement.ts b/src/main/codex/codex-structured-journal-settlement.ts index 5785b273e92..5aa158fafc7 100644 --- a/src/main/codex/codex-structured-journal-settlement.ts +++ b/src/main/codex/codex-structured-journal-settlement.ts @@ -9,10 +9,7 @@ import type { StructuredAgentSessionEventSink, StructuredAgentSessionSinkAdmission } from '../native-chat/agent-session-wire/structured-agent-session-event-sink' -import { - boundJournalStatusText, - cancelledJournalPromptBody -} from '../native-chat/agent-session-journal/journal-prompt-body-bounds' +import { cancelledJournalPromptBody } from '../native-chat/agent-session-journal/journal-prompt-body-bounds' import { codexJournalItem, codexStreamingJournalItem, @@ -75,16 +72,6 @@ export function settleCodexJournalSession(input: { }) } } - if (!('cause' in input.event) || input.event.cause === 'unexpected-exit') { - mutations.push({ - kind: 'item', - identity: { provider: 'orca', clientMessageId: exitSettlementId(input.event) }, - body: { - kind: 'status', - text: boundJournalStatusText(`Provider exited: ${input.event.reason}`) - } - }) - } for (const [threadId, turnIds] of input.currentTurnIds) { if (input.primaryThreadId !== threadId) { continue diff --git a/src/main/codex/codex-structured-journal-translation-settlement.test.ts b/src/main/codex/codex-structured-journal-translation-settlement.test.ts index b5e60699ce1..ab0e602e955 100644 --- a/src/main/codex/codex-structured-journal-translation-settlement.test.ts +++ b/src/main/codex/codex-structured-journal-translation-settlement.test.ts @@ -270,7 +270,6 @@ describe('codex journal translation', () => { kind: 'approval', resolution: expect.objectContaining({ state: 'cancelled' }) }), - { kind: 'status', text: 'Provider exited: lost child' }, expect.objectContaining({ kind: 'turn', turnId: TURN_ID, state: 'interrupted' }) ]) expect(publishes).toHaveLength(2) @@ -342,9 +341,6 @@ describe('codex journal translation', () => { resolution: expect.objectContaining({ state: 'cancelled' }) }) }), - expect.objectContaining({ - body: { kind: 'status', text: 'Provider exited: lost child' } - }), expect.objectContaining({ kind: 'item', body: expect.objectContaining({ kind: 'turn', turnId: TURN_ID, state: 'interrupted' }) @@ -416,11 +412,7 @@ describe('codex journal translation', () => { `provider-exit:${SESSION_ID}:7:generation-1:${index + 1}/${batches.length}` ) ) - expect(flattened).toHaveLength(122) - expect(flattened.at(-2)).toMatchObject({ - kind: 'item', - body: { kind: 'status', text: 'Provider exited: lost child' } - }) + expect(flattened).toHaveLength(121) expect(flattened.at(-1)).toMatchObject({ kind: 'item', body: { kind: 'turn', state: 'interrupted' } diff --git a/src/main/codex/codex-structured-journal-translation.test.ts b/src/main/codex/codex-structured-journal-translation.test.ts index 7e2b2f45bea..443d61a8e27 100644 --- a/src/main/codex/codex-structured-journal-translation.test.ts +++ b/src/main/codex/codex-structured-journal-translation.test.ts @@ -268,7 +268,6 @@ describe('codex journal translation', () => { expect(tap.rows.map((row) => row.body)).toEqual([ expect.objectContaining({ kind: 'turn', turnId: 'turn-stale', state: 'running' }), expect.objectContaining({ kind: 'turn', turnId: 'turn-later', state: 'running' }), - expect.objectContaining({ text: 'Provider exited: app-server exited' }), expect.objectContaining({ kind: 'turn', turnId: 'turn-stale', state: 'interrupted' }), expect.objectContaining({ kind: 'turn', turnId: 'turn-later', state: 'interrupted' }) ]) @@ -440,14 +439,13 @@ describe('codex journal translation', () => { expect(tap.rows.map((row) => row.body)).toEqual( expect.arrayContaining([ - expect.objectContaining({ blocks: [{ type: 'text', text: 'half' }] }), - { kind: 'status', text: 'Provider exited: app-server exited' } + expect.objectContaining({ blocks: [{ type: 'text', text: 'half' }] }) ]) ) expect(window.idle()).toBe(true) }) - it('settles tools, prompts, exit status, and turn lifecycle in one ordered batch', () => { + it('settles tools, prompts, and turn lifecycle in one ordered batch', () => { const tap = recorder() const batches: { settlementId: string; mutations: unknown[] }[] = [] tap.sink.appendLifecycleBatch = (settlementId, mutations) => { @@ -500,10 +498,6 @@ describe('codex journal translation', () => { resolution: expect.objectContaining({ state: 'cancelled' }) }) }), - expect.objectContaining({ - kind: 'item', - body: { kind: 'status', text: 'Provider exited: lost child' } - }), expect.objectContaining({ kind: 'item', body: expect.objectContaining({ kind: 'turn', turnId: TURN_ID, state: 'interrupted' }) diff --git a/src/main/codex/codex-structured-session-background-tasks.test.ts b/src/main/codex/codex-structured-session-background-tasks.test.ts index 54282e3d107..97b6f4e47a5 100644 --- a/src/main/codex/codex-structured-session-background-tasks.test.ts +++ b/src/main/codex/codex-structured-session-background-tasks.test.ts @@ -198,7 +198,6 @@ describe('codex background tasks reach the strip', () => { await vi.waitFor(() => expect(adapter.backgroundTaskState('session-1')).toBeUndefined()) // The open turn's lifecycle row is revised to interrupted, never tombstoned. expect(appendItem.mock.calls.map((call) => call[1])).toEqual([ - { kind: 'status', text: 'Provider exited: notification admission failed (failed)' }, expect.objectContaining({ kind: 'turn', state: 'interrupted' }) ]) expect(observed).toEqual([ diff --git a/src/main/native-chat/agent-session-wire/agent-session-retired-provider-exit-copy-ratchet.test.ts b/src/main/native-chat/agent-session-wire/agent-session-retired-provider-exit-copy-ratchet.test.ts new file mode 100644 index 00000000000..1145c30aa2d --- /dev/null +++ b/src/main/native-chat/agent-session-wire/agent-session-retired-provider-exit-copy-ratchet.test.ts @@ -0,0 +1,79 @@ +import { join, resolve } from 'node:path' +import { describe, expect, it } from 'vitest' +import { scanSourceTree, stripComments } from '../../../shared/source-scan/source-tree-scan' + +/** + * The retired copy has to stay retired. + * + * A bare `Provider exited: ` status row is the reported symptom: a chat the user could + * not act on, settled by a restart rather than by observed death. Both production writers of that + * copy are gone, replaced by outcome copy the death evidence decides. Nothing filters this string + * at read time, so a producer that resurrects it reaches the transcript directly — which is why + * the guard sits on the writing side. + * + * Deliberately narrow: only a literal that OPENS with the prefix. Prose about the retirement, and + * copy that merely mentions a provider exiting, are not producers. + */ + +const RETIRED_COPY_PREFIX = 'Provider exited' + +/** Line numbers of string literals whose first character begins the retired copy. */ +export function findRetiredProviderExitCopyLines(source: string): number[] { + const code = stripComments(source) + const pattern = new RegExp(`['"\`]${RETIRED_COPY_PREFIX}`, 'g') + return [...code.matchAll(pattern)].map((match) => code.slice(0, match.index).split('\n').length) +} + +describe('retired provider-exit copy ratchet', () => { + it('flags a literal that opens with the retired copy', () => { + const flagged = [ + `const text = 'Provider exited: recorded pid absent on host'`, + `appendStatus("Provider exited")`, + 'appendStatus(`Provider exited: ${reason}`)' + ] + for (const source of flagged) { + expect(findRetiredProviderExitCopyLines(source), source).toHaveLength(1) + } + }) + + it('reports the line the literal sits on', () => { + expect(findRetiredProviderExitCopyLines(`const a = 1\n\nconst b = 'Provider exited'`)).toEqual([ + 3 + ]) + }) + + it('leaves prose and unrelated copy alone', () => { + const allowed = [ + `// the old bare 'Provider exited: ' row`, + `/* wrote \`Provider exited\` once */`, + `const text = 'provider exited'`, + `const text = 'The provider exited unexpectedly'`, + `const text = 'Provider exit was not proven'`, + `if (text.startsWith(prefix)) {}` + ] + for (const source of allowed) { + expect(findRetiredProviderExitCopyLines(source), source).toEqual([]) + } + }) + + const repoRoot = resolve(__dirname, '..', '..', '..', '..') + // Tests assert on the retired copy on purpose; the walk skips them. + const files = scanSourceTree(join(repoRoot, 'src')) + + it('scans a plausible number of files', () => { + // A broken root or extension list would make the guard silently vacuous. + expect(files.length).toBeGreaterThan(500) + }) + + it('has no production writer of the retired copy', () => { + const offenders = files.flatMap(({ relativePath, source }) => + findRetiredProviderExitCopyLines(source).map((line) => `src/${relativePath}:${line}`) + ) + expect( + offenders, + `A status row whose copy opens with "${RETIRED_COPY_PREFIX}" lands in the user's transcript ` + + 'unfiltered, which is the symptom this chat surface was reported for. Write the outcome ' + + 'copy the death evidence decides instead of resurrecting the retired prefix.' + ).toEqual([]) + }) +}) diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-adapter-router.test.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-adapter-router.test.ts index c6566083eac..e08c289c87a 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-adapter-router.test.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-adapter-router.test.ts @@ -1,18 +1,45 @@ import { describe, expect, it, vi } from 'vitest' -import type { StructuredAgentSessionAdapter } from './structured-agent-session-adapter' +import type { AgentSessionJournalIdentity } from '../../../shared/agent-session-journal-types' +import type { + AgentSessionAcquisition, + StructuredAgentSessionAdapter +} from './structured-agent-session-adapter' import { StructuredAgentSessionAdapterRouter } from './structured-agent-session-adapter-router' +function claudeIdentity(sessionId: string): AgentSessionJournalIdentity { + return { + sessionId, + workspaceId: 'workspace-1', + hostId: 'local', + agent: 'claude', + providerHandle: { kind: 'claude', sessionId: 'provider-session-1', leafUuid: null } + } +} + +function acquisition(fence: number, spawnToken: string): AgentSessionAcquisition { + return { + process: { hostId: 'local', pid: 1, processStartTimeMs: 1, spawnToken }, + link: { + linkId: `link-${fence}`, + handle: { provider: 'claude', sessionId: 'provider-session-1', leafUuid: null }, + origin: 'created', + mintedAtFence: fence, + observedAt: 1 + } + } +} + function adapterOf( releaseAcquisition: StructuredAgentSessionAdapter['releaseAcquisition'] ): StructuredAgentSessionAdapter { return { - acquire: vi.fn(async () => ({ process: { pid: 1 } }) as never), + acquire: vi.fn(async ({ fence, spawnToken }) => acquisition(fence, spawnToken)), releaseAcquisition, dispatch: vi.fn(), cancelTurn: vi.fn(), answerPrompt: vi.fn(), setOption: vi.fn() - } as unknown as StructuredAgentSessionAdapter + } } describe('StructuredAgentSessionAdapterRouter.releaseAcquisition', () => { @@ -21,7 +48,7 @@ describe('StructuredAgentSessionAdapterRouter.releaseAcquisition', () => { const claude = adapterOf(vi.fn().mockRejectedValueOnce(failure).mockResolvedValue(false)) const codex = adapterOf(vi.fn(async () => false)) const router = new StructuredAgentSessionAdapterRouter({ claude, codex }, async () => {}) - const identity = { sessionId: 'session-1', agent: 'claude' } as never + const identity = claudeIdentity('session-1') await router.acquire({ identity, fence: 1, spawnToken: 'spawn-1' }) await expect(router.releaseAcquisition({ sessionId: 'session-1' })).rejects.toBe(failure) @@ -41,7 +68,7 @@ describe('StructuredAgentSessionAdapterRouter.closeSession', () => { claude.dispatch = dispatch const codex = adapterOf(vi.fn(async () => false)) const router = new StructuredAgentSessionAdapterRouter({ claude, codex }, async () => {}) - const identity = { sessionId: 'session-1', agent: 'claude' } as never + const identity = claudeIdentity('session-1') await router.acquire({ identity, fence: 1, spawnToken: 'spawn-1' }) await expect(router.closeSession('session-1')).resolves.toBe(false) @@ -49,7 +76,7 @@ describe('StructuredAgentSessionAdapterRouter.closeSession', () => { router.dispatch({ sessionId: 'session-1', clientMessageId: 'client-1', - body: {} as never, + body: { kind: 'message', role: 'user', blocks: [] }, fence: 1 }) ).resolves.toMatchObject({ state: 'unknown' }) @@ -57,6 +84,32 @@ describe('StructuredAgentSessionAdapterRouter.closeSession', () => { expect(closeSession).toHaveBeenCalledTimes(2) expect(dispatch).toHaveBeenCalledTimes(1) }) + + it('retains a stop proof across journal-close failure until the host acknowledges release', async () => { + const closeSession = vi.fn(async () => true) + const closeJournal = vi.fn(async () => { + throw new Error('journal close failed') + }) + const claude = adapterOf(vi.fn(async () => true)) + claude.closeSession = closeSession + const router = new StructuredAgentSessionAdapterRouter( + { claude, codex: adapterOf(vi.fn(async () => false)) }, + async () => {} + ) + const identity = claudeIdentity('session-1') + await router.acquire({ identity, fence: 1, spawnToken: 'spawn-1' }) + + await expect(router.closeSession('session-1')).resolves.toBe(true) + await expect(closeJournal()).rejects.toThrow('journal close failed') + await expect(router.closeSession('session-1')).resolves.toBe(true) + expect(closeSession).toHaveBeenCalledOnce() + router.acknowledgeSessionRelease('session-1') + await expect(router.closeSession('session-1')).resolves.toBe(false) + + await router.acquire({ identity, fence: 2, spawnToken: 'spawn-2' }) + await expect(router.closeSession('session-1')).resolves.toBe(true) + expect(closeSession).toHaveBeenCalledTimes(2) + }) }) describe('StructuredAgentSessionAdapterRouter optional lifecycle methods', () => { @@ -73,7 +126,7 @@ describe('StructuredAgentSessionAdapterRouter optional lifecycle methods', () => claude.dispatch = dispatch const codex = adapterOf(vi.fn(async () => false)) const router = new StructuredAgentSessionAdapterRouter({ claude, codex }, async () => {}) - const identity = { sessionId: 'session-1', agent: 'claude' } as never + const identity = claudeIdentity('session-1') await router.acquire({ identity, fence: 1, spawnToken: 'spawn-1' }) const stopSession = router[method] @@ -82,7 +135,7 @@ describe('StructuredAgentSessionAdapterRouter optional lifecycle methods', () => router.dispatch({ sessionId: 'session-1', clientMessageId: 'client-1', - body: {} as never, + body: { kind: 'message', role: 'user', blocks: [] }, fence: 1 }) ).resolves.toMatchObject({ state: 'unknown' }) @@ -101,7 +154,7 @@ describe('StructuredAgentSessionAdapterRouter optional lifecycle methods', () => const codex = adapterOf(vi.fn(async () => false)) const router = new StructuredAgentSessionAdapterRouter({ claude, codex }, async () => {}) await router.acquire({ - identity: { sessionId: 'session-1', agent: 'claude' } as never, + identity: claudeIdentity('session-1'), fence: 1, spawnToken: 'spawn-1' }) @@ -112,3 +165,129 @@ describe('StructuredAgentSessionAdapterRouter optional lifecycle methods', () => } ) }) + +describe('StructuredAgentSessionAdapterRouter.closeAll', () => { + it('refuses to acquire once the global close proof is published', async () => { + const acquire = vi.fn(async ({ fence, spawnToken }) => acquisition(fence, spawnToken)) + const claude = adapterOf(vi.fn(async () => true)) + claude.acquire = acquire + const router = new StructuredAgentSessionAdapterRouter( + { claude, codex: adapterOf(vi.fn(async () => false)) }, + async () => undefined + ) + await router.closeAll() + + await expect( + router.acquire({ + identity: claudeIdentity('session-1'), + fence: 1, + spawnToken: 'spawn-1' + }) + ).rejects.toThrow('router is closed') + expect(acquire).not.toHaveBeenCalled() + }) + + it('keeps a per-session stop proof and reports no stop for a session it never routed', async () => { + const claude = adapterOf(vi.fn(async () => true)) + const closeAdapters = vi.fn(async () => undefined) + const router = new StructuredAgentSessionAdapterRouter( + { claude, codex: adapterOf(vi.fn(async () => false)) }, + closeAdapters + ) + await router.acquire({ + identity: claudeIdentity('session-1'), + fence: 1, + spawnToken: 'spawn-1' + }) + + await router.closeAll() + + // The routed session carries the shutdown's own exit proof; the other two are sessions this + // router has no record of, and an absent record is not a stop it can report. + await expect(router.closeSession('session-1')).resolves.toBe(true) + await expect(router.closeSession('never-routed')).resolves.toBe(false) + router.acknowledgeSessionRelease('session-1') + await expect(router.closeSession('session-1')).resolves.toBe(false) + await router.closeAll() + expect(closeAdapters).toHaveBeenCalledOnce() + }) + + it('asks the adapters to release an unrouted session rather than answering from the close proof', async () => { + const claudeRelease = vi.fn(async () => true) + const codexRelease = vi.fn(async () => false) + const router = new StructuredAgentSessionAdapterRouter( + { claude: adapterOf(claudeRelease), codex: adapterOf(codexRelease) }, + async () => undefined + ) + await router.closeAll() + + await expect(router.releaseAcquisition({ sessionId: 'never-routed' })).resolves.toBe(true) + expect(claudeRelease).toHaveBeenCalledWith({ sessionId: 'never-routed' }) + expect(codexRelease).toHaveBeenCalledWith({ sessionId: 'never-routed' }) + }) + + it('retains live routes and publishes no global proof when closeAll fails', async () => { + const failure = new Error('adapter shutdown failed') + const claude = adapterOf(vi.fn(async () => true)) + const dispatch = vi.fn().mockResolvedValue({ state: 'unknown', reason: 'test' }) + const closeSession = vi.fn(async () => true) + claude.dispatch = dispatch + claude.closeSession = closeSession + const router = new StructuredAgentSessionAdapterRouter( + { claude, codex: adapterOf(vi.fn(async () => false)) }, + vi.fn(async () => { + throw failure + }) + ) + await router.acquire({ + identity: claudeIdentity('session-1'), + fence: 1, + spawnToken: 'spawn-1' + }) + + await expect(router.closeAll()).rejects.toBe(failure) + + await expect(router.closeSession('never-routed')).resolves.toBe(false) + await expect( + router.dispatch({ + sessionId: 'session-1', + clientMessageId: 'client-1', + body: { kind: 'message', role: 'user', blocks: [] }, + fence: 1 + }) + ).resolves.toMatchObject({ state: 'unknown' }) + await expect(router.closeSession('session-1')).resolves.toBe(true) + expect(closeSession).toHaveBeenCalledOnce() + }) + + it('keeps the global proof when an acquisition lands mid-close', async () => { + let resolveAcquire!: (value: AgentSessionAcquisition) => void + const closeSession = vi.fn(async () => true) + const claude = adapterOf(vi.fn(async () => true)) + claude.closeSession = closeSession + claude.acquire = vi.fn( + () => + new Promise((resolve) => { + resolveAcquire = resolve + }) + ) + const router = new StructuredAgentSessionAdapterRouter( + { claude, codex: adapterOf(vi.fn(async () => false)) }, + async () => undefined + ) + const acquiring = router.acquire({ + identity: claudeIdentity('session-1'), + fence: 2, + spawnToken: 'spawn-2' + }) + + await router.closeAll() + resolveAcquire(acquisition(2, 'spawn-2')) + + // The route is NOT published behind a closed adapter, so nothing routes back out to it — and + // with no route the router has nothing to stop and no stop to report. + await expect(acquiring).rejects.toThrow('router is closed') + await expect(router.closeSession('session-1')).resolves.toBe(false) + expect(closeSession).not.toHaveBeenCalled() + }) +}) diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-adapter-router.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-adapter-router.ts index e0f89a72afd..1cc571d39aa 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-adapter-router.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-adapter-router.ts @@ -6,9 +6,12 @@ import type { import type { StructuredAgentSessionAdapter } from './structured-agent-session-adapter' type RoutedAgent = 'claude' | 'codex' +type SessionRoute = { adapter: StructuredAgentSessionAdapter; state: 'live' | 'stopped' } export class StructuredAgentSessionAdapterRouter implements StructuredAgentSessionAdapter { - private readonly owners = new Map() + private readonly routes = new Map() + private allAdaptersClosed = false + private closePromise: Promise | null = null constructor( private readonly adapters: Record, @@ -23,20 +26,29 @@ export class StructuredAgentSessionAdapterRouter implements StructuredAgentSessi supportsLocation = (location: AgentSessionExecutionLocation): boolean => Object.values(this.adapters).some((adapter) => adapter.supportsLocation?.(location) ?? false) + /** Both adapters already gate their own shutdown, so the router only has to stop UNDOING that: + * a late acquire must not clear `allAdaptersClosed` and fan a session back out to closed + * adapters. Once closed, the router stays closed. */ async acquire(input: Parameters[0]) { + if (this.allAdaptersClosed) { + throw new Error('structured session adapter router is closed') + } const adapter = this.requireAgent(input.identity) const acquired = await adapter.acquire(input) - this.owners.set(input.identity.sessionId, adapter) + if (this.allAdaptersClosed) { + throw new Error('structured session adapter router is closed') + } + this.routes.set(input.identity.sessionId, { adapter, state: 'live' }) return acquired } async releaseAcquisition(input: { sessionId: string }): Promise { - const adapter = this.owners.get(input.sessionId) - if (adapter) { + const route = this.routes.get(input.sessionId) + if (route) { try { - return (await adapter.releaseAcquisition?.(input)) === true + return (await route.adapter.releaseAcquisition?.(input)) === true } finally { - this.owners.delete(input.sessionId) + this.routes.delete(input.sessionId) } } let released = false @@ -50,7 +62,7 @@ export class StructuredAgentSessionAdapterRouter implements StructuredAgentSessi this.owner(input.sessionId).dispatch(input) rewindSupport: NonNullable = (sessionId) => - this.owners.get(sessionId)?.rewindSupport?.(sessionId) ?? { + this.liveOwnerOrNull(sessionId)?.rewindSupport?.(sessionId) ?? { supported: false, reason: 'unsupported' } @@ -83,10 +95,10 @@ export class StructuredAgentSessionAdapterRouter implements StructuredAgentSessi backgroundTaskState: NonNullable = ( sessionId - ) => this.owners.get(sessionId)?.backgroundTaskState?.(sessionId) + ) => this.liveOwnerOrNull(sessionId)?.backgroundTaskState?.(sessionId) readCommands: NonNullable = (sessionId) => - this.owners.get(sessionId)?.readCommands?.(sessionId) + this.liveOwnerOrNull(sessionId)?.readCommands?.(sessionId) answerPrompt: StructuredAgentSessionAdapter['answerPrompt'] = (input) => this.owner(input.sessionId).answerPrompt(input) @@ -128,32 +140,68 @@ export class StructuredAgentSessionAdapterRouter implements StructuredAgentSessi adapter: StructuredAgentSessionAdapter ) => NonNullable | undefined ): Promise { - const adapter = this.owners.get(sessionId) - if (!adapter) { + const route = this.routes.get(sessionId) + if (!route) { + // No route is loss of contact, never proof of a stop. Answering `true` here would hand a + // caller a receipt for a session this router never acted on — and the caller spends that + // receipt by releasing the durable lease. return false } - const stop = selectStop(adapter) - const stopped = await stop?.call(adapter, sessionId) + if (route.state === 'stopped') { + return true + } + const stop = selectStop(route.adapter) + const stopped = await stop?.call(route.adapter, sessionId) if (stopped === true) { - this.owners.delete(sessionId) + route.state = 'stopped' return true } return false } async closeAll(): Promise { - this.owners.clear() - await this.closeAdapters() + if (this.allAdaptersClosed) { + return + } + if (this.closePromise) { + return this.closePromise + } + this.closePromise = (async () => { + try { + await this.closeAdapters() + // Adapter shutdown only resolves once every child is PROVEN stopped, so each routed + // session inherits that proof and keeps it per session. Clearing the map instead would + // leave one boolean as the only surviving evidence, and an empty map cannot tell a + // session this router stopped from one it never saw. + for (const route of this.routes.values()) { + route.state = 'stopped' + } + this.allAdaptersClosed = true + } finally { + this.closePromise = null + } + })() + return this.closePromise + } + + /** Drops a per-session stop receipt after the host releases its durable owner. */ + acknowledgeSessionRelease = (sessionId: string): void => { + this.routes.delete(sessionId) } private owner(sessionId: string): StructuredAgentSessionAdapter { - const adapter = this.owners.get(sessionId) + const adapter = this.liveOwnerOrNull(sessionId) if (!adapter) { throw new Error(`no live structured adapter owns ${sessionId}`) } return adapter } + private liveOwnerOrNull(sessionId: string): StructuredAgentSessionAdapter | null { + const route = this.routes.get(sessionId) + return route?.state === 'live' ? route.adapter : null + } + private requireAgent(identity: AgentSessionJournalIdentity): StructuredAgentSessionAdapter { const adapter = this.adapterForAgent(identity.agent) if (!adapter) { diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-adapter.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-adapter.ts index 54d3c15ae0e..6b12ba61c6c 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-adapter.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-adapter.ts @@ -238,6 +238,8 @@ export type StructuredAgentSessionAdapter = { forceCloseSession?(sessionId: string): Promise /** Stops a provider child for teardown without requiring a future-resume cursor. */ disposeSession?(sessionId: string): Promise + /** Host acknowledgement that the proven-dead child, lease and journal owner are released. */ + acknowledgeSessionRelease?(sessionId: string): void } export async function rethrowAfterAgentSessionAcquisitionCleanup( diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-dead-generation-settlement.test.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-dead-generation-settlement.test.ts new file mode 100644 index 00000000000..af51a9967d6 --- /dev/null +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-dead-generation-settlement.test.ts @@ -0,0 +1,315 @@ +import { mkdtemp, rm } from 'node:fs/promises' +import { tmpdir } from 'node:os' +import { join } from 'node:path' +import { afterEach, beforeEach, describe, expect, it } from 'vitest' +import { openAgentSessionJournal } from '../agent-session-journal/journal-store-factory' +import type { AgentJournalRenderItem } from '../../../shared/agent-session-journal-types' +import type { AgentSessionJournal } from '../agent-session-journal/journal-store' +import { + captureUnfinishedStructuredAgentSessionWork, + MAX_UNEXPECTED_EXIT_REASON_CHARS, + settleStructuredAgentSessionDeadGeneration, + UNEXPECTED_PROVIDER_EXIT_OUTCOME, + unfinishedStructuredAgentSessionWorkWasInterrupted +} from './structured-agent-session-dead-generation-settlement' + +const SESSION = 'session-dead-generation' +const THREAD = 'thread-1' +let root: string +let journal: AgentSessionJournal + +beforeEach(async () => { + root = await mkdtemp(join(tmpdir(), 'orca-dead-generation-')) + journal = await openAgentSessionJournal({ + identity: { + sessionId: SESSION, + workspaceId: 'workspace-1', + hostId: 'local', + agent: 'codex', + providerHandle: { kind: 'codex', threadId: THREAD } + }, + journalDir: root, + now: () => 1_000 + }) +}) + +afterEach(async () => { + await journal.close() + await rm(root, { recursive: true, force: true }) +}) + +async function seedUnfinishedWork(): Promise { + await journal.appendSubmission({ + clientMessageId: 'client-1', + payloadFingerprint: 'fingerprint', + body: { kind: 'message', role: 'user', blocks: [{ type: 'text', text: 'keep going' }] }, + fence: 7 + }) + await journal.appendItem( + { provider: 'codex', threadId: THREAD, turnId: 'turn-1', ordinal: 1 }, + { kind: 'tool-call', name: 'shell', input: { command: 'pnpm test' }, state: 'running' }, + { fence: 7 } + ) + await journal.appendItem( + { provider: 'codex', threadId: THREAD, turnId: 'turn-1', ordinal: 2 }, + { + kind: 'approval', + title: 'Run command?', + detail: null, + options: [{ id: 'yes', label: 'Allow' }], + resolution: { state: 'pending', selectedOptionId: null, resolvedBy: null, resolvedAt: null } + }, + { fence: 7 } + ) + await journal.appendItem( + { provider: 'codex', threadId: THREAD, turnId: 'turn-1', ordinal: 3 }, + { + kind: 'question', + question: 'Which target?', + options: [{ id: 'web', label: 'Web' }], + resolution: { state: 'pending', selectedOptionId: null, resolvedBy: null, resolvedAt: null } + }, + { fence: 7 } + ) + await journal.appendItem( + { provider: 'codex', threadId: THREAD, turnId: 'turn-1', ordinal: 4 }, + { kind: 'turn', turnId: 'turn-1', state: 'running', startedAt: 900 }, + { fence: 7 } + ) +} + +describe('dead structured-session generation settlement', () => { + it('settles probe-proven work as unverifiable without a technical chat row or fake end time', async () => { + await seedUnfinishedWork() + + await expect( + settleStructuredAgentSessionDeadGeneration({ + journal, + sessionId: SESSION, + fence: 8, + settlementId: `restart-eviction:${SESSION}:8`, + pendingSubmissionReason: 'provider_exited_before_acknowledgement', + verdict: { state: 'unverifiable' }, + showUnexpectedExitOutcome: false + }) + ).resolves.toBe(true) + + const snapshot = journal.snapshot() + expect(snapshot.submissions).toEqual([ + expect.objectContaining({ clientMessageId: 'client-1', dispatchState: 'unknown' }) + ]) + expect(snapshot.items.map((item) => item.body)).toEqual( + expect.arrayContaining([ + expect.objectContaining({ kind: 'tool-call', state: 'failed' }), + expect.objectContaining({ + kind: 'approval', + resolution: expect.objectContaining({ state: 'cancelled' }) + }), + expect.objectContaining({ + kind: 'question', + resolution: expect.objectContaining({ state: 'cancelled' }) + }), + { kind: 'turn', turnId: 'turn-1', state: 'unverifiable', startedAt: 900 } + ]) + ) + expect(snapshot.items.some((item) => item.body.kind === 'status')).toBe(false) + }) + + it('adds one actionable outcome for observed active-work failure and is idempotent', async () => { + await seedUnfinishedWork() + const input = { + journal, + sessionId: SESSION, + fence: 7, + settlementId: `provider-exit:${SESSION}:7:generation-1`, + pendingSubmissionReason: 'provider_exited_before_acknowledgement', + verdict: { state: 'interrupted' as const, completedAt: 1_000 }, + showUnexpectedExitOutcome: true + } + + await expect(settleStructuredAgentSessionDeadGeneration(input)).resolves.toBe(true) + const settledCursor = journal.cursor() + await expect(settleStructuredAgentSessionDeadGeneration(input)).resolves.toBe(true) + + expect(journal.cursor()).toEqual(settledCursor) + expect( + journal + .snapshot() + .items.filter( + (item) => + item.body.kind === 'status' && item.body.text === UNEXPECTED_PROVIDER_EXIT_OUTCOME + ) + ).toHaveLength(1) + }) + + it('keeps the actionable tail when the provider dumps a stderr wall into its exit reason', async () => { + await seedUnfinishedWork() + + await expect( + settleStructuredAgentSessionDeadGeneration({ + journal, + sessionId: SESSION, + fence: 7, + settlementId: `provider-exit:${SESSION}:7:generation-1`, + pendingSubmissionReason: 'provider_exited_before_acknowledgement', + verdict: { state: 'interrupted', completedAt: 1_000 }, + showUnexpectedExitOutcome: true, + unexpectedExitReason: 'stack frame '.repeat(4_000) + }) + ).resolves.toBe(true) + + const statuses = journal + .snapshot() + .items.flatMap((item) => (item.body.kind === 'status' ? [item.body.text] : [])) + expect(statuses).toHaveLength(1) + // The cause is bounded before composing, so the row never reaches the byte cap that would + // truncate the sentence telling the user the conversation is still usable. + expect(statuses[0]).toContain('stack frame') + expect(statuses[0]).toMatch(/You can continue in this conversation\.$/) + expect(statuses[0]?.length).toBeLessThan(MAX_UNEXPECTED_EXIT_REASON_CHARS * 2) + }) + + it('retries an already settled expected close without writing through a closed journal gate', async () => { + const settledItem: AgentJournalRenderItem = { + itemId: 'codex:thread-1:turn-1:0', + revision: 2, + sequence: 2, + observedAt: 1_000, + body: { + kind: 'turn', + turnId: 'turn-1', + state: 'interrupted', + completedAt: 1_000 + } + } + const settledSnapshot = journal.snapshot() + const closedJournal: Pick< + AgentSessionJournal, + 'snapshot' | 'submissions' | 'markPendingSubmissionsUnknown' | 'appendLifecycleBatch' + > = { + snapshot: () => ({ + ...settledSnapshot, + items: [settledItem] + }), + submissions: () => [], + markPendingSubmissionsUnknown: async () => { + throw new Error('journal_closed') + }, + appendLifecycleBatch: async () => { + throw new Error('journal_closed') + } + } + + await expect( + settleStructuredAgentSessionDeadGeneration({ + journal: closedJournal, + sessionId: SESSION, + fence: 7, + settlementId: `expected-close:${SESSION}:7:generation-1`, + pendingSubmissionReason: 'provider_closed_before_acknowledgement', + verdict: { state: 'interrupted', completedAt: 1_000 }, + showUnexpectedExitOutcome: false + }) + ).resolves.toBe(true) + }) + + it('settles a live unknown submission even when no unfinished item remains', async () => { + await journal.appendSubmission({ + clientMessageId: 'client-unknown', + payloadFingerprint: 'fingerprint', + body: { kind: 'message', role: 'user', blocks: [{ type: 'text', text: 'did this land?' }] }, + fence: 7 + }) + await journal.resolveDispatch({ + clientMessageId: 'client-unknown', + state: 'unknown', + reason: 'provider write outcome unknown', + fence: 7 + }) + + await expect( + settleStructuredAgentSessionDeadGeneration({ + journal, + sessionId: SESSION, + fence: 7, + settlementId: `expected-close:${SESSION}:7:generation-1`, + pendingSubmissionReason: 'provider_closed_before_acknowledgement', + verdict: { state: 'interrupted', completedAt: 1_000 }, + showUnexpectedExitOutcome: false + }) + ).resolves.toBe(true) + + expect(journal.submissions()).toEqual([ + expect.objectContaining({ + clientMessageId: 'client-unknown', + dispatchState: 'unknown', + recovered: true, + reason: 'provider write outcome unknown' + }) + ]) + }) +}) + +describe('whether a dead generation interrupted anything', () => { + async function seedIdlePendingApproval(): Promise { + await journal.appendItem( + { provider: 'codex', threadId: THREAD, turnId: 'turn-1', ordinal: 1 }, + { + kind: 'approval', + title: 'Run command?', + detail: null, + options: [{ id: 'yes', label: 'Allow' }], + resolution: { state: 'pending', selectedOptionId: null, resolvedBy: null, resolvedAt: null } + }, + { fence: 7 } + ) + await journal.appendItem( + { provider: 'codex', threadId: THREAD, turnId: 'turn-1', ordinal: 2 }, + { kind: 'turn', turnId: 'turn-1', state: 'completed', startedAt: 900, completedAt: 950 }, + { fence: 7 } + ) + } + + it('says nothing was interrupted when the provider died waiting on an approval', async () => { + await seedIdlePendingApproval() + const before = captureUnfinishedStructuredAgentSessionWork(journal) + + expect(unfinishedStructuredAgentSessionWorkWasInterrupted(before, journal, 1_000)).toBe(false) + }) + + it('still reports an interruption when a turn was running', async () => { + await seedUnfinishedWork() + const before = captureUnfinishedStructuredAgentSessionWork(journal) + + expect(unfinishedStructuredAgentSessionWorkWasInterrupted(before, journal, 1_000)).toBe(true) + }) + + it('cancels the idle prompt without claiming a response was in progress', async () => { + await seedIdlePendingApproval() + + await expect( + settleStructuredAgentSessionDeadGeneration({ + journal, + sessionId: SESSION, + fence: 7, + settlementId: `provider-exit:${SESSION}:7:generation-1`, + pendingSubmissionReason: 'provider_exited_before_acknowledgement', + verdict: { state: 'interrupted', completedAt: 1_000 }, + showUnexpectedExitOutcome: unfinishedStructuredAgentSessionWorkWasInterrupted( + captureUnfinishedStructuredAgentSessionWork(journal), + journal, + 1_000 + ) + }) + ).resolves.toBe(true) + + const snapshot = journal.snapshot() + expect(snapshot.items.some((item) => item.body.kind === 'status')).toBe(false) + expect(snapshot.items.map((item) => item.body)).toContainEqual( + expect.objectContaining({ + kind: 'approval', + resolution: expect.objectContaining({ state: 'cancelled' }) + }) + ) + }) +}) diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-dead-generation-settlement.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-dead-generation-settlement.ts new file mode 100644 index 00000000000..9a3f3a7c091 --- /dev/null +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-dead-generation-settlement.ts @@ -0,0 +1,204 @@ +import { parseAgentJournalItemKey } from '../../../shared/agent-session-journal-item-key' +import type { + AgentJournalItemBody, + AgentJournalRenderItem +} from '../../../shared/agent-session-journal-types' +import { readAgentJournalTurn } from '../../../shared/agent-session-turn-record' +import { partitionJournalLifecycleMutations } from '../agent-session-journal/journal-lifecycle-batch-partition' +import type { JournalLifecycleMutationInput } from '../agent-session-journal/journal-row-builders' +import { + boundJournalStatusText, + cancelledJournalPromptBody +} from '../agent-session-journal/journal-prompt-body-bounds' +import type { AgentSessionJournal } from '../agent-session-journal/journal-store' +import { + runningTurnLifecycleRevisions, + type StructuredAgentSessionTurnVerdict +} from './structured-agent-session-stale-turn-verdict' + +export const UNEXPECTED_PROVIDER_EXIT_OUTCOME = + 'The provider stopped while this response was in progress. You can continue in this conversation.' + +/** A provider may put a whole stderr dump in its exit reason; unbounded it would push the + * actionable tail past the row's byte cap and lose it to truncation. */ +export const MAX_UNEXPECTED_EXIT_REASON_CHARS = 512 + +/** The cause is the only thing separating an auth failure from an OOM kill, so it is carried + * into the copy rather than left in the durable record nothing renders. */ +export function unexpectedProviderExitOutcome(reason?: string): string { + const detail = reason + ?.slice(0, MAX_UNEXPECTED_EXIT_REASON_CHARS) + .trim() + .replace(/[.\s]+$/, '') + return detail + ? `The provider stopped while this response was in progress: ${detail}. You can continue in this conversation.` + : UNEXPECTED_PROVIDER_EXIT_OUTCOME +} + +type DeadGenerationSubmission = Pick< + ReturnType[number], + 'clientMessageId' | 'dispatchState' | 'recovered' +> + +export type DeadGenerationJournal = { + appendLifecycleBatch: AgentSessionJournal['appendLifecycleBatch'] + markPendingSubmissionsUnknown: AgentSessionJournal['markPendingSubmissionsUnknown'] + snapshot: () => Pick, 'items'> + pendingSubmissions?: AgentSessionJournal['pendingSubmissions'] + submissions?: () => DeadGenerationSubmission[] +} + +export type StructuredAgentSessionUnfinishedWork = { + items: AgentJournalRenderItem[] + hadUnsettledSubmissions: boolean +} + +export function captureUnfinishedStructuredAgentSessionWork( + journal: DeadGenerationJournal +): StructuredAgentSessionUnfinishedWork { + return { + items: journal.snapshot().items.filter(isUnfinishedItem), + hadUnsettledSubmissions: hasUnsettledSubmission(journal) + } +} + +function hasUnfinishedStructuredAgentSessionWork(journal: DeadGenerationJournal): boolean { + const work = captureUnfinishedStructuredAgentSessionWork(journal) + return work.hadUnsettledSubmissions || work.items.length > 0 +} + +export function unfinishedStructuredAgentSessionWorkWasInterrupted( + before: StructuredAgentSessionUnfinishedWork, + journal: DeadGenerationJournal, + observedExitAt: number +): boolean { + const currentSnapshot = journal.snapshot() + if (hasUnsettledSubmission(journal) || currentSnapshot.items.some(isInProgressItem)) { + return true + } + if ( + currentSnapshot.items.some((item) => { + const turn = readAgentJournalTurn(item.body) + return turn?.state === 'interrupted' && turn.completedAt === observedExitAt + }) + ) { + return true + } + const inProgressBefore = before.items.filter(isInProgressItem) + if (inProgressBefore.length === 0) { + return false + } + const currentItems = new Map(currentSnapshot.items.map((item) => [item.itemId, item])) + const runningTurns = inProgressBefore.filter( + (item) => readAgentJournalTurn(item.body)?.state === 'running' + ) + const outcomeItems = runningTurns.length > 0 ? runningTurns : inProgressBefore + return outcomeItems.some((item) => !isCleanlySettled(currentItems.get(item.itemId))) +} + +export async function settleStructuredAgentSessionDeadGeneration(input: { + journal: DeadGenerationJournal + sessionId: string + fence: number + settlementId: string + verdict: StructuredAgentSessionTurnVerdict + pendingSubmissionReason: string + showUnexpectedExitOutcome?: boolean + /** Why the provider stopped, when the host has it. Rendered with the outcome copy. */ + unexpectedExitReason?: string + onError?: (sessionId: string, error: unknown) => void +}): Promise { + try { + const hasUnfinishedWork = hasUnfinishedStructuredAgentSessionWork(input.journal) + const showUnexpectedExitOutcome = input.showUnexpectedExitOutcome ?? hasUnfinishedWork + if (!showUnexpectedExitOutcome && !hasUnfinishedWork) { + return true + } + await input.journal.markPendingSubmissionsUnknown(input.fence, input.pendingSubmissionReason) + const items = input.journal.snapshot().items + const mutations: JournalLifecycleMutationInput[] = [] + if (showUnexpectedExitOutcome) { + mutations.push({ + kind: 'item', + identity: { provider: 'orca', clientMessageId: input.settlementId }, + body: { + kind: 'status', + text: boundJournalStatusText(unexpectedProviderExitOutcome(input.unexpectedExitReason)) + } + }) + } + for (const item of items) { + const identity = parseAgentJournalItemKey(item.itemId) + const body = terminalDeadGenerationBody(item) + if (identity && body) { + mutations.push({ kind: 'item', identity, body }) + } + } + mutations.push(...runningTurnLifecycleRevisions(items, input.verdict)) + const batchId = `dead-generation:${input.settlementId}` + for (const chunk of partitionJournalLifecycleMutations(batchId, mutations)) { + await input.journal.appendLifecycleBatch({ + settlementId: chunk.settlementId, + fence: input.fence, + recovered: true, + mutations: chunk.mutations + }) + } + return true + } catch (error) { + input.onError?.(input.sessionId, error) + return false + } +} + +function terminalDeadGenerationBody(item: AgentJournalRenderItem): AgentJournalItemBody | null { + if (item.body.kind === 'tool-call' && item.body.state === 'running') { + return { ...item.body, state: 'failed' } + } + if (item.body.kind === 'approval' || item.body.kind === 'question') { + return item.body.resolution.state === 'pending' ? cancelledJournalPromptBody(item.body) : null + } + return null +} + +function isUnfinishedItem(item: AgentJournalRenderItem): boolean { + return ( + readAgentJournalTurn(item.body)?.state === 'running' || + terminalDeadGenerationBody(item) !== null + ) +} + +/** Work that means the provider was MID-RESPONSE. A pending approval or question is the provider + * waiting on the user, so dying while one sits there interrupted nothing — it still needs + * cancelling, but it must not claim a response was in progress. */ +function isInProgressItem(item: AgentJournalRenderItem): boolean { + return ( + readAgentJournalTurn(item.body)?.state === 'running' || + (item.body.kind === 'tool-call' && item.body.state === 'running') + ) +} + +function isCleanlySettled(item: AgentJournalRenderItem | undefined): boolean { + const turn = readAgentJournalTurn(item?.body) + if (turn) { + return turn.state === 'completed' + } + if (item?.body.kind === 'tool-call') { + return item.body.state === 'completed' + } + if (item?.body.kind === 'approval' || item?.body.kind === 'question') { + return item.body.resolution.state === 'resolved' + } + return false +} + +function hasUnsettledSubmission(journal: DeadGenerationJournal): boolean { + const submissions = journal.submissions?.() + return submissions + ? submissions.some( + (submission) => + submission.dispatchState === 'pending' || + (submission.dispatchState === 'unknown' && submission.recovered !== true) + ) + : (journal.pendingSubmissions?.().length ?? 0) > 0 +} diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-eviction.test.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-eviction.test.ts index 0d2c693c75f..90b50d3cb90 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-eviction.test.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-eviction.test.ts @@ -30,6 +30,9 @@ function context(): StructuredAgentSessionEvictionContext & { order: string[] } order.push('forget') }), discardSink: vi.fn(() => order.push('discardSink')), + settleWork: vi.fn(async () => { + order.push('settleWork') + }), releaseLease: vi.fn(async () => { order.push('releaseLease') }) @@ -50,6 +53,7 @@ describe('structured agent session eviction', () => { expect(ctx.order).toEqual([ 'closeSession', 'drained', + 'settleWork', 'unbind', 'close', 'discardSink', @@ -76,6 +80,7 @@ describe('structured agent session eviction', () => { expect(STRUCTURED_AGENT_SESSION_EVICTION_STEPS.map((step) => step.name)).toEqual([ 'stop-provider-child', 'drain-published', + 'settle-dead-generation', 'stop-publishing', 'close-sink', 'discard-sink', diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-eviction.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-eviction.ts index c2591bba567..7264ca4a338 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-eviction.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-eviction.ts @@ -31,6 +31,13 @@ export type StructuredAgentSessionEvictionContext = { forget: () => Promise /** Drops the cached sink so a later attach mints a fresh one. */ discardSink: () => void + /** Fires once the adapter has PROVEN the child gone, so host bookkeeping stops claiming one. */ + onProviderChildStopped?: () => void + /** Whether this host still owes the child's wind-down. Distinct from `hasProviderChild`, which a + * proven exit retires mid-run: the two disagree for exactly the steps a retry has to repeat. */ + owesProviderChildWindDown?: boolean + /** Settles work owned by the child after its final callbacks have drained. */ + settleWork?: () => Promise /** Hands the lease back now that this host's child is proven gone. No-ops when the record is * not this host's to release. */ releaseLease: () => Promise @@ -57,6 +64,7 @@ export const STRUCTURED_AGENT_SESSION_EVICTION_STEPS: readonly StructuredAgentSe throw new Error('provider child exit was not proven') } } + context.onProviderChildStopped?.() } }, { @@ -68,6 +76,11 @@ export const STRUCTURED_AGENT_SESSION_EVICTION_STEPS: readonly StructuredAgentSe } } }, + { + name: 'settle-dead-generation', + run: (context) => + context.owesProviderChildWindDown === false ? undefined : context.settleWork?.() + }, { name: 'stop-publishing', run: (context) => context.eventSink.unbind() }, { name: 'close-sink', run: (context) => context.eventSink.close() }, // Why: the runtime caches one sink per session id and hands the SAME instance to the next diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-handoff-forward.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-handoff-forward.ts index 53c5903197c..a73e8b21116 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-handoff-forward.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-handoff-forward.ts @@ -55,6 +55,7 @@ export async function handoffStructuredSessionToTui( operationId, now: deps.now() }) + deps.acknowledgeNativeRelease?.(sessionId) context.publishStage(record, 'to-tui') if (nativeSuspend.state === 'stopped-cleanup-failed') { await markStructuredHandoffManualRecovery(context, sessionId, operationId) diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-handoff-types.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-handoff-types.ts index 218db8c539c..5a36c691098 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-handoff-types.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-handoff-types.ts @@ -70,6 +70,8 @@ export type StructuredAgentSessionHandoffDeps = { transport?: StructuredAgentSessionHandoffTransport session: (sessionId: string) => { journal: AgentSessionJournal; fence: number } suspendNative: (sessionId: string) => Promise + /** Consumes the router's stop proof after `old-owner-stopped` is durable. */ + acknowledgeNativeRelease?: (sessionId: string) => void acquireNative: (input: { sessionId: string fence: number diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-handoff.test.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-handoff.test.ts index beca21cb63a..d92bdcd7957 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-handoff.test.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-handoff.test.ts @@ -244,6 +244,9 @@ describe('structured session handoff failure handling', () => { it('parks a stopped native cleanup failure in manual recovery without launching TUI', async () => { const operation = operationId() const cleanupError = new Error('journal drain failed') + const acknowledgeNativeRelease = vi.fn((sessionId: string) => { + expect(store.getRecord(sessionId)?.lease.handoffStage).toBe('old-owner-stopped') + }) const retainOwner = vi.fn() const releaseOwner = vi.fn() const context = createStructuredHandoffFlowContext({ @@ -270,6 +273,7 @@ describe('structured session handoff failure handling', () => { state: 'stopped-cleanup-failed' as const, error: cleanupError })), + acknowledgeNativeRelease, acquireNative: vi.fn(async () => { throw new Error('native acquisition should not run') }), @@ -304,6 +308,7 @@ describe('structured session handoff failure handling', () => { expect(launchTui).not.toHaveBeenCalled() expect(retainOwner).not.toHaveBeenCalled() expect(releaseOwner).not.toHaveBeenCalled() + expect(acknowledgeNativeRelease).toHaveBeenCalledExactlyOnceWith(SESSION) expect(store.getRecord(SESSION)?.lease).toMatchObject({ runtimeKind: 'native', claimStatus: 'released', diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-host-handoff.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-host-handoff.ts index 113940ff0f4..9a3266541be 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-host-handoff.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-host-handoff.ts @@ -99,6 +99,7 @@ export function createStructuredAgentSessionHostHandoff( return { state: 'stopped-cleanup-failed', error } } }, + acknowledgeNativeRelease: (sessionId) => deps.adapter.acknowledgeSessionRelease?.(sessionId), acquireNative: (input) => acquireNativeHandoffOwner(deps, host, input), acquireNativeStop: async (sessionId, turnId, fence) => (await deps.adapter.cancelTurn({ sessionId, turnId, fence })).cancelled, diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-host-lifetime.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-host-lifetime.ts index e2f75297a5a..0cff20c831b 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-host-lifetime.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-host-lifetime.ts @@ -21,6 +21,7 @@ import type { import { releaseStoredStructuredAgentSessionOwner } from './structured-agent-session-lease-release' import { resumeHeldStructuredAgentSession } from './structured-agent-session-hold-resume' import type { AgentSessionWireRefusal } from '../../../shared/agent-session-wire' +import { settleStructuredAgentSessionDeadGeneration } from './structured-agent-session-dead-generation-settlement' export type StructuredAgentSessionLifetimeContext = { deps: StructuredAgentSessionHostDeps @@ -49,29 +50,75 @@ function hasProviderChild( return context.sessions.get(sessionId)?.hasProviderChild === true } +/** The wind-down this host owes for the session's child. A live child always owes one, whatever a + * previous childless eviction recorded — the same session object is re-acquired in place on a + * handoff back to native, so a remembered `false` must never outrank the child in front of it. */ +function owesProviderChildWindDown(session: StructuredAgentSessionHostSession): boolean { + return session.hasProviderChild || session.owesProviderChildWindDown === true +} + /** Runs the eviction steps under a deadline. A step that fails — or runs out of time — aborts the * rest, which leaves the session indexed and the child loaded so the next close is a real retry. */ export async function evictHeldStructuredAgentSession( context: StructuredAgentSessionLifetimeContext, sessionId: string ): Promise { - if (!context.sessions.has(sessionId)) { + const session = context.sessions.get(sessionId) + if (!session) { return } + // The obligation OUTLIVES the child. `hasProviderChild` is retired the instant the adapter + // proves the exit, so a step that aborts after that point would otherwise leave the retry + // reading "no child here" and skipping the settlement and the lease release it still owes. + const owesWindDown = owesProviderChildWindDown(session) + session.owesProviderChildWindDown = owesWindDown + let settlementError: unknown const eviction: StructuredAgentSessionEvictionContext = { sessionId, - hasProviderChild: hasProviderChild(context, sessionId), + // The retry must not re-stop a child the adapter already proved gone, so this stays honest. + hasProviderChild: session.hasProviderChild, + owesProviderChildWindDown: owesWindDown, eventSink: context.runtimeState.eventSinkFor(sessionId), adapter: context.deps.adapter, - forget: () => forgetStructuredAgentSession(context, sessionId), + // Host state must not disagree with the adapter for the seven steps in between. + onProviderChildStopped: () => { + session.hasProviderChild = false + }, + forget: async () => { + await forgetStructuredAgentSession(context, sessionId) + context.deps.adapter.acknowledgeSessionRelease?.(sessionId) + }, discardSink: () => context.runtimeState.discardEventSink(sessionId), - releaseLease: () => - releaseStoredStructuredAgentSessionOwner({ + settleWork: async () => { + const settled = await settleStructuredAgentSessionDeadGeneration({ + journal: session.journal, + sessionId, + fence: session.fence, + settlementId: `expected-close:${sessionId}:${session.fence}:${session.acquisitionGeneration ?? 'unknown'}`, + pendingSubmissionReason: 'provider_closed_before_acknowledgement', + verdict: { state: 'interrupted', completedAt: context.now() }, + showUnexpectedExitOutcome: false, + onError: (id, error) => { + settlementError = error + context.deps.onEventSinkError?.({ sessionId: id, error }) + } + }) + if (!settled) { + // Without the cause the quit log names the step and nothing else. + throw new Error('dead generation work settlement failed', { cause: settlementError }) + } + }, + releaseLease: async () => { + await releaseStoredStructuredAgentSessionOwner({ store: context.deps.store, sessionId, - hasProviderChild: hasProviderChild(context, sessionId), + hasProviderChild: owesWindDown, + expectedFence: session.fence, now: context.now() }) + session.owesProviderChildWindDown = false + context.forgetStatus(sessionId) + } } await evictStructuredAgentSession( eviction, @@ -79,6 +126,38 @@ export async function evictHeldStructuredAgentSession( ) } +/** Stops every provider child owned by this host while keeping failed evictions reachable. A + * session whose child is already stopped but whose wind-down aborted is still in scope — that is + * the retry. */ +export async function evictOwnedStructuredAgentSessions( + context: StructuredAgentSessionLifetimeContext, + retainOnFailure: Set +): Promise { + const ownedSessionIds = [...context.sessions] + .filter(([, session]) => owesProviderChildWindDown(session)) + .map(([sessionId]) => sessionId) + // Retained up front and cleared only once an eviction settles: the quit phase is bounded, and a + // timeout leaves these still running. Closing their journals underneath them is the one outcome + // the retain set exists to prevent. + for (const sessionId of ownedSessionIds) { + retainOnFailure.add(sessionId) + } + const failures: unknown[] = [] + await Promise.all( + ownedSessionIds.map(async (sessionId) => { + try { + await evictHeldStructuredAgentSession(context, sessionId) + retainOnFailure.delete(sessionId) + } catch (error) { + failures.push(error) + } + }) + ) + if (failures.length > 0) { + throw new AggregateError(failures, 'structured agent-session child eviction failed') + } +} + /** The first hold on a childless session: reconcile the lease, settle recovery, then attach. */ export async function resumeStructuredAgentSessionForHold( context: StructuredAgentSessionLifetimeContext & { diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-host-teardown.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-host-teardown.ts index b948ac08abd..a4e53d2f4c7 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-host-teardown.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-host-teardown.ts @@ -18,6 +18,26 @@ export type StructuredAgentSessionTeardownPhase = { /** Quit must not wait indefinitely on an in-flight handoff; see `drain-handoffs` below. */ const HANDOFF_DRAIN_TIMEOUT_MS = 5_000 +/** Eight steps at ten seconds each would outlast the global quit deadline, and a quit that dies + * mid-eviction leaves the lease unreleased — the exact state restart has to clean up. Bounded + * well below that deadline so the phases after this one still get to run. */ +const CHILD_EVICTION_TIMEOUT_MS = 8_000 + +/** Bounds a phase without swallowing its failure, which `withTimeout` alone would. */ +async function withPhaseTimeout(run: () => Promise, timeoutMs: number): Promise { + const settled = run().then( + () => ({ failed: false }) as const, + (error: unknown) => ({ failed: true, error }) as const + ) + const outcome = await withTimeout | null>(settled, timeoutMs, null) + if (outcome === null) { + throw new Error(`agent session host teardown phase did not finish within ${timeoutMs}ms`) + } + if (outcome.failed) { + throw outcome.error + } +} + /** * The quit-path phase order, which is load-bearing rather than incidental. * @@ -34,6 +54,7 @@ export function structuredAgentSessionHostTeardownPhases(collaborators: { } handoffs: { stopTuiHistoryCatchup: () => void; drain: () => Promise } tasks: { drainAttaches: () => Promise } + evictOwnedSessions: () => Promise }): StructuredAgentSessionTeardownPhase[] { return [ { name: 'dispose-holds', run: () => collaborators.holds.dispose() }, @@ -44,6 +65,10 @@ export function structuredAgentSessionHostTeardownPhases(collaborators: { run: () => withTimeout(collaborators.handoffs.drain(), HANDOFF_DRAIN_TIMEOUT_MS, undefined) }, { name: 'drain-attaches', run: () => collaborators.tasks.drainAttaches() }, + { + name: 'evict-owned-sessions', + run: () => withPhaseTimeout(collaborators.evictOwnedSessions, CHILD_EVICTION_TIMEOUT_MS) + }, { name: 'flush-event-sinks', run: () => collaborators.runtimeState.flushAllEventSinks() } ] } @@ -51,6 +76,8 @@ export function structuredAgentSessionHostTeardownPhases(collaborators: { export async function tearDownStructuredAgentSessionHost(input: { phases: readonly StructuredAgentSessionTeardownPhase[] sessions: Map + retainSessionIds?: ReadonlySet + acknowledgeSessionRelease?: (sessionId: string) => void }): Promise { const failures: unknown[] = [] for (const phase of input.phases) { @@ -61,7 +88,9 @@ export async function tearDownStructuredAgentSessionHost(input: { } } - const entries = [...input.sessions.entries()] + const entries = [...input.sessions.entries()].filter( + ([sessionId]) => !input.retainSessionIds?.has(sessionId) + ) // `allSettled`, so one rejected close cannot skip the others. const closed = await Promise.allSettled(entries.map(([, session]) => session.journal.close())) closed.forEach((result, index) => { @@ -71,6 +100,7 @@ export async function tearDownStructuredAgentSessionHost(input: { // which is what makes a later close a real retry rather than a no-op. if (sessionId !== undefined) { input.sessions.delete(sessionId) + input.acknowledgeSessionRelease?.(sessionId) } return } diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-host-types.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-host-types.ts index 50b913ee8bd..7131631f4ff 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-host-types.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-host-types.ts @@ -31,6 +31,11 @@ export type StructuredAgentSessionHostSession = { * restored for reading has none, and neither has a session a TUI owns — so neither may be * evicted to free a child, and neither may have its lease released as an observed exit. */ hasProviderChild: boolean + /** The wind-down this host still owes for a child it started: settling that generation's work + * and handing the lease back. A separate fact from `hasProviderChild`, which goes false the + * moment the adapter proves the exit — an eviction that aborts after that point must still be + * able to finish the wind-down on the next close. */ + owesProviderChildWindDown?: boolean /** Exact adapter acquisition behind `hasProviderChild`; retained after exit to fence recovery. */ acquisitionGeneration: string | null } diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-host.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-host.ts index 176cd66b674..c60d9e5db26 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-host.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-host.ts @@ -23,6 +23,7 @@ import { StructuredAgentSessionHostRuntimeState } from './structured-agent-sessi import { attachStructuredAgentSession } from './structured-agent-session-attach-orchestration' import { createStructuredAgentSessionHolds, + evictOwnedStructuredAgentSessions, evictHeldStructuredAgentSession, type StructuredAgentSessionLifetimeContext } from './structured-agent-session-host-lifetime' @@ -244,14 +245,20 @@ export class StructuredAgentSessionHost { this.runtimeState.flushEventSink(sessionId) async flushAllStreamedEvents(): Promise { + const retainSessionIds = new Set() await tearDownStructuredAgentSessionHost({ phases: structuredAgentSessionHostTeardownPhases({ holds: this.holds, runtimeState: this.runtimeState, handoffs: this.handoffs, - tasks: this.tasks + tasks: this.tasks, + evictOwnedSessions: () => + evictOwnedStructuredAgentSessions(this.lifetimeContext(), retainSessionIds) }), - sessions: this.sessions + sessions: this.sessions, + retainSessionIds, + acknowledgeSessionRelease: (sessionId) => + this.deps.adapter.acknowledgeSessionRelease?.(sessionId) }).finally(() => this.clientDelivery.closeAll()) } diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-journal-handles.test.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-journal-handles.test.ts index b1cfd81b2a5..ea32f171570 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-journal-handles.test.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-journal-handles.test.ts @@ -197,9 +197,15 @@ describe('site 11: host teardown is failure-complete', () => { it('closes every journal and clears the map on the happy path', async () => { const sessions = await twoSessions() - await tearDownStructuredAgentSessionHost({ phases: [], sessions }) + const acknowledgeSessionRelease = vi.fn() + await tearDownStructuredAgentSessionHost({ + phases: [], + sessions, + acknowledgeSessionRelease + }) expect(sessions.size).toBe(0) + expect(acknowledgeSessionRelease.mock.calls).toEqual([[SESSION], [`${SESSION}-b`]]) await expectNothingHoldsTheDirectory(journalDir) await expectNothingHoldsTheDirectory(join(root, 'journal-b')) }) @@ -231,6 +237,7 @@ describe('site 11: host teardown is failure-complete', () => { it('keeps the entry whose close rejected, and surfaces the rejection', async () => { const sessions = await twoSessions() + const acknowledgeSessionRelease = vi.fn() const failing = sessions.get(SESSION) const closeError = new Error('close rejected') if (failing) { @@ -240,11 +247,12 @@ describe('site 11: host teardown is failure-complete', () => { } await expect( - tearDownStructuredAgentSessionHost({ phases: [], sessions }) + tearDownStructuredAgentSessionHost({ phases: [], sessions, acknowledgeSessionRelease }) ).rejects.toMatchObject({ errors: [closeError] }) // Only the failure stays indexed — `status === 'fulfilled'`, not "settled". expect([...sessions.keys()]).toEqual([SESSION]) + expect(acknowledgeSessionRelease).toHaveBeenCalledExactlyOnceWith(`${SESSION}-b`) await expectNothingHoldsTheDirectory(join(root, 'journal-b')) }) }) diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-lease-release.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-lease-release.ts index 8d6cfc39ae2..bacc56fbcaf 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-lease-release.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-lease-release.ts @@ -12,29 +12,39 @@ import { import type { AgentSessionRecordStore } from '../../runtime/agent-session-record-store' import type { AgentSessionRecord } from '../../../shared/agent-session-record' +export type StructuredAgentSessionLeaseStore = Pick< + AgentSessionRecordStore, + 'getRecord' | 'transitionHandoff' +> + export async function releaseStoredStructuredAgentSessionOwner(input: { - store: AgentSessionRecordStore + store: StructuredAgentSessionLeaseStore sessionId: string hasProviderChild: boolean + expectedFence: number now: number }): Promise { if (!input.hasProviderChild) { return } const record = input.store.getRecord(input.sessionId) - if (!record || !isSurfaceReleasableAgentSessionRecord(record)) { + if ( + !record || + record.lease.runtimeFence !== input.expectedFence || + !isSurfaceReleasableAgentSessionRecord(record) + ) { return } await releaseStoredAgentSessionOwnerAfterSurfaceClose(input.store, { sessionId: input.sessionId, - expectedFence: record.lease.runtimeFence, + expectedFence: input.expectedFence, now: input.now }) } /** Releases only the exact provider child whose exit the adapter positively observed. */ export async function releaseStoredStructuredAgentSessionOwnerAfterUnexpectedExit(input: { - store: AgentSessionRecordStore + store: StructuredAgentSessionLeaseStore sessionId: string expectedFence: number expectedAcquisitionGeneration: string diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-provider-restore.test.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-provider-restore.test.ts index cfcae081b88..c8a2e4bba14 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-provider-restore.test.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-provider-restore.test.ts @@ -58,8 +58,15 @@ function createHost( return host } +async function abandonHost(host: StructuredAgentSessionHost): Promise { + host['runtimeState'].stopLeaseRenewal() + host['holds'].dispose() + await Promise.all([...host['sessions'].values()].map((session) => session.journal.close())) + host['sessions'].clear() +} + afterEach(async () => { - await Promise.all(hosts.splice(0).map((host) => host.flushAllStreamedEvents())) + await Promise.all(hosts.splice(0).map(abandonHost)) await rm(root, { recursive: true, force: true }) root = '' }) diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-recovery-exits.test.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-recovery-exits.test.ts index 5cd888cc5cc..7cd92bf521b 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-recovery-exits.test.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-recovery-exits.test.ts @@ -82,8 +82,17 @@ function openHost(overrides: Partial = {}): void }) } +async function abandonHost(abandonedHost: StructuredAgentSessionHost): Promise { + abandonedHost['runtimeState'].stopLeaseRenewal() + abandonedHost['holds'].dispose() + await Promise.all( + [...abandonedHost['sessions'].values()].map((session) => session.journal.close()) + ) + abandonedHost['sessions'].clear() +} + async function reopenStore(): Promise { - await host.flushAllStreamedEvents() + await abandonHost(host) store = await AgentSessionRecordStore.open({ directory: join(root, 'store'), hostId: 'local' }) } @@ -110,8 +119,8 @@ beforeEach(async () => { }) afterEach(async () => { - await host.flushAllStreamedEvents() - await Promise.all([...supersededHosts].map((superseded) => superseded.flushAllStreamedEvents())) + await abandonHost(host) + await Promise.all([...supersededHosts].map(abandonHost)) supersededHosts.clear() await Promise.all([...spawnedOwners].map((child) => stopOwner(child))) await rm(root, { recursive: true, force: true }) diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-refusal-retry.test.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-refusal-retry.test.ts index f021689db08..ccad5f7225f 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-refusal-retry.test.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-refusal-retry.test.ts @@ -119,9 +119,16 @@ async function createHarness(options: { attached?: boolean; transport?: boolean return harness } +async function abandonHost(host: StructuredAgentSessionHost): Promise { + host['runtimeState'].stopLeaseRenewal() + host['holds'].dispose() + await Promise.all([...host['sessions'].values()].map((session) => session.journal.close())) + host['sessions'].clear() +} + afterEach(async () => { const completed = harnesses.splice(0) - await Promise.all(completed.map(async ({ host }) => host.flushAllStreamedEvents())) + await Promise.all(completed.map(async ({ host }) => abandonHost(host))) await Promise.all(completed.map(async ({ root }) => rm(root, { recursive: true }))) }) diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-settlement-retry.test.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-settlement-retry.test.ts new file mode 100644 index 00000000000..c0d29f6b9ef --- /dev/null +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-settlement-retry.test.ts @@ -0,0 +1,190 @@ +// The settlement latch governs EVERY unclean restart — SIGKILL, force quit, OOM, a quit that blew +// its deadline — so the evidence it reads decides whether the user sees a failure notice at all. + +import { mkdtemp, rm } from 'node:fs/promises' +import { tmpdir } from 'node:os' +import { join } from 'node:path' +import { afterEach, beforeEach, describe, expect, it } from 'vitest' +import type { + AgentSessionDeathEvidence, + AgentSessionRecord +} from '../../../shared/agent-session-record' +import { agentSessionRecordFixture } from '../../../shared/agent-session-record.test-fixture' +import { openAgentSessionJournal } from '../agent-session-journal/journal-store-factory' +import type { AgentSessionJournal } from '../agent-session-journal/journal-store' +import type { StructuredAgentSessionLeaseStore } from './structured-agent-session-lease-release' +import { retryLoadedStructuredAgentSessionSettlement } from './structured-agent-session-settlement-retry' + +const SESSION = 'session-alpha-1' +const THREAD = 'thread-1' +const FENCE = 8 + +let root: string +let journal: AgentSessionJournal +let record: AgentSessionRecord + +function store(): StructuredAgentSessionLeaseStore { + return { + getRecord: () => record, + transitionHandoff: async (_sessionId, transition) => { + record = transition(record) + return record + } + } +} + +function retry(settlementId: string, deathEvidence: AgentSessionDeathEvidence) { + record = agentSessionRecordFixture({ + ...agentSessionRecordFixture().lease, + runtimeKind: 'native', + runtimeFence: FENCE, + deathEvidence, + settlementRetryRequired: true, + settlementRetryId: settlementId + }) + return retryLoadedStructuredAgentSessionSettlement({ + deps: { store: store() }, + sessionId: SESSION, + session: { journal, fence: FENCE, acquisitionGeneration: null }, + now: () => 2_000 + }) +} + +function statusTexts(): string[] { + return journal + .snapshot() + .items.flatMap((item) => (item.body.kind === 'status' ? [item.body.text] : [])) +} + +beforeEach(async () => { + root = await mkdtemp(join(tmpdir(), 'orca-settlement-retry-')) + journal = await openAgentSessionJournal({ + identity: { + sessionId: SESSION, + workspaceId: 'workspace-1', + hostId: 'local', + agent: 'codex', + providerHandle: { kind: 'codex', threadId: THREAD } + }, + journalDir: root, + now: () => 1_000 + }) +}) + +/** A turn the dead generation left running: work to settle either way. */ +async function seedRunningTurn(): Promise { + await journal.appendItem( + { provider: 'codex', threadId: THREAD, turnId: 'turn-1', ordinal: 1 }, + { kind: 'turn', turnId: 'turn-1', state: 'running', startedAt: 900 }, + { fence: FENCE } + ) +} + +/** The provider died while the user, not the provider, held the conversation. */ +async function seedIdlePendingApproval(): Promise { + await journal.appendItem( + { provider: 'codex', threadId: THREAD, turnId: 'turn-1', ordinal: 1 }, + { + kind: 'approval', + title: 'Run command?', + detail: null, + options: [{ id: 'yes', label: 'Allow' }], + resolution: { state: 'pending', selectedOptionId: null, resolvedBy: null, resolvedAt: null } + }, + { fence: FENCE } + ) +} + +afterEach(async () => { + await journal.close() + await rm(root, { recursive: true, force: true }) +}) + +describe('pending settlement retry', () => { + it('writes no status row when the death was only adjudicated, not witnessed', async () => { + await seedRunningTurn() + + await expect( + retry(`restart-eviction:${SESSION}:${FENCE}`, { + kind: 'pid-absent', + detail: 'recorded pid absent on host', + observedAt: 1_500 + }) + ).resolves.toBe(true) + + expect(statusTexts()).toEqual([]) + expect(journal.snapshot().items.map((item) => item.body)).toContainEqual( + expect.objectContaining({ kind: 'turn', state: 'unverifiable' }) + ) + expect(record.lease.settlementRetryRequired).toBeUndefined() + }) + + it('writes no status row for an identity mismatch either', async () => { + await seedRunningTurn() + + await expect( + retry(`restart-eviction:${SESSION}:${FENCE}`, { + kind: 'identity-mismatch', + detail: 'mismatched spawn-token', + observedAt: 1_500 + }) + ).resolves.toBe(true) + + expect(statusTexts()).toEqual([]) + }) + + it('reads the evidence, not the settlement id, when deciding to speak', async () => { + // Pins the discriminator: the id shape that normally accompanies a witnessed exit must not + // earn the notice on its own. + await seedRunningTurn() + + await expect( + retry(`provider-exit:${SESSION}:${FENCE}:generation-1`, { + kind: 'pid-absent', + detail: 'recorded pid absent on host', + observedAt: 1_500 + }) + ).resolves.toBe(true) + + expect(statusTexts()).toEqual([]) + }) + + it('writes user-facing copy carrying the cause when the exit was observed', async () => { + await seedRunningTurn() + + await expect( + retry(`provider-exit:${SESSION}:${FENCE}:generation-1`, { + kind: 'exit-observed', + detail: 'transport closed', + observedAt: 1_500 + }) + ).resolves.toBe(true) + + expect(statusTexts()).toEqual([ + 'The provider stopped while this response was in progress: transport closed. You can continue in this conversation.' + ]) + expect(journal.snapshot().items.map((item) => item.body)).toContainEqual( + expect.objectContaining({ kind: 'turn', state: 'interrupted', completedAt: 1_500 }) + ) + }) + + it('stays silent about a witnessed exit that interrupted nothing but a waiting prompt', async () => { + await seedIdlePendingApproval() + + await expect( + retry(`provider-exit:${SESSION}:${FENCE}:generation-1`, { + kind: 'exit-observed', + detail: 'transport closed', + observedAt: 1_500 + }) + ).resolves.toBe(true) + + expect(statusTexts()).toEqual([]) + expect(journal.snapshot().items.map((item) => item.body)).toContainEqual( + expect.objectContaining({ + kind: 'approval', + resolution: expect.objectContaining({ state: 'cancelled' }) + }) + ) + }) +}) diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-settlement-retry.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-settlement-retry.ts index 4e5de3f2566..120eeaeb635 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-settlement-retry.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-settlement-retry.ts @@ -4,11 +4,13 @@ import type { StructuredAgentSessionHostDeps, StructuredAgentSessionHostSession } from './structured-agent-session-host-types' +import type { StructuredAgentSessionLeaseStore } from './structured-agent-session-lease-release' import { turnVerdictFromDeathEvidence } from './structured-agent-session-stale-turn-verdict' import { - retryUnexpectedExitSettlement, - type StructuredAgentSessionUnexpectedExitContext -} from './structured-agent-session-unexpected-exit' + captureUnfinishedStructuredAgentSessionWork, + settleStructuredAgentSessionDeadGeneration, + unfinishedStructuredAgentSessionWorkWasInterrupted +} from './structured-agent-session-dead-generation-settlement' export async function retryPendingStructuredAgentSessionSettlement(input: { deps: StructuredAgentSessionHostDeps @@ -56,7 +58,10 @@ export async function retryPendingStructuredAgentSessionSettlement(input: { } export async function retryLoadedStructuredAgentSessionSettlement(input: { - deps: Pick + deps: { + store: StructuredAgentSessionLeaseStore + onEventSinkError?: StructuredAgentSessionHostDeps['onEventSinkError'] + } sessionId: string session: Pick now: () => number @@ -67,23 +72,32 @@ export async function retryLoadedStructuredAgentSessionSettlement(input: { } const retrySession = input.session retrySession.fence = record.lease.runtimeFence - const context: Pick = { - onBarrierError: (id, error) => input.deps.onEventSinkError?.({ sessionId: id, error }) - } - const ok = await retryUnexpectedExitSettlement({ - context, - event: { - type: 'ended', - sessionId: input.sessionId, - reason: record.lease.deathEvidence?.detail ?? 'provider exited', - cause: 'unexpected-exit', - fence: record.lease.runtimeFence, - acquisitionGeneration: retrySession.acquisitionGeneration ?? 'recovery' - }, - session: retrySession, - stableSettlementId: record.lease.settlementRetryId, - // Only an observed exit earns an end time; a probe-proven death never saw one. - verdict: turnVerdictFromDeathEvidence(record.lease.deathEvidence) + const onError = (id: string, error: unknown): void => + input.deps.onEventSinkError?.({ sessionId: id, error }) + // Only an observed exit earns an end time; a probe-proven death never saw one. + const verdict = turnVerdictFromDeathEvidence(record.lease.deathEvidence) + const ok = await settleStructuredAgentSessionDeadGeneration({ + journal: retrySession.journal, + sessionId: input.sessionId, + fence: retrySession.fence, + settlementId: record.lease.settlementRetryId, + pendingSubmissionReason: 'provider_exited_before_acknowledgement', + verdict, + // The same evidence decides the copy: only a witnessed death is worth telling the user + // about. An unverifiable one is a restart artefact, and the session stays sendable. The + // work check matches the live exit path — a provider that died waiting on a prompt + // interrupted no response, so it must not claim one was in progress. + showUnexpectedExitOutcome: + verdict.state === 'interrupted' && + unfinishedStructuredAgentSessionWorkWasInterrupted( + captureUnfinishedStructuredAgentSessionWork(retrySession.journal), + retrySession.journal, + verdict.completedAt + ), + ...(record.lease.deathEvidence?.detail + ? { unexpectedExitReason: record.lease.deathEvidence.detail } + : {}), + onError }) if (!ok) { return false diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-surface-lifetime.test.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-surface-lifetime.test.ts index 678b790ed4e..2538b61c84b 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-surface-lifetime.test.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-surface-lifetime.test.ts @@ -3,13 +3,14 @@ // Two leaks meet here and each has to be tested against the real host, not a double: a chat that // closes without stopping its app-server, and a launch that starts one for every record on disk. -import { mkdtemp, rm } from 'node:fs/promises' +import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises' import { tmpdir } from 'node:os' import { join } from 'node:path' import { afterEach, beforeEach, describe, expect, it, vi, type Mock } from 'vitest' import type { AgentSessionOwnerProbe } from '../../../shared/agent-session-lease-adjudication' import { hasUnansweredStructuredAgentSessionDispatch } from '../../../shared/structured-agent-session-projection' import { computeAgentSessionPayloadFingerprint } from '../../../shared/agent-session-mutation-envelope' +import type { AgentJournalSubmission } from '../../../shared/agent-session-journal-types' import type { AgentSessionMutationEnvelope, AgentSessionSubscribeEvent @@ -19,7 +20,13 @@ import { AgentSessionRecordStore } from '../../runtime/agent-session-record-stor import type { StructuredAgentSessionAdapter } from './structured-agent-session-adapter' import type { StructuredAgentSessionEventSink } from './structured-agent-session-event-sink' import { StructuredAgentSessionHost } from './structured-agent-session-host' -import type { StructuredAgentSessionHandoffTransport } from './structured-agent-session-handoff-types' +import type { + StructuredAgentSessionHandoffTransport, + StructuredTuiOwner +} from './structured-agent-session-handoff-types' +import { StructuredHandoffTestRequests } from './structured-agent-session-handoff-test-requests' +import { unexpectedProviderExitOutcome } from './structured-agent-session-dead-generation-settlement' +import type { StructuredAgentSessionStatusSink } from './structured-agent-session-status-feed' import { HOST_TEST_NOW as NOW, HOST_TEST_SESSION as SESSION, @@ -43,6 +50,7 @@ let closeSession: Mock let sink: StructuredAgentSessionEventSink | null let hostErrors: unknown[] +let statusSink: StructuredAgentSessionStatusSink function adapter(): StructuredAgentSessionAdapter { return { acquire, @@ -68,6 +76,7 @@ function openHost( releaseGraceMs: GRACE_MS, now: () => NOW, onEventSinkError: ({ error }) => hostErrors.push(error), + statusSink, ...(probeOwner ? { probeOwner: probeOwner as never } : {}), ...(handoffTransport ? { handoffTransport } : {}) }) @@ -119,11 +128,111 @@ function waitOutSeveralGraceWindows(): Promise { return new Promise((resolve) => setTimeout(resolve, GRACE_MS * 20)) } +const handoffRequests = new StructuredHandoffTestRequests( + NOW, + SESSION, + () => store.getRecord(SESSION)?.lease.runtimeFence ?? 0 +) +/** Whether the terminal this host handed the session to can be reached again. */ +let tuiRecoverable: boolean + +/** One operation-id source with the rest of the suite, so the durable ledger sees no duplicate. */ +function handoffRequest(direction: 'to-tui' | 'to-native') { + return handoffRequests.request(direction, 'now', { operationId: hostTestOperationId() }) +} + +function tuiOwner(fence: number, spawnToken: string, transcriptPath: string): StructuredTuiOwner { + return { + terminal: { handle: 'term-tui', tabId: 'tab-tui', paneKey: 'pane-tui', ptyId: 'pty-tui' }, + process: { hostId: 'local', pid: 5200, processStartTimeMs: NOW, spawnToken }, + link: { + linkId: `tui-link-${fence}`, + handle: { provider: 'codex', threadId: THREAD }, + origin: 'resumed', + mintedAtFence: fence, + observedAt: NOW + }, + transcriptPath + } +} + +/** A codex rollout the return trip can import, so a real to-native handoff has history to read. */ +async function writeTuiTranscript(): Promise { + const sessionsDir = join(root, 'codex-home', 'sessions', '2026', '08', '12') + await mkdir(sessionsDir, { recursive: true }) + const transcriptPath = join(sessionsDir, `rollout-2026-08-12T10-00-00-${THREAD}.jsonl`) + await writeFile( + transcriptPath, + `${JSON.stringify({ + type: 'session_meta', + timestamp: '2026-08-12T10:00:00.000Z', + payload: { id: THREAD, session_id: THREAD } + })}\n`, + 'utf8' + ) + return transcriptPath +} + +/** Replaces the current host with one that can hand the session to a terminal and take it back. */ +function openHandoffHost(transcriptPath: string): void { + openHost(undefined, { + hostLabel: 'Test host', + launchTui: async ({ fence, spawnToken }) => tuiOwner(fence, spawnToken, transcriptPath), + reproveTuiOwner: async ({ owner }) => owner, + recoverTuiOwner: async (record) => { + if (!tuiRecoverable) { + throw new Error('the owning terminal could not be reached') + } + return tuiOwner( + record.lease.runtimeFence, + record.lease.reservedSpawnToken ?? 'recovered', + transcriptPath + ) + }, + stopRecoveredOwner: async () => undefined, + closeTuiOwner: async (owner) => ({ transcriptPath: owner.transcriptPath }), + waitForTuiExit: async (owner) => ({ transcriptPath: owner.transcriptPath }), + waitForTuiIdleOrExit: async () => 'idle', + tuiStatus: () => 'idle' + }) +} + +/** Fails the next eviction at `drain-published`, which leaves the session indexed for a retry. */ +function failNextDrain(): void { + vi.spyOn(host['runtimeState'].eventSinkFor(SESSION), 'drained').mockResolvedValueOnce({ + ok: false, + error: new Error('drain barrier lost') + }) +} + +/** The submissions as they stood when the session was forgotten; its journal is gone after that. */ +function captureSettledSubmissions(): { value: AgentJournalSubmission[] } { + const captured: { value: AgentJournalSubmission[] } = { value: [] } + const journal = host['sessions'].get(SESSION)!.journal + const closeJournal = journal.close.bind(journal) + vi.spyOn(journal, 'close').mockImplementation(async () => { + captured.value = journal.snapshot().submissions + await closeJournal() + }) + return captured +} + +async function sendPending(text: string): Promise { + dispatch.mockResolvedValueOnce({ state: 'admitted' }) + const body = hostTestMessage(text) + expect( + await host.send(CALLER, { envelope: envelope('agentSession.send', { body }), body }) + ).toMatchObject({ ok: true, value: { submission: { dispatchState: 'pending' } } }) +} + beforeEach(async () => { root = await mkdtemp(join(tmpdir(), 'orca-surface-lifetime-')) + handoffRequests.reset() + tuiRecoverable = true resetHostTestOperationIds() sink = null hostErrors = [] + statusSink = { publish: vi.fn(), forget: vi.fn() } let generation = 0 acquire = vi.fn(async ({ fence, spawnToken, events }) => { sink = events ?? null @@ -235,6 +344,66 @@ describe('a chat that closes', () => { await expect(settlement).resolves.toBeUndefined() }) + + it('retries teardown after journal close loses its result', async () => { + await attach() + const session = host['sessions'].get(SESSION) + expect(session).toBeDefined() + const closeJournal = session!.journal.close.bind(session!.journal) + vi.spyOn(session!.journal, 'close') + .mockImplementationOnce(async () => { + await closeJournal() + throw new Error('journal close result lost') + }) + .mockImplementation(closeJournal) + + await expect(host.close(SESSION)).rejects.toMatchObject({ + step: 'forget-session', + cause: expect.objectContaining({ message: 'journal close result lost' }) + }) + expect(host.hasSession(SESSION)).toBe(true) + expect(host['sessions'].get(SESSION)?.hasProviderChild).toBe(false) + expect(store.getRecord(SESSION)?.lease).toMatchObject({ + claimStatus: 'released', + ownerProcess: null + }) + expect(statusSink.forget).toHaveBeenCalledWith(SESSION) + + await expect(host.close(SESSION)).resolves.toBeUndefined() + expect(host.hasSession(SESSION)).toBe(false) + expect(closeSession).toHaveBeenCalledOnce() + }) + + it('settles and releases on the retry when a step after the child stopped aborts', async () => { + await attach() + dispatch.mockResolvedValueOnce({ state: 'admitted' }) + const body = hostTestMessage('pending across an aborted eviction') + const sent = await host.send(CALLER, { + envelope: envelope('agentSession.send', { body }), + body + }) + expect(sent).toMatchObject({ ok: true, value: { submission: { dispatchState: 'pending' } } }) + const session = host['sessions'].get(SESSION) + expect(session).toBeDefined() + vi.spyOn(host['runtimeState'].eventSinkFor(SESSION), 'drained').mockResolvedValueOnce({ + ok: false, + error: new Error('drain barrier lost') + }) + const settled = captureSettledSubmissions() + + await expect(host.close(SESSION)).rejects.toMatchObject({ step: 'drain-published' }) + // The child is proven gone, but the wind-down it owes is not done: nothing settled, no release. + expect(session!.hasProviderChild).toBe(false) + expect(store.getRecord(SESSION)?.lease.claimStatus).not.toBe('released') + + await expect(host.close(SESSION)).resolves.toBeUndefined() + expect(closeSession).toHaveBeenCalledOnce() + expect(store.getRecord(SESSION)?.lease).toMatchObject({ + claimStatus: 'released', + ownerProcess: null + }) + expect(hasUnansweredStructuredAgentSessionDispatch(settled.value)).toBe(false) + }) }) describe('a session with a turn in flight', () => { @@ -258,6 +427,35 @@ describe('a session with a turn in flight', () => { }) describe('startup', () => { + it('settles an idle absent owner without chat pollution and resumes the same provider identity', async () => { + await attach() + const beforeRestart = store.getRecord(SESSION) + host['runtimeState'].stopLeaseRenewal() + host['holds'].dispose() + await host['sessions'].get(SESSION)?.journal.close() + host['sessions'].clear() + + store = await AgentSessionRecordStore.open({ directory: join(root, 'store'), hostId: 'local' }) + openHost(async () => ({ outcome: 'pid-absent' })) + await host.restoreReadableSessions() + + const restored = host.history({ sessionId: SESSION, direction: 'tail' }) + expect(restored.ok && restored.page.items.some((item) => item.body.kind === 'status')).toBe( + false + ) + expect(store.getRecord(SESSION)?.lease).toMatchObject({ + claimStatus: 'released', + ownerProcess: null, + settlementRetryRequired: undefined + }) + + await host.hold(SESSION, SURFACE) + expect(store.getRecord(SESSION)?.providerHandleChain.at(-1)?.handle).toEqual( + beforeRestart?.providerHandleChain.at(-1)?.handle + ) + expect(store.getRecord(SESSION)?.providerHandleChain.at(-1)?.origin).toBe('resumed') + }) + it('restores a session for reading without spawning a provider child', async () => { await attach() await reboot() @@ -377,7 +575,7 @@ describe('an unexpected provider exit', () => { history.page.items.some( (item) => item.body.kind === 'status' && item.body.text.includes('journal sink failure') ) - ).toBe(true) + ).toBe(false) // Replace the failed cached sink so suite cleanup can drain the host. ;( @@ -525,13 +723,13 @@ describe('an unexpected provider exit', () => { expect(hostErrors).toContainEqual(expect.objectContaining({ message: 'journal failed' })) const history = host.history({ sessionId: SESSION, direction: 'tail' }) expect(history.ok && history.page.submissions[0]?.dispatchState).toBe('unknown') - expect( - history.ok && - history.page.items.some( - (item) => - item.body.kind === 'status' && item.body.text === 'Provider exited: provider exited' - ) - ).toBe(true) + // A send whose delivery outcome is unknown IS work in progress, so the reassuring outcome is + // written — carrying the cause, and never the old bare `Provider exited: ` row. + const statuses = history.ok + ? history.page.items.flatMap((item) => (item.body.kind === 'status' ? [item.body.text] : [])) + : [] + expect(statuses).toEqual([unexpectedProviderExitOutcome('provider exited')]) + expect(statuses.some((text) => text.startsWith('Provider exited'))).toBe(false) dispatch.mockResolvedValueOnce({ state: 'accepted', @@ -547,6 +745,8 @@ describe('an unexpected provider exit', () => { it('latches a failed exit settlement and blocks attach until the terminal batch is written', async () => { await attach() await host.hold(SESSION, SURFACE) + emitTurnLifecycle('running', 1) + await host.flushStreamedEvents(SESSION) const runtimeState = ( host as unknown as { runtimeState: { lifecycleBarrier: () => Promise<{ ok: false; error: Error }> } @@ -605,3 +805,82 @@ describe('an unexpected provider exit', () => { expect(acquire).toHaveBeenCalledTimes(2) }) }) + +describe('a chat handed to a terminal and taken back', () => { + // The wind-down a close owes belongs to the child in front of it, not to whatever the LAST + // eviction found. A session a terminal owns is indexed with no child of its own, so a close + // there records "nothing owed" — and the trip back re-acquires into that SAME session object. + it('settles and releases the child it was given back', async () => { + const transcriptPath = await writeTuiTranscript() + await host.flushAllStreamedEvents() + openHandoffHost(transcriptPath) + await attach() + expect(await host.requestHandoff(CALLER, handoffRequest('to-tui'))).toMatchObject({ ok: true }) + await vi.waitFor(async () => + expect(await host.handoffStatus(SESSION)).toMatchObject({ owner: 'tui' }) + ) + + // The app restarts and cannot reach the terminal, so this generation restores the session for + // reading and holds no handle to the owner it would otherwise stop on a close. + await host.flushAllStreamedEvents() + store = await AgentSessionRecordStore.open({ directory: join(root, 'store'), hostId: 'local' }) + tuiRecoverable = false + openHandoffHost(transcriptPath) + await host.restoreReadableSessions() + expect(store.getRecord(SESSION)?.lease).toMatchObject({ + runtimeKind: 'tui', + claimStatus: 'live' + }) + + failNextDrain() + await expect(host.close(SESSION)).rejects.toMatchObject({ step: 'drain-published' }) + expect(host.hasSession(SESSION)).toBe(true) + + // The terminal answers again, and the status read the reopened pane makes recovers the owner. + tuiRecoverable = true + expect(await host.handoffStatus(SESSION)).toMatchObject({ owner: 'tui' }) + expect(await host.requestHandoff(CALLER, handoffRequest('to-native'))).toMatchObject({ + ok: true + }) + await vi.waitFor(async () => + expect(await host.handoffStatus(SESSION)).toMatchObject({ owner: 'native' }) + ) + expect(host['sessions'].get(SESSION)?.hasProviderChild).toBe(true) + await sendPending('pending when the retaken chat closes') + const settled = captureSettledSubmissions() + + await expect(host.close(SESSION)).resolves.toBeUndefined() + + expect(store.getRecord(SESSION)?.lease).toMatchObject({ + claimStatus: 'released', + ownerProcess: null + }) + expect(hasUnansweredStructuredAgentSessionDispatch(settled.value)).toBe(false) + }) +}) + +describe('a quit over an eviction that never got its retry', () => { + // Nothing calls `close` a second time when the user quits instead of reopening the chat, so the + // quit sweep is the last thing that can hand the lease back — and it only reaches the session if + // it still counts a stopped child's unfinished wind-down as owed. + it('finishes the wind-down the aborted close left behind', async () => { + await attach() + await sendPending('pending across an abandoned eviction') + const settled = captureSettledSubmissions() + failNextDrain() + + await expect(host.close(SESSION)).rejects.toMatchObject({ step: 'drain-published' }) + expect(host['sessions'].get(SESSION)?.hasProviderChild).toBe(false) + expect(store.getRecord(SESSION)?.lease.claimStatus).not.toBe('released') + + await host.flushAllStreamedEvents() + + expect(closeSession).toHaveBeenCalledOnce() + expect(host.hasSession(SESSION)).toBe(false) + expect(store.getRecord(SESSION)?.lease).toMatchObject({ + claimStatus: 'released', + ownerProcess: null + }) + expect(hasUnansweredStructuredAgentSessionDispatch(settled.value)).toBe(false) + }) +}) diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-teardown-handoff-drain.test.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-teardown-handoff-drain.test.ts index 340d45c05af..12d3e6dfe43 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-teardown-handoff-drain.test.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-teardown-handoff-drain.test.ts @@ -11,6 +11,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { AgentSessionRecordStore } from '../../runtime/agent-session-record-store' import type { StructuredAgentSessionAdapter } from './structured-agent-session-adapter' import { StructuredAgentSessionHost } from './structured-agent-session-host' +import { structuredAgentSessionHostTeardownPhases } from './structured-agent-session-host-teardown' import { HOST_TEST_NOW as NOW, HOST_TEST_SESSION as SESSION, @@ -147,6 +148,26 @@ describe('structured agent-session host teardown', () => { expect(host.hasSession(SESSION)).toBe(false) }) + it('names every phase, so the quit-path order is pinned rather than incidental', () => { + const noop = async (): Promise => undefined + const phases = structuredAgentSessionHostTeardownPhases({ + holds: { dispose: noop }, + runtimeState: { stopLeaseRenewal: () => undefined, flushAllEventSinks: noop }, + handoffs: { stopTuiHistoryCatchup: () => undefined, drain: noop }, + tasks: { drainAttaches: noop }, + evictOwnedSessions: noop + }) + expect(phases.map((phase) => phase.name)).toEqual([ + 'dispose-holds', + 'stop-lease-renewal', + 'stop-tui-catchup', + 'drain-handoffs', + 'drain-attaches', + 'evict-owned-sessions', + 'flush-event-sinks' + ]) + }) + it('gives up on a wedged handoff instead of holding the quit open', async () => { const request = requests.request('to-tui', 'now', { operationId: hostTestOperationId() }) expect(await host.requestHandoff(CALLER, request)).toMatchObject({ ok: true }) diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-unexpected-exit.test.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-unexpected-exit.test.ts index 813e2f8f3e8..8dc2112b18a 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-unexpected-exit.test.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-unexpected-exit.test.ts @@ -2,11 +2,18 @@ import { describe, expect, it, vi } from 'vitest' import { agentJournalItemKey } from '../../../shared/agent-session-journal-item-key' import type { AgentJournalRenderItem } from '../../../shared/agent-session-journal-types' import type { AgentSessionRecord } from '../../../shared/agent-session-record' +import { + agentSessionLeaseFixture, + agentSessionRecordFixture +} from '../../../shared/agent-session-record.test-fixture' import type { StructuredAgentSessionHostSession } from './structured-agent-session-host-types' +import { unexpectedProviderExitOutcome } from './structured-agent-session-dead-generation-settlement' import { retryLoadedStructuredAgentSessionSettlement } from './structured-agent-session-settlement-retry' import { isStructuredAgentSessionRecoveryTicketCurrent, settleUnexpectedStructuredAgentSessionExit, + type StructuredAgentSessionUnexpectedExitContext, + type StructuredAgentSessionUnexpectedExitSession, type StructuredAgentSessionRecoveryTicket } from './structured-agent-session-unexpected-exit' @@ -17,8 +24,7 @@ const ticket: StructuredAgentSessionRecoveryTicket = { sessionId: SESSION, releasedFence: 8, deadAcquisitionGeneration: GENERATION, - stableSettlementId: 'settlement-1', - settlementRetryRequired: false + stableSettlementId: 'settlement-1' } function recoveryContext(input: { @@ -48,7 +54,11 @@ function recoveryContext(input: { function lifecycleItem( turnId: string, sequence: number, - turnLifecycle: { state: 'running' | 'completed'; startedAt: number; completedAt?: number } + turnLifecycle: { + state: 'running' | 'completed' | 'interrupted' + startedAt: number + completedAt?: number + } ): AgentJournalRenderItem { return { itemId: agentJournalItemKey({ provider: 'codex', threadId: 'thread-1', turnId, ordinal: 0 }), @@ -59,6 +69,39 @@ function lifecycleItem( } } +function liveRecord(): AgentSessionRecord { + return agentSessionRecordFixture( + agentSessionLeaseFixture({ + sessionId: SESSION, + runtimeKind: 'native', + runtimeFence: 7, + handoffStage: null, + ownerProcess: { + hostId: 'local', + pid: 4242, + processStartTimeMs: 1, + spawnToken: 'spawn-1' + }, + reservedSpawnToken: 'spawn-1', + claimStatus: 'live', + unreconciled: false + }) + ) +} + +function mutableStore() { + let record = liveRecord() + return { + store: { + getRecord: () => record, + transitionHandoff: async ( + _sessionId: string, + transition: (current: AgentSessionRecord) => AgentSessionRecord + ) => (record = transition(record)) + } + } +} + describe('provider-exit recovery tickets', () => { it.each([undefined, 2_000])('keeps exit receipt %s on retry', async (observedAt) => { let now = observedAt === undefined ? 2_000 : 30_000 @@ -200,7 +243,7 @@ describe('provider-exit recovery tickets', () => { } ) - expect(result).toMatchObject({ settlementRetryRequired: false, releasedFence: 8 }) + expect(result).toMatchObject({ releasedFence: 8 }) expect(session.journal.markPendingSubmissionsUnknown).toHaveBeenCalledWith( 7, 'provider_exited_before_acknowledgement' @@ -208,7 +251,7 @@ describe('provider-exit recovery tickets', () => { expect(session.hasProviderChild).toBe(false) // The running row is revised to interrupted at exit receipt, never tombstoned. expect(appendLifecycleBatch).toHaveBeenCalledExactlyOnceWith({ - settlementId: `provider-exit:${SESSION}:7:${GENERATION}`, + settlementId: `dead-generation:provider-exit:${SESSION}:7:${GENERATION}`, fence: 7, recovered: true, mutations: [ @@ -218,7 +261,7 @@ describe('provider-exit recovery tickets', () => { provider: 'orca', clientMessageId: `provider-exit:${SESSION}:7:${GENERATION}` }, - body: { kind: 'status', text: 'Provider exited: provider exited' } + body: { kind: 'status', text: unexpectedProviderExitOutcome('provider exited') } }, { kind: 'item', @@ -235,71 +278,149 @@ describe('provider-exit recovery tickets', () => { }) }) + it.each([ + { initialState: 'running' as const, terminalState: 'completed' as const, expectedOutcomes: 0 }, + { + initialState: 'running' as const, + terminalState: 'interrupted' as const, + expectedOutcomes: 1 + }, + { + initialState: 'interrupted' as const, + terminalState: 'interrupted' as const, + expectedOutcomes: 1 + } + ])( + 'reports $expectedOutcomes outcome(s) when the barrier sees $initialState then $terminalState', + async ({ initialState, terminalState, expectedOutcomes }) => { + let items = [ + lifecycleItem('turn-1', 1, { + state: initialState, + startedAt: 30, + ...(initialState === 'running' ? {} : { completedAt: 40 }) + }) + ] + const appendLifecycleBatch = vi.fn(async (_input: { mutations: readonly unknown[] }) => ({ + epoch: 'epoch-1', + sequence: 3 + })) + const session: StructuredAgentSessionUnexpectedExitSession = { + hasProviderChild: true, + fence: 7, + acquisitionGeneration: GENERATION, + journal: { + snapshot: () => ({ items }), + appendLifecycleBatch, + markPendingSubmissionsUnknown: vi.fn(async () => []) + } + } + + const { store } = mutableStore() + const context: StructuredAgentSessionUnexpectedExitContext = { + store, + sessions: new Map([[SESSION, session]]), + flushLifecycle: async () => { + items = [ + lifecycleItem('turn-1', 1, { + state: terminalState, + startedAt: 30, + completedAt: 40 + }) + ] + return { ok: true } + }, + publishFence: vi.fn(), + hasResumeCapableHolder: () => true, + serialize: async (_sessionId: string, task: () => Promise) => task(), + now: () => 1_234 + } + await settleUnexpectedStructuredAgentSessionExit(context, { + type: 'ended', + sessionId: SESSION, + reason: 'provider exited after completing the turn', + cause: 'unexpected-exit', + fence: 7, + acquisitionGeneration: GENERATION, + observedAt: 40 + }) + + expect(appendLifecycleBatch).toHaveBeenCalledTimes(expectedOutcomes) + if (expectedOutcomes > 0) { + expect(appendLifecycleBatch.mock.calls[0]?.[0].mutations).toEqual([ + expect.objectContaining({ + body: { + kind: 'status', + text: unexpectedProviderExitOutcome('provider exited after completing the turn') + } + }) + ]) + } + } + ) + it('settles a submission the dead child never acknowledged', async () => { const markPendingSubmissionsUnknown = vi.fn(async () => ['client-1']) - const session = { + const session: StructuredAgentSessionUnexpectedExitSession = { hasProviderChild: true, fence: 7, acquisitionGeneration: GENERATION, journal: { snapshot: () => ({ items: [] }), appendLifecycleBatch: vi.fn(async () => ({ epoch: 'epoch-1', sequence: 1 })), - markPendingSubmissionsUnknown + markPendingSubmissionsUnknown, + submissions: () => [{ clientMessageId: 'client-1', dispatchState: 'pending' }] } - } as unknown as StructuredAgentSessionHostSession + } - await settleUnexpectedStructuredAgentSessionExit( - { - store: { - getRecord: () => ({ - lease: { - handoffStage: null, - runtimeFence: 7, - runtimeKind: 'native', - claimStatus: 'live', - ownerProcess: 'provider', - reservedSpawnToken: null, - processlessAt: null - } - }), - transitionHandoff: async () => ({ lease: { runtimeFence: 8 } }) - }, - sessions: new Map([[SESSION, session]]), - flushLifecycle: async () => ({ ok: true }), - publishFence: vi.fn(), - hasResumeCapableHolder: () => true, - serialize: async (_sessionId, task: () => Promise) => task(), - now: () => 1 - } as never, - { - type: 'ended', - sessionId: SESSION, - reason: 'provider exited', - cause: 'unexpected-exit', - fence: 7, - acquisitionGeneration: GENERATION - } - ) + const { store } = mutableStore() + const context: StructuredAgentSessionUnexpectedExitContext = { + store, + sessions: new Map([[SESSION, session]]), + flushLifecycle: async () => ({ ok: true }), + publishFence: vi.fn(), + hasResumeCapableHolder: () => true, + serialize: async (_sessionId: string, task: () => Promise) => task(), + now: () => 1 + } + await settleUnexpectedStructuredAgentSessionExit(context, { + type: 'ended', + sessionId: SESSION, + reason: 'provider exited', + cause: 'unexpected-exit', + fence: 7, + acquisitionGeneration: GENERATION + }) expect(markPendingSubmissionsUnknown).toHaveBeenCalledWith( 7, 'provider_exited_before_acknowledgement' ) + expect(session.journal.appendLifecycleBatch).toHaveBeenCalledWith( + expect.objectContaining({ + mutations: [ + expect.objectContaining({ + body: { kind: 'status', text: unexpectedProviderExitOutcome('provider exited') } + }) + ] + }) + ) }) it('does not release or reacquire while terminal settlement retry is still failing', async () => { - const session = { + const session: StructuredAgentSessionUnexpectedExitSession = { hasProviderChild: true, fence: 7, acquisitionGeneration: GENERATION, journal: { markPendingSubmissionsUnknown: vi.fn(async () => []), - snapshot: () => ({ items: [] }), + snapshot: () => ({ + items: [lifecycleItem('turn-failing', 1, { state: 'running', startedAt: 1 })] + }), appendLifecycleBatch: vi.fn(async () => { throw new Error('journal still unavailable') }) } - } as unknown as StructuredAgentSessionHostSession + } const release = vi.fn() const publishFence = vi.fn() const event = { @@ -310,32 +431,18 @@ describe('provider-exit recovery tickets', () => { fence: 7, acquisitionGeneration: GENERATION } - const result = await settleUnexpectedStructuredAgentSessionExit( - { - store: { - getRecord: () => ({ - lease: { - handoffStage: null, - runtimeFence: 7, - runtimeKind: 'native', - claimStatus: 'live', - ownerProcess: 'provider', - reservedSpawnToken: null, - processlessAt: null - } - }), - transitionHandoff: async () => ({ lease: { runtimeFence: 8 } }) - }, - sessions: new Map([[SESSION, session]]), - flushLifecycle: async () => ({ ok: false, error: new Error('sink failed') }), - publishFence, - hasResumeCapableHolder: () => true, - serialize: async (_sessionId, task) => task(), - now: () => 1, - onBarrierError: release - } as never, - event - ) + const { store } = mutableStore() + const context: StructuredAgentSessionUnexpectedExitContext = { + store, + sessions: new Map([[SESSION, session]]), + flushLifecycle: async () => ({ ok: false, error: new Error('sink failed') }), + publishFence, + hasResumeCapableHolder: () => true, + serialize: async (_sessionId, task) => task(), + now: () => 1, + onBarrierError: release + } + const result = await settleUnexpectedStructuredAgentSessionExit(context, event) expect(result).toBeNull() expect(session.hasProviderChild).toBe(false) diff --git a/src/main/native-chat/agent-session-wire/structured-agent-session-unexpected-exit.ts b/src/main/native-chat/agent-session-wire/structured-agent-session-unexpected-exit.ts index c4b32f71647..11d004089ca 100644 --- a/src/main/native-chat/agent-session-wire/structured-agent-session-unexpected-exit.ts +++ b/src/main/native-chat/agent-session-wire/structured-agent-session-unexpected-exit.ts @@ -1,23 +1,18 @@ -import { parseAgentJournalItemKey } from '../../../shared/agent-session-journal-item-key' -import { - runningTurnLifecycleRevisions, - type StructuredAgentSessionTurnVerdict -} from './structured-agent-session-stale-turn-verdict' -import type { - AgentJournalItemBody, - AgentJournalRenderItem -} from '../../../shared/agent-session-journal-types' -import type { AgentSessionRecordStore } from '../../runtime/agent-session-record-store' -import { partitionJournalLifecycleMutations } from '../agent-session-journal/journal-lifecycle-batch-partition' -import type { JournalLifecycleMutationInput } from '../agent-session-journal/journal-row-builders' -import { - boundJournalStatusText, - cancelledJournalPromptBody -} from '../agent-session-journal/journal-prompt-body-bounds' import type { StructuredAgentSessionLifecycleEvent } from './structured-agent-session-adapter' import type { StructuredAgentSessionHostSession } from './structured-agent-session-host-types' -import { releaseStoredStructuredAgentSessionOwnerAfterUnexpectedExit } from './structured-agent-session-lease-release' +import { + releaseStoredStructuredAgentSessionOwnerAfterUnexpectedExit, + type StructuredAgentSessionLeaseStore +} from './structured-agent-session-lease-release' import type { StructuredAgentSessionSinkBarrier } from './structured-agent-session-event-sink' +import { + captureUnfinishedStructuredAgentSessionWork, + MAX_UNEXPECTED_EXIT_REASON_CHARS, + settleStructuredAgentSessionDeadGeneration, + type DeadGenerationJournal, + unfinishedStructuredAgentSessionWorkWasInterrupted +} from './structured-agent-session-dead-generation-settlement' +import type { StructuredAgentSessionTurnVerdict } from './structured-agent-session-stale-turn-verdict' type UnexpectedExitLifecycleEvent = StructuredAgentSessionLifecycleEvent & { cause: 'unexpected-exit' @@ -28,14 +23,22 @@ export type StructuredAgentSessionRecoveryTicket = { releasedFence: number deadAcquisitionGeneration: string stableSettlementId: string - settlementRetryRequired: boolean } -export type StructuredAgentSessionUnexpectedExitContext = { - store: AgentSessionRecordStore - sessions: Map +export type StructuredAgentSessionUnexpectedExitSession = { + journal: DeadGenerationJournal + hasProviderChild: boolean + fence: number + acquisitionGeneration: string | null +} + +export type StructuredAgentSessionUnexpectedExitContext< + TSession extends StructuredAgentSessionUnexpectedExitSession = StructuredAgentSessionHostSession +> = { + store: StructuredAgentSessionLeaseStore + sessions: Map flushLifecycle: (sessionId: string) => Promise - publishFence: (sessionId: string, session: StructuredAgentSessionHostSession) => void + publishFence: (sessionId: string, session: TSession) => void publishStatus?: (sessionId: string) => void hasResumeCapableHolder: (sessionId: string) => boolean serialize: (sessionId: string, task: () => Promise) => Promise @@ -43,8 +46,10 @@ export type StructuredAgentSessionUnexpectedExitContext = { onBarrierError?: (sessionId: string, error: unknown) => void } -export async function settleUnexpectedStructuredAgentSessionExit( - context: StructuredAgentSessionUnexpectedExitContext, +export async function settleUnexpectedStructuredAgentSessionExit< + TSession extends StructuredAgentSessionUnexpectedExitSession +>( + context: StructuredAgentSessionUnexpectedExitContext, event: StructuredAgentSessionLifecycleEvent ): Promise { if (event.cause !== 'unexpected-exit') { @@ -70,9 +75,9 @@ export async function settleUnexpectedStructuredAgentSessionExit( return null } - let settlementRetryRequired = false let settlementFailed = false const stableSettlementId = providerExitSettlementId(unexpectedEvent) + const unfinishedWork = captureUnfinishedStructuredAgentSessionWork(session.journal) let released: Awaited< ReturnType > | null = null @@ -80,37 +85,23 @@ export async function settleUnexpectedStructuredAgentSessionExit( try { const barrier = await context.flushLifecycle(unexpectedEvent.sessionId) if (!barrier.ok) { - settlementRetryRequired = true context.onBarrierError?.(unexpectedEvent.sessionId, barrier.error) } } catch (error) { - settlementRetryRequired = true context.onBarrierError?.(unexpectedEvent.sessionId, error) } - try { - await session.journal.markPendingSubmissionsUnknown( - session.fence, - 'provider_exited_before_acknowledgement' + settlementFailed = !(await retryUnexpectedExitSettlement({ + context, + event: unexpectedEvent, + session, + stableSettlementId, + verdict: { state: 'interrupted', completedAt: observedAt }, + showUnexpectedExitOutcome: unfinishedStructuredAgentSessionWorkWasInterrupted( + unfinishedWork, + session.journal, + observedAt ) - } catch (error) { - settlementRetryRequired = true - context.onBarrierError?.(unexpectedEvent.sessionId, error) - } - if (unexpectedEvent.settlementRetryRequired || settlementRetryRequired) { - const retried = await retryUnexpectedExitSettlement({ - context, - event: unexpectedEvent, - session, - stableSettlementId, - verdict: { state: 'interrupted', completedAt: observedAt } - }) - if (!retried) { - settlementFailed = true - } - if (!settlementFailed) { - settlementRetryRequired = false - } - } + })) } finally { // Provider exit was positively observed, so release the owner even when // terminal settlement could not be durably accepted. @@ -127,7 +118,8 @@ export async function settleUnexpectedStructuredAgentSessionExit( ? { settlementRetry: { settlementId: stableSettlementId, - detail: `provider exited: ${unexpectedEvent.reason}`.slice(0, 512) + // Bare cause: the retry renders it, and `exit-observed` already says the rest. + detail: unexpectedEvent.reason.slice(0, MAX_UNEXPECTED_EXIT_REASON_CHARS) } } : {}) @@ -153,23 +145,28 @@ export async function settleUnexpectedStructuredAgentSessionExit( sessionId: unexpectedEvent.sessionId, releasedFence: released.lease.runtimeFence, deadAcquisitionGeneration: unexpectedEvent.acquisitionGeneration, - stableSettlementId, - settlementRetryRequired + stableSettlementId } }) } export function isStructuredAgentSessionRecoveryTicketCurrent( - context: Pick< - StructuredAgentSessionUnexpectedExitContext, - 'store' | 'sessions' | 'hasResumeCapableHolder' - >, + context: { + store: Pick + sessions: Map< + string, + Pick< + StructuredAgentSessionUnexpectedExitSession, + 'hasProviderChild' | 'fence' | 'acquisitionGeneration' + > + > + hasResumeCapableHolder: (sessionId: string) => boolean + }, ticket: StructuredAgentSessionRecoveryTicket ): boolean { const session = context.sessions.get(ticket.sessionId) const record = context.store.getRecord(ticket.sessionId) return ( - !ticket.settlementRetryRequired && session?.hasProviderChild === false && session.fence === ticket.releasedFence && session.acquisitionGeneration === ticket.deadAcquisitionGeneration && @@ -180,75 +177,25 @@ export function isStructuredAgentSessionRecoveryTicketCurrent( ) } -export async function retryUnexpectedExitSettlement(input: { +async function retryUnexpectedExitSettlement(input: { context: Pick event: UnexpectedExitLifecycleEvent - session: Pick + session: Pick stableSettlementId: string verdict: StructuredAgentSessionTurnVerdict + showUnexpectedExitOutcome?: boolean }): Promise { - try { - await input.session.journal.markPendingSubmissionsUnknown( - input.session.fence, - 'provider_exited_before_acknowledgement' - ) - const mutations = unexpectedExitFallbackMutations( - input.event, - input.session, - input.stableSettlementId, - input.verdict - ) - for (const chunk of partitionJournalLifecycleMutations(input.stableSettlementId, mutations)) { - await input.session.journal.appendLifecycleBatch({ - settlementId: chunk.settlementId, - fence: input.session.fence, - recovered: true, - mutations: chunk.mutations - }) - } - return true - } catch (error) { - input.context.onBarrierError?.(input.event.sessionId, error) - return false - } -} - -function unexpectedExitFallbackMutations( - event: UnexpectedExitLifecycleEvent, - session: Pick, - stableSettlementId: string, - verdict: StructuredAgentSessionTurnVerdict -): JournalLifecycleMutationInput[] { - const mutations: JournalLifecycleMutationInput[] = [] - const { items } = session.journal.snapshot() - for (const item of items) { - const identity = parseAgentJournalItemKey(item.itemId) - if (!identity) { - continue - } - const terminal = terminalExitBody(item) - if (terminal) { - mutations.push({ kind: 'item', identity, body: terminal }) - } - } - mutations.push({ - kind: 'item', - identity: { provider: 'orca', clientMessageId: stableSettlementId }, - body: { kind: 'status', text: boundJournalStatusText(`Provider exited: ${event.reason}`) } + return settleStructuredAgentSessionDeadGeneration({ + journal: input.session.journal, + sessionId: input.event.sessionId, + fence: input.session.fence, + settlementId: input.stableSettlementId, + verdict: input.verdict, + pendingSubmissionReason: 'provider_exited_before_acknowledgement', + showUnexpectedExitOutcome: input.showUnexpectedExitOutcome, + unexpectedExitReason: input.event.reason, + onError: input.context.onBarrierError }) - // Lifecycle rows settle last, in place: the turn's endpoints outlive the child. - mutations.push(...runningTurnLifecycleRevisions(items, verdict)) - return mutations -} - -function terminalExitBody(item: AgentJournalRenderItem): AgentJournalItemBody | null { - if (item.body.kind === 'tool-call' && item.body.state === 'running') { - return { ...item.body, state: 'failed' } - } - if (item.body.kind === 'approval' || item.body.kind === 'question') { - return item.body.resolution.state === 'pending' ? cancelledJournalPromptBody(item.body) : null - } - return null } function providerExitSettlementId(event: UnexpectedExitLifecycleEvent): string { diff --git a/src/main/runtime/agent-session-surface-release-transition.ts b/src/main/runtime/agent-session-surface-release-transition.ts index 9fd3ef9cfda..a59d5cb5141 100644 --- a/src/main/runtime/agent-session-surface-release-transition.ts +++ b/src/main/runtime/agent-session-surface-release-transition.ts @@ -12,6 +12,8 @@ import type { AgentSessionRecord } from '../../shared/agent-session-record' import { assertFence, withLease } from './agent-session-lease-transitions' import type { AgentSessionRecordStore } from './agent-session-record-store' +export type AgentSessionRecordTransitionStore = Pick + /** Whether this record is one THIS host may release on its own proof. A TUI owner, a session * mid-handoff, and a lease nobody holds are all somebody else's transition. */ export function isSurfaceReleasableAgentSessionRecord(record: AgentSessionRecord): boolean { @@ -57,7 +59,7 @@ export function releaseAgentSessionOwnerAfterSurfaceClose(args: { /** Applied through the store's generic transition, the same way handoff records move. */ export function releaseStoredAgentSessionOwnerAfterSurfaceClose( - store: AgentSessionRecordStore, + store: AgentSessionRecordTransitionStore, args: { sessionId: string expectedFence: number diff --git a/src/main/runtime/structured-agent-session-runtime-exit.test.ts b/src/main/runtime/structured-agent-session-runtime-exit.test.ts index 5c6e43c2bc0..506a45ae821 100644 --- a/src/main/runtime/structured-agent-session-runtime-exit.test.ts +++ b/src/main/runtime/structured-agent-session-runtime-exit.test.ts @@ -201,6 +201,30 @@ describe('structured session runtime provider-exit wiring', () => { await new Promise((resolve) => setImmediate(resolve)) expect(connections).toHaveLength(1) + expect(host.deps.store.getRecord(SESSION)?.lease).toMatchObject({ + claimStatus: 'released', + ownerProcess: null, + handoffStage: null + }) + + const restarted = await ensureStructuredAgentSessionHost({ + stateDirectory: root, + hostId: 'local', + claimKeyId: 'key-1', + resolveWorkspacePath: async () => root!, + resolveClaudeAuthPolicy: () => ({ stripAuthEnv: true }), + resolveCodexCommand: () => 'codex', + resolveEnvironment: async () => ({ PATH: process.env.PATH }), + openCodexConnection: openConnection, + readProcessStartTime: async () => 1_700_000_000_000 + }) + await restarted.restoreReadableSessions() + const history = restarted.history({ sessionId: SESSION, direction: 'tail' }) + expect(history.ok && history.page.items.some((item) => item.body.kind === 'status')).toBe(false) + expect(restarted.deps.store.getRecord(SESSION)?.providerHandleChain.at(-1)?.handle).toEqual({ + provider: 'codex', + threadId: 'thread-runtime-close' + }) }) it('waits for an in-flight recovery before tearing down the runtime', async () => { @@ -286,4 +310,97 @@ describe('structured session runtime provider-exit wiring', () => { await stopping expect(stopped).toBe(true) }) + it('drains a final exit callback delivered by the adapter backstop and keeps the retry real', async () => { + // The first stop refuses, so host eviction cannot prove the child gone and aborts with the + // session still indexed. What finally stops it is `closeAll`, which delivers the exit + // callback AFTER host teardown has already run. + root = await mkdtemp(join(tmpdir(), 'orca-runtime-backstop-exit-')) + operations = 0 + const connections: { + connection: CodexAppServerConnection + handlers: CodexAppServerConnectionHandlers + }[] = [] + let closeAttempts = 0 + const openConnection: typeof openCodexAppServerConnection = async (_launch, handlers = {}) => { + const connection: CodexAppServerConnection = { + pid: 4321, + closed: false, + request: async (method, params) => { + if (method === 'thread/start') { + return { thread: { id: 'thread-runtime-backstop' } } + } + if (method === 'thread/resume') { + return { thread: { id: (params as { threadId: string }).threadId } } + } + if (method === 'turn/start') { + return { turn: { id: 'turn-backstop' } } + } + if (method === 'model/list') { + return { + data: [ + { + model: 'gpt-test', + displayName: 'GPT Test', + hidden: false, + supportedReasoningEfforts: [], + defaultReasoningEffort: null, + isDefault: true + } + ], + nextCursor: null + } + } + return {} + }, + notify: () => {}, + respond: () => {}, + respondWithError: () => {}, + close: async () => { + closeAttempts += 1 + if (closeAttempts === 1) { + return false + } + handlers.onExit?.(new Error('adapter backstop close')) + return true + } + } + connections.push({ connection, handlers }) + return connection + } + const host = await ensureStructuredAgentSessionHost({ + stateDirectory: root, + hostId: 'local', + claimKeyId: 'key-1', + resolveWorkspacePath: async () => root!, + resolveClaudeAuthPolicy: () => ({ stripAuthEnv: true }), + resolveCodexCommand: () => 'codex', + resolveEnvironment: async () => ({ PATH: process.env.PATH }), + openCodexConnection: openConnection, + readProcessStartTime: async () => 1_700_000_000_000 + }) + const attachParams = hostTestAttachParams(null, { providerHandle: undefined }) + attachParams.envelope.clientOperationId = operationId() + expect(await host.attach({ callerKey: 'runtime-test' }, attachParams)).toMatchObject({ + ok: true + }) + await host.hold(SESSION, 'desktop-chat:backstop') + + await expect(stopStructuredAgentSessionRuntime()).rejects.toThrow() + await new Promise((resolve) => setImmediate(resolve)) + + // The backstop, not host eviction, is what stopped the child. + expect(closeAttempts).toBeGreaterThanOrEqual(2) + // The callback it delivered neither reacquired nor wrote a technical row. + expect(connections).toHaveLength(1) + const history = host.history({ sessionId: SESSION, direction: 'tail' }) + expect(history.ok && history.page.items.some((item) => item.body.kind === 'status')).toBe(false) + + // The aborted eviction left the session reachable, so the next teardown is a real retry. + await stopStructuredAgentSessionRuntime() + expect(host.deps.store.getRecord(SESSION)?.lease).toMatchObject({ + claimStatus: 'released', + ownerProcess: null, + handoffStage: null + }) + }) }) diff --git a/src/main/runtime/structured-agent-session-runtime.ts b/src/main/runtime/structured-agent-session-runtime.ts index f7798b11db8..fbc13b58fca 100644 --- a/src/main/runtime/structured-agent-session-runtime.ts +++ b/src/main/runtime/structured-agent-session-runtime.ts @@ -171,13 +171,41 @@ async function tearDownRuntime(installed: InstalledRuntime): Promise { // Drain an in-flight recovery before stopping children; recovery may still // be writing lifecycle rows or acquiring a replacement child. await installed.waitForRecovery() + const failures: unknown[] = [] + // Host teardown runs FIRST, which inverts the older order. It is what stops this host's + // provider children now: it evicts each owned session through the adapter, and that eviction + // only releases the lease once `disposeSession` PROVES the child gone. Closing the adapter + // first would hand every one of those steps a vacuous receipt from an already-closed router, + // and would race the attach drain the host runs in the same teardown. + // + // Tail rows are protected by eviction's own per-session ordering — stop the child, drain what + // it already published, settle, then unbind the sink — not by which of the two teardowns runs + // first. `closeAll` is only a backstop for children eviction never took: an acquisition that + // failed before the host indexed it, or a session whose eviction was refused and left indexed. + // A row a child delivers during that backstop close is not captured, and was not captured + // under the old order either. The drain below keeps a late callback from outliving the runtime. try { - await installed.adapter.closeAll() - } finally { - // closeAll can itself deliver a final exit callback; observe that callback - // before flushing and releasing the host's journal resources. - await installed.waitForRecovery() await installed.host.flushAllStreamedEvents() + } catch (error) { + failures.push(error) + } + try { + // Backstop for children eviction never took: unindexed acquisitions and refused evictions. + await installed.adapter.closeAll() + } catch (error) { + failures.push(error) + } + // A backstop close can still deliver a final exit callback. + try { + await installed.waitForRecovery() + } catch (error) { + failures.push(error) + } + if (failures.length === 1) { + throw failures[0] + } + if (failures.length > 1) { + throw new AggregateError(failures, 'structured agent-session runtime teardown failed') } } From 2ed89b8781c5186972cfa33c1da9800e1de9ea80 Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Mon, 14 Sep 2026 01:44:47 -0700 Subject: [PATCH 03/12] fix(github): name an unfiltered empty project view instead of blaming a filter (#20588) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(github): skip Projects search index for unfiltered views Empty query still used items(query:\$q), which routes through GitHub's Projects search index and can return totalCount 0 while the board is full during index lag. Omit the query argument when the view filter is empty. Fixes #12648. * docs(github): drop the false stable-shape claim for empty project filters Unfiltered item fetches omit items(query:) so boards skip search-index lag. The View.filter field is still '' when GitHub returns null. Co-authored-by: Cursor * fix(github): name an unfiltered empty project view instead of blaming a filter The search-index workaround in this branch was a no-op. Live introspection of ProjectV2.items shows `query` is declared `String = ""`, so omitting the argument and sending `$q = ""` coerce to the identical resolver input; GitHub applies declared defaults for omitted args (verified against its own endpoint). There is no non-search item field on ProjectV2 and ProjectV2View has no `items` at all, so no request shape can dodge the index. Revert the branching query construction and the module it added. What the user actually reported in #12648 is the copy: a view with no filter rendered "No items match this view's filter", which reads as data loss when a freshly populated board momentarily comes back empty. Word the empty state from the view's own filter — the filter message only when there is a filter, and an honest "no items yet" plus a transience hint when there is not — and share the one implementation between the table and roadmap surfaces. Refs #12648. --------- Co-authored-by: bbingz Co-authored-by: Cursor --- .../github-project/ProjectRoadmap.test.tsx | 21 ++++++++-- .../github-project/ProjectRoadmap.tsx | 10 +---- .../github-project/ProjectViewList.tsx | 10 +---- .../github-project/ProjectViewStates.test.tsx | 28 ++++++++++++++ .../github-project/ProjectViewStates.tsx | 38 +++++++++++++++++++ src/renderer/src/i18n/locales/en.json | 4 +- src/renderer/src/i18n/locales/es.json | 4 ++ src/renderer/src/i18n/locales/fr.json | 4 ++ src/renderer/src/i18n/locales/ja.json | 4 ++ src/renderer/src/i18n/locales/ko.json | 4 ++ src/renderer/src/i18n/locales/zh.json | 4 ++ src/shared/github/project-types.ts | 7 ++-- 12 files changed, 115 insertions(+), 23 deletions(-) create mode 100644 src/renderer/src/components/github-project/ProjectViewStates.test.tsx diff --git a/src/renderer/src/components/github-project/ProjectRoadmap.test.tsx b/src/renderer/src/components/github-project/ProjectRoadmap.test.tsx index 24d04bcb239..2b4c799b861 100644 --- a/src/renderer/src/components/github-project/ProjectRoadmap.test.tsx +++ b/src/renderer/src/components/github-project/ProjectRoadmap.test.tsx @@ -64,7 +64,11 @@ function row(id: string, title: string, values: GitHubProjectFieldValue[]): GitH } } -function table(fields: GitHubProjectField[], rows: GitHubProjectRow[]): GitHubProjectTable { +function table( + fields: GitHubProjectField[], + rows: GitHubProjectRow[], + filter = '' +): GitHubProjectTable { return { project: { id: 'PVT_1', @@ -79,7 +83,7 @@ function table(fields: GitHubProjectField[], rows: GitHubProjectRow[]): GitHubPr number: 2, name: 'Roadmap', layout: 'ROADMAP_LAYOUT', - filter: '', + filter, fields, groupByFields: [], sortByFields: [] @@ -263,11 +267,22 @@ describe('ProjectRoadmap', () => { it('reports an empty filter result instead of drawing an empty grid', () => { render( list} /> ) expect(screen.getByText("No items match this view's filter.")).toBeTruthy() expect(screen.queryByText('list')).toBeNull() }) + + it('does not blame a filter an unfiltered roadmap does not have', () => { + render( + list} + /> + ) + expect(screen.getByText('This view has no items yet.')).toBeTruthy() + expect(screen.queryByText("No items match this view's filter.")).toBeNull() + }) }) diff --git a/src/renderer/src/components/github-project/ProjectRoadmap.tsx b/src/renderer/src/components/github-project/ProjectRoadmap.tsx index d06ef409dff..5e06e41d870 100644 --- a/src/renderer/src/components/github-project/ProjectRoadmap.tsx +++ b/src/renderer/src/components/github-project/ProjectRoadmap.tsx @@ -7,6 +7,7 @@ import { i18n, translate } from '@/i18n/i18n' import ProjectGroupHeader from './ProjectGroupHeader' import ProjectRoadmapBar from './ProjectRoadmapBar' import { ProjectTitleCell } from './ProjectCellIdentity' +import { ProjectItemsEmptyState } from './ProjectViewStates' import { formatRoadmapTick } from './roadmap-tick-format' import { loadRoadmapZoom, saveRoadmapZoom } from './roadmap-zoom-preference' import { groupRows, sortRows } from '../../../../shared/github/project-group-sort' @@ -145,14 +146,7 @@ export default function ProjectRoadmap({ } if (table.rows.length === 0) { - return ( -
- {translate( - 'auto.components.github.project.ProjectViewList.4f57d2e0b1', - "No items match this view's filter." - )} -
- ) + return } const undatedCount = table.rows.length - spans.size diff --git a/src/renderer/src/components/github-project/ProjectViewList.tsx b/src/renderer/src/components/github-project/ProjectViewList.tsx index e54493418d6..cdb9e2dc487 100644 --- a/src/renderer/src/components/github-project/ProjectViewList.tsx +++ b/src/renderer/src/components/github-project/ProjectViewList.tsx @@ -5,6 +5,7 @@ import { cn } from '@/lib/utils' import ColumnResizeHandle from './ColumnResizeHandle' import ProjectGroupHeader from './ProjectGroupHeader' import ProjectRow from './ProjectRow' +import { ProjectItemsEmptyState } from './ProjectViewStates' import { groupRows, sortRows } from '../../../../shared/github/project-group-sort' import { getAvailableColumns, loadHiddenColumns, saveHiddenColumns } from './columns' import { @@ -181,14 +182,7 @@ export default function ProjectViewList({ } if (table.rows.length === 0) { - return ( -
- {translate( - 'auto.components.github.project.ProjectViewList.4f57d2e0b1', - "No items match this view's filter." - )} -
- ) + return } // Why: the visible sort indicator reflects either the local override or the diff --git a/src/renderer/src/components/github-project/ProjectViewStates.test.tsx b/src/renderer/src/components/github-project/ProjectViewStates.test.tsx new file mode 100644 index 00000000000..84033b7d40b --- /dev/null +++ b/src/renderer/src/components/github-project/ProjectViewStates.test.tsx @@ -0,0 +1,28 @@ +// @vitest-environment happy-dom + +import { cleanup, render, screen } from '@testing-library/react' +import { afterEach, describe, expect, it } from 'vitest' +import { ProjectItemsEmptyState } from './ProjectViewStates' + +afterEach(cleanup) + +const FILTERED_COPY = "No items match this view's filter." +const UNFILTERED_COPY = 'This view has no items yet.' +const TRANSIENCE_HINT = 'Recently added items can take a while to appear.' + +describe('ProjectItemsEmptyState', () => { + it('blames the filter only when the view actually has one', () => { + render() + expect(screen.getByText(FILTERED_COPY)).toBeTruthy() + expect(screen.queryByText(UNFILTERED_COPY)).toBeNull() + }) + + // #12648: an unfiltered board that momentarily reads back empty must not be + // reported as a filter miss — that reads as data loss. + it.each(['', ' ', '\n\t'])('reports an unfiltered view as empty for filter %j', (filter) => { + render() + expect(screen.getByText(UNFILTERED_COPY)).toBeTruthy() + expect(screen.getByText(TRANSIENCE_HINT)).toBeTruthy() + expect(screen.queryByText(FILTERED_COPY)).toBeNull() + }) +}) diff --git a/src/renderer/src/components/github-project/ProjectViewStates.tsx b/src/renderer/src/components/github-project/ProjectViewStates.tsx index e3184878851..d2cb13bbfb4 100644 --- a/src/renderer/src/components/github-project/ProjectViewStates.tsx +++ b/src/renderer/src/components/github-project/ProjectViewStates.tsx @@ -225,3 +225,41 @@ export function ProjectTableSkeleton(): React.JSX.Element { ) } + +/** + * Empty result for a project view, worded from the view's own filter. + * + * Why: an unfiltered view has no filter to blame, so "no items match this + * view's filter" reads as data loss when a freshly populated board momentarily + * comes back empty (#12648). `ProjectV2.items(query:)` defaults to `""`, so + * there is no non-search request shape to fall back to — the honest remedy is + * to name the state correctly and say the emptiness may be transient. + */ +export function ProjectItemsEmptyState({ filter }: { filter: string }): React.JSX.Element { + if (filter.trim().length > 0) { + return ( +
+ {translate( + 'auto.components.github.project.ProjectViewList.4f57d2e0b1', + "No items match this view's filter." + )} +
+ ) + } + return ( +
+ + {translate( + 'auto.components.github.project.ProjectViewStates.3b9c1d5e47', + 'This view has no items yet.' + )} + + + {translate( + 'auto.components.github.project.ProjectViewStates.7e4a2f80c6', + 'Recently added items can take a while to appear.' + )} + +
+ ) +} diff --git a/src/renderer/src/i18n/locales/en.json b/src/renderer/src/i18n/locales/en.json index 94ebfc81af8..81700b22ff3 100644 --- a/src/renderer/src/i18n/locales/en.json +++ b/src/renderer/src/i18n/locales/en.json @@ -2584,7 +2584,9 @@ }, "ProjectViewStates": { "ac83c45672": "Switch to a Table or Roadmap view to work with this project in Orca.", - "e4cc8b14f2": "Orca renders table and roadmap project views. This view uses a layout it cannot render yet." + "e4cc8b14f2": "Orca renders table and roadmap project views. This view uses a layout it cannot render yet.", + "3b9c1d5e47": "This view has no items yet.", + "7e4a2f80c6": "Recently added items can take a while to appear." } }, "GitHubMarkdownComposer": { diff --git a/src/renderer/src/i18n/locales/es.json b/src/renderer/src/i18n/locales/es.json index 29ddcca9bb0..61c3f812f5f 100644 --- a/src/renderer/src/i18n/locales/es.json +++ b/src/renderer/src/i18n/locales/es.json @@ -2218,6 +2218,10 @@ "7c302f8174": "Sin título" } } + }, + "ProjectViewStates": { + "3b9c1d5e47": "Esta vista aún no tiene elementos.", + "7e4a2f80c6": "Los elementos añadidos recientemente pueden tardar un poco en aparecer." } }, "GitHubMarkdownComposer": { diff --git a/src/renderer/src/i18n/locales/fr.json b/src/renderer/src/i18n/locales/fr.json index 35bebb63736..c21e08e7a5a 100644 --- a/src/renderer/src/i18n/locales/fr.json +++ b/src/renderer/src/i18n/locales/fr.json @@ -2382,6 +2382,10 @@ "7c302f8174": "Sans titre" } } + }, + "ProjectViewStates": { + "3b9c1d5e47": "Cette vue ne contient encore aucun élément.", + "7e4a2f80c6": "Les éléments ajoutés récemment peuvent mettre un moment à apparaître." } }, "GitHubMarkdownComposer": { diff --git a/src/renderer/src/i18n/locales/ja.json b/src/renderer/src/i18n/locales/ja.json index 02bfa9a9eaf..422e2b39fbc 100644 --- a/src/renderer/src/i18n/locales/ja.json +++ b/src/renderer/src/i18n/locales/ja.json @@ -2218,6 +2218,10 @@ "7c302f8174": "無題" } } + }, + "ProjectViewStates": { + "3b9c1d5e47": "このビューにはまだ項目がありません。", + "7e4a2f80c6": "最近追加した項目は、表示されるまで少し時間がかかることがあります。" } }, "GitHubMarkdownComposer": { diff --git a/src/renderer/src/i18n/locales/ko.json b/src/renderer/src/i18n/locales/ko.json index 1b87a3d3d37..45d2d30a225 100644 --- a/src/renderer/src/i18n/locales/ko.json +++ b/src/renderer/src/i18n/locales/ko.json @@ -2223,6 +2223,10 @@ "7c302f8174": "제목 없음" } } + }, + "ProjectViewStates": { + "3b9c1d5e47": "이 보기에는 아직 항목이 없습니다.", + "7e4a2f80c6": "최근에 추가한 항목은 표시되기까지 시간이 걸릴 수 있습니다." } }, "GitHubMarkdownComposer": { diff --git a/src/renderer/src/i18n/locales/zh.json b/src/renderer/src/i18n/locales/zh.json index bb8ecf5ac76..f64188d7201 100644 --- a/src/renderer/src/i18n/locales/zh.json +++ b/src/renderer/src/i18n/locales/zh.json @@ -2221,6 +2221,10 @@ "7c302f8174": "无标题" } } + }, + "ProjectViewStates": { + "3b9c1d5e47": "此视图暂无任何项目。", + "7e4a2f80c6": "最近添加的项目可能需要一段时间才会显示。" } }, "GitHubMarkdownComposer": { diff --git a/src/shared/github/project-types.ts b/src/shared/github/project-types.ts index 0d33dc5d976..1fcbc9e5d33 100644 --- a/src/shared/github/project-types.ts +++ b/src/shared/github/project-types.ts @@ -81,9 +81,10 @@ export type GitHubProjectView = { number: number name: string layout: GitHubProjectViewLayout - /** Normalized to '' when GitHub returns null. Why: passing null through as - * `$q` in the items query would change the query shape between filtered - * and unfiltered views; the empty string keeps the GraphQL shape stable. */ + /** Normalized to '' when GitHub returns null. `ProjectV2.items(query:)` is + * declared `String = ""`, so sending '' and omitting the argument are the + * same request — there is no non-search item field to fall back to. '' is + * therefore only a UI signal: it means "this view is unfiltered". */ filter: string fields: GitHubProjectField[] groupByFields: GitHubProjectField[] From 170dbdb8748af31d0472472b0587734baa2ca0ba Mon Sep 17 00:00:00 2001 From: manuaudio Date: Mon, 14 Sep 2026 04:44:53 -0400 Subject: [PATCH 04/12] fix(ai-vault): ignore non-absolute env overrides for agent scan roots (#13118) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Six scan roots took a directory from an environment variable and used it verbatim. A relative value is resolved by whichever Orca process reads it — main sits at `/` when Finder-launched, the terminal daemon chdirs itself to the user data dir, the AI Vault service inherits main's cwd — so one value names a different directory in each, and walkSessionFiles walks it with no depth cap, no entry cap and no time budget, about once a minute per the session-list cache TTL. The agent CLIs do accept a relative home (verified against real Grok 1.0.30: `GROK_HOME=myhome grok du` creates `/myhome`), but they resolve it against their own per-terminal cwd, which no Orca reader shares. Falling back to the default home is therefore not a lost configuration — it replaces an unbounded walk of an arbitrary tree with a bounded read of a known one, and matches what readGrokHomeEnvelope, skill-provider normalizedRoot and absoluteConfiguredDir already do with the same values. Add resolveAbsoluteDirOverride and apply it to CODEX_HOME, COPILOT_HOME, OPENCLAW_STATE_DIR, DEVIN_HOME, KIMI_CODE_HOME and GROK_HOME. It takes an explicit platform so the Windows shapes are provable from a POSIX CI box: `C:\...`, `C:/...` and UNC roots are kept, while the drive-relative `C:foo` and bare `C:` fall back. Tilde expansion stays out of it — Grok creates a literal `~` directory rather than expanding one — so absoluteConfiguredDir keeps its own Pi/Prime-specific expansion and delegates the absolute check. isAbsolute is syntactic only, so `/..` still collapses to `/`. That is fine for read-only discovery; these roots never gate renderer-supplied paths. Tests assert at the call sites, not just on the helper: the four session-scanner-agent-sources roots are module-level consts evaluated at import time, so they are exercised through AI_VAULT_AGENT_SOURCES with vi.stubEnv plus vi.resetModules. Reverting any one of the six call sites fails them (11-33 cases each). Closes #13082 Co-authored-by: Claude Opus 5 (1M context) --- ...ssion-scanner-agent-root-overrides.test.ts | 117 ++++++++++++++++++ .../ai-vault/session-scanner-agent-sources.ts | 15 ++- .../ai-vault/session-scanner-kimi-paths.ts | 3 +- src/main/ai-vault/session-scanner-values.ts | 13 +- src/shared/absolute-dir-override.test.ts | 62 ++++++++++ src/shared/absolute-dir-override.ts | 19 +++ src/shared/grok-session-paths.test.ts | 17 +++ src/shared/grok-session-paths.ts | 4 +- 8 files changed, 237 insertions(+), 13 deletions(-) create mode 100644 src/main/ai-vault/session-scanner-agent-root-overrides.test.ts create mode 100644 src/shared/absolute-dir-override.test.ts create mode 100644 src/shared/absolute-dir-override.ts diff --git a/src/main/ai-vault/session-scanner-agent-root-overrides.test.ts b/src/main/ai-vault/session-scanner-agent-root-overrides.test.ts new file mode 100644 index 00000000000..a75a437611a --- /dev/null +++ b/src/main/ai-vault/session-scanner-agent-root-overrides.test.ts @@ -0,0 +1,117 @@ +import { homedir } from 'node:os' +import { join } from 'node:path' +import { afterEach, describe, expect, it, vi } from 'vitest' +import type { AiVaultScanOptions } from './session-scanner-types' + +/** + * The six env-derived scan roots must ignore a non-absolute value (#13082). + * + * These assert at the *call sites*, not on the shared helper: four of the roots are module-level + * consts evaluated at import time, so a helper that exists but is no longer wired into one of them + * is exactly the regression a helper-only test cannot see. + */ + +const NO_OPTIONS: AiVaultScanOptions = {} +const NO_WSL: readonly string[] = [] + +async function rootDirsFor( + agent: 'codex' | 'copilot' | 'devin' | 'openclaw' | 'kimi' | 'grok', + env: Record +): Promise { + vi.resetModules() + for (const [key, value] of Object.entries(env)) { + vi.stubEnv(key, value) + } + const sources = await import('./session-scanner-agent-sources.js') + const source = sources.AI_VAULT_AGENT_SOURCES[agent] + if (!source) { + throw new Error(`no source table entry for ${agent}`) + } + return source.rootDirs(NO_OPTIONS, NO_WSL) +} + +// Every shape a relative value can take, including the two Windows drive-relative ones. +const RELATIVE_VALUES = ['.', '..', 'rel/path', '~/sessions', 'C:foo', 'C:'] as const + +const CASES = [ + { + agent: 'codex', + envVar: 'CODEX_HOME', + absolute: '/srv/codex', + absoluteRoot: join('/srv/codex', 'sessions'), + defaultRoot: () => join(homedir(), '.codex', 'sessions') + }, + { + agent: 'copilot', + envVar: 'COPILOT_HOME', + absolute: '/srv/copilot', + absoluteRoot: join('/srv/copilot', 'session-state'), + defaultRoot: () => join(homedir(), '.copilot', 'session-state') + }, + { + agent: 'devin', + envVar: 'DEVIN_HOME', + absolute: '/srv/devin', + absoluteRoot: join('/srv/devin', 'transcripts'), + defaultRoot: () => join(homedir(), '.local', 'share', 'devin', 'cli', 'transcripts') + }, + { + agent: 'openclaw', + envVar: 'OPENCLAW_STATE_DIR', + absolute: '/srv/openclaw', + absoluteRoot: join('/srv/openclaw', 'agents'), + defaultRoot: () => join(homedir(), '.openclaw', 'agents') + }, + { + agent: 'kimi', + envVar: 'KIMI_CODE_HOME', + absolute: '/srv/kimi', + absoluteRoot: join('/srv/kimi', 'sessions'), + defaultRoot: () => join(homedir(), '.kimi-code', 'sessions') + }, + { + agent: 'grok', + envVar: 'GROK_HOME', + absolute: '/srv/grok', + absoluteRoot: join('/srv/grok', 'sessions'), + defaultRoot: () => join(homedir(), '.grok', 'sessions') + } +] as const + +describe('agent scan roots from environment overrides', () => { + afterEach(() => { + vi.unstubAllEnvs() + vi.resetModules() + }) + + for (const testCase of CASES) { + describe(testCase.envVar, () => { + it('uses an absolute override', async () => { + const roots = await rootDirsFor(testCase.agent, { [testCase.envVar]: testCase.absolute }) + expect(roots[0]).toBe(testCase.absoluteRoot) + }) + + it('tolerates whitespace around an absolute override', async () => { + const roots = await rootDirsFor(testCase.agent, { + [testCase.envVar]: ` ${testCase.absolute} ` + }) + expect(roots[0]).toBe(testCase.absoluteRoot) + }) + + it.each(RELATIVE_VALUES)('falls back to the default root for %j', async (value) => { + const roots = await rootDirsFor(testCase.agent, { [testCase.envVar]: value }) + expect(roots[0]).toBe(testCase.defaultRoot()) + }) + + // A relative root is the actual #13082 failure: it resolves against whichever Orca process + // reads it, so the walk starts somewhere arbitrary and has no depth, entry or time cap. + it.each(RELATIVE_VALUES)('never yields a relative root for %j', async (value) => { + const roots = await rootDirsFor(testCase.agent, { [testCase.envVar]: value }) + for (const root of roots) { + expect(root).toBe(join(root)) + expect(root.startsWith('/') || /^[A-Za-z]:[\\/]/.test(root)).toBe(true) + } + }) + }) + } +}) diff --git a/src/main/ai-vault/session-scanner-agent-sources.ts b/src/main/ai-vault/session-scanner-agent-sources.ts index 957d8d680a6..ff3abaddae9 100644 --- a/src/main/ai-vault/session-scanner-agent-sources.ts +++ b/src/main/ai-vault/session-scanner-agent-sources.ts @@ -1,5 +1,6 @@ import { homedir } from 'node:os' import { basename, dirname, extname, join, relative } from 'node:path' +import { resolveAbsoluteDirOverride } from '../../shared/absolute-dir-override' import type { AiVaultAgent } from '../../shared/ai-vault-types' import type { AiVaultDeletableAgent } from '../../shared/ai-vault-session-deletion' import { resolveGrokSessionsDir } from '../../shared/grok-session-paths' @@ -18,18 +19,21 @@ import { normalizeAgentSessionsDir, primeAgentSessionsDirFromEnv } from './sessi export const DEFAULT_CODEX_HOME_DIR = join(homedir(), '.codex') const CODEX_SESSIONS_DIR = join( - process.env.CODEX_HOME?.trim() || DEFAULT_CODEX_HOME_DIR, + resolveAbsoluteDirOverride(process.env.CODEX_HOME, DEFAULT_CODEX_HOME_DIR), 'sessions' ) const GEMINI_SESSIONS_DIR = join(homedir(), '.gemini', 'tmp') const COPILOT_SESSIONS_DIR = join( - process.env.COPILOT_HOME?.trim() || join(homedir(), '.copilot'), + resolveAbsoluteDirOverride(process.env.COPILOT_HOME, join(homedir(), '.copilot')), 'session-state' ) const CURSOR_PROJECTS_DIR = join(homedir(), '.cursor', 'projects') const HERMES_SESSIONS_DIR = join(homedir(), '.hermes', 'sessions') const ROVO_SESSIONS_DIR = join(homedir(), '.rovodev', 'sessions') -const OPENCLAW_STATE_DIR = process.env.OPENCLAW_STATE_DIR?.trim() || join(homedir(), '.openclaw') +const OPENCLAW_STATE_DIR = resolveAbsoluteDirOverride( + process.env.OPENCLAW_STATE_DIR, + join(homedir(), '.openclaw') +) const PI_SESSIONS_DIR = normalizeAgentSessionsDir( process.env.PI_CODING_AGENT_DIR?.trim() || join(homedir(), '.pi', 'agent', 'sessions'), '.pi' @@ -40,7 +44,10 @@ const PI_SESSIONS_DIR = normalizeAgentSessionsDir( const PRIME_AGENT_SESSIONS_DIR = primeAgentSessionsDirFromEnv() // Why: Devin ATIF transcripts are stored under /transcripts. const DEVIN_TRANSCRIPTS_DIR = join( - process.env.DEVIN_HOME?.trim() || join(homedir(), '.local', 'share', 'devin', 'cli'), + resolveAbsoluteDirOverride( + process.env.DEVIN_HOME, + join(homedir(), '.local', 'share', 'devin', 'cli') + ), 'transcripts' ) const DROID_SESSIONS_DIR = join(homedir(), '.factory', 'sessions') diff --git a/src/main/ai-vault/session-scanner-kimi-paths.ts b/src/main/ai-vault/session-scanner-kimi-paths.ts index 590e4aee814..d55061eac68 100644 --- a/src/main/ai-vault/session-scanner-kimi-paths.ts +++ b/src/main/ai-vault/session-scanner-kimi-paths.ts @@ -1,6 +1,7 @@ import { homedir } from 'node:os' import { basename, dirname, join } from 'node:path' import { createInterface } from 'node:readline' +import { resolveAbsoluteDirOverride } from '../../shared/absolute-dir-override' import { openTranscriptReadStream, wslGatedStat } from '../native-chat/wsl-transcript-fs-access' import { WslTranscriptFsError } from '../native-chat/wsl-transcript-fs-gate' import { asRecord, extractString } from './session-scanner-values' @@ -18,7 +19,7 @@ export function resolveKimiSessionsDir(override?: string): string { if (override?.trim()) { return override.trim() } - const home = process.env.KIMI_CODE_HOME?.trim() || join(homedir(), '.kimi-code') + const home = resolveAbsoluteDirOverride(process.env.KIMI_CODE_HOME, join(homedir(), '.kimi-code')) return join(home, 'sessions') } diff --git a/src/main/ai-vault/session-scanner-values.ts b/src/main/ai-vault/session-scanner-values.ts index f7d62611adb..a2f3b633be5 100644 --- a/src/main/ai-vault/session-scanner-values.ts +++ b/src/main/ai-vault/session-scanner-values.ts @@ -1,5 +1,6 @@ import { homedir } from 'node:os' -import { basename, dirname, isAbsolute, join } from 'node:path' +import { basename, dirname, join } from 'node:path' +import { resolveAbsoluteDirOverride } from '../../shared/absolute-dir-override' import { wslGatedReadFile } from '../native-chat/wsl-transcript-fs-access' import { WslTranscriptFsError } from '../native-chat/wsl-transcript-fs-gate' import { asRecord } from './session-scanner-record-value' @@ -165,14 +166,14 @@ function defaultPrimeAgentSessionsDir(): string { return join(homedir(), '.prime', 'agent', 'sessions') } -// Why: the CLI expands a leading `~` itself, so a value set outside a shell -// (config file, plist, quoted assignment) still resolves against the home dir. -// Returns null for anything that is not an absolute root, since a relative value -// ('', '.', '..', 'sessions') would resolve against the main-process cwd. +// Why: the Pi/Prime CLIs expand a leading `~` themselves, so a value set outside a +// shell (config file, plist, quoted assignment) still resolves against the home dir. +// That expansion is per-CLI and deliberately not in the shared absolute check — Grok, +// for one, creates a literal `~` directory instead. function absoluteConfiguredDir(rawValue: string): string | null { const expanded = rawValue === '~' ? homedir() : rawValue.replace(/^~(?=[\\/])/, homedir()) const normalized = expanded.replace(/[\\/]+$/, '') - return normalized && isAbsolute(normalized) ? normalized : null + return resolveAbsoluteDirOverride(normalized, '') || null } // Prime Agent takes PRIME_AGENT_CODING_AGENT_DIR verbatim as its agent config dir diff --git a/src/shared/absolute-dir-override.test.ts b/src/shared/absolute-dir-override.test.ts new file mode 100644 index 00000000000..26b2049a673 --- /dev/null +++ b/src/shared/absolute-dir-override.test.ts @@ -0,0 +1,62 @@ +import { describe, expect, it } from 'vitest' +import { resolveAbsoluteDirOverride } from './absolute-dir-override' + +const FALLBACK = '/home/user/.agent' + +describe('resolveAbsoluteDirOverride', () => { + it('keeps an absolute override, trimming first', () => { + expect(resolveAbsoluteDirOverride('/srv/sessions', FALLBACK, 'linux')).toBe('/srv/sessions') + expect(resolveAbsoluteDirOverride(' /srv/sessions ', FALLBACK, 'linux')).toBe('/srv/sessions') + }) + + it.each([ + ['undefined', undefined], + ['null', null], + ['empty', ''], + ['whitespace only', ' '] + ])('falls back for %s', (_label, value) => { + expect(resolveAbsoluteDirOverride(value, FALLBACK, 'linux')).toBe(FALLBACK) + expect(resolveAbsoluteDirOverride(value, FALLBACK, 'win32')).toBe(FALLBACK) + }) + + it.each([ + ['a bare dot', '.'], + ['a parent reference', '..'], + ['a relative path', 'rel/path'], + // Grok 1.0.30 does not expand `~` — `GROK_HOME=~/x` makes it create a literal `~` dir under + // its own cwd — so expanding one here would point Orca at a directory no agent writes to. + ['an unexpanded tilde', '~/sessions'], + // Drive-*relative*: both resolve against that drive's current directory, not its root. + ['a drive-relative path', 'C:foo'], + ['a bare drive letter', 'C:'] + ])('falls back for %s on every platform', (_label, value) => { + expect(resolveAbsoluteDirOverride(value, FALLBACK, 'linux')).toBe(FALLBACK) + expect(resolveAbsoluteDirOverride(value, FALLBACK, 'darwin')).toBe(FALLBACK) + expect(resolveAbsoluteDirOverride(value, FALLBACK, 'win32')).toBe(FALLBACK) + }) + + // Why: the check is platform-bound, so a POSIX CI box would silently "reject" every real + // Windows root if it ran the POSIX predicate. These pin the Windows shapes users actually set. + it.each([ + ['a drive-rooted path', 'C:\\Users\\ada\\.grok'], + ['a forward-slash drive root', 'C:/Users/ada/.grok'], + ['a UNC share', '\\\\server\\share\\grok'], + // Rooted but drive-relative; `path.resolve` still bounds it to the current drive. + ['a drive-current-root path', '\\grok'] + ])('keeps %s on Windows', (_label, value) => { + expect(resolveAbsoluteDirOverride(value, FALLBACK, 'win32')).toBe(value) + }) + + it.each([['C:\\Users\\ada\\.grok'], ['\\\\server\\share\\grok'], ['\\grok']])( + 'falls back for the Windows path %j on POSIX', + (value) => { + expect(resolveAbsoluteDirOverride(value, FALLBACK, 'linux')).toBe(FALLBACK) + } + ) + + it('defaults to the host platform', () => { + const rooted = process.platform === 'win32' ? 'C:\\srv\\sessions' : '/srv/sessions' + expect(resolveAbsoluteDirOverride(rooted, FALLBACK)).toBe(rooted) + expect(resolveAbsoluteDirOverride('rel/path', FALLBACK)).toBe(FALLBACK) + }) +}) diff --git a/src/shared/absolute-dir-override.ts b/src/shared/absolute-dir-override.ts new file mode 100644 index 00000000000..a67f8ea0bde --- /dev/null +++ b/src/shared/absolute-dir-override.ts @@ -0,0 +1,19 @@ +import { posix, win32 } from 'node:path' + +/** + * An env-provided directory override, kept only when absolute (#13082). + * + * A relative value resolves against the *reading* process's cwd — `/` for a Finder-launched app, + * the user data dir for the terminal daemon — never against the cwd the agent CLI used to write + * it, so it names a different directory in every Orca process. Syntactic only: `/..` passes and + * collapses to `/`, so this is not a containment check. + */ +export function resolveAbsoluteDirOverride( + value: string | undefined | null, + fallback: string, + platform: NodeJS.Platform = process.platform +): string { + const trimmed = value?.trim() ?? '' + const isAbsolutePath = platform === 'win32' ? win32.isAbsolute : posix.isAbsolute + return trimmed && isAbsolutePath(trimmed) ? trimmed : fallback +} diff --git a/src/shared/grok-session-paths.test.ts b/src/shared/grok-session-paths.test.ts index 90d4cf69e1e..78b0a1fd52c 100644 --- a/src/shared/grok-session-paths.test.ts +++ b/src/shared/grok-session-paths.test.ts @@ -57,6 +57,23 @@ describe('grok-session-paths', () => { expect(resolveGrokHomeDir({}, '/home/ada')).toBe(join('/home/ada', '.grok')) }) + // Why: Grok itself accepts a relative GROK_HOME, but resolves it against *its own* cwd — a + // different directory per terminal. Orca's readers (main at `/` when Finder-launched, the + // daemon at the user data dir, the scan service inheriting main) would each resolve the same + // value somewhere else and walk it with no depth, entry or time cap (#13082). `~/…` is in the + // list because Grok 1.0.30 does not expand a tilde — it creates a literal `~` dir under its cwd. + it.each(['.', '..', 'rel/path', '~/grok', '~', 'C:foo', 'C:'])( + 'ignores the non-absolute GROK_HOME %j', + (relativeHome) => { + expect(resolveGrokHomeDir({ GROK_HOME: relativeHome }, '/home/ada')).toBe( + join('/home/ada', '.grok') + ) + expect(resolveGrokSessionsDir({ GROK_HOME: relativeHome }, '/home/ada')).toBe( + join('/home/ada', '.grok', 'sessions') + ) + } + ) + it('refuses to invent encodeURIComponent names longer than 255 bytes', () => { const longCwd = `/${'a'.repeat(200)}/${'b'.repeat(200)}` expect(Buffer.byteLength(encodeURIComponent(longCwd), 'utf8')).toBeGreaterThan( diff --git a/src/shared/grok-session-paths.ts b/src/shared/grok-session-paths.ts index e4d59c61f09..b40db0174b4 100644 --- a/src/shared/grok-session-paths.ts +++ b/src/shared/grok-session-paths.ts @@ -2,6 +2,7 @@ import { lstatSync } from 'node:fs' import { lstat, opendir } from 'node:fs/promises' import { homedir } from 'node:os' import { basename, dirname, isAbsolute, join, relative, resolve, sep } from 'node:path' +import { resolveAbsoluteDirOverride } from './absolute-dir-override' import { GrokSessionPathLookupQueue, type GrokSessionPathScanner @@ -41,8 +42,7 @@ export function resolveGrokHomeDir( env: GrokSessionPathEnv = process.env, homeDir: string = homedir() ): string { - const fromEnv = env.GROK_HOME?.trim() - return fromEnv || join(homeDir, '.grok') + return resolveAbsoluteDirOverride(env.GROK_HOME, join(homeDir, '.grok')) } export function resolveGrokSessionsDir( From 01f8aa8d96d0a46331664166cd2227c2586db360 Mon Sep 17 00:00:00 2001 From: Bjorn Runaker <220541+bjornrun@users.noreply.github.com> Date: Mon, 14 Sep 2026 10:45:00 +0200 Subject: [PATCH 05/12] fix(grok): stop SessionStart orca-status hook hanging for 10s (#20090) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(grok): stop SessionStart orca-status hook hanging for 10s Grok writes one JSON hook payload and waits for the process to exit without closing stdin. The POSIX hook used `cat`, which waits for EOF, so SessionStart deadlocked until Grok's 10s timeout: session_start hook (global/orca-status) failed, ignored: timed out after 10000ms Read one JSON object with raw_decode instead; return as soon as the object is complete. Fall back to cat when Python is missing. * fix(grok): decode the hook payload incrementally instead of per chunk The JSON stdin reader strict-decoded the whole accumulated buffer after every read and caught only json.JSONDecodeError. A multi-byte character split across two os.read calls therefore raised UnicodeDecodeError, which is a ValueError but not a JSONDecodeError, so the interpreter died — after consuming stdin. The `python3 || python || cat` chain then handed the next reader a truncated stream, and `cat` blocked on a pipe the caller never closes, reinstating the exact 10s SessionStart timeout this reader exists to avoid. Measured: a CJK+emoji payload written byte by byte hung until it was killed; a 200KB payload split mid-character arrived as 4 bytes. Hold the decoder across reads, treat any ValueError as "not complete yet", and guard the whole program so a non-zero exit implies stdin was never read — only then is the `||` fallback safe. Emit the object's own text rather than re-serialising it, which was rewriting non-ASCII as \uXXXX. Skip leading whitespace, which raw_decode does not. Separate the first-byte wait (5s) from the idle wait (1.5s) so a writer that is merely late is no longer dropped. Also unset a HOME that does not exist before spawning the interpreter: macOS resolves /usr/bin/python3 through an Xcode stub that re-runs its whole tool lookup without a reachable cache, costing 6.6s per spawn and overrunning Grok's budget on its own. This is what made the existing large-payload and empty-PATH lifecycle cases fail. The Python program now lives in a shell variable instead of being inlined twice, which halves the generated script and keeps it readable. --------- Co-authored-by: Neil --- src/main/agent-hooks/hook-stdin-contract.ts | 100 ++++++- .../managed-hook-stdin-lifecycle.test.ts | 16 +- .../posix-hook-json-stdin-reader.test.ts | 262 ++++++++++++++++++ src/main/grok/grok-hook-script.ts | 5 +- src/main/grok/grok-hook-stdin-no-eof.test.ts | 92 ++++++ src/main/grok/hook-service.test.ts | 15 +- 6 files changed, 483 insertions(+), 7 deletions(-) create mode 100644 src/main/agent-hooks/posix-hook-json-stdin-reader.test.ts create mode 100644 src/main/grok/grok-hook-stdin-no-eof.test.ts diff --git a/src/main/agent-hooks/hook-stdin-contract.ts b/src/main/agent-hooks/hook-stdin-contract.ts index de77b2f3e9f..eeec395b578 100644 --- a/src/main/agent-hooks/hook-stdin-contract.ts +++ b/src/main/agent-hooks/hook-stdin-contract.ts @@ -7,15 +7,111 @@ export type PosixHookEmptyPayloadPolicy = 'exit' | 'empty-object' export const POSIX_HOOK_STDIN_READER = '{ command -p cat 2>/dev/null || cat; }' export const POSIX_HOOK_STDIN_DRAIN_COMMAND = `${POSIX_HOOK_STDIN_READER} >/dev/null 2>&1 || :` +/** Seconds the JSON reader waits for the writer's first byte before giving up. + * Comfortably inside Grok's 10s hook timeout, and far enough above process + * startup that a loaded or remote host cannot lose a payload that is merely late. */ +export const POSIX_HOOK_JSON_STDIN_FIRST_BYTE_TIMEOUT_SECONDS = 5 +/** Seconds of silence that end a payload which never parses as JSON (the `cat` shape). */ +export const POSIX_HOOK_JSON_STDIN_IDLE_TIMEOUT_SECONDS = 1.5 + +// Why: Grok SessionStart writes one JSON object and then waits for the hook to +// exit without closing stdin, so reading to EOF deadlocks until Grok's 10s +// timeout. Return as soon as the first complete JSON value has arrived. +// +// Three invariants this script must hold, because the shell chains a second +// reader behind it and a reader that consumed bytes cannot be retried: +// 1. A non-zero exit implies stdin was never read, so the `||` fallback still +// sees the whole stream. Everything after the imports is therefore guarded. +// 2. Decoding is incremental. A multi-byte character straddling two reads must +// not raise, or a CJK/emoji payload falls through to `cat` and hangs. +// 3. The payload is emitted unchanged. Re-serialising would rewrite non-ASCII +// as \uXXXX and reorder keys behind the agent's back. +const POSIX_HOOK_JSON_STDIN_PYTHON = [ + 'import codecs, json, os, select', + 'text = ""', + 'try:', + ' decoder = codecs.getincrementaldecoder("utf-8")("replace")', + ` timeout = ${POSIX_HOOK_JSON_STDIN_FIRST_BYTE_TIMEOUT_SECONDS}.0`, + ' while 1:', + ' if not select.select([0], [], [], timeout)[0]:', + ' text += decoder.decode(b"", True)', + ' break', + ' chunk = os.read(0, 65536)', + ' if not chunk:', + ' text += decoder.decode(b"", True)', + ' break', + ` timeout = ${POSIX_HOOK_JSON_STDIN_IDLE_TIMEOUT_SECONDS}`, + ' text += decoder.decode(chunk)', + // raw_decode does not skip leading whitespace, so a padded payload would + // otherwise never complete and would wait out the idle timeout. + ' value = text.lstrip()', + ' if not value:', + ' continue', + ' try:', + ' end = json.JSONDecoder().raw_decode(value)[1]', + ' except ValueError:', + ' continue', + ' text = value[:end]', + ' break', + 'except Exception:', + ' pass', + 'try:', + // os.write skips the locale-dependent stdout encoder, which raises under + // LC_ALL=C for a non-ASCII payload. + ' data = text.encode("utf-8")', + ' written = 0', + ' while written < len(data):', + ' written += os.write(1, data[written:])', + 'except Exception:', + ' pass' +].join('\n') + +// Why a variable rather than two inline copies: the script is embedded twice in +// the reader chain, and `-c '<600 chars>'` twice is an EDR oversized-command-line +// signal as well as unreadable in the generated hook. +const POSIX_HOOK_JSON_STDIN_PYTHON_VAR = 'orca_hook_json_stdin_py' +export const POSIX_HOOK_JSON_STDIN_PRELUDE: readonly string[] = [ + `${POSIX_HOOK_JSON_STDIN_PYTHON_VAR}='${POSIX_HOOK_JSON_STDIN_PYTHON}'` +] + +const jsonStdinInterpreter = (name: string): string => + `command -p ${name} -c "$${POSIX_HOOK_JSON_STDIN_PYTHON_VAR}" 2>/dev/null` + +// Why: macOS ships /usr/bin/python3 as an Xcode stub that re-resolves the real +// interpreter on every run when it cannot reach its cache under $HOME. A HOME +// that does not exist costs ~6.6s per spawn there, which alone overruns Grok's +// 10s hook budget. Unsetting it brings that back to ~95ms and is what a +// home-less process sees anyway. Safe to mutate: the reader only ever runs +// inside the `payload=$(...)` subshell, so the hook's own HOME is untouched. +const POSIX_HOOK_JSON_STDIN_HOME_GUARD = '{ [ -d "${HOME:-}" ] || unset HOME; }' + +// Why `python` too: the script avoids py3-only syntax (verified on 2.7) so a host +// that only ships `python` does not drop straight to the `cat` hang. +export const POSIX_HOOK_JSON_STDIN_READER = `${POSIX_HOOK_JSON_STDIN_HOME_GUARD}; ${jsonStdinInterpreter('python3')} || ${jsonStdinInterpreter('python')} || ${POSIX_HOOK_STDIN_READER}` + +/** Optional reader override for an agent whose caller keeps stdin open after the payload. + * `prelude` must be emitted before the capture line; keep them together. */ +export type PosixHookStdinReader = { + readonly reader: string + readonly prelude: readonly string[] +} + +export const POSIX_HOOK_JSON_STDIN: PosixHookStdinReader = { + reader: POSIX_HOOK_JSON_STDIN_READER, + prelude: POSIX_HOOK_JSON_STDIN_PRELUDE +} + // Why: every POSIX hook must own stdin before any no-op exit; sharing this // prelude prevents agent templates from inventing different drain semantics. export function buildPosixHookPayloadCapture( - emptyPayloadPolicy: PosixHookEmptyPayloadPolicy = 'exit' + emptyPayloadPolicy: PosixHookEmptyPayloadPolicy = 'exit', + stdinReader: PosixHookStdinReader = { reader: POSIX_HOOK_STDIN_READER, prelude: [] } ): string[] { const emptyPayloadLines = emptyPayloadPolicy === 'empty-object' ? [" payload='{}'"] : [' exit 0'] return [ - `payload=$(${POSIX_HOOK_STDIN_READER})`, + ...stdinReader.prelude, + `payload=$(${stdinReader.reader})`, 'if [ -z "$payload" ]; then', ...emptyPayloadLines, 'fi' diff --git a/src/main/agent-hooks/managed-hook-stdin-lifecycle.test.ts b/src/main/agent-hooks/managed-hook-stdin-lifecycle.test.ts index dea4545ad11..cd6c336e751 100644 --- a/src/main/agent-hooks/managed-hook-stdin-lifecycle.test.ts +++ b/src/main/agent-hooks/managed-hook-stdin-lifecycle.test.ts @@ -64,6 +64,8 @@ import { KimiHookService } from '../kimi/hook-service' import { openClaudeHookService } from '../openclaude/hook-service' import { wrapPosixHookCommand, wrapWindowsHookCommand } from './installer-utils' import { + POSIX_HOOK_JSON_STDIN_PRELUDE, + POSIX_HOOK_JSON_STDIN_READER, POSIX_HOOK_STDIN_READER, WINDOWS_POWERSHELL_HOOK_ENVIRONMENT_GUARD } from './hook-stdin-contract' @@ -561,10 +563,22 @@ describe.skipIf(process.platform === 'win32')('managed hook stdin lifecycle', () it('captures stdin before every possible whole-script success exit', async () => { const scripts = await generatePosixScripts() for (const [agent, script] of scripts) { - const captureIndex = script.indexOf(`payload=$(${POSIX_HOOK_STDIN_READER})`) + const captureIndex = Math.max( + script.indexOf(`payload=$(${POSIX_HOOK_STDIN_READER})`), + script.indexOf(`payload=$(${POSIX_HOOK_JSON_STDIN_READER})`) + ) const firstExitIndex = script.indexOf('exit 0') expect(captureIndex, `${agent} payload capture`).toBeGreaterThanOrEqual(0) expect(firstExitIndex, `${agent} first success exit`).toBeGreaterThan(captureIndex) + // Why: the JSON reader dereferences a variable the prelude sets, so a script + // that carries the reader must carry its prelude above the capture line. + if (script.includes(POSIX_HOOK_JSON_STDIN_READER)) { + const prelude = POSIX_HOOK_JSON_STDIN_PRELUDE.join('\n') + expect(script.indexOf(prelude), `${agent} JSON reader prelude`).toBeGreaterThanOrEqual(0) + expect(script.indexOf(prelude), `${agent} prelude before capture`).toBeLessThan( + captureIndex + ) + } } }) diff --git a/src/main/agent-hooks/posix-hook-json-stdin-reader.test.ts b/src/main/agent-hooks/posix-hook-json-stdin-reader.test.ts new file mode 100644 index 00000000000..587346ec55e --- /dev/null +++ b/src/main/agent-hooks/posix-hook-json-stdin-reader.test.ts @@ -0,0 +1,262 @@ +// Why an executable suite rather than shape assertions: the reader is a Python +// program embedded in a shell string, so only running it catches a decode that +// raises on a chunk boundary — the shape looked correct while a CJK payload +// crashed the interpreter and fell through to the `cat` hang it exists to avoid. +import { execFile, spawn } from 'node:child_process' +import { promisify } from 'node:util' +import { describe, expect, it } from 'vitest' +import { + buildPosixHookPayloadCapture, + POSIX_HOOK_JSON_STDIN, + POSIX_HOOK_JSON_STDIN_FIRST_BYTE_TIMEOUT_SECONDS, + POSIX_HOOK_JSON_STDIN_PRELUDE, + POSIX_HOOK_JSON_STDIN_IDLE_TIMEOUT_SECONDS +} from './hook-stdin-contract' + +const execFileAsync = promisify(execFile) + +/** The reader plus a line that prints what it captured, so the payload is observable. */ +const READER_SCRIPT = [ + ...buildPosixHookPayloadCapture('empty-object', POSIX_HOOK_JSON_STDIN).slice(0, -3), + 'printf %s "$payload"' +].join('\n') + +const REPLACEMENT_CHARACTER = '�' +const KILL_AFTER_MS = 9_000 + +type ReaderRun = { + readonly exitCode: number | null + readonly stdout: string + readonly stderr: string + readonly durationMs: number + readonly timedOut: boolean +} + +/** Feeds `chunks` with `gapMs` between them. `closeStdin: false` is the Grok + * SessionStart shape: the payload is written and the pipe is left open. */ +function runReader( + chunks: readonly Buffer[], + { + gapMs = 5, + closeStdin = false, + env + }: { gapMs?: number; closeStdin?: boolean; env?: NodeJS.ProcessEnv } = {} +): Promise { + return new Promise((resolve, reject) => { + const startedAt = Date.now() + const child = spawn('/bin/sh', ['-c', READER_SCRIPT], { + stdio: ['pipe', 'pipe', 'pipe'], + env: env ?? process.env + }) + let stdout = Buffer.alloc(0) + let stderr = '' + let timedOut = false + child.stdout.on('data', (chunk: Buffer) => { + stdout = Buffer.concat([stdout, chunk]) + }) + child.stderr.on('data', (chunk: Buffer) => { + stderr += chunk.toString() + }) + // A reader that never returns leaves the writer's pipe unread; ignore the tear-down error. + child.stdin.on('error', () => {}) + const timer = setTimeout(() => { + timedOut = true + child.kill('SIGKILL') + }, KILL_AFTER_MS) + child.on('error', (error) => { + clearTimeout(timer) + reject(error) + }) + child.on('close', (exitCode) => { + clearTimeout(timer) + resolve({ + exitCode, + stdout: stdout.toString('utf8'), + stderr, + durationMs: Date.now() - startedAt, + timedOut + }) + }) + void (async () => { + for (const chunk of chunks) { + child.stdin.write(chunk) + await new Promise((resolveGap) => setTimeout(resolveGap, gapMs)) + } + if (closeStdin) { + child.stdin.end() + } + })() + }) +} + +async function resolveDefaultPathPython(): Promise { + try { + const { stdout } = await execFileAsync('/bin/sh', [ + '-c', + 'command -pv python3 || command -pv python' + ]) + return stdout.trim().length > 0 + } catch { + return false + } +} + +const hasPython = process.platform === 'win32' ? false : await resolveDefaultPathPython() + +describe('POSIX hook JSON stdin reader shape', () => { + // Why: the Python program is carried in a single-quoted shell assignment, so one + // apostrophe would end the string and splice the rest of it into the hook as code. + it('carries no single quote that would escape its shell quoting', () => { + const prelude = POSIX_HOOK_JSON_STDIN_PRELUDE.join('\n') + expect(prelude.split("'")).toHaveLength(3) + }) + + it('guards HOME before the interpreter runs', () => { + expect(POSIX_HOOK_JSON_STDIN.reader.indexOf('unset HOME')).toBeLessThan( + POSIX_HOOK_JSON_STDIN.reader.indexOf('python3') + ) + }) +}) + +describe.skipIf(process.platform === 'win32')('POSIX hook JSON stdin reader', () => { + // Why skipped rather than failed: without an interpreter the chain falls back to + // `cat`, whose read-to-EOF genuinely cannot return while the writer holds the pipe. + const itWithPython = it.skipIf(!hasPython) + + itWithPython( + 'keeps a multi-byte character intact when it is split across reads', + async () => { + const payload = '{"hook_event_name":"session_start","cwd":"/tmp/漢字","tool":"🚀"}' + // One byte per write: every multi-byte sequence therefore straddles a read. + const chunks = [...Buffer.from(`${payload}\n`, 'utf8')].map((byte) => Buffer.from([byte])) + + const result = await runReader(chunks) + + expect(result.timedOut, 'reader returned').toBe(false) + expect(result.exitCode).toBe(0) + expect(result.stdout).not.toContain(REPLACEMENT_CHARACTER) + expect(result.stdout).toBe(payload) + }, + KILL_AFTER_MS + 1_000 + ) + + // Why: the chain is `python3 || python || cat`, and a reader that died after + // consuming bytes would hand the next one a truncated stream. A non-zero exit + // must therefore imply nothing was read. + itWithPython( + 'never hands a partially consumed stream to the fallback reader', + async () => { + const payload = `{"hook_event_name":"session_start","pad":"${'p'.repeat(200_000)}","cwd":"/漢"}` + const bytes = Buffer.from(`${payload}\n`, 'utf8') + // Split inside the 3-byte sequence, with a gap long enough that the first + // read has already completed before the continuation bytes are written. + const splitAt = bytes.length - 4 + const chunks = [bytes.subarray(0, splitAt), bytes.subarray(splitAt)] + + const result = await runReader(chunks, { gapMs: 400, closeStdin: true }) + + expect(result.timedOut, 'reader returned').toBe(false) + expect(result.exitCode).toBe(0) + const parsePayload = (): unknown => JSON.parse(result.stdout) + expect(parsePayload).not.toThrow() + expect(result.stdout).toBe(payload) + }, + KILL_AFTER_MS + 1_000 + ) + + // Why: re-serialising the object would rewrite non-ASCII as \uXXXX and reorder + // keys, so the hook server would no longer see what the agent actually sent. + itWithPython( + 'emits the payload text unchanged rather than re-serialising it', + async () => { + const payload = '{"z":"日本語","a":1,"nested":{"b":[1,2]}}' + + const result = await runReader([Buffer.from(`${payload}\n`, 'utf8')]) + + expect(result.timedOut, 'reader returned').toBe(false) + expect(result.stdout).not.toContain('\\u') + expect(result.stdout).toBe(payload) + }, + KILL_AFTER_MS + 1_000 + ) + + // Why: raw_decode does not skip leading whitespace, so a padded payload would + // otherwise never complete and would sit out the idle timeout before returning. + itWithPython( + 'returns immediately for a payload preceded by whitespace', + async () => { + const payload = '{"hook_event_name":"session_start"}' + + const result = await runReader([Buffer.from(`\n ${payload}\n`, 'utf8')]) + + expect(result.timedOut, 'reader returned').toBe(false) + expect(result.stdout).toBe(payload) + expect(result.durationMs).toBeLessThan(POSIX_HOOK_JSON_STDIN_IDLE_TIMEOUT_SECONDS * 1_000) + }, + KILL_AFTER_MS + 1_000 + ) + + // Why: the first-byte wait is not the idle wait. A host that is slow to schedule + // the writer must not have its payload silently dropped. + itWithPython( + 'waits past the idle timeout for a writer that has not sent its first byte', + async () => { + const payload = '{"hook_event_name":"session_start"}' + + const result = await runReader([Buffer.alloc(0), Buffer.from(`${payload}\n`)], { + gapMs: 2_500 + }) + + expect(result.timedOut, 'reader returned').toBe(false) + expect(result.stdout).toBe(payload) + expect(result.durationMs).toBeLessThan( + POSIX_HOOK_JSON_STDIN_FIRST_BYTE_TIMEOUT_SECONDS * 1_000 + ) + }, + KILL_AFTER_MS + 1_000 + ) + + // Why: not every hook payload is JSON, and the reader replaces `cat` for Grok — + // it still has to hand back everything a closed stream contained. + itWithPython( + 'reads a non-JSON payload through to EOF', + async () => { + const result = await runReader([Buffer.from('not json at all\nsecond line\n')], { + closeStdin: true + }) + + expect(result.timedOut, 'reader returned').toBe(false) + expect(result.stdout).toBe('not json at all\nsecond line') + }, + KILL_AFTER_MS + 1_000 + ) + + // Why: macOS resolves /usr/bin/python3 through an Xcode stub that re-runs its + // whole tool lookup when it cannot reach a cache under $HOME. A HOME pointing + // nowhere cost ~6.6s per spawn, which on its own overran Grok's 10s budget. + itWithPython( + 'stays fast when HOME points at a directory that does not exist', + async () => { + const payload = '{"hook_event_name":"session_start"}' + + const result = await runReader([Buffer.from(`${payload}\n`, 'utf8')], { + env: { ...process.env, HOME: '/nonexistent/orca-hook-home' } + }) + + expect(result.timedOut, 'reader returned').toBe(false) + expect(result.stdout).toBe(payload) + expect(result.durationMs).toBeLessThan(2_000) + }, + KILL_AFTER_MS + 1_000 + ) + + itWithPython( + 'reports nothing on stderr on any of these paths', + async () => { + const result = await runReader([Buffer.from('{"a":"漢"}\n', 'utf8')]) + + expect(result.stderr).toBe('') + }, + KILL_AFTER_MS + 1_000 + ) +}) diff --git a/src/main/grok/grok-hook-script.ts b/src/main/grok/grok-hook-script.ts index 997bf7e64d4..4a9025fcfb1 100644 --- a/src/main/grok/grok-hook-script.ts +++ b/src/main/grok/grok-hook-script.ts @@ -5,7 +5,8 @@ import { } from '../agent-hooks/installer-utils' import { buildPosixHookPayloadCapture, - buildPosixHookSpoolLines + buildPosixHookSpoolLines, + POSIX_HOOK_JSON_STDIN } from '../agent-hooks/hook-stdin-contract' import { buildWindowsGrokHookScript, @@ -35,7 +36,7 @@ export function getGrokManagedScript(target: 'local' | 'posix' = 'local'): strin return [ '#!/bin/sh', - ...buildPosixHookPayloadCapture(), + ...buildPosixHookPayloadCapture('exit', POSIX_HOOK_JSON_STDIN), ...buildPosixHookSpoolLines('grok'), 'if [ -n "$ORCA_AGENT_HOOK_ENDPOINT" ] && [ -r "$ORCA_AGENT_HOOK_ENDPOINT" ]; then', ' . "$ORCA_AGENT_HOOK_ENDPOINT" 2>/dev/null || :', diff --git a/src/main/grok/grok-hook-stdin-no-eof.test.ts b/src/main/grok/grok-hook-stdin-no-eof.test.ts new file mode 100644 index 00000000000..c8b34ed3164 --- /dev/null +++ b/src/main/grok/grok-hook-stdin-no-eof.test.ts @@ -0,0 +1,92 @@ +import { spawn } from 'node:child_process' +import { mkdtempSync, rmSync, writeFileSync } from 'node:fs' +import { tmpdir } from 'node:os' +import { join } from 'node:path' +import { afterEach, describe, expect, it } from 'vitest' +import { getGrokManagedScript } from './grok-hook-script' + +// Grok's own hook timeout; the budget these cases have to stay well inside. +const GROK_HOOK_TIMEOUT_MS = 10_000 +const SESSION_START_BUDGET_MS = 1_500 + +describe.skipIf(process.platform === 'win32')('Grok POSIX hook stdin without EOF', () => { + let dir = '' + + afterEach(() => { + if (dir) { + rmSync(dir, { recursive: true, force: true }) + } + }) + + /** Writes the payload and leaves the pipe open, which is what Grok SessionStart does. */ + async function runHookWithoutEof( + chunks: readonly Buffer[] + ): Promise<{ exitCode: number | null; durationMs: number; stderr: string }> { + dir = mkdtempSync(join(tmpdir(), 'orca-grok-hook-no-eof-')) + const scriptPath = join(dir, 'grok-hook.sh') + writeFileSync(scriptPath, getGrokManagedScript('posix'), { mode: 0o755 }) + + const startedAt = Date.now() + const child = spawn('/bin/sh', [scriptPath], { + stdio: ['pipe', 'pipe', 'pipe'], + env: { + ...process.env, + ORCA_PANE_KEY: 'pane-1', + ORCA_AGENT_HOOK_PORT: '', + ORCA_AGENT_HOOK_TOKEN: '', + ORCA_AGENT_HOOK_ENDPOINT: '' + } + }) + let stderr = '' + child.stderr.on('data', (chunk: Buffer) => { + stderr += chunk.toString() + }) + child.stdin.on('error', () => {}) + + const exitCode = await new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + child.kill('SIGKILL') + reject(new Error(`hook still blocked on stdin after ${GROK_HOOK_TIMEOUT_MS}ms`)) + }, GROK_HOOK_TIMEOUT_MS) + child.on('error', (error) => { + clearTimeout(timeout) + reject(error) + }) + child.on('close', (code) => { + clearTimeout(timeout) + resolve(code) + }) + void (async () => { + for (const chunk of chunks) { + child.stdin.write(chunk) + await new Promise((resolveGap) => setTimeout(resolveGap, 5)) + } + })() + }) + + return { exitCode, durationMs: Date.now() - startedAt, stderr } + } + + it('returns after one JSON object when the caller never closes stdin (SessionStart)', async () => { + const result = await runHookWithoutEof([ + Buffer.from('{"hook_event_name":"session_start","session_id":"abc"}\n') + ]) + + expect(result.exitCode).toBe(0) + expect(result.durationMs).toBeLessThan(SESSION_START_BUDGET_MS) + }) + + // Why: a non-ASCII payload arriving in pieces used to crash the reader, which + // fell through to `cat` and reinstated the very 10s timeout this hook avoids. + it('returns just as fast when a multi-byte payload is split across writes', async () => { + const bytes = Buffer.from( + '{"hook_event_name":"session_start","cwd":"/tmp/漢字","tool":"🚀"}\n', + 'utf8' + ) + const result = await runHookWithoutEof([...bytes].map((byte) => Buffer.from([byte]))) + + expect(result.stderr).toBe('') + expect(result.exitCode).toBe(0) + expect(result.durationMs).toBeLessThan(SESSION_START_BUDGET_MS) + }, 20_000) +}) diff --git a/src/main/grok/hook-service.test.ts b/src/main/grok/hook-service.test.ts index 620966bd6ae..fe6d16a4664 100644 --- a/src/main/grok/hook-service.test.ts +++ b/src/main/grok/hook-service.test.ts @@ -29,7 +29,10 @@ vi.mock('os', async () => { import { getGrokToolEventMatcherForTests, GrokHookService } from './hook-service' import { buildWindowsGrokHookScript } from './windows-grok-hook-script' -import { POSIX_HOOK_STDIN_READER } from '../agent-hooks/hook-stdin-contract' +import { + POSIX_HOOK_JSON_STDIN_PRELUDE, + POSIX_HOOK_JSON_STDIN_READER +} from '../agent-hooks/hook-stdin-contract' const GROK_SCRIPT_FILE_NAME = process.platform === 'win32' ? 'grok-hook.cmd' : 'grok-hook.sh' const WINDOWS_POWERSHELL_LAUNCHER = @@ -298,7 +301,15 @@ describe('GrokHookService', () => { } else { // Why: payload is piped to curl via stdin (`payload@-`) so it never lands // on the curl command line (EDR oversized-command-line false positive). - expect(script).toContain(`payload=$(${POSIX_HOOK_STDIN_READER})`) + // Why the ordering: the reader chain dereferences the prelude's variable, so a + // prelude emitted after the capture would silently run `python -c ""` and + // hand back an empty payload. + const prelude = POSIX_HOOK_JSON_STDIN_PRELUDE.join('\n') + expect(script).toContain(prelude) + expect(script.indexOf(prelude)).toBeLessThan( + script.indexOf(`payload=$(${POSIX_HOOK_JSON_STDIN_READER})`) + ) + expect(script).toContain(`payload=$(${POSIX_HOOK_JSON_STDIN_READER})`) expect(script).toContain('printf \'%s\' "$payload" | curl') expect(script).toContain('--data-urlencode "payload@-"') expect(script).toContain('${#GROK_HOME}" -le 4096') From 8e26d516d859e7a27016b5ca42c2d14bafd31052 Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Mon, 14 Sep 2026 01:45:34 -0700 Subject: [PATCH 06/12] perf(browser): dispatch coordinate pointer input in process instead of one subprocess per event (#20593) --- ...t-browser-bridge-command-transport.test.ts | 4 +- .../agent-browser-bridge-mouse-commands.ts | 54 +-- .../browser/agent-browser-bridge-mouse.ts | 36 +- .../agent-browser-bridge-pointer-commands.ts | 198 ++++++++ ...agent-browser-bridge-pointer-input.test.ts | 446 ++++++++++++++++++ src/main/browser/cdp-pointer-input.ts | 92 ++++ .../browser-pointer-input-dispatch.spec.ts | 354 ++++++++++++++ 7 files changed, 1125 insertions(+), 59 deletions(-) create mode 100644 src/main/browser/agent-browser-bridge-pointer-commands.ts create mode 100644 src/main/browser/agent-browser-bridge-pointer-input.test.ts create mode 100644 src/main/browser/cdp-pointer-input.ts create mode 100644 tests/e2e/browser-pointer-input-dispatch.spec.ts diff --git a/src/main/browser/agent-browser-bridge-command-transport.test.ts b/src/main/browser/agent-browser-bridge-command-transport.test.ts index 733cd966ce7..dd2899469b4 100644 --- a/src/main/browser/agent-browser-bridge-command-transport.test.ts +++ b/src/main/browser/agent-browser-bridge-command-transport.test.ts @@ -117,12 +117,12 @@ describe('AgentBrowserBridge', () => { expect((snapshotCall![1] as string[])[cdpIdx + 1]).toBe('9222') await bridge.click('@e1') - await bridge.mouseMove(10, 20) + await bridge.scroll('down') await bridge.setOffline('on') await bridge.consoleLog() await bridge.exec('get title') - for (const command of ['click', 'mouse', 'set', 'console', 'get']) { + for (const command of ['click', 'scroll', 'set', 'console', 'get']) { const call = execFileMock.mock.calls.find((candidate: unknown[]) => (candidate[1] as string[]).includes(command) ) diff --git a/src/main/browser/agent-browser-bridge-mouse-commands.ts b/src/main/browser/agent-browser-bridge-mouse-commands.ts index 36697978748..80c1ebeccb3 100644 --- a/src/main/browser/agent-browser-bridge-mouse-commands.ts +++ b/src/main/browser/agent-browser-bridge-mouse-commands.ts @@ -2,37 +2,16 @@ import type { BrowserMouseModifier } from './agent-browser-bridge-types' import { BrowserError } from './cdp-bridge' import { normalizeCdpMouseButton, - cdpMouseButtonMask, + cdpPointerButtonMask, cdpMouseModifierMask, resolveMobileTouchClickPoint } from './agent-browser-bridge-mouse' import { acquireElectronDebugger } from './electron-debugger-lease' -import { AgentBrowserBridgeInputCommands } from './agent-browser-bridge-input-commands' +import { AgentBrowserBridgePointerCommands } from './agent-browser-bridge-pointer-commands' -export abstract class AgentBrowserBridgeMouseCommands extends AgentBrowserBridgeInputCommands { +export abstract class AgentBrowserBridgeMouseCommands extends AgentBrowserBridgePointerCommands { // ── Mouse commands ── - async mouseMove( - x: number, - y: number, - worktreeId?: string, - browserPageId?: string - ): Promise { - return this.enqueueTargetedCommand(worktreeId, browserPageId, async (sessionName) => { - return await this.execAgentBrowser(sessionName, ['mouse', 'move', String(x), String(y)]) - }) - } - - async mouseDown(button?: string, worktreeId?: string, browserPageId?: string): Promise { - return this.enqueueTargetedCommand(worktreeId, browserPageId, async (sessionName) => { - const args = ['mouse', 'down'] - if (button) { - args.push(button) - } - return await this.execAgentBrowser(sessionName, args) - }) - } - async mouseClick( x: number, y: number, @@ -54,7 +33,7 @@ export abstract class AgentBrowserBridgeMouseCommands extends AgentBrowserBridge ) } const cdpButton = normalizeCdpMouseButton(button) - const buttons = cdpMouseButtonMask(cdpButton) + const buttons = cdpPointerButtonMask(cdpButton) const cdpModifiers = cdpMouseModifierMask(modifiers) const lease = acquireElectronDebugger(wc) try { @@ -103,31 +82,6 @@ export abstract class AgentBrowserBridgeMouseCommands extends AgentBrowserBridge ) } - async mouseUp(button?: string, worktreeId?: string, browserPageId?: string): Promise { - return this.enqueueTargetedCommand(worktreeId, browserPageId, async (sessionName) => { - const args = ['mouse', 'up'] - if (button) { - args.push(button) - } - return await this.execAgentBrowser(sessionName, args) - }) - } - - async mouseWheel( - dy: number, - dx?: number, - worktreeId?: string, - browserPageId?: string - ): Promise { - return this.enqueueTargetedCommand(worktreeId, browserPageId, async (sessionName) => { - const args = ['mouse', 'wheel', String(dy)] - if (dx != null) { - args.push(String(dx)) - } - return await this.execAgentBrowser(sessionName, args) - }) - } - // ── Find (semantic locators) ── async find( diff --git a/src/main/browser/agent-browser-bridge-mouse.ts b/src/main/browser/agent-browser-bridge-mouse.ts index db2ba55d150..a2119adf12c 100644 --- a/src/main/browser/agent-browser-bridge-mouse.ts +++ b/src/main/browser/agent-browser-bridge-mouse.ts @@ -3,6 +3,21 @@ import type { BrowserMouseModifier } from './agent-browser-bridge-types' type CdpMouseButton = 'left' | 'middle' | 'right' +// Why: bit positions and iteration order are CDP's `buttons` mask, not arbitrary. +const CDP_POINTER_BUTTON_ORDER = ['left', 'right', 'middle', 'back', 'forward'] as const + +// Why: coordinate down/up carries X1/X2 through as real back/forward presses; the +// element-click path below deliberately coerces them to left instead. +export type CdpPointerButton = (typeof CDP_POINTER_BUTTON_ORDER)[number] + +const CDP_POINTER_BUTTON_MASKS = { + left: 1, + right: 2, + middle: 4, + back: 8, + forward: 16 +} as const satisfies Record + type BrowserClickPoint = { x: number y: number @@ -14,14 +29,21 @@ export function normalizeCdpMouseButton(button?: string): CdpMouseButton { return button === 'middle' || button === 'right' ? button : 'left' } -export function cdpMouseButtonMask(button: CdpMouseButton): number { - if (button === 'right') { - return 2 +export function normalizeCdpPointerButton(button?: string): CdpPointerButton { + return button === 'back' || button === 'forward' ? button : normalizeCdpMouseButton(button) +} + +export function cdpPointerButtonMask(button: CdpPointerButton): number { + return CDP_POINTER_BUTTON_MASKS[button] +} + +export function cdpPointerButtonFromMask(buttons: number): CdpPointerButton | 'none' { + for (const button of CDP_POINTER_BUTTON_ORDER) { + if ((buttons & CDP_POINTER_BUTTON_MASKS[button]) !== 0) { + return button + } } - if (button === 'middle') { - return 4 - } - return 1 + return 'none' } export function cdpMouseModifierMask(modifiers: BrowserMouseModifier[] | undefined): number { diff --git a/src/main/browser/agent-browser-bridge-pointer-commands.ts b/src/main/browser/agent-browser-bridge-pointer-commands.ts new file mode 100644 index 00000000000..34b6ac07572 --- /dev/null +++ b/src/main/browser/agent-browser-bridge-pointer-commands.ts @@ -0,0 +1,198 @@ +import type { ResolvedBrowserCommandTarget } from './agent-browser-bridge-types' +import { BrowserError } from './cdp-bridge' +import { normalizeCdpPointerButton } from './agent-browser-bridge-mouse' +import { + assertFinitePointerValues, + cdpPointerStateFor, + pressCdpPointerButton, + releaseCdpPointerButton, + resolveCdpPointerReleaseButton, + type CdpPointerState +} from './cdp-pointer-input' +import { acquireElectronDebugger } from './electron-debugger-lease' +import { AgentBrowserBridgeInputCommands } from './agent-browser-bridge-input-commands' + +type CdpPointerEventParams = { + type: 'mouseMoved' | 'mousePressed' | 'mouseReleased' | 'mouseWheel' + x: number + y: number + button?: string + buttons?: number + clickCount?: number + deltaX?: number + deltaY?: number +} + +/** + * Coordinate pointer input (move/down/up/wheel), dispatched over the Electron debugger. + * + * Element-ref interactions stay on the agent-browser helper because they need its + * accessibility snapshot; these four carry their own coordinates and need nothing from it. + */ +export abstract class AgentBrowserBridgePointerCommands extends AgentBrowserBridgeInputCommands { + // Why: coordinate pointer input needs no accessibility snapshot, so it dispatches over + // the debugger `mouseClick` already uses instead of spawning a helper per event. + private async dispatchPointerEvent( + sessionName: string, + target: ResolvedBrowserCommandTarget, + describe: string, + build: (state: CdpPointerState) => { + params: CdpPointerEventParams + focus?: boolean + result: T + } + ): Promise { + const wc = this.getWebContents(target.webContentsId) + if (!wc || wc.isDestroyed()) { + throw new BrowserError( + 'browser_tab_not_found', + `Browser page ${target.browserPageId} is no longer available` + ) + } + const state = cdpPointerStateFor(wc) + // Why: build() mutates the tracked state before the event is on the wire; a rejected + // dispatch changed nothing in the page, so the pre-dispatch state is what is real — + // keeping the mutation would leave a phantom held button on every later event. + const preDispatch = { ...state } + let releaseDebugger = (): void => {} + try { + releaseDebugger = acquireElectronDebugger(wc).release + const { params, focus, result } = build(state) + if (focus) { + wc.focus() + } + await wc.debugger.sendCommand('Input.dispatchMouseEvent', params) + return result + } catch (error) { + Object.assign(state, preDispatch) + // Why: attach/dispatch reject with plain Errors, which the RPC layer would report as + // runtime_error — the helper path this replaced always produced a browser_* code, and + // the pane only reclaims a dead page when it sees one. + if (error instanceof BrowserError) { + throw error + } + if (!this.getWebContents(target.webContentsId)) { + throw this.createPageUnavailableError(sessionName) + } + throw new BrowserError( + 'browser_error', + `Failed to ${describe} in browser page ${target.browserPageId}: ${error instanceof Error ? error.message : String(error)}` + ) + } finally { + releaseDebugger() + } + } + + async mouseMove( + x: number, + y: number, + worktreeId?: string, + browserPageId?: string + ): Promise { + return this.enqueueTargetedCommand( + worktreeId, + browserPageId, + async (sessionName, target) => + this.dispatchPointerEvent(sessionName, target, 'move the pointer', (state) => { + assertFinitePointerValues({ x, y }) + state.x = x + state.y = y + return { + params: { + type: 'mouseMoved', + x, + y, + button: state.button, + buttons: state.buttons + }, + result: { moved: true } + } + }), + { ensureSession: false } + ) + } + + async mouseDown(button?: string, worktreeId?: string, browserPageId?: string): Promise { + return this.enqueueTargetedCommand( + worktreeId, + browserPageId, + async (sessionName, target) => + this.dispatchPointerEvent(sessionName, target, 'press the pointer', (state) => { + const cdpButton = normalizeCdpPointerButton(button) + pressCdpPointerButton(state, cdpButton) + return { + // Why: mirrors mouseClick — a press that does not focus the guest leaves + // keyboard input going to whatever held focus before. + focus: true, + params: { + type: 'mousePressed', + x: state.x, + y: state.y, + button: cdpButton, + buttons: state.buttons, + clickCount: state.clickCount + }, + result: { pressed: true } + } + }), + { ensureSession: false } + ) + } + + async mouseUp(button?: string, worktreeId?: string, browserPageId?: string): Promise { + return this.enqueueTargetedCommand( + worktreeId, + browserPageId, + async (sessionName, target) => + this.dispatchPointerEvent(sessionName, target, 'release the pointer', (state) => { + const cdpButton = normalizeCdpPointerButton( + button ?? resolveCdpPointerReleaseButton(state) + ) + releaseCdpPointerButton(state, cdpButton) + return { + params: { + type: 'mouseReleased', + x: state.x, + y: state.y, + button: cdpButton, + buttons: state.buttons, + clickCount: state.clickCount + }, + result: { released: true } + } + }), + { ensureSession: false } + ) + } + + async mouseWheel( + dy: number, + dx?: number, + worktreeId?: string, + browserPageId?: string + ): Promise { + return this.enqueueTargetedCommand( + worktreeId, + browserPageId, + async (sessionName, target) => + this.dispatchPointerEvent(sessionName, target, 'scroll', (state) => { + assertFinitePointerValues({ dy, ...(dx == null ? {} : { dx }) }) + const deltaX = dx ?? 0 + return { + // Why: dispatch at the tracked position so the scrollable under the cursor + // scrolls; the helper always dispatched wheel at (0,0). + params: { + type: 'mouseWheel', + x: state.x, + y: state.y, + deltaX, + deltaY: dy, + buttons: state.buttons + }, + result: { scrolled: true, deltaX, deltaY: dy } + } + }), + { ensureSession: false } + ) + } +} diff --git a/src/main/browser/agent-browser-bridge-pointer-input.test.ts b/src/main/browser/agent-browser-bridge-pointer-input.test.ts new file mode 100644 index 00000000000..4e8cdf22123 --- /dev/null +++ b/src/main/browser/agent-browser-bridge-pointer-input.test.ts @@ -0,0 +1,446 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest' + +const { execFileMock, webContentsFromIdMock, existsSyncMock, readFileSyncMock, stdinWrites } = + vi.hoisted(() => ({ + execFileMock: vi.fn(), + webContentsFromIdMock: vi.fn(), + existsSyncMock: vi.fn(() => false), + readFileSyncMock: vi.fn(() => Buffer.from('')), + stdinWrites: [] as string[] + })) + +vi.mock('child_process', () => ({ execFile: execFileMock })) +vi.mock('fs', () => ({ + existsSync: existsSyncMock, + readFileSync: readFileSyncMock, + accessSync: vi.fn(), + chmodSync: vi.fn(), + constants: { X_OK: 1 } +})) +vi.mock('os', () => ({ platform: () => 'darwin', arch: () => 'arm64' })) +vi.mock('electron', () => { + return { + app: { + getPath: vi.fn(() => '/app'), + getAppPath: vi.fn(() => '/project'), + isPackaged: false + }, + webContents: { fromId: webContentsFromIdMock } + } +}) +const { CdpWsProxyMock } = vi.hoisted(() => { + const instances: unknown[] = [] + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const MockClass = vi.fn().mockImplementation(function (this: any, _wc: unknown) { + this._wc = _wc + this.start = vi.fn(async () => 'ws://127.0.0.1:9222') + this.stop = vi.fn(async () => {}) + this.getPort = vi.fn(() => 9222) + instances.push(this) + }) + return { CdpWsProxyMock: Object.assign(MockClass, { instances }) } +}) + +vi.mock('./cdp-ws-proxy', () => ({ + CdpWsProxy: CdpWsProxyMock +})) +vi.mock('./cdp-bridge', () => ({ + BrowserError: class BrowserError extends Error { + code: string + constructor(code: string, message: string) { + super(message) + this.code = code + } + } +})) + +import { AgentBrowserBridge } from './agent-browser-bridge' +import { + mockBrowserManager, + mockWebContents, + overrideBridgeWebContentsLookup, + resetAgentBrowserBridgeMocks +} from './agent-browser-bridge-test-harness' + +overrideBridgeWebContentsLookup(AgentBrowserBridge.prototype, webContentsFromIdMock) + +function recordDispatchedEvents( + wc: ReturnType, + sink: Record[] +): void { + wc.debugger.sendCommand.mockImplementation(async (method, params) => { + if (method === 'Input.dispatchMouseEvent' && typeof params === 'object' && params !== null) { + sink.push({ ...params }) + } + return {} + }) +} + +describe('AgentBrowserBridge coordinate pointer input', () => { + let bridge: AgentBrowserBridge + let wc: ReturnType + let dispatchedEvents: Record[] + + const dispatched = (): Record[] => dispatchedEvents + + beforeEach(() => { + resetAgentBrowserBridgeMocks({ + webContentsFromIdMock, + existsSyncMock, + readFileSyncMock, + stdinWrites, + cdpWsProxyInstances: CdpWsProxyMock.instances + }) + bridge = new AgentBrowserBridge(mockBrowserManager()) + bridge.setActiveTab(100) + wc = mockWebContents(100) + dispatchedEvents = [] + recordDispatchedEvents(wc, dispatchedEvents) + webContentsFromIdMock.mockReturnValue(wc) + }) + + // ── Transport ── + + it('dispatches move, down, up and wheel over CDP without spawning the helper', async () => { + await expect(bridge.mouseMove(10, 20)).resolves.toEqual({ moved: true }) + await expect(bridge.mouseDown('left')).resolves.toEqual({ pressed: true }) + await expect(bridge.mouseUp('left')).resolves.toEqual({ released: true }) + await expect(bridge.mouseWheel(120, 30)).resolves.toEqual({ + scrolled: true, + deltaX: 30, + deltaY: 120 + }) + + expect(execFileMock).not.toHaveBeenCalled() + expect(dispatched()).toHaveLength(4) + }) + + it('sends CDP payloads matching a real pointer press and release', async () => { + await bridge.mouseMove(10, 20) + await bridge.mouseDown('left') + await bridge.mouseUp('left') + + expect(dispatched()).toEqual([ + { type: 'mouseMoved', x: 10, y: 20, button: 'none', buttons: 0 }, + { + type: 'mousePressed', + x: 10, + y: 20, + button: 'left', + buttons: 1, + clickCount: 1 + }, + { + type: 'mouseReleased', + x: 10, + y: 20, + button: 'left', + buttons: 0, + clickCount: 1 + } + ]) + }) + + // ── Position tracking ── + + it('drags from the tracked position while the button stays held', async () => { + await bridge.mouseMove(10, 20) + await bridge.mouseDown('left') + await bridge.mouseMove(60, 80) + + expect(dispatched()[2]).toEqual({ + type: 'mouseMoved', + x: 60, + y: 80, + button: 'left', + buttons: 1 + }) + }) + + it('scrolls at the tracked pointer position, not the origin', async () => { + await bridge.mouseMove(300, 400) + await bridge.mouseWheel(120) + + expect(dispatched()[1]).toEqual({ + type: 'mouseWheel', + x: 300, + y: 400, + deltaX: 0, + deltaY: 120, + buttons: 0 + }) + }) + + it('keeps pointer state per tab', async () => { + const other = mockWebContents(200) + recordDispatchedEvents(other, []) + + await bridge.mouseMove(10, 20) + webContentsFromIdMock.mockReturnValue(other) + await bridge.mouseMove(90, 90) + webContentsFromIdMock.mockReturnValue(wc) + await bridge.mouseDown('left') + + expect(dispatched()[1]).toMatchObject({ + type: 'mousePressed', + x: 10, + y: 20 + }) + }) + + // ── Click cadence ── + + it('escalates clickCount for a repeat press at the same point', async () => { + // Why: real wall-clock makes this flake — a >500ms stall under load resets the cadence. + vi.useFakeTimers() + try { + await bridge.mouseMove(10, 20) + for (let i = 0; i < 4; i += 1) { + await bridge.mouseDown('left') + await bridge.mouseUp('left') + } + } finally { + vi.useRealTimers() + } + + expect( + dispatched() + .filter((event) => event.type === 'mousePressed') + .map((event) => event.clickCount) + ).toEqual([1, 2, 3, 1]) + }) + + it('restarts clickCount when the second press lands elsewhere', async () => { + vi.useFakeTimers() + try { + await bridge.mouseMove(10, 20) + await bridge.mouseDown('left') + await bridge.mouseUp('left') + await bridge.mouseMove(400, 400) + await bridge.mouseDown('left') + } finally { + vi.useRealTimers() + } + + expect(dispatched().at(-1)).toMatchObject({ + type: 'mousePressed', + clickCount: 1 + }) + }) + + it('restarts clickCount when the repeat press uses another button', async () => { + vi.useFakeTimers() + try { + await bridge.mouseMove(10, 20) + await bridge.mouseDown('left') + await bridge.mouseUp('left') + await bridge.mouseDown('right') + } finally { + vi.useRealTimers() + } + + expect(dispatched().at(-1)).toMatchObject({ + type: 'mousePressed', + button: 'right', + clickCount: 1 + }) + }) + + it('restarts clickCount once the repeat lands outside the double-click interval', async () => { + vi.useFakeTimers() + try { + await bridge.mouseMove(10, 20) + await bridge.mouseDown('left') + await bridge.mouseUp('left') + vi.setSystemTime(Date.now() + 501) + await bridge.mouseDown('left') + } finally { + vi.useRealTimers() + } + + expect(dispatched().at(-1)).toMatchObject({ + type: 'mousePressed', + clickCount: 1 + }) + }) + + // ── Buttons mask ── + + it('carries back and forward through as X1 and X2 presses', async () => { + await bridge.mouseDown('back') + await bridge.mouseUp('back') + await bridge.mouseDown('forward') + + expect(dispatched()).toEqual([ + { + type: 'mousePressed', + x: 0, + y: 0, + button: 'back', + buttons: 8, + clickCount: 1 + }, + { + type: 'mouseReleased', + x: 0, + y: 0, + button: 'back', + buttons: 0, + clickCount: 1 + }, + { + type: 'mousePressed', + x: 0, + y: 0, + button: 'forward', + buttons: 16, + clickCount: 1 + } + ]) + }) + + it('releases the held button when mouseUp names none', async () => { + await bridge.mouseDown('right') + await bridge.mouseUp() + + expect(dispatched().at(-1)).toMatchObject({ + type: 'mouseReleased', + button: 'right', + buttons: 0 + }) + }) + + it('keeps the remaining held button addressable after a chorded release', async () => { + await bridge.mouseDown('left') + await bridge.mouseDown('right') + await bridge.mouseUp('right') + await bridge.mouseUp() + + expect(dispatched()[2]).toMatchObject({ + type: 'mouseReleased', + button: 'right', + buttons: 1 + }) + expect(dispatched()[3]).toMatchObject({ + type: 'mouseReleased', + button: 'left', + buttons: 0 + }) + }) + + it('defaults to left when nothing is held and mouseUp names no button', async () => { + await bridge.mouseUp() + + expect(dispatched()[0]).toMatchObject({ + type: 'mouseReleased', + button: 'left', + buttons: 0 + }) + }) + + // ── Failures ── + + it('rejects non-finite coordinates and deltas before dispatching', async () => { + await expect(bridge.mouseMove(Number.NaN, 20)).rejects.toMatchObject({ + code: 'browser_error' + }) + await expect(bridge.mouseWheel(Number.POSITIVE_INFINITY)).rejects.toMatchObject({ + code: 'browser_error' + }) + + expect(dispatched()).toHaveLength(0) + }) + + it('reports a dispatch failure as browser_error on the call that failed', async () => { + wc.debugger.sendCommand.mockRejectedValueOnce(new Error('boom')) + + await expect(bridge.mouseMove(10, 20)).rejects.toMatchObject({ + code: 'browser_error' + }) + }) + + it('reports a page that dies mid-dispatch as browser_tab_not_found', async () => { + wc.debugger.sendCommand.mockImplementation(async () => { + webContentsFromIdMock.mockReturnValue(null) + throw new Error('Debugger is not attached to the target') + }) + + await expect(bridge.mouseDown('left')).rejects.toMatchObject({ + code: 'browser_tab_not_found' + }) + }) + + it('leaves no phantom held button when a press fails to dispatch', async () => { + await bridge.mouseMove(10, 20) + wc.debugger.sendCommand.mockRejectedValueOnce(new Error('boom')) + await expect(bridge.mouseDown('left')).rejects.toThrow() + await bridge.mouseMove(30, 40) + + expect(dispatched().at(-1)).toEqual({ + type: 'mouseMoved', + x: 30, + y: 40, + button: 'none', + buttons: 0 + }) + }) + + it('rewinds the tracked position when a move fails to dispatch', async () => { + await bridge.mouseMove(10, 20) + wc.debugger.sendCommand.mockRejectedValueOnce(new Error('boom')) + await expect(bridge.mouseMove(300, 400)).rejects.toThrow() + await bridge.mouseWheel(120) + + expect(dispatched().at(-1)).toMatchObject({ type: 'mouseWheel', x: 10, y: 20 }) + }) + + it('does not count a failed press toward the double-click cadence', async () => { + await bridge.mouseMove(10, 20) + wc.debugger.sendCommand.mockRejectedValueOnce(new Error('boom')) + await expect(bridge.mouseDown('left')).rejects.toThrow() + await bridge.mouseDown('left') + + expect(dispatched().at(-1)).toMatchObject({ type: 'mousePressed', clickCount: 1 }) + }) + + // ── Lifecycle ── + + it('attaches and detaches the debugger around each dispatch', async () => { + let attached = false + wc.debugger.isAttached.mockImplementation(() => attached) + wc.debugger.attach.mockImplementation(() => { + attached = true + }) + + await bridge.mouseMove(10, 20) + + expect(wc.debugger.attach).toHaveBeenCalledWith('1.3') + expect(wc.debugger.detach).toHaveBeenCalled() + }) + + it('leaves a debugger it did not attach alone', async () => { + await bridge.mouseMove(10, 20) + + expect(wc.debugger.attach).not.toHaveBeenCalled() + expect(wc.debugger.detach).not.toHaveBeenCalled() + }) + + it('focuses the guest on press, as mouseClick does', async () => { + await bridge.mouseDown('left') + + expect(wc.focus).toHaveBeenCalled() + }) + + it('drops empty command queues after pointer commands finish', async () => { + await bridge.mouseMove(10, 20) + await bridge.mouseWheel(120) + + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: reads the bridge's own private queue bookkeeping, mirroring agent-browser-bridge-mouse-input.test.ts. + const internals = bridge as unknown as { + commandQueues: Map + processingQueues: Set + } + expect(internals.commandQueues.size).toBe(0) + expect(internals.processingQueues.size).toBe(0) + }) +}) diff --git a/src/main/browser/cdp-pointer-input.ts b/src/main/browser/cdp-pointer-input.ts new file mode 100644 index 00000000000..15af23ad370 --- /dev/null +++ b/src/main/browser/cdp-pointer-input.ts @@ -0,0 +1,92 @@ +import type { WebContents } from 'electron' +import { BrowserError } from './cdp-bridge' +import { + type CdpPointerButton, + cdpPointerButtonMask, + cdpPointerButtonFromMask +} from './agent-browser-bridge-mouse' + +const MULTI_CLICK_INTERVAL_MS = 500 +const MULTI_CLICK_SLOP_PX = 2 + +type LastPointerClick = { + button: CdpPointerButton + x: number + y: number + at: number + count: number +} + +export type CdpPointerState = { + x: number + y: number + button: CdpPointerButton | 'none' + buttons: number + clickCount: number + lastClick: LastPointerClick | null +} + +// Why: keyed by the WebContents so per-tab pointer state can never leak across tabs and +// dies with the tab instead of needing teardown hooks. +const pointerStates = new WeakMap() + +export function cdpPointerStateFor(webContents: WebContents): CdpPointerState { + let state = pointerStates.get(webContents) + if (!state) { + state = { + x: 0, + y: 0, + button: 'none', + buttons: 0, + clickCount: 1, + lastClick: null + } + pointerStates.set(webContents, state) + } + return state +} + +// Why: Chromium only fires dblclick when the second press reports clickCount 2, so a +// repeat at the same spot inside the interval escalates. Cycles 1, 2, 3, 1 like a real mouse. +export function trackCdpClickCount(state: CdpPointerState, button: CdpPointerButton): number { + const now = Date.now() + const previous = state.lastClick + const repeated = + previous !== null && + previous.button === button && + Math.abs(previous.x - state.x) <= MULTI_CLICK_SLOP_PX && + Math.abs(previous.y - state.y) <= MULTI_CLICK_SLOP_PX && + now - previous.at <= MULTI_CLICK_INTERVAL_MS + const count = repeated ? (previous.count >= 3 ? 1 : previous.count + 1) : 1 + state.lastClick = { button, x: state.x, y: state.y, at: now, count } + return count +} + +// Why: the helper rejected a non-finite coordinate outright and silently coerced a +// non-finite wheel delta to 100; CDP would reject with an invalid-params error naming no +// argument. Reject both here so the caller learns which value was bad. +export function assertFinitePointerValues(values: Record): void { + for (const [name, value] of Object.entries(values)) { + if (!Number.isFinite(value)) { + throw new BrowserError('browser_error', `Pointer input requires a finite ${name}`) + } + } +} + +export function pressCdpPointerButton(state: CdpPointerState, button: CdpPointerButton): void { + state.button = button + state.buttons |= cdpPointerButtonMask(button) + state.clickCount = trackCdpClickCount(state, button) +} + +export function releaseCdpPointerButton(state: CdpPointerState, button: CdpPointerButton): void { + state.buttons &= ~cdpPointerButtonMask(button) + // Why: a chorded release leaves the still-held button addressable by a later + // unqualified mouseUp instead of falling back to left. + state.button = cdpPointerButtonFromMask(state.buttons) +} + +// Why: the helper always released left, so a right-button press stayed stuck forever. +export function resolveCdpPointerReleaseButton(state: CdpPointerState): string | undefined { + return state.button === 'none' ? undefined : state.button +} diff --git a/tests/e2e/browser-pointer-input-dispatch.spec.ts b/tests/e2e/browser-pointer-input-dispatch.spec.ts new file mode 100644 index 00000000000..3068d062680 --- /dev/null +++ b/tests/e2e/browser-pointer-input-dispatch.spec.ts @@ -0,0 +1,354 @@ +/** + * E2E coverage for coordinate pointer input (browser.mouseMove/Down/Up/Wheel). + * + * Drives the exact RPC sequences BrowserPane sends, measures their cost, and checks the + * gestures they must produce: click, double-click, right-click, drag-selection, and a + * wheel that scrolls the element under the cursor. + */ + +import { createServer, type Server } from 'node:http' +import type { Page } from '@stablyai/playwright-test' +import { test, expect } from './helpers/orca-app' +import { ensureTerminalVisible, getActiveWorktreeId, waitForActiveWorktree } from './helpers/store' + +type RuntimeResponse = { + ok: boolean + result?: unknown + error?: unknown +} + +function readProperty(value: unknown, key: string): unknown { + return value !== null && typeof value === 'object' && key in value + ? Object.getOwnPropertyDescriptor(value, key)?.value + : undefined +} + +function toRuntimeResponse(value: unknown): RuntimeResponse { + return { + ok: readProperty(value, 'ok') === true, + result: readProperty(value, 'result'), + error: readProperty(value, 'error') + } +} + +const PAGE_HTML = ` + + + + Pointer input probe + + + + +
alpha bravo charlie
+
+ + +` + +async function startProbeServer(): Promise<{ url: string; close: () => Promise }> { + const server: Server = createServer((_request, response) => { + response.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }) + response.end(PAGE_HTML) + }) + await new Promise((resolve) => server.listen(0, '127.0.0.1', resolve)) + const address = server.address() + if (address === null || typeof address === 'string') { + throw new Error('Probe server did not bind a TCP port') + } + const url = `http://127.0.0.1:${address.port}/` + return { + url, + close: () => + new Promise((resolve, reject) => + server.close((error) => (error ? reject(error) : resolve())) + ) + } +} + +async function createBrowserTab(page: Page, worktreeId: string, url: string): Promise { + const pageId = await page.evaluate( + ({ targetWorktreeId, targetUrl }) => { + const created = window.__store?.getState().createBrowserTab(targetWorktreeId, targetUrl, { + title: 'Pointer input probe', + activate: true + }) + return created?.activePageId ?? null + }, + { targetWorktreeId: worktreeId, targetUrl: url } + ) + if (!pageId) { + throw new Error('Failed to create the probe browser page') + } + return pageId +} + +async function rpc( + page: Page, + method: string, + params: Record +): Promise { + return toRuntimeResponse( + await page.evaluate( + ({ targetMethod, targetParams }) => + window.api.runtime.call({ method: targetMethod, params: targetParams }), + { targetMethod: method, targetParams: params } + ) + ) +} + +async function expectOk( + page: Page, + method: string, + params: Record +): Promise { + const response = await rpc(page, method, params) + expect(response, `${method} failed: ${JSON.stringify(response.error)}`).toMatchObject({ + ok: true + }) + return response.result +} + +async function evaluateInPage(page: Page, pageId: string, expression: string): Promise { + const result = await expectOk(page, 'browser.eval', { page: pageId, expression }) + return readProperty(result, 'result') +} + +// Why: Chromium's own multi-click interval; a pair wider than this is two single clicks. +const DOUBLE_CLICK_INTERVAL_MS = 500 + +type RpcStep = [string, Record] + +// Why: one Playwright round-trip for the whole gesture. Driving each RPC from Node instead +// puts ~750ms of harness IPC between events on a loaded CI runner, which pushes a click +// pair outside the 500ms double-click interval and makes the harness the thing under test. +async function driveRpcSequence(page: Page, pageId: string, steps: RpcStep[]): Promise { + const failure = await page.evaluate( + async ({ targetPage, sequence }) => { + for (const [method, params] of sequence) { + const response: unknown = await window.api.runtime.call({ + method, + params: { page: targetPage, ...params } + }) + if (response === null || typeof response !== 'object' || !('ok' in response)) { + return `${method} returned no response` + } + if (response.ok !== true) { + return `${method} failed: ${JSON.stringify(response)}` + } + } + return null + }, + { targetPage: pageId, sequence: steps } + ) + if (failure !== null) { + throw new Error(failure) + } +} + +// Why: the pane sends move+down+move+up for one click, serialized. +function clickSteps(x: number, y: number, button = 'left'): RpcStep[] { + return [ + ['browser.mouseMove', { x, y }], + ['browser.mouseDown', { button }], + ['browser.mouseMove', { x, y }], + ['browser.mouseUp', { button }] + ] +} + +test('dispatches coordinate pointer input fast enough for real gestures', async ({ orcaPage }) => { + // Why: the measurement loop plus the gesture checks drive a few hundred serialized RPCs; + // a loaded CI runner needs more than the default budget even when each one is fast. + test.setTimeout(240_000) + const server = await startProbeServer() + try { + await waitForActiveWorktree(orcaPage) + await ensureTerminalVisible(orcaPage) + const worktreeId = await getActiveWorktreeId(orcaPage) + expect(worktreeId).toBeTruthy() + const pageId = await createBrowserTab(orcaPage, worktreeId!, server.url) + + await expect + .poll(() => evaluateInPage(orcaPage, pageId, 'document.title'), { timeout: 20_000 }) + .toBe('Pointer input probe') + + // ── Latency ── + + // Why: every sample runs inside the renderer, so it times the RPC the pane awaits + // rather than the Playwright round-trip. The renderer's performance.now() is coarsened + // to ~16.6ms, so each operation is timed in bulk and averaged instead of per call. + const latency = await orcaPage.evaluate(async (targetPage) => { + const call = async (method: string, params: Record): Promise => { + const response: unknown = await window.api.runtime.call({ + method, + params: { page: targetPage, ...params } + }) + if (response === null || typeof response !== 'object' || !('ok' in response)) { + throw new Error(`${method} returned no response`) + } + if (response.ok !== true) { + throw new Error(`${method} failed: ${JSON.stringify(response)}`) + } + } + // Why: enough to amortize the renderer's ~16.6ms clock coarsening (<1.4ms error + // against a floor of tens of ms) without spending a CI runner's whole test budget. + const REPEATS = 12 + const meanMs = async (run: (index: number) => Promise): Promise => { + await run(0) + const started = performance.now() + for (let i = 0; i < REPEATS; i += 1) { + await run(i) + } + return (performance.now() - started) / REPEATS + } + + return { + // Why: the control — same socket, same queue, no pointer dispatch. Anything a + // pointer event costs above this is the dispatch itself. + evalControl: await meanMs(() => call('browser.eval', { expression: '1' })), + mouseMove: await meanMs((i) => call('browser.mouseMove', { x: 60 + (i % 20), y: 300 })), + mouseWheel: await meanMs(() => call('browser.mouseWheel', { dy: 1 })), + click: await meanMs(async (i) => { + await call('browser.mouseMove', { x: 400 + (i % 10), y: 400 }) + await call('browser.mouseDown', { button: 'left' }) + await call('browser.mouseMove', { x: 400 + (i % 10), y: 400 }) + await call('browser.mouseUp', { button: 'left' }) + }) + } + }, pageId) + const latencyReport = JSON.stringify(latency) + console.log(`POINTER_LATENCY ${latencyReport}`) + // Why: Playwright does not surface a passing test's stdout in the CI job log, so the + // numbers ride along in the annotation where the failure artifact will carry them. + test.info().annotations.push({ type: 'pointer-latency', description: latencyReport }) + + // Why: absolute milliseconds vary by host, so compare against browser.eval on the same + // socket and queue — a pointer event that spawns the helper costs that plus a process + // launch. Measured multiples of the control: in process 1.5x/1.5x/4x, via the helper + // 5.7x/5.5x/20.5x. These thresholds sit between the two, not near either. + expect(latency.mouseMove, latencyReport).toBeLessThan(latency.evalControl * 3) + expect(latency.mouseWheel, latencyReport).toBeLessThan(latency.evalControl * 3) + expect(latency.click, latencyReport).toBeLessThan(latency.evalControl * 10) + + // ── Gesture fidelity ── + + await evaluateInPage(orcaPage, pageId, 'window.__events = []; true') + const clickPairStarted = Date.now() + await driveRpcSequence(orcaPage, pageId, [...clickSteps(120, 60), ...clickSteps(120, 60)]) + const clickPairMs = Date.now() - clickPairStarted + + const pressTimes = JSON.parse( + String( + await evaluateInPage( + orcaPage, + pageId, + 'JSON.stringify(window.__events.filter((e) => e.type === "mousedown").map((e) => e.t))' + ) + ) + ) + const pressGapMs = Number(pressTimes[1]) - Number(pressTimes[0]) + const cadenceReport = `${latencyReport} clickPairMs=${clickPairMs} pressGapMs=${pressGapMs}` + console.log(`POINTER_CADENCE ${cadenceReport}`) + test.info().annotations.push({ type: 'pointer-cadence', description: cadenceReport }) + + const clickEvents = String( + await evaluateInPage( + orcaPage, + pageId, + 'JSON.stringify(window.__events.filter((e) => e.type === "click" || e.type === "dblclick"))' + ) + ) + const parsedClicks: unknown[] = JSON.parse(clickEvents) + const eventsOfType = (type: string): unknown[] => + parsedClicks.filter((event) => readProperty(event, 'type') === type) + console.log(`POINTER_CLICKS ${clickEvents}`) + expect(eventsOfType('click'), cadenceReport).toHaveLength(2) + + // Why: dblclick needs both presses inside Chromium's 500ms interval, which is a + // property of how fast the host can serve five RPCs, not of the dispatch path. A + // runner too slow to express a double-click at all reports that as unverified rather + // than as a missing dblclick — the clickCount cadence itself is covered deterministically + // by agent-browser-bridge-pointer-input.test.ts under fake timers. + if (pressGapMs >= DOUBLE_CLICK_INTERVAL_MS) { + test.info().annotations.push({ + type: 'pointer-dblclick-unverified', + description: `presses were ${pressGapMs}ms apart, outside the ${DOUBLE_CLICK_INTERVAL_MS}ms interval — ${cadenceReport}` + }) + } else { + expect(eventsOfType('dblclick'), cadenceReport).toHaveLength(1) + expect(readProperty(eventsOfType('dblclick')[0], 'detail'), cadenceReport).toBe(2) + } + + // ── Right click ── + + await evaluateInPage(orcaPage, pageId, 'window.__events = []; true') + await driveRpcSequence(orcaPage, pageId, [ + ['browser.mouseMove', { x: 120, y: 60 }], + ['browser.mouseDown', { button: 'right' }], + ['browser.mouseUp', { button: 'right' }] + ]) + await expect + .poll(() => + evaluateInPage(orcaPage, pageId, 'window.__events.some((e) => e.type === "contextmenu")') + ) + .toBe('true') + + // ── Drag selection ── + + await evaluateInPage(orcaPage, pageId, 'window.getSelection().removeAllRanges(); true') + await driveRpcSequence(orcaPage, pageId, [ + ['browser.mouseMove', { x: 42, y: 155 }], + ['browser.mouseDown', { button: 'left' }], + ...[80, 120, 160, 200].map((x): RpcStep => ['browser.mouseMove', { x, y: 155 }]), + ['browser.mouseUp', { button: 'left' }] + ]) + await expect + .poll(() => evaluateInPage(orcaPage, pageId, 'String(window.getSelection())')) + .toContain('alpha') + + // ── Wheel targets the element under the cursor ── + + await evaluateInPage( + orcaPage, + pageId, + 'document.querySelector("#scroller").scrollTop = 0; window.scrollTo(0, 0); true' + ) + await driveRpcSequence(orcaPage, pageId, [ + ['browser.mouseMove', { x: 180, y: 300 }], + ...Array.from({ length: 6 }, (): RpcStep => ['browser.mouseWheel', { dy: 120 }]) + ]) + await expect + .poll( + async () => + Number( + await evaluateInPage(orcaPage, pageId, 'document.querySelector("#scroller").scrollTop') + ), + { timeout: 10_000 } + ) + .toBeGreaterThan(0) + } finally { + await server.close() + } +}) From b87a6c0f23b842d23d028a6f8f9b7cf73787aca8 Mon Sep 17 00:00:00 2001 From: nireak Date: Mon, 14 Sep 2026 11:32:08 +0200 Subject: [PATCH 07/12] fix(pty): pace the EAGAIN write retry so a stalled reader can't saturate the daemon thread (#15319) node-pty's CustomWriteStream retries an EAGAIN write with setImmediate, which re-attempts within microseconds. A pty whose child has stopped draining stdin keeps that branch EAGAIN-ing, so the retry becomes a busy-loop on the thread that owns every pty on the runtime. Measured against this commit's parent on macOS arm64: 121,316 EAGAIN/s at 101.6% CPU, versus 805/s at 4.1% with the retry paced to 1ms. The delay is 1ms rather than longer because the cost lands on readers that drain in bursts -- what an agent does between event-loop ticks. Delivering 2MB to a reader that drains 20ms out of every 100ms: 689ms unpaced, 907ms at 1ms, 1414ms at 5ms. 1ms keeps essentially all of the CPU saving without the delivery regression. clearImmediate -> clearTimeout in dispose() is required, not cosmetic: once the handle is a Timeout, clearImmediate does not cancel it and a pending retry can fire after dispose. The disposal guards that make that harmless (_fd = -1, queue drop) are already on main; this mirrors them into src/unixTerminal.ts so the TypeScript twin no longer drifts from the compiled lib. Scope: this fixes the CPU saturation. It does not stop other terminals from being serviced -- a second live pty kept answering echo round-trips throughout the storm in every configuration tested (1 and 8 stalled writers, macOS and Linux, 8 CPUs and 1), with throughput down ~20-50% rather than hung. The "every terminal froze" symptom in #11178 has another cause and that issue stays open. Upstream chose setImmediate deliberately (microsoft/node-pty#831, #833) to fix large-paste latency, and rejected polling POLLOUT because it reports writable rather than flushed. That reasoning targets a per-write delay in an interactive terminal; this delays only the EAGAIN branch in a long-lived daemon. Pastes to a draining reader are unaffected (0-3 EAGAINs per MB in every arm). Verified: patch applies to a pristine node-pty@1.1.0 tarball, the patched src/unixTerminal.ts compiles byte-identical to the patched lib/unixTerminal.js, patch_hash matches the file, and on Windows the changed code never executes (WindowsTerminal, 0 EAGAINs on a 300KB conpty write). --- config/patches/node-pty@1.1.0.patch | 112 +++++++++++++++++++++++++++- pnpm-lock.yaml | 6 +- 2 files changed, 111 insertions(+), 7 deletions(-) diff --git a/config/patches/node-pty@1.1.0.patch b/config/patches/node-pty@1.1.0.patch index 961e750da6b..d36bf36b63f 100644 --- a/config/patches/node-pty@1.1.0.patch +++ b/config/patches/node-pty@1.1.0.patch @@ -165,7 +165,7 @@ index e2f9bc9131077b53ebc32d207207ad82804ff185..6c63bfaaf75128d88f9a2efece134763 Terminal.prototype._parseEnv = function (env) { var keys = Object.keys(env || {}); diff --git a/lib/unixTerminal.js b/lib/unixTerminal.js -index 1ec12f796a822c78fba9ad7f6448c3987e325c23..d838d795ecb9ea72e3bcc31113344947c006af7e 100644 +index 1ec12f796a822c78fba9ad7f6448c3987e325c23..1779098c54ff4be8c0d4dc9a93e96e71ededb01f 100644 --- a/lib/unixTerminal.js +++ b/lib/unixTerminal.js @@ -28,8 +28,12 @@ var native = utils_1.loadNativeModule('pty'); @@ -207,9 +207,26 @@ index 1ec12f796a822c78fba9ad7f6448c3987e325c23..d838d795ecb9ea72e3bcc31113344947 pty.resize(this._fd, cols, rows); this._cols = cols; this._rows = rows; -@@ -287,8 +301,15 @@ var CustomWriteStream = /** @class */ (function () { +@@ -273,6 +287,13 @@ var UnixTerminal = /** @class */ (function (_super) { + return UnixTerminal; + }(terminal_1.Terminal)); + exports.UnixTerminal = UnixTerminal; ++/** ++ * Orca: upstream retries EAGAIN with `setImmediate`, which re-attempts within microseconds ++ * and pins a core on the daemon thread when a reader stops draining. 1ms keeps ~97% of that ++ * CPU saving; longer delays cost 2-3x delivery time to a reader that drains in bursts (an ++ * agent). Re-measure both before changing. ++ */ ++var EAGAIN_RETRY_DELAY_MS = 1; + /** + * A custom write stream that writes directly to a file descriptor with proper + * handling of backpressure and errors. This avoids some event loop exhaustion +@@ -285,10 +306,17 @@ var CustomWriteStream = /** @class */ (function () { + this._writeQueue = []; + } CustomWriteStream.prototype.dispose = function () { - clearImmediate(this._writeImmediate); +- clearImmediate(this._writeImmediate); ++ clearTimeout(this._writeImmediate); this._writeImmediate = undefined; + // Orca: retire this stream's own copy of the master fd and drop what has + // not shipped, so nothing queued here reaches a reused descriptor. @@ -223,7 +240,7 @@ index 1ec12f796a822c78fba9ad7f6448c3987e325c23..d838d795ecb9ea72e3bcc31113344947 // Writes are put in a queue and processed asynchronously in order to handle // backpressure from the kernel buffer. var buffer = typeof data === 'string' -@@ -304,7 +325,8 @@ var CustomWriteStream = /** @class */ (function () { +@@ -304,7 +332,8 @@ var CustomWriteStream = /** @class */ (function () { CustomWriteStream.prototype._processWriteQueue = function () { var _this = this; this._writeImmediate = undefined; @@ -233,6 +250,19 @@ index 1ec12f796a822c78fba9ad7f6448c3987e325c23..d838d795ecb9ea72e3bcc31113344947 return; } var task = this._writeQueue[0]; +@@ -314,9 +343,9 @@ var CustomWriteStream = /** @class */ (function () { + fs.write(this._fd, task.buffer, task.offset, function (err, written) { + if (err) { + if ('code' in err && err.code === 'EAGAIN') { +- // `setImmediate` is used to yield to the event loop and re-attempt +- // the write later. +- _this._writeImmediate = setImmediate(function () { return _this._processWriteQueue(); }); ++ // Paced, not `setImmediate`: a stalled reader keeps this branch EAGAIN-ing, and an ++ // immediate re-attempt turns the retry into a busy-loop on the daemon thread. ++ _this._writeImmediate = setTimeout(function () { return _this._processWriteQueue(); }, EAGAIN_RETRY_DELAY_MS); + } + else { + // Stop processing immediately on unexpected error and log diff --git a/src/conpty_console_list_agent.ts b/src/conpty_console_list_agent.ts index 181ccabbbe9c4948a9725fb1db907a68e9de01fc..67f31facf85562b67adbfbd04ce28ddd8eeb4a79 100644 --- a/src/conpty_console_list_agent.ts @@ -602,6 +632,80 @@ index 7b4b9e1f990fbf95b51528bb56dc9717f5b87532..2ae787c5bd4f3eba470584dc658a01a5 } } #endif +diff --git a/src/unixTerminal.ts b/src/unixTerminal.ts +index 98733dc0cd752b554bd94e45904ca341ad141bba..3dd5ad9b3124dbd5ba7f76679b26650dad503ec6 100644 +--- a/src/unixTerminal.ts ++++ b/src/unixTerminal.ts +@@ -306,6 +306,14 @@ interface IWriteTask { + offset: number; + } + ++/** ++ * Orca: upstream retries EAGAIN with `setImmediate`, which re-attempts within microseconds ++ * and pins a core on the daemon thread when a reader stops draining. 1ms keeps ~97% of that ++ * CPU saving; longer delays cost 2-3x delivery time to a reader that drains in bursts (an ++ * agent). Re-measure both before changing. ++ */ ++const EAGAIN_RETRY_DELAY_MS = 1; ++ + /** + * A custom write stream that writes directly to a file descriptor with proper + * handling of backpressure and errors. This avoids some event loop exhaustion +@@ -314,20 +322,28 @@ interface IWriteTask { + class CustomWriteStream implements IDisposable { + + private readonly _writeQueue: IWriteTask[] = []; +- private _writeImmediate: NodeJS.Immediate | undefined; ++ private _writeImmediate: NodeJS.Timeout | undefined; + + constructor( +- private readonly _fd: number, ++ private _fd: number, + private readonly _encoding: BufferEncoding + ) { + } + + dispose(): void { +- clearImmediate(this._writeImmediate); ++ clearTimeout(this._writeImmediate); + this._writeImmediate = undefined; ++ // Orca: retire this stream's own copy of the master fd and drop what has ++ // not shipped, so nothing queued here reaches a reused descriptor. ++ this._fd = -1; ++ this._writeQueue.length = 0; + } + + write(data: string | Buffer): void { ++ if (this._fd < 0) { ++ return; ++ } ++ + // Writes are put in a queue and processed asynchronously in order to handle + // backpressure from the kernel buffer. + const buffer = typeof data === 'string' +@@ -345,7 +361,8 @@ class CustomWriteStream implements IDisposable { + private _processWriteQueue(): void { + this._writeImmediate = undefined; + +- if (this._writeQueue.length === 0) { ++ // Orca: an in-flight fs.write can re-enter here after dispose(). ++ if (this._fd < 0 || this._writeQueue.length === 0) { + return; + } + +@@ -357,9 +374,9 @@ class CustomWriteStream implements IDisposable { + fs.write(this._fd, task.buffer, task.offset, (err, written) => { + if (err) { + if ('code' in err && err.code === 'EAGAIN') { +- // `setImmediate` is used to yield to the event loop and re-attempt +- // the write later. +- this._writeImmediate = setImmediate(() => this._processWriteQueue()); ++ // Paced, not `setImmediate`: a stalled reader keeps this branch EAGAIN-ing, and an ++ // immediate re-attempt turns the retry into a busy-loop on the daemon thread. ++ this._writeImmediate = setTimeout(() => this._processWriteQueue(), EAGAIN_RETRY_DELAY_MS); + } else { + // Stop processing immediately on unexpected error and log + this._writeQueue.length = 0; diff --git a/src/win/conpty.cc b/src/win/conpty.cc index 7b286d3d644c26141df516929703aa6e129df4b2..4b06d18576c807c3d1181a7bd714140c6678cf86 100644 --- a/src/win/conpty.cc diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 586c9449212..d93fec995ef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -116,7 +116,7 @@ patchedDependencies: '@xterm/addon-webgl@0.20.0-beta.299': 94687e89a0115e6e6aa102837f986debdc029c091527ee5eb4a4e17ceaf9473e '@xterm/xterm@6.1.0-beta.303': 1f36ce689bc50c703ae09aeda0e064f107e18e4a5ecba19e746fa5edc4b02ef4 lint-staged@16.4.0: 7333b3837f80a7fbd045964db6d76ba4fc118e49134bdbabb00585b6b7b60673 - node-pty@1.1.0: bac3a53fb15efc9b3b944fbe3c4718b5174a0b3bd6ead84e21975edad4bc6615 + node-pty@1.1.0: 346cb29d33dd6eeb14910ff411c7584b0b2ff9a4b271c4b6d23c3b48e6548f74 importers: @@ -160,7 +160,7 @@ importers: version: 3.3.1 node-pty: specifier: ^1.1.0 - version: 1.1.0(patch_hash=bac3a53fb15efc9b3b944fbe3c4718b5174a0b3bd6ead84e21975edad4bc6615) + version: 1.1.0(patch_hash=346cb29d33dd6eeb14910ff411c7584b0b2ff9a4b271c4b6d23c3b48e6548f74) posthog-node: specifier: ^5.33.3 version: 5.33.3 @@ -12274,7 +12274,7 @@ snapshots: node-int64@0.4.0: {} - node-pty@1.1.0(patch_hash=bac3a53fb15efc9b3b944fbe3c4718b5174a0b3bd6ead84e21975edad4bc6615): + node-pty@1.1.0(patch_hash=346cb29d33dd6eeb14910ff411c7584b0b2ff9a4b271c4b6d23c3b48e6548f74): dependencies: node-addon-api: 7.1.1 From 93c370246388b728e60751e6b5c122b30f9020e2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2026 12:38:13 +0000 Subject: [PATCH 08/12] Update README downloads badge --- docs/assets/readme-downloads.svg | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/assets/readme-downloads.svg b/docs/assets/readme-downloads.svg index 08237c15016..7a0586b8b1e 100644 --- a/docs/assets/readme-downloads.svg +++ b/docs/assets/readme-downloads.svg @@ -1,5 +1,5 @@ - - downloads: 51m + + downloads: 53m @@ -15,7 +15,7 @@ downloads downloads - 51m - 51m + 53m + 53m From e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c Mon Sep 17 00:00:00 2001 From: Jinwoo Hong <73622457+Jinwoo-H@users.noreply.github.com> Date: Mon, 14 Sep 2026 11:48:28 -0400 Subject: [PATCH 09/12] fix(mobile): two known main bugs the RPC migration preserved (#20563) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(mobile): two known main bugs the RPC migration preserved A malformed host `error` and a null settings result both reach a property read that throws. Both are deliberate behaviour changes; the goldens move in the follow-up commit. `hostReplyErrorTextOrFallback` passed a truthy non-string through under a `string` annotation. Its one caller is the in-band `git.commit` failure, and every consumer of that text is display or prompt copy: `use-mobile-create-pr-runner` and `PrSidebarCreateEmptyState` record it as a commit failure, `use-mobile-commit-failure-recovery` hands it to `summarizeCommitFailure`, which starts with `raw.slice(...).replace(...)`. So no consumer needs the value, and the decision is the fallback rather than `String(value)` — the relay handler declares `commit(): Promise<{ success: boolean; error?: string }>`, so a non-string is a malformed reply, and `generatedCommitMessageReader` in the same domain already reads a non-string host error as absent. The parameter stays `unknown`, which it honestly is, and the `SAFETY` cast is gone. `useNewWorkspaceRuntimeContext` read settings through `settingsRead`, whose reader preserves main's `boxed!.settings` throw, so a `null` or absent result threw a TypeError out of the effect — losing the trusted-hooks publish and the available-provider computation that follow it, not just the settings. It now uses `optionalSettingsRead`, the operation that already reads a null or absent result as absent settings, so the reply degrades exactly the way a reply with no `settings` member does. Reply-side only: same method, same params, same barrier, no wire change. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): re-record the goldens the two bug fixes move Baseline bumped to 3f71999237. Two goldens move an observation; the other 151 move only `baseline` and `recorderSha256`, which `pilot-scenarios.json` is still digested into. Observation moves, one claim each: - `matrix-hostedreview.create-intent-git.commit-1`, partition `inner-false-object-error`: `settlements.run.value.error` and `state.outcome.error` go from `{"message":"inner refused"}` to `"Commit failed"`. A non-string in-band `git.commit` error is a malformed reply and now reads as the screen's copy, converging with `result-absent`, `result-null` and `outer-refused-no-message`, which already reported the fallback. The other ten partitions at this site are unchanged. - `matrix-settings.workspace-context-settings.get-1`, partitions `result-null` and `result-absent`: the `unhandled-rejection` TypeError effect (`reading 'settings'`) is gone and `state.providers` goes from `[]` to `["github"]`. The effect no longer aborts the rest of the hook, so the provider computation runs; `state.settings` stays null because nothing was published, which is how a reply with no `settings` member already degraded. The other nine partitions are unchanged. Header-only moves: - 9 goldens of the `settings.workspace-context` family rename `namedDeltas` from `new-workspace-runtime-context-null-settings-typeerror` — the name now lies, the TypeError is fixed — to `new-workspace-runtime-context-null-settings-degrades-to-absent`. - All 153 move `baseline` and `recorderSha256`. The digest covers `pilot-scenarios.json`, so the baseline bump and the rename re-digest every file. No sender recording moved: both fixes are reply-side, and no golden's `sender` or `payloads` field differs. The README paragraph that claimed the settings TypeError was preserved is updated, and now records that the `ui.get` leg of the same hook still is. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * fix(mobile): degrade a null ui.get result the way the settings leg now does One host answers both legs of useNewWorkspaceRuntimeContext, so fixing only settings.get left the likelier failure in place: a null or absent ui.get result still threw `reading 'ui'` out of the effect, skipping the provider commit. Review follow-ups on the same files: reply() returns the literal uncast and the stub client is FakeSession, dropping two assertions and their SAFETY disables; the degradation cases now assert absolute state instead of comparing mounts. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): re-record the goldens the ui.get leg fix moves Observational move, 1 golden: - matrix-settings.workspace-context-ui.get-1: the `result-absent` and `result-null` partitions drop their `reading 'ui'` unhandled-rejection effect and their state commits `providers: ["github"]` instead of `[]`, because the effect no longer throws before the provider commit. Header-only moves, 153 goldens: `baseline` to the fix commit and `recorderSha256`, which covers `pilot-scenarios.json` and so re-digests on the delta rename. The delta is renamed `new-workspace-runtime-context-null-settings-degrades-to-absent` -> `new-workspace-runtime-context-null-results-degrade-to-absent` (9 goldens): it now covers both reads, not just settings. README updated to match. No sender recording moved: resolving the value pool across all 153 goldens shows `sender` and `payloads` byte-identical everywhere. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * refactor(mobile): name the ui.get result shape so the changed cast carries a rationale The inline union wrapped over four lines and tripped the changed-code casting gate as a new assertion; a named alias keeps the cast on one line under a SAFETY note. No behaviour change. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): repin the golden baseline to the cast-rationale commit Header-only: `baseline` on all 153 goldens. The re-record is inert — no golden moves observationally and no field other than `baseline` changes. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): pin the ui.get trust blank, and correct two stale acceptance comments The goldens cannot catch a regression to `if (uiResult?.result)`: the scenario's success reply is `{"ui":{}}`, so every partition of matrix-settings.workspace-context-ui.get-1 records the same `trust:{}` state. The new case answers once with real trust and again with a null result on a fresh client, which is the only shape where skipping the blank is observable — trustedOrcaHooks gates the setup-hook approval prompt in use-new-workspace-create-submit.ts, so a stale value would skip it. settingsRead's comment still claimed workspace context, which this branch moved to optionalSettingsRead; both comments now name their real callers. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): repin the golden baseline to the trust-blank commit The record fence rejected the previous pin ("Product sources or lockfile differ from the pinned main baseline"), so the branch was no longer re-recordable. Header-only: `baseline` and `recorderSha256` on all 153 goldens — the digest covers pilot-scenarios.json, whose only edit is that baseline. The re-record is inert: 0 goldens move observationally and no other field changes. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * docs(mobile): name the right operation per refuse-after-data probe Three of the five probes read through optionalSettingsRead, not settingsRead: repo metadata and resume metadata already did, and workspace context does as of this branch. The sentence now splits them and states why the split does not move what the probes record. Markdown is excluded from recorderSha256, so no re-record. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): pin the recorder's unhandled-rejection capture This branch removed the last two goldens that recorded an unhandled-rejection effect, so nothing exercised unhandled-recording.ts any more: gutting the emit to `void captureError(error)` leaves all 153 goldens comparing clean. The unit test drives a detached rejection through the window and asserts both the effect and the listener restore. README says so where it describes the capture. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): re-digest the goldens for the new recorder test Header-only: `recorderSha256` on all 153 goldens, which covers every non-markdown file under rpc-recording/ and so moves for the added test file. The re-record is inert: 0 goldens move observationally and no other field changes. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb --- mobile/rpc-foundation/goldens/b1.json | 4 +- mobile/rpc-foundation/goldens/b2.json | 4 +- mobile/rpc-foundation/goldens/b3.json | 4 +- .../interruptions-inventory-lifecycle.json | 4 +- ...ions-settings-bot-overrides-fulfilled.json | 4 +- .../goldens/inventory-lifecycle.json | 4 +- .../goldens/inventory-repeat-query.json | 4 +- .../rpc-foundation/goldens/lifecycle-b3.json | 4 +- .../lifecycle-inventory-lifecycle.json | 4 +- ...ycle-settings-bot-overrides-fulfilled.json | 4 +- ...cle-settings-task-hydration-fulfilled.json | 4 +- ...-settings-workspace-context-fulfilled.json | 6 +- ....base-ref-chain-repo.baserefdefault-1.json | 4 +- ...matrix-git.base-ref-chain-repo.list-1.json | 4 +- ...ix-git.base-ref-chain-worktree.show-1.json | 4 +- ...essage-ai-git.generatecommitmessage-1.json | 4 +- ...matrix-git.history-read-git.history-1.json | 4 +- ...ix-git.remote-prerequisite-git.push-1.json | 4 +- ...x-git.review-preparation-git.status-1.json | 4 +- ...-hostedreview.create-chain-git.push-1.json | 4 +- ...ew.create-chain-hostedreview.create-1.json | 4 +- ...tedreview.create-chain-worktree.set-1.json | 4 +- ...dreview.create-intent-git.bulkstage-1.json | 4 +- ...stedreview.create-intent-git.commit-1.json | 131 ++---------------- ...te-intent-git.generatecommitmessage-1.json | 4 +- ...hostedreview.create-intent-git.push-1.json | 4 +- ...stedreview.create-intent-git.status-1.json | 4 +- ...stedreview.create-intent-git.status-2.json | 4 +- ...stedreview.create-intent-git.status-3.json | 4 +- ...stedreview.create-intent-git.status-4.json | 4 +- ...w.create-intent-hostedreview.create-1.json | 4 +- ...hostedreview.getcreationeligibility-1.json | 4 +- ...hostedreview.getcreationeligibility-2.json | 4 +- ...edreview.create-intent-worktree.set-1.json | 4 +- ...hostedreview.getcreationeligibility-1.json | 4 +- ...-legacy-inventory-files.searchpaths-1.json | 4 +- ...-legacy-inventory-files.searchpaths-2.json | 4 +- ...trix-legacy-inventory-fresh-inventory.json | 4 +- ...matrix-legacy-inventory-old-inventory.json | 4 +- ...near-detail-barrier-linear.getissue-1.json | 4 +- ...detail-barrier-linear.issuecomments-1.json | 4 +- ...se-github.project.updateissuebyslug-1.json | 4 +- ...on.tab-reveal-session.tabs.activate-1.json | 4 +- ...ession.tab-reveal-session.tabs.list-1.json | 4 +- ...t-read-preflight.detectremoteagents-1.json | 4 +- ...atrix-settings-agent-read-repo.list-1.json | 4 +- ...ix-settings-agent-read-settings.get-1.json | 4 +- ...ettings-best-effort-settings.update-1.json | 4 +- ...settings.bot-overrides-settings.get-1.json | 4 +- ...ttings.home-providers-linear.status-1.json | 4 +- ...ings.home-providers-preflight.check-1.json | 4 +- ...ettings.home-providers-settings.get-1.json | 4 +- ...ettings.repo-metadata-host.platform-1.json | 4 +- ...ix-settings.repo-metadata-repo.list-1.json | 4 +- ...settings.repo-metadata-settings.get-1.json | 4 +- ...po-metadata-ssh.listtargetsummaries-1.json | 4 +- ...esume-metadata-folderworkspace.list-1.json | 4 +- ...s.resume-metadata-projectgroup.list-1.json | 4 +- ...-settings.resume-metadata-repo.list-1.json | 4 +- ...ttings.resume-metadata-settings.get-1.json | 4 +- ...ettings.resume-metadata-worktree.ps-1.json | 4 +- ...ttings.task-hydration-linear.status-1.json | 4 +- ...ings.task-hydration-preflight.check-1.json | 4 +- ...ettings.task-hydration-settings.get-1.json | 4 +- ...-settings.task-hydration-status.get-1.json | 4 +- ...trix-settings.task-hydration-ui.get-1.json | 4 +- ...ettings.task-workspace-settings.get-1.json | 4 +- ...ngs.workspace-context-linear.status-1.json | 6 +- ...s.workspace-context-preflight.check-1.json | 6 +- ...ings.workspace-context-settings.get-1.json | 30 +--- ...x-settings.workspace-context-ui.get-1.json | 41 +----- ...tings.workspace-submit-settings.get-1.json | 4 +- ...x-worktree.review-link-worktree.set-1.json | 4 +- .../goldens/probe-new-tab-both-refused.json | 4 +- .../probe-new-tab-null-sibling-refused.json | 4 +- ...probe-new-tab-refused-sibling-rejects.json | 4 +- ...probe-new-tab-rejects-sibling-refused.json | 4 +- .../goldens/sc-base-ref-default.json | 4 +- .../goldens/sc-base-ref-repo-fallback.json | 4 +- .../goldens/sc-base-ref-unavailable.json | 4 +- .../goldens/sc-base-ref-worktree-hit.json | 4 +- .../sc-commit-message-cancel-rejected.json | 4 +- .../goldens/sc-commit-message-canceled.json | 4 +- .../goldens/sc-commit-message-generated.json | 4 +- .../goldens/sc-create-existing-review.json | 4 +- ...reate-intent-stage-commit-push-create.json | 4 +- .../sc-create-link-failure-is-non-fatal.json | 4 +- .../sc-create-pushes-then-creates.json | 4 +- .../sc-create-refused-empty-message.json | 4 +- .../sc-create-rejected-empty-message.json | 4 +- .../goldens/sc-eligibility-fetched.json | 4 +- .../goldens/sc-history-loaded.json | 4 +- .../goldens/sc-pr-link-hosted-review.json | 4 +- .../goldens/sc-pr-link-read.json | 4 +- .../goldens/sc-pr-link-set.json | 4 +- .../sc-prefill-unavailable-on-refusal.json | 4 +- .../sc-prefill-unavailable-on-rejection.json | 4 +- .../sc-prerequisite-force-with-lease.json | 4 +- .../goldens/sc-prerequisite-publish.json | 4 +- .../goldens/sc-prerequisite-push.json | 4 +- .../goldens/sc-prerequisite-skipped.json | 4 +- .../goldens/sc-reveal-first-poll.json | 4 +- .../goldens/sc-reveal-timeout.json | 4 +- .../sc-review-commit-inner-failure.json | 4 +- ...c-review-commit-refused-empty-message.json | 4 +- .../goldens/sc-review-commit-rejected.json | 4 +- .../goldens/sc-review-commit.json | 4 +- .../sc-review-status-entries-not-array.json | 4 +- .../goldens/sc-review-status-normalized.json | 4 +- .../rpc-foundation/goldens/schedules-b3.json | 4 +- ...les-settings-home-providers-fulfilled.json | 4 +- .../schedules-settings-new-tab-ssh.json | 4 +- ...ules-settings-repo-metadata-fulfilled.json | 4 +- ...es-settings-resume-metadata-fulfilled.json | 4 +- ...les-settings-task-hydration-fulfilled.json | 4 +- ...-settings-workspace-context-fulfilled.json | 6 +- .../settings-bot-overrides-fulfilled.json | 4 +- ...ettings-bot-overrides-refresh-refused.json | 4 +- .../settings-bot-overrides-refused.json | 4 +- ...ettings-bot-overrides-transport-error.json | 4 +- .../goldens/settings-home-coalesced.json | 4 +- .../settings-home-providers-fulfilled.json | 4 +- ...ings-home-providers-refuse-after-data.json | 4 +- .../settings-home-providers-refused.json | 4 +- ...ttings-home-providers-transport-error.json | 4 +- .../goldens/settings-new-tab-refused.json | 4 +- .../goldens/settings-new-tab-ssh.json | 4 +- .../settings-new-tab-transport-error.json | 4 +- .../goldens/settings-repo-cache-expiry.json | 4 +- .../settings-repo-metadata-fulfilled.json | 4 +- ...tings-repo-metadata-refuse-after-data.json | 4 +- .../settings-repo-metadata-refused.json | 4 +- .../settings-repo-metadata-single-host.json | 4 +- ...ettings-repo-metadata-transport-error.json | 4 +- .../settings-resume-metadata-fulfilled.json | 4 +- ...ngs-resume-metadata-refuse-after-data.json | 4 +- .../settings-resume-metadata-refused.json | 4 +- ...tings-resume-metadata-transport-error.json | 4 +- .../settings-task-hydration-fulfilled.json | 4 +- ...ings-task-hydration-refuse-after-data.json | 4 +- .../settings-task-hydration-refused.json | 4 +- ...ttings-task-hydration-transport-error.json | 4 +- .../settings-task-workspace-fulfilled.json | 4 +- .../settings-task-workspace-refused.json | 4 +- ...ttings-task-workspace-transport-error.json | 4 +- .../goldens/settings-task-write.json | 4 +- .../settings-workspace-context-fulfilled.json | 6 +- ...s-workspace-context-refuse-after-data.json | 4 +- .../settings-workspace-context-refused.json | 6 +- ...ngs-workspace-context-transport-error.json | 6 +- .../settings-workspace-submit-fulfilled.json | 4 +- .../settings-workspace-submit-refused.json | 4 +- ...ings-workspace-submit-transport-error.json | 4 +- mobile/rpc-foundation/pilot-scenarios.json | 8 +- .../use-new-workspace-runtime-context.test.ts | 115 +++++++++++++++ .../use-new-workspace-runtime-context.ts | 13 +- .../src/test-support/rpc-recording/README.md | 22 ++- .../rpc-recording/unhandled-recording.test.ts | 27 ++++ .../src/transport/rpc-refusal-message.test.ts | 43 ++++++ mobile/src/transport/rpc-refusal-message.ts | 19 +-- .../src/transport/settings-read-operations.ts | 4 +- 161 files changed, 552 insertions(+), 515 deletions(-) create mode 100644 mobile/src/components/use-new-workspace-runtime-context.test.ts create mode 100644 mobile/src/test-support/rpc-recording/unhandled-recording.test.ts create mode 100644 mobile/src/transport/rpc-refusal-message.test.ts diff --git a/mobile/rpc-foundation/goldens/b1.json b/mobile/rpc-foundation/goldens/b1.json index 1e0a26e1893..d75b08eeb2e 100644 --- a/mobile/rpc-foundation/goldens/b1.json +++ b/mobile/rpc-foundation/goldens/b1.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/b2.json b/mobile/rpc-foundation/goldens/b2.json index b379fd05b0f..87efa48eb7d 100644 --- a/mobile/rpc-foundation/goldens/b2.json +++ b/mobile/rpc-foundation/goldens/b2.json @@ -3,9 +3,9 @@ "family": "project-explicit-false", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/b3.json b/mobile/rpc-foundation/goldens/b3.json index 42be10f7e07..1cbde8cdc60 100644 --- a/mobile/rpc-foundation/goldens/b3.json +++ b/mobile/rpc-foundation/goldens/b3.json @@ -3,9 +3,9 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json b/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json index f997f179ee1..5fadb7d9681 100644 --- a/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json +++ b/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json b/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json index 8588d3d73c3..c5979481087 100644 --- a/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json +++ b/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/inventory-lifecycle.json b/mobile/rpc-foundation/goldens/inventory-lifecycle.json index cbfc520def2..f9863ed37ec 100644 --- a/mobile/rpc-foundation/goldens/inventory-lifecycle.json +++ b/mobile/rpc-foundation/goldens/inventory-lifecycle.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/inventory-repeat-query.json b/mobile/rpc-foundation/goldens/inventory-repeat-query.json index 3cd516d14c6..0d2df08b868 100644 --- a/mobile/rpc-foundation/goldens/inventory-repeat-query.json +++ b/mobile/rpc-foundation/goldens/inventory-repeat-query.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/lifecycle-b3.json b/mobile/rpc-foundation/goldens/lifecycle-b3.json index d4ece9e9165..0ea52cd8c86 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-b3.json +++ b/mobile/rpc-foundation/goldens/lifecycle-b3.json @@ -3,9 +3,9 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json b/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json index 05b4799c653..8490de7adcf 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json +++ b/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json b/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json index e158171f45a..9258e44763f 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json +++ b/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json b/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json index 1cbd5f00e29..8feff8ce924 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json +++ b/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json b/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json index b7ab8a13598..d7af4cb5a20 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json +++ b/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json @@ -1,11 +1,11 @@ { "operation": "settings.workspace-context", "family": "settings.workspace-context", - "namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"], + "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json index 7eb20ce8402..c6f7cb4d7f5 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json @@ -3,9 +3,9 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json index b3c815527be..3be1d2da2e1 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json @@ -3,9 +3,9 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json index 1e772a5f28a..55f1ebea0cb 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json @@ -3,9 +3,9 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json b/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json index e6d8bcf5bd5..14aa01cde22 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json @@ -3,9 +3,9 @@ "family": "git.commit-message-ai", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json b/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json index 829090d2a8e..f4281440607 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json @@ -3,9 +3,9 @@ "family": "git.history-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json b/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json index ecf44b15709..8978ef5da2b 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json @@ -3,9 +3,9 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json b/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json index 999ad75768f..09e6c005800 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json @@ -3,9 +3,9 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json index 24dad2ff410..a3a594468ce 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json index b56a4585c45..d183ffc842e 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json index b32aface165..8d46a010500 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json index 2c32a21683d..779b264e1ec 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json index ad5c21d71cb..7dd3ec28730 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, @@ -536,60 +536,6 @@ "name": "git.bulkStage#1", "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"git.bulkStage\",\"params\":{\"worktree\":\"id:repo42::/p\",\"filePaths\":[\"src/new.ts\"]}}" }, - "33282210f096": { - "outcome": { - "commitMessage": "feat: recorded", - "committed": false, - "error": { - "message": "inner refused" - }, - "ok": false, - "status": { - "branch": "feature", - "conflictOperation": "unknown", - "entries": [ - { - "added": { - "$rpc": "undefined" - }, - "area": "staged", - "conflictKind": { - "$rpc": "undefined" - }, - "conflictStatus": { - "$rpc": "undefined" - }, - "conflictStatusSource": { - "$rpc": "undefined" - }, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/app.ts", - "removed": { - "$rpc": "undefined" - }, - "status": "modified" - } - ], - "head": "abc1234", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "behindCommitsArePatchEquivalent": { - "$rpc": "undefined" - }, - "hasConfiguredPushTarget": { - "$rpc": "undefined" - }, - "hasUpstream": true, - "upstreamName": { - "$rpc": "undefined" - } - } - } - } - }, "368b0b9ce80a": { "name": "progress", "value": "staging" @@ -1322,63 +1268,6 @@ } } }, - "85e126c40505": { - "status": "fulfilled", - "startedAt": 0, - "settledAt": 0, - "value": { - "commitMessage": "feat: recorded", - "committed": false, - "error": { - "message": "inner refused" - }, - "ok": false, - "status": { - "branch": "feature", - "conflictOperation": "unknown", - "entries": [ - { - "added": { - "$rpc": "undefined" - }, - "area": "staged", - "conflictKind": { - "$rpc": "undefined" - }, - "conflictStatus": { - "$rpc": "undefined" - }, - "conflictStatusSource": { - "$rpc": "undefined" - }, - "oldPath": { - "$rpc": "undefined" - }, - "path": "src/app.ts", - "removed": { - "$rpc": "undefined" - }, - "status": "modified" - } - ], - "head": "abc1234", - "upstreamStatus": { - "ahead": 1, - "behind": 0, - "behindCommitsArePatchEquivalent": { - "$rpc": "undefined" - }, - "hasConfiguredPushTarget": { - "$rpc": "undefined" - }, - "hasUpstream": true, - "upstreamName": { - "$rpc": "undefined" - } - } - } - } - }, "8b784bb9dff5": { "status": "fulfilled", "startedAt": 0, @@ -2691,9 +2580,9 @@ "2af3debae21a" ], "settlements": { - "run": "85e126c40505" + "run": "2e35579e2fc7" }, - "state": "33282210f096", + "state": "2c921c059023", "effects": ["368b0b9ce80a", "6a5c9570c542", "7778d4c43a58"] } }, @@ -2715,9 +2604,9 @@ "2af3debae21a" ], "settlements": { - "run": "85e126c40505" + "run": "2e35579e2fc7" }, - "state": "33282210f096", + "state": "2c921c059023", "effects": ["368b0b9ce80a", "6a5c9570c542", "7778d4c43a58"] } }, @@ -2739,9 +2628,9 @@ "2af3debae21a" ], "settlements": { - "run": "85e126c40505" + "run": "2e35579e2fc7" }, - "state": "33282210f096", + "state": "2c921c059023", "effects": ["368b0b9ce80a", "6a5c9570c542", "7778d4c43a58"] } }, @@ -2763,9 +2652,9 @@ "2af3debae21a" ], "settlements": { - "run": "85e126c40505" + "run": "2e35579e2fc7" }, - "state": "33282210f096", + "state": "2c921c059023", "effects": ["368b0b9ce80a", "6a5c9570c542", "7778d4c43a58"] } }, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json index fcd22440108..bd4e060ffb8 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json index 25a7e8e32ab..6a449f53932 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json index 8a96a264a4f..e80a6b9110f 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json index e3c9d795e92..353f1f1d459 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json index 87be6209cf9..89077db5de9 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json index a9c8b83b1b9..29bcefde002 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json index 5051fd51ac1..0806425d50a 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json index f85869dbf43..77f14d83e1d 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json index 94560aaaf90..b4065bcbca9 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json index 034f30b9b0c..0e544e8e18d 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json index ccd1bd2bd4f..bbdcd9bd8a5 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.eligibility", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json index 030b834cd85..bb7c6b395c5 100644 --- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json +++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json index 0410d032a5a..0b495b9d52e 100644 --- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json +++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json index 39d9f50a31a..632f7e0afb2 100644 --- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json +++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json index 4ac40f4e7b5..1a4ff6f9c02 100644 --- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json +++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json index cb5e22b1f25..2dd4e9387fd 100644 --- a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json +++ b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json @@ -3,9 +3,9 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json index 66b7b237bca..a27b2270091 100644 --- a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json +++ b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json @@ -3,9 +3,9 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json b/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json index c51d82d7bb4..f5a0764b69b 100644 --- a/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json +++ b/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json @@ -3,9 +3,9 @@ "family": "project-explicit-false", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json index da5847f5874..0d4d381b130 100644 --- a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json +++ b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json @@ -3,9 +3,9 @@ "family": "session.tab-reveal", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json index bf2bf6082aa..bf3c291f0b4 100644 --- a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json @@ -3,9 +3,9 @@ "family": "session.tab-reveal", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json index cdc97e82af9..866e9ccf0fc 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json index 0a187865dc5..12fd8e843a7 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json index effd65b83a9..b9e92b91fdf 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json b/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json index 9197c37cd94..349a9177531 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json @@ -3,9 +3,9 @@ "family": "settings-best-effort", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json index d6076f02626..35ca7122e46 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json index 7e85d9235b2..7f3d079a30f 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json index e6cfe226ed1..dbf80fc423c 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json index 33f572a839d..207d17af14f 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json index c186d6125e7..ff1eb4b8dc6 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json index 8dfd2f51d2d..ff6c0e23afe 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json index 4bce7998ce5..e69134aff04 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json index 89915146449..1fd28073945 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json index 2c8c593e51a..078110417cc 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json index f53788ef9c8..00304faf82b 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json index b1633d81741..6cc1bf4eca1 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json index 52f02304203..1efebddc603 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json index a8b52f0aaec..44898d0684c 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json index e1adbce9025..dc5ebae4f1f 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json index f1a5a0b5513..29358df6b32 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json index 1712f46acdd..37a44c30440 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json index 1f50266e65c..bc62298026c 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json index 8cf20f5f9ad..0b7477afdb0 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json index 148c70b1147..71908e094a1 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.task-workspace", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json index 18e7e37627b..814ef610040 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json @@ -1,11 +1,11 @@ { "operation": "settings.workspace-context", "family": "settings.workspace-context", - "namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"], + "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json index 78f6745beed..9e2671ff88a 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json @@ -1,11 +1,11 @@ { "operation": "settings.workspace-context", "family": "settings.workspace-context", - "namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"], + "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json index 9322f1ad6a7..efb2c892801 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json @@ -1,24 +1,16 @@ { "operation": "settings.workspace-context", "family": "settings.workspace-context", - "namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"], + "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, "goldenFormatVersion": 3, "values": { - "045f11564884": { - "name": "unhandled-rejection", - "value": { - "category": "TypeError", - "isRpcDeliveryUnknown": false, - "message": "Cannot read properties of null (reading 'settings')" - } - }, "090c88478661": { "name": "settings.get#1", "args": [ @@ -293,14 +285,6 @@ } } }, - "4fdb20ad5654": { - "name": "unhandled-rejection", - "value": { - "category": "TypeError", - "isRpcDeliveryUnknown": false, - "message": "Cannot read properties of undefined (reading 'settings')" - } - }, "563e4c82b345": { "name": "preflight.check#1", "args": [ @@ -682,8 +666,8 @@ "settlements": { "mount": "eb79a9b3682a" }, - "state": "f6a09f8c5b85", - "effects": ["4fdb20ad5654"] + "state": "3a834cb85dd8", + "effects": [] } }, { @@ -694,8 +678,8 @@ "settlements": { "mount": "eb79a9b3682a" }, - "state": "f6a09f8c5b85", - "effects": ["045f11564884"] + "state": "3a834cb85dd8", + "effects": [] } }, { diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json index 3f2e02be3fc..116fa4bd664 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json @@ -1,11 +1,11 @@ { "operation": "settings.workspace-context", "family": "settings.workspace-context", - "namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"], + "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, @@ -97,14 +97,6 @@ } } }, - "0d56880d8286": { - "name": "unhandled-rejection", - "value": { - "category": "TypeError", - "isRpcDeliveryUnknown": false, - "message": "Cannot read properties of undefined (reading 'ui')" - } - }, "0fb6ff3590e2": { "name": "preflight.check#1", "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}" @@ -377,14 +369,6 @@ } } }, - "78b8435a485f": { - "name": "unhandled-rejection", - "value": { - "category": "TypeError", - "isRpcDeliveryUnknown": false, - "message": "Cannot read properties of null (reading 'ui')" - } - }, "822040616fbb": { "name": "settings.get#1", "args": [ @@ -461,17 +445,6 @@ } } }, - "8a63b85fee0c": { - "providers": [], - "settings": { - "defaultTuiAgent": "codex", - "disabledTuiAgents": ["claude"], - "hostSettingOverrides": {}, - "prBotAuthorOverrides": ["bot-user"], - "visibleTaskProviders": ["github", "linear"] - }, - "trust": {} - }, "8be416d0b1ef": { "name": "ui.get#1", "args": [ @@ -686,8 +659,8 @@ "settlements": { "mount": "eb79a9b3682a" }, - "state": "8a63b85fee0c", - "effects": ["0d56880d8286"] + "state": "2a7485a88169", + "effects": [] } }, { @@ -698,8 +671,8 @@ "settlements": { "mount": "eb79a9b3682a" }, - "state": "8a63b85fee0c", - "effects": ["78b8435a485f"] + "state": "2a7485a88169", + "effects": [] } }, { diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json index faadddb002e..757598a0e6a 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.workspace-submit", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json index b86fd4be1fa..55ac221f14d 100644 --- a/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json +++ b/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json @@ -3,9 +3,9 @@ "family": "worktree.review-link", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json b/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json index e162af1a201..cbe3b5f2261 100644 --- a/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json +++ b/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json b/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json index a8661486565..e45c1604510 100644 --- a/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json +++ b/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json b/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json index a9d59429b6a..d240566591c 100644 --- a/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json +++ b/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json b/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json index d1eef4a3c31..2905f3e21e6 100644 --- a/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json +++ b/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-default.json b/mobile/rpc-foundation/goldens/sc-base-ref-default.json index 5db55685a29..8a2acbff317 100644 --- a/mobile/rpc-foundation/goldens/sc-base-ref-default.json +++ b/mobile/rpc-foundation/goldens/sc-base-ref-default.json @@ -3,9 +3,9 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json b/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json index 5af5b4f1296..7b7b6d830e3 100644 --- a/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json +++ b/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json @@ -3,9 +3,9 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json b/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json index a7bc4b6b138..9bc6d400f74 100644 --- a/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json +++ b/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json @@ -3,9 +3,9 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json b/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json index 89064dffb11..a0a65af7cb6 100644 --- a/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json +++ b/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json @@ -3,9 +3,9 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json b/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json index a9f618e2b54..d34cdd3ecd7 100644 --- a/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json +++ b/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json @@ -3,9 +3,9 @@ "family": "git.commit-message-ai", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json b/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json index 043d31da9d6..05f9016d7bf 100644 --- a/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json +++ b/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json @@ -3,9 +3,9 @@ "family": "git.commit-message-ai", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-commit-message-generated.json b/mobile/rpc-foundation/goldens/sc-commit-message-generated.json index 8553ac2c8b8..9857e1fdb33 100644 --- a/mobile/rpc-foundation/goldens/sc-commit-message-generated.json +++ b/mobile/rpc-foundation/goldens/sc-commit-message-generated.json @@ -3,9 +3,9 @@ "family": "git.commit-message-ai", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-create-existing-review.json b/mobile/rpc-foundation/goldens/sc-create-existing-review.json index 4f714babe7d..6917424e65a 100644 --- a/mobile/rpc-foundation/goldens/sc-create-existing-review.json +++ b/mobile/rpc-foundation/goldens/sc-create-existing-review.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json b/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json index 4334e60261f..257a2219380 100644 --- a/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json +++ b/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json b/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json index 4fa79747bdb..11e860a8081 100644 --- a/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json +++ b/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json b/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json index 7731fd78fea..e417a7de77d 100644 --- a/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json +++ b/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json b/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json index 3367315375a..ab0ecc6329f 100644 --- a/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json +++ b/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json b/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json index 7e4a85c7807..317e507f78d 100644 --- a/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json +++ b/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json b/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json index 42479b8d881..5784f4b98c9 100644 --- a/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json +++ b/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json @@ -3,9 +3,9 @@ "family": "hostedReview.eligibility", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-history-loaded.json b/mobile/rpc-foundation/goldens/sc-history-loaded.json index eb98e12f8bb..361b3506d22 100644 --- a/mobile/rpc-foundation/goldens/sc-history-loaded.json +++ b/mobile/rpc-foundation/goldens/sc-history-loaded.json @@ -3,9 +3,9 @@ "family": "git.history-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json b/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json index c81fb9f324c..3daab688f83 100644 --- a/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json +++ b/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json @@ -3,9 +3,9 @@ "family": "worktree.review-link", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-pr-link-read.json b/mobile/rpc-foundation/goldens/sc-pr-link-read.json index 350c6ff06b9..ed8ccb0d097 100644 --- a/mobile/rpc-foundation/goldens/sc-pr-link-read.json +++ b/mobile/rpc-foundation/goldens/sc-pr-link-read.json @@ -3,9 +3,9 @@ "family": "worktree.review-link", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-pr-link-set.json b/mobile/rpc-foundation/goldens/sc-pr-link-set.json index 891b55fa1cb..1df5f5a9b29 100644 --- a/mobile/rpc-foundation/goldens/sc-pr-link-set.json +++ b/mobile/rpc-foundation/goldens/sc-pr-link-set.json @@ -3,9 +3,9 @@ "family": "worktree.review-link", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json index f56ad5b0719..fb5af33ce6c 100644 --- a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json +++ b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json @@ -3,9 +3,9 @@ "family": "hostedReview.eligibility", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json index 408c547a998..18f71570b49 100644 --- a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json +++ b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json @@ -3,9 +3,9 @@ "family": "hostedReview.eligibility", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json b/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json index 3cd399e645c..2a5ce54f5e9 100644 --- a/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json +++ b/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json @@ -3,9 +3,9 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json b/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json index f89f6433c9f..ba44e6f2ae6 100644 --- a/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json +++ b/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json @@ -3,9 +3,9 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-push.json b/mobile/rpc-foundation/goldens/sc-prerequisite-push.json index 92ae6703db9..7aca33ed0c4 100644 --- a/mobile/rpc-foundation/goldens/sc-prerequisite-push.json +++ b/mobile/rpc-foundation/goldens/sc-prerequisite-push.json @@ -3,9 +3,9 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json b/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json index 5ceb47f5809..31b3c822258 100644 --- a/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json +++ b/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json @@ -3,9 +3,9 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json b/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json index 509d1be2e70..aff8a6af74b 100644 --- a/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json +++ b/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json @@ -3,9 +3,9 @@ "family": "session.tab-reveal", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-reveal-timeout.json b/mobile/rpc-foundation/goldens/sc-reveal-timeout.json index 780aab803c4..a5fb7df6775 100644 --- a/mobile/rpc-foundation/goldens/sc-reveal-timeout.json +++ b/mobile/rpc-foundation/goldens/sc-reveal-timeout.json @@ -3,9 +3,9 @@ "family": "session.tab-reveal", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json b/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json index 8ea6d83bb2c..54c898b951c 100644 --- a/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json +++ b/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json @@ -3,9 +3,9 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json b/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json index e430c438492..db10ca894fc 100644 --- a/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json +++ b/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json @@ -3,9 +3,9 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json b/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json index 336769ebb6c..0a90b1839d9 100644 --- a/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json +++ b/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json @@ -3,9 +3,9 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-review-commit.json b/mobile/rpc-foundation/goldens/sc-review-commit.json index 86d07d748e2..d2613882050 100644 --- a/mobile/rpc-foundation/goldens/sc-review-commit.json +++ b/mobile/rpc-foundation/goldens/sc-review-commit.json @@ -3,9 +3,9 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json b/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json index 0203f9b7787..29cca81553b 100644 --- a/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json +++ b/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json @@ -3,9 +3,9 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/sc-review-status-normalized.json b/mobile/rpc-foundation/goldens/sc-review-status-normalized.json index b0797df544e..0ad2ad61872 100644 --- a/mobile/rpc-foundation/goldens/sc-review-status-normalized.json +++ b/mobile/rpc-foundation/goldens/sc-review-status-normalized.json @@ -3,9 +3,9 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/schedules-b3.json b/mobile/rpc-foundation/goldens/schedules-b3.json index 7ae2b532e89..71cd8e9def3 100644 --- a/mobile/rpc-foundation/goldens/schedules-b3.json +++ b/mobile/rpc-foundation/goldens/schedules-b3.json @@ -3,9 +3,9 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json index dc48a1055db..2037d8a3077 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json b/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json index a0596c4ed5b..3180150d545 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json index 057b688d8a1..ebd75b7764e 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json index a840f5cf913..d61d2cbce19 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json index 417c0067e98..d406a8b94d7 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json index c94c51bc451..fab898f38d4 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json @@ -1,11 +1,11 @@ { "operation": "settings.workspace-context", "family": "settings.workspace-context", - "namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"], + "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json index b09ca2cf30d..b276b010db3 100644 --- a/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json index 998b1f243de..132ca959a1b 100644 --- a/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json +++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json @@ -3,9 +3,9 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json index 948f3d3a3e5..0d38f7b2cb4 100644 --- a/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json +++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json @@ -3,9 +3,9 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json index 14c653fbd73..db57f8eb643 100644 --- a/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-home-coalesced.json b/mobile/rpc-foundation/goldens/settings-home-coalesced.json index 25a79b32d1d..f8225cbadc2 100644 --- a/mobile/rpc-foundation/goldens/settings-home-coalesced.json +++ b/mobile/rpc-foundation/goldens/settings-home-coalesced.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json b/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json index 78875f4d390..3bb9f0495f0 100644 --- a/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json index 338286ccbf7..5addc76d5a9 100644 --- a/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-refused.json b/mobile/rpc-foundation/goldens/settings-home-providers-refused.json index b09870dddbb..88e26b514f6 100644 --- a/mobile/rpc-foundation/goldens/settings-home-providers-refused.json +++ b/mobile/rpc-foundation/goldens/settings-home-providers-refused.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json b/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json index 21844890384..3b30c850f8b 100644 --- a/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-new-tab-refused.json b/mobile/rpc-foundation/goldens/settings-new-tab-refused.json index 362c5b957a2..c3ef7235b2a 100644 --- a/mobile/rpc-foundation/goldens/settings-new-tab-refused.json +++ b/mobile/rpc-foundation/goldens/settings-new-tab-refused.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json b/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json index 9f2e02cf282..25caccc4629 100644 --- a/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json +++ b/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json b/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json index 0bd5db38fc4..259eb1d2d80 100644 --- a/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json b/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json index c59b0444a5a..6d2355ab518 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json +++ b/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json index 2ad0d736e54..90d0a5230d3 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json index abc8bf40330..3565f07c1a5 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json index c98c25b2a45..930900e3524 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json index 2e01d9e1fbe..c97862bc49e 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json index f609f422ddc..78eda9aed7d 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json index f759c38ef00..937c2cb963f 100644 --- a/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json index f821dbfcbd9..340c733ac6f 100644 --- a/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json index 33f1ab3a526..4084eb48dd0 100644 --- a/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json +++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json index a1a288f7ed4..2b9ba494259 100644 --- a/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json b/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json index 66fe1ba3511..91fbfd96d75 100644 --- a/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json index 0884fd84580..c92c51226a4 100644 --- a/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json b/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json index 87a0cc045cb..bc9c7b9d7ef 100644 --- a/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json +++ b/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json b/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json index 690c83c62c9..adb5d177665 100644 --- a/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json b/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json index fa1e27c96f4..e7cca9c9425 100644 --- a/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.task-workspace", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json b/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json index 6a1fb0525ed..04f6b86c5a9 100644 --- a/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json +++ b/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json @@ -3,9 +3,9 @@ "family": "settings.task-workspace", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json b/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json index 4b9c5290912..7eabe3e893d 100644 --- a/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.task-workspace", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-task-write.json b/mobile/rpc-foundation/goldens/settings-task-write.json index 97b0ac7936f..f130b4ef0fe 100644 --- a/mobile/rpc-foundation/goldens/settings-task-write.json +++ b/mobile/rpc-foundation/goldens/settings-task-write.json @@ -3,9 +3,9 @@ "family": "settings-best-effort", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json b/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json index 639330f0aa7..9c0b3a0feb5 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json @@ -1,11 +1,11 @@ { "operation": "settings.workspace-context", "family": "settings.workspace-context", - "namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"], + "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json index 8b03d8f17ff..2e428b93443 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json @@ -3,9 +3,9 @@ "family": "settings.workspace-context", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json b/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json index 4f4031319f6..20993000ca4 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json @@ -1,11 +1,11 @@ { "operation": "settings.workspace-context", "family": "settings.workspace-context", - "namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"], + "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json b/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json index 4a83c6a3f5c..be440c90f54 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json @@ -1,11 +1,11 @@ { "operation": "settings.workspace-context", "family": "settings.workspace-context", - "namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"], + "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json b/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json index 1e4586b37ee..7d834b8f9af 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.workspace-submit", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json b/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json index 64245dead80..72f7ca18afa 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json @@ -3,9 +3,9 @@ "family": "settings.workspace-submit", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json b/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json index ff6f1d3b8fc..f6d0ea74ccf 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.workspace-submit", "namedDeltas": [], "runnerVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "6a12160a87ceab04e74198f6dd35b8cf9125794222ee95cf6ca1872f29849960", + "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, diff --git a/mobile/rpc-foundation/pilot-scenarios.json b/mobile/rpc-foundation/pilot-scenarios.json index 216da99ca16..2ba9fffb3cc 100644 --- a/mobile/rpc-foundation/pilot-scenarios.json +++ b/mobile/rpc-foundation/pilot-scenarios.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "baseline": "16d1ab81d3fd08e342b2f0ac0cc6f9e4aea4aaee", + "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", "scenarios": [ { "id": "b1", @@ -514,7 +514,7 @@ "checkpoint": "settled" } ], - "namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"] + "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"] }, { "id": "settings-workspace-context-refused", @@ -586,7 +586,7 @@ "checkpoint": "settled" } ], - "namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"] + "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"] }, { "id": "settings-workspace-context-transport-error", @@ -655,7 +655,7 @@ "checkpoint": "settled" } ], - "namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"] + "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"] }, { "id": "settings-home-providers-fulfilled", diff --git a/mobile/src/components/use-new-workspace-runtime-context.test.ts b/mobile/src/components/use-new-workspace-runtime-context.test.ts new file mode 100644 index 00000000000..f189d52e3b0 --- /dev/null +++ b/mobile/src/components/use-new-workspace-runtime-context.test.ts @@ -0,0 +1,115 @@ +import { createElement } from 'react' +import { act, create, type ReactTestRenderer } from 'react-test-renderer' +import { afterEach, describe, expect, it } from 'vitest' +import { FakeSession } from '../transport/mobile-endpoint-supervisor-test-fakes' +import type { RpcClient } from '../transport/rpc-client' +import type { RpcResponse } from '../transport/types' +import { useNewWorkspaceRuntimeContext } from './use-new-workspace-runtime-context' + +type RuntimeContext = ReturnType +type PublishedState = Pick< + RuntimeContext, + 'runtimeSettings' | 'trustedOrcaHooks' | 'availableProviders' +> + +const TRUSTED_HOOKS = { '/repo/orca.yaml': 'sha-1' } +const UI_WITH_TRUST = { ui: { trustedOrcaHooks: TRUSTED_HOOKS } } +const SETTINGS = { defaultTuiAgent: 'codex', visibleTaskProviders: ['github', 'linear'] } + +function reply(result: unknown): RpcResponse { + return { id: 'r', ok: true, result, _meta: { runtimeId: 'runtime-1' } } +} + +/** Every prerequisite answers normally; only the two reads under test vary. */ +function clientAnswering(settingsResult: unknown, uiResult: unknown): RpcClient { + const client = new FakeSession('connected') + client.sendRequest.mockImplementation(async (method: string) => { + switch (method) { + case 'settings.get': + return reply(settingsResult) + case 'ui.get': + return reply(uiResult) + case 'preflight.check': + return reply({ glab: { installed: false } }) + default: + return reply({ connected: false }) + } + }) + return client +} + +describe('useNewWorkspaceRuntimeContext', () => { + let renderer: ReactTestRenderer | null = null + let context: RuntimeContext | null = null + + afterEach(() => { + act(() => renderer?.unmount()) + renderer = null + context = null + }) + + function Harness({ client }: { client: RpcClient }): null { + context = useNewWorkspaceRuntimeContext(client, true) + return null + } + + /** Answering twice re-renders the live harness, so the second call is a host swap, not a remount. */ + async function answer(settingsResult: unknown, uiResult: unknown): Promise { + const element = createElement(Harness, { client: clientAnswering(settingsResult, uiResult) }) + await act(async () => { + if (renderer) { + renderer.update(element) + } else { + renderer = create(element) + } + }) + await act(async () => {}) + const { runtimeSettings, trustedOrcaHooks, availableProviders } = context! + return { runtimeSettings, trustedOrcaHooks, availableProviders } + } + + // A null result used to throw the `settings` property read out of the effect, skipping the + // provider commit the absent case still reached. + it.each([ + ['null', null], + ['absent', undefined], + ['without a settings member', {}] + ])('degrades a %s settings result to absent settings', async (_label, settingsResult) => { + expect(await answer(settingsResult, UI_WITH_TRUST)).toEqual({ + runtimeSettings: null, + trustedOrcaHooks: TRUSTED_HOOKS, + availableProviders: ['github'] + }) + }) + + // Same defect on the sibling leg: `reading 'ui'` threw after the settings commit and before + // the provider commit. + it.each([ + ['null', null], + ['absent', undefined], + ['without a ui member', {}] + ])('degrades a %s ui result to untrusted hooks', async (_label, uiResult) => { + expect(await answer({ settings: SETTINGS }, uiResult)).toEqual({ + runtimeSettings: SETTINGS, + trustedOrcaHooks: {}, + availableProviders: ['github'] + }) + }) + + // The blank, not just the absence of a throw: trustedOrcaHooks gates the setup-hook approval + // prompt in use-new-workspace-create-submit.ts, so a stale value would skip it. + it('blanks the trust an earlier host published when the next ui result is null', async () => { + expect((await answer({ settings: SETTINGS }, UI_WITH_TRUST)).trustedOrcaHooks).toEqual( + TRUSTED_HOOKS + ) + expect((await answer({ settings: SETTINGS }, null)).trustedOrcaHooks).toEqual({}) + }) + + it('publishes the settings and trust a host does send', async () => { + expect(await answer({ settings: SETTINGS }, UI_WITH_TRUST)).toEqual({ + runtimeSettings: SETTINGS, + trustedOrcaHooks: TRUSTED_HOOKS, + availableProviders: ['github'] + }) + }) +}) diff --git a/mobile/src/components/use-new-workspace-runtime-context.ts b/mobile/src/components/use-new-workspace-runtime-context.ts index e178d714ce8..b7d3b142675 100644 --- a/mobile/src/components/use-new-workspace-runtime-context.ts +++ b/mobile/src/components/use-new-workspace-runtime-context.ts @@ -1,4 +1,4 @@ -import { settingsRead } from '../transport/settings-read-operations' +import { optionalSettingsRead } from '../transport/settings-read-operations' import { useEffect, useState } from 'react' import type { PersistedTrustedOrcaHooks } from '../../../src/shared/orca-yaml-hook-types' import type { RpcClient } from '../transport/rpc-client' @@ -10,6 +10,8 @@ import { } from '../tasks/mobile-task-providers' import type { NewWorktreeRuntimeSettings } from './new-worktree-agent-selection' +type UiGetResult = { ui?: { trustedOrcaHooks?: PersistedTrustedOrcaHooks } } | null | undefined + function settledSuccess(entry: PromiseSettledResult): RpcSuccess | null { return entry.status === 'fulfilled' && entry.value.ok ? (entry.value as RpcSuccess) : null } @@ -40,7 +42,7 @@ export function useNewWorkspaceRuntimeContext( client.sendRequest('linear.status') ]) const [settingsRes, uiRes] = await Promise.allSettled([ - settingsRead.request(client), + optionalSettingsRead.request(client), client.sendRequest('ui.get') ]) if (stale) { @@ -48,7 +50,9 @@ export function useNewWorkspaceRuntimeContext( } const settingsResult = - settingsRes.status === 'fulfilled' ? settingsRead.interpret(settingsRes.value) : null + settingsRes.status === 'fulfilled' + ? optionalSettingsRead.interpret(settingsRes.value) + : null const settingsValue = settingsResult?.accepted ? // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. (settingsResult.value as NewWorktreeRuntimeSettings & { visibleTaskProviders?: unknown }) @@ -58,7 +62,8 @@ export function useNewWorkspaceRuntimeContext( } const uiResult = settledSuccess(uiRes) if (uiResult) { - const ui = (uiResult.result as { ui?: { trustedOrcaHooks?: PersistedTrustedOrcaHooks } }).ui + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary; a missing result reads as untrusted. + const ui = (uiResult.result as UiGetResult)?.ui setTrustedOrcaHooks(ui?.trustedOrcaHooks ?? {}) } diff --git a/mobile/src/test-support/rpc-recording/README.md b/mobile/src/test-support/rpc-recording/README.md index 7870eb239bf..e74b7b1f56b 100644 --- a/mobile/src/test-support/rpc-recording/README.md +++ b/mobile/src/test-support/rpc-recording/README.md @@ -163,8 +163,12 @@ recorded success is the shipped null result; and `settings.update`, a best-effor body no call site reads. Detached unhandled rejections are captured as effects in a sequential process-scoped window, -with prior process listeners restored afterward. This preserves the known main bug recorded -as `new-workspace-runtime-context-null-settings-typeerror`; it does not repair the effect. +with prior process listeners restored afterward. The known main bug it first recorded is fixed on +both legs: `new-workspace-runtime-context-null-results-degrade-to-absent` now records a null or +absent `settings.get` or `ui.get` result degrading the way a reply missing that member does, so +neither matrix golden carries a property-read TypeError effect any more. That leaves no golden +recording an unhandled rejection at all, so `unhandled-recording.test.ts` is what pins the capture: +without it a refactor could stop emitting the effect and every golden would still compare clean. Task-model projections record setter invocations and resulting model values, not native UI. ## Commands and checker contract @@ -236,11 +240,15 @@ observes only sender calls and settlements. ### Recorded finding: a refused refresh is not handled the same way twice -The five refuse-after-data probes record `settingsRead` refusing a _refresh_ after a success. -Four call sites retain what they had. `use-mobile-tasks-runtime-hydration.tsx` does not: it -publishes `{}`, so a refused refresh wipes the runtime task settings. That divergence is recorded, -not repaired — `settings-task-hydration-refuse-after-data.json` is the observation, and changing -the behaviour is a product change with its own re-record. +The five refuse-after-data probes record a `settings.get` read refusing a _refresh_ after a +success: home providers and task hydration read through `settingsRead`, workspace context, resume +metadata and repo metadata through `optionalSettingsRead`. Which one a site uses does not change +what these probes record — the two share an acceptance and differ only in how they read a null +result, and a refusal never reaches the reader. Four call sites retain what they had. +`use-mobile-tasks-runtime-hydration.tsx` does not: it publishes `{}`, so a refused refresh wipes +the runtime task settings. That divergence is recorded, not repaired — +`settings-task-hydration-refuse-after-data.json` is the observation, and changing the behaviour is +a product change with its own re-record. ### Running it for a step-4 migration diff --git a/mobile/src/test-support/rpc-recording/unhandled-recording.test.ts b/mobile/src/test-support/rpc-recording/unhandled-recording.test.ts new file mode 100644 index 00000000000..6e89846add4 --- /dev/null +++ b/mobile/src/test-support/rpc-recording/unhandled-recording.test.ts @@ -0,0 +1,27 @@ +import { describe, expect, it } from 'vitest' +import { recordUnhandledRejections } from './unhandled-recording' + +// No golden records an unhandled rejection any more, so this is the only thing pinning the capture. +describe('recordUnhandledRejections', () => { + it('records a detached rejection as an effect and restores the prior listeners', async () => { + const before = process.rawListeners('unhandledRejection') + const effects: { name: string; value: unknown }[] = [] + + const stop = recordUnhandledRejections((name, value) => effects.push({ name, value })) + void Promise.reject(new TypeError("Cannot read properties of null (reading 'ui')")) + await new Promise((resolve) => setImmediate(resolve)) + stop() + + expect(effects).toEqual([ + { + name: 'unhandled-rejection', + value: { + category: 'TypeError', + message: "Cannot read properties of null (reading 'ui')", + isRpcDeliveryUnknown: false + } + } + ]) + expect(process.rawListeners('unhandledRejection')).toEqual(before) + }) +}) diff --git a/mobile/src/transport/rpc-refusal-message.test.ts b/mobile/src/transport/rpc-refusal-message.test.ts new file mode 100644 index 00000000000..2003c155b59 --- /dev/null +++ b/mobile/src/transport/rpc-refusal-message.test.ts @@ -0,0 +1,43 @@ +import { describe, expect, it } from 'vitest' +import { summarizeCommitFailure } from '../../../src/shared/source-control-commit-failure' +import { hostReplyErrorTextOrFallback, refusedRpcMessageOrFallback } from './rpc-refusal-message' + +describe('refusedRpcMessageOrFallback', () => { + it('falls back for a message-less refusal and for a non-Error throw', () => { + const messageless = new Error('cleared below') + messageless.message = '' + expect(refusedRpcMessageOrFallback(new Error('refused'), 'Commit failed')).toBe('refused') + expect(refusedRpcMessageOrFallback(messageless, 'Commit failed')).toBe('Commit failed') + expect(refusedRpcMessageOrFallback('refused', 'Commit failed')).toBe('Commit failed') + }) +}) + +describe('hostReplyErrorTextOrFallback', () => { + it('keeps a non-empty host string', () => { + expect(hostReplyErrorTextOrFallback('nothing staged', 'Commit failed')).toBe('nothing staged') + }) + + it('falls back for an absent, null or empty host error', () => { + expect(hostReplyErrorTextOrFallback(undefined, 'Commit failed')).toBe('Commit failed') + expect(hostReplyErrorTextOrFallback(null, 'Commit failed')).toBe('Commit failed') + expect(hostReplyErrorTextOrFallback('', 'Commit failed')).toBe('Commit failed') + }) + + it('falls back for a truthy non-string, which the host contract does not allow', () => { + expect(hostReplyErrorTextOrFallback({ message: 'inner refused' }, 'Commit failed')).toBe( + 'Commit failed' + ) + expect(hostReplyErrorTextOrFallback(['a'], 'Commit failed')).toBe('Commit failed') + expect(hostReplyErrorTextOrFallback(7, 'Commit failed')).toBe('Commit failed') + expect(hostReplyErrorTextOrFallback(true, 'Commit failed')).toBe('Commit failed') + }) + + // The consumer that main's pass-through broke: `.slice` on an object, `.replace` on an array. + it('yields text the commit-failure summarizer can read', () => { + for (const malformed of [{ message: 'inner refused' }, ['inner refused'], 7]) { + expect(summarizeCommitFailure(hostReplyErrorTextOrFallback(malformed, 'Commit failed'))).toBe( + 'Commit failed' + ) + } + }) +}) diff --git a/mobile/src/transport/rpc-refusal-message.ts b/mobile/src/transport/rpc-refusal-message.ts index ceb17792746..1cc1f6fc592 100644 --- a/mobile/src/transport/rpc-refusal-message.ts +++ b/mobile/src/transport/rpc-refusal-message.ts @@ -1,11 +1,6 @@ /** - * A refused operation's message, or the screen's own copy when the host sent none. - * - * Call sites spelled this as `response.error?.message || fallback`. Once the refusal arrives as - * the acceptance policy's thrown Error, the `||` has to live somewhere — and it must not also - * cover a transport rejection, whose message main surfaced verbatim, empty string included. So - * a migrated call site keeps two catches where it had two paths, and only the refusal one calls - * this. + * A refused operation's message, or the screen's own copy when the host sent none. Only the + * refusal catch may call this: a transport rejection's message is surfaced verbatim, empty included. */ export function refusedRpcMessageOrFallback(error: unknown, fallback: string): string { return (error instanceof Error ? error.message : '') || fallback @@ -14,12 +9,10 @@ export function refusedRpcMessageOrFallback(error: unknown, fallback: string): s /** * An error a host reported inside an accepted reply, or the screen's copy when it sent none. * - * Exactly `result?.error || fallback`, including for a truthy non-string: main passed that value - * through under a `string` annotation, and a downstream `.replace` then threw. Stringifying it - * here would be an improvement, but an unannounced one inside a migration whose contract is that - * no behaviour changes — so the pass-through stays and the latent throw is ticketed separately. + * The host contract declares `error` as a string, so a non-string is a malformed reply and reads + * as absent — every consumer is display or prompt text, and main's pass-through made + * `summarizeCommitFailure` throw on `.slice`. */ export function hostReplyErrorTextOrFallback(value: unknown, fallback: string): string { - // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: reproduces main's own annotation of an unvalidated host field. - return ((value as string | undefined) || fallback) as string + return (typeof value === 'string' ? value : '') || fallback } diff --git a/mobile/src/transport/settings-read-operations.ts b/mobile/src/transport/settings-read-operations.ts index c98c87798b3..549b512c87c 100644 --- a/mobile/src/transport/settings-read-operations.ts +++ b/mobile/src/transport/settings-read-operations.ts @@ -38,7 +38,7 @@ const botOverridesReader: RpcCompatibleReader = } } -/** Workspace context, submit, task hydration/create and home providers share this acceptance. */ +/** Submit, task hydration/create and home providers: a null result throws the settings read. */ export const settingsRead = bindDeferredRpcOperation( defineRpcOperation({ name: 'settings.member-or-skip', @@ -49,7 +49,7 @@ export const settingsRead = bindDeferredRpcOperation( }) ) -/** History resume and repo labels historically tolerate an absent or null result. */ +/** Workspace context, history resume and repo metadata: a null result reads as absent settings. */ export const optionalSettingsRead = bindDeferredRpcOperation( defineRpcOperation({ name: 'settings.optional-member-or-skip', From 50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9 Mon Sep 17 00:00:00 2001 From: Jinwoo Hong <73622457+Jinwoo-H@users.noreply.github.com> Date: Mon, 14 Sep 2026 13:10:22 -0400 Subject: [PATCH 10/12] test(mobile): pin each RPC golden to its own scenario input, not the whole manifest (#20562) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor(mobile): pin each golden to its own scenario input, not the whole manifest `recorderSha256` covered the recorder directory plus `pilot-scenarios.json`, so every golden's header was a function of every other family's scenarios. Adding a family for one domain re-digested all 153 goldens and put a conflict on that line in every domain branch in flight, which serialized the step-4 fan-out. Split the two things it conflated. `recorderSha256` now covers the recorder directory only, with unchanged semantics: a recorder edit still forces a full, deliberate re-record. A new `scenarioSha256` pins the scenario input that golden was recorded from — every scenario `runRecording` consumed for it, in order — canonicalised through `captureValue` so an explicit-undefined param stays distinct from an absent one. `goldenRecording` takes that list instead of just its first member. The variants are hashed rather than the base they expand from because they are what was recorded: a matrix site, its replayed normal result and its partition replies are all visible in them without the derivation having to be restated. `derived-goldens.ts` is that derivation, extracted from `family-recordings.test.ts` so the digest and the recording agree by construction — a property test that restated how a matrix or schedule expands could agree with itself and with nothing else. It reproduces exactly the 153 golden ids on disk, and the census the suite already ran (every family matrixed, no stale normal-result inventory entry) now reads off its output. `golden-header-digest.test.ts` pins the four properties: - a new family in the manifest moves zero existing goldens' headers, and derives two of its own - editing one field of `b1` moves exactly `b1` and its family's four matrix goldens — not the two other `legacy-inventory` scenarios, and not the goldens that expand from `inventory-lifecycle` - editing a recorder file still moves every golden's `recorderSha256`, and no `scenarioSha256` - `recorderSha256` is unchanged by the manifest's contents, and no longer reads the file at all `GOLDEN_FORMAT_VERSION` goes to 4: a version-3 header has no `scenarioSha256`, and `compareGolden` walks the expected header's keys, so a reader that accepted one would compare that golden's own scenarios as though they were unpinned. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): re-record the 153 RPC goldens for the split digest Recorder edit, so every golden needs rewriting. Recorded from the pinned baseline `16d1ab81d3` with this branch's recorder overlaid, per the README's procedure: main has moved past the baseline, so recording in place would have failed the product-source fence. Three header fields moved and nothing else did: - `recorderSha256` 6a12160a87… -> 2fda557f58…, one value across all 153 files - `scenarioSha256` added, 153 distinct values - `goldenFormatVersion` 3 -> 4 No observation, checkpoint, value-pool entry, `baseline`, `lockfileSha256` or `platform` changed: git diff -U0 -- mobile/rpc-foundation | grep -E '^[+-]' | grep -vE '^(\+\+\+|---)' \ | grep -vcE 'recorderSha256|scenarioSha256|goldenFormatVersion' 0 Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * refactor(mobile): certify the pilot goldens from the derivation that digests them `pilot-recordings.test.ts` restated `[scenario]` instead of consuming `pilotGoldens`, so the claim that a golden's `scenarioSha256` is a function of the same derivation that records the file held only for the 75 family goldens: dropping a scenario from `pilotGoldens` left the whole suite green and put that golden outside the header oracle. The pilot suite now iterates `pilotGoldens`, and a census fails if the derivation and the goldens directory disagree in either direction — which also closes the pre-existing orphan-golden gap. Also from review: pin the cross-sibling replay that hashing the generated variants buys (a matrix golden's `normal` partition replays a sibling's recorded reply, so editing that sibling must move it); state the real reason for the format bump, which is the diagnosis a version check gives rather than a rejection the byte compare already made; drop the fourth property test, which re-proved what tests 1 and 2 and `recording-runner`'s digest test already fail on; and drop a guard in `scenarioSha256` that its only caller reaches after an identical one. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): re-record the 153 RPC goldens for the review edits Recorder files changed, so `recorderSha256` moved. Recorded from the pinned baseline with this branch's recorder laid over it, per the README's migration-branch procedure. That one header field is the only line that moved in all 153 files: `scenarioSha256` and `goldenFormatVersion` are unchanged, and no observation moved. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * docs(mobile): correct the recording suite's test count Round-2 review: the README said 200 tests; the suite is 209 after the five added here. Markdown is outside recorderSha256, so no golden moves. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): re-record the 153 goldens on the merged baseline Four header fields moved and nothing else. Proven against origin/main: every changed line in all 153 files is one of these, and the file set is unchanged. - `recorderSha256` 70aa6f59e0 -> 58a461dbc9: this branch's recorder, and it now digests only the recorder directory, not the scenario manifest. - `scenarioSha256` added, 153 distinct values over 153 goldens. - `goldenFormatVersion` 3 -> 4 for that added field. - `baseline` 5ec0b2698f -> e53f1557e1, the merge's repoint onto the real main commit. #20563's value was a branch commit the squash left unreachable, so the record fence's `git diff ` could not resolve it. No checkpoint, value pool, effect or settlement byte moved, so main's recorded behaviour is carried over intact. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * docs(mobile): account for main's added recorder test in the suite count The merge brought in `unhandled-recording.test.ts`, one test, so the recording suite is 210 rather than the 209 this branch documented. Markdown is excluded from `recorderSha256`, so no golden moves. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb --- mobile/rpc-foundation/goldens/b1.json | 7 +- mobile/rpc-foundation/goldens/b2.json | 7 +- mobile/rpc-foundation/goldens/b3.json | 7 +- .../interruptions-inventory-lifecycle.json | 7 +- ...ions-settings-bot-overrides-fulfilled.json | 7 +- .../goldens/inventory-lifecycle.json | 7 +- .../goldens/inventory-repeat-query.json | 7 +- .../rpc-foundation/goldens/lifecycle-b3.json | 7 +- .../lifecycle-inventory-lifecycle.json | 7 +- ...ycle-settings-bot-overrides-fulfilled.json | 7 +- ...cle-settings-task-hydration-fulfilled.json | 7 +- ...-settings-workspace-context-fulfilled.json | 7 +- ....base-ref-chain-repo.baserefdefault-1.json | 7 +- ...matrix-git.base-ref-chain-repo.list-1.json | 7 +- ...ix-git.base-ref-chain-worktree.show-1.json | 7 +- ...essage-ai-git.generatecommitmessage-1.json | 7 +- ...matrix-git.history-read-git.history-1.json | 7 +- ...ix-git.remote-prerequisite-git.push-1.json | 7 +- ...x-git.review-preparation-git.status-1.json | 7 +- ...-hostedreview.create-chain-git.push-1.json | 7 +- ...ew.create-chain-hostedreview.create-1.json | 7 +- ...tedreview.create-chain-worktree.set-1.json | 7 +- ...dreview.create-intent-git.bulkstage-1.json | 7 +- ...stedreview.create-intent-git.commit-1.json | 7 +- ...te-intent-git.generatecommitmessage-1.json | 7 +- ...hostedreview.create-intent-git.push-1.json | 7 +- ...stedreview.create-intent-git.status-1.json | 7 +- ...stedreview.create-intent-git.status-2.json | 7 +- ...stedreview.create-intent-git.status-3.json | 7 +- ...stedreview.create-intent-git.status-4.json | 7 +- ...w.create-intent-hostedreview.create-1.json | 7 +- ...hostedreview.getcreationeligibility-1.json | 7 +- ...hostedreview.getcreationeligibility-2.json | 7 +- ...edreview.create-intent-worktree.set-1.json | 7 +- ...hostedreview.getcreationeligibility-1.json | 7 +- ...-legacy-inventory-files.searchpaths-1.json | 7 +- ...-legacy-inventory-files.searchpaths-2.json | 7 +- ...trix-legacy-inventory-fresh-inventory.json | 7 +- ...matrix-legacy-inventory-old-inventory.json | 7 +- ...near-detail-barrier-linear.getissue-1.json | 7 +- ...detail-barrier-linear.issuecomments-1.json | 7 +- ...se-github.project.updateissuebyslug-1.json | 7 +- ...on.tab-reveal-session.tabs.activate-1.json | 7 +- ...ession.tab-reveal-session.tabs.list-1.json | 7 +- ...t-read-preflight.detectremoteagents-1.json | 7 +- ...atrix-settings-agent-read-repo.list-1.json | 7 +- ...ix-settings-agent-read-settings.get-1.json | 7 +- ...ettings-best-effort-settings.update-1.json | 7 +- ...settings.bot-overrides-settings.get-1.json | 7 +- ...ttings.home-providers-linear.status-1.json | 7 +- ...ings.home-providers-preflight.check-1.json | 7 +- ...ettings.home-providers-settings.get-1.json | 7 +- ...ettings.repo-metadata-host.platform-1.json | 7 +- ...ix-settings.repo-metadata-repo.list-1.json | 7 +- ...settings.repo-metadata-settings.get-1.json | 7 +- ...po-metadata-ssh.listtargetsummaries-1.json | 7 +- ...esume-metadata-folderworkspace.list-1.json | 7 +- ...s.resume-metadata-projectgroup.list-1.json | 7 +- ...-settings.resume-metadata-repo.list-1.json | 7 +- ...ttings.resume-metadata-settings.get-1.json | 7 +- ...ettings.resume-metadata-worktree.ps-1.json | 7 +- ...ttings.task-hydration-linear.status-1.json | 7 +- ...ings.task-hydration-preflight.check-1.json | 7 +- ...ettings.task-hydration-settings.get-1.json | 7 +- ...-settings.task-hydration-status.get-1.json | 7 +- ...trix-settings.task-hydration-ui.get-1.json | 7 +- ...ettings.task-workspace-settings.get-1.json | 7 +- ...ngs.workspace-context-linear.status-1.json | 7 +- ...s.workspace-context-preflight.check-1.json | 7 +- ...ings.workspace-context-settings.get-1.json | 7 +- ...x-settings.workspace-context-ui.get-1.json | 7 +- ...tings.workspace-submit-settings.get-1.json | 7 +- ...x-worktree.review-link-worktree.set-1.json | 7 +- .../goldens/probe-new-tab-both-refused.json | 7 +- .../probe-new-tab-null-sibling-refused.json | 7 +- ...probe-new-tab-refused-sibling-rejects.json | 7 +- ...probe-new-tab-rejects-sibling-refused.json | 7 +- .../goldens/sc-base-ref-default.json | 7 +- .../goldens/sc-base-ref-repo-fallback.json | 7 +- .../goldens/sc-base-ref-unavailable.json | 7 +- .../goldens/sc-base-ref-worktree-hit.json | 7 +- .../sc-commit-message-cancel-rejected.json | 7 +- .../goldens/sc-commit-message-canceled.json | 7 +- .../goldens/sc-commit-message-generated.json | 7 +- .../goldens/sc-create-existing-review.json | 7 +- ...reate-intent-stage-commit-push-create.json | 7 +- .../sc-create-link-failure-is-non-fatal.json | 7 +- .../sc-create-pushes-then-creates.json | 7 +- .../sc-create-refused-empty-message.json | 7 +- .../sc-create-rejected-empty-message.json | 7 +- .../goldens/sc-eligibility-fetched.json | 7 +- .../goldens/sc-history-loaded.json | 7 +- .../goldens/sc-pr-link-hosted-review.json | 7 +- .../goldens/sc-pr-link-read.json | 7 +- .../goldens/sc-pr-link-set.json | 7 +- .../sc-prefill-unavailable-on-refusal.json | 7 +- .../sc-prefill-unavailable-on-rejection.json | 7 +- .../sc-prerequisite-force-with-lease.json | 7 +- .../goldens/sc-prerequisite-publish.json | 7 +- .../goldens/sc-prerequisite-push.json | 7 +- .../goldens/sc-prerequisite-skipped.json | 7 +- .../goldens/sc-reveal-first-poll.json | 7 +- .../goldens/sc-reveal-timeout.json | 7 +- .../sc-review-commit-inner-failure.json | 7 +- ...c-review-commit-refused-empty-message.json | 7 +- .../goldens/sc-review-commit-rejected.json | 7 +- .../goldens/sc-review-commit.json | 7 +- .../sc-review-status-entries-not-array.json | 7 +- .../goldens/sc-review-status-normalized.json | 7 +- .../rpc-foundation/goldens/schedules-b3.json | 7 +- ...les-settings-home-providers-fulfilled.json | 7 +- .../schedules-settings-new-tab-ssh.json | 7 +- ...ules-settings-repo-metadata-fulfilled.json | 7 +- ...es-settings-resume-metadata-fulfilled.json | 7 +- ...les-settings-task-hydration-fulfilled.json | 7 +- ...-settings-workspace-context-fulfilled.json | 7 +- .../settings-bot-overrides-fulfilled.json | 7 +- ...ettings-bot-overrides-refresh-refused.json | 7 +- .../settings-bot-overrides-refused.json | 7 +- ...ettings-bot-overrides-transport-error.json | 7 +- .../goldens/settings-home-coalesced.json | 7 +- .../settings-home-providers-fulfilled.json | 7 +- ...ings-home-providers-refuse-after-data.json | 7 +- .../settings-home-providers-refused.json | 7 +- ...ttings-home-providers-transport-error.json | 7 +- .../goldens/settings-new-tab-refused.json | 7 +- .../goldens/settings-new-tab-ssh.json | 7 +- .../settings-new-tab-transport-error.json | 7 +- .../goldens/settings-repo-cache-expiry.json | 7 +- .../settings-repo-metadata-fulfilled.json | 7 +- ...tings-repo-metadata-refuse-after-data.json | 7 +- .../settings-repo-metadata-refused.json | 7 +- .../settings-repo-metadata-single-host.json | 7 +- ...ettings-repo-metadata-transport-error.json | 7 +- .../settings-resume-metadata-fulfilled.json | 7 +- ...ngs-resume-metadata-refuse-after-data.json | 7 +- .../settings-resume-metadata-refused.json | 7 +- ...tings-resume-metadata-transport-error.json | 7 +- .../settings-task-hydration-fulfilled.json | 7 +- ...ings-task-hydration-refuse-after-data.json | 7 +- .../settings-task-hydration-refused.json | 7 +- ...ttings-task-hydration-transport-error.json | 7 +- .../settings-task-workspace-fulfilled.json | 7 +- .../settings-task-workspace-refused.json | 7 +- ...ttings-task-workspace-transport-error.json | 7 +- .../goldens/settings-task-write.json | 7 +- .../settings-workspace-context-fulfilled.json | 7 +- ...s-workspace-context-refuse-after-data.json | 7 +- .../settings-workspace-context-refused.json | 7 +- ...ngs-workspace-context-transport-error.json | 7 +- .../settings-workspace-submit-fulfilled.json | 7 +- .../settings-workspace-submit-refused.json | 7 +- ...ings-workspace-submit-transport-error.json | 7 +- mobile/rpc-foundation/pilot-scenarios.json | 2 +- .../src/test-support/rpc-recording/README.md | 44 +++-- .../rpc-recording/derived-goldens.test.ts | 25 +++ .../rpc-recording/derived-goldens.ts | 155 ++++++++++++++++ .../rpc-recording/family-recordings.test.ts | 114 ++---------- .../golden-header-digest.test.ts | 175 ++++++++++++++++++ .../rpc-recording/golden-recording.ts | 14 +- .../rpc-recording/pilot-recordings.test.ts | 51 +++-- .../rpc-recording/recorder-digest.ts | 13 +- .../rpc-recording/recording-runner.test.ts | 3 +- .../rpc-recording/scenario-digest.ts | 24 +++ 164 files changed, 1087 insertions(+), 604 deletions(-) create mode 100644 mobile/src/test-support/rpc-recording/derived-goldens.test.ts create mode 100644 mobile/src/test-support/rpc-recording/derived-goldens.ts create mode 100644 mobile/src/test-support/rpc-recording/golden-header-digest.test.ts create mode 100644 mobile/src/test-support/rpc-recording/scenario-digest.ts diff --git a/mobile/rpc-foundation/goldens/b1.json b/mobile/rpc-foundation/goldens/b1.json index d75b08eeb2e..604256d7437 100644 --- a/mobile/rpc-foundation/goldens/b1.json +++ b/mobile/rpc-foundation/goldens/b1.json @@ -3,13 +3,14 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "23ffc912a432dcd3ff70be1903a8d518cf85634f27a2be6d21585963e338e7e3", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0d903486cbe8": { "name": "files.list#2", diff --git a/mobile/rpc-foundation/goldens/b2.json b/mobile/rpc-foundation/goldens/b2.json index 87efa48eb7d..c919ca011f5 100644 --- a/mobile/rpc-foundation/goldens/b2.json +++ b/mobile/rpc-foundation/goldens/b2.json @@ -3,13 +3,14 @@ "family": "project-explicit-false", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "b31992be2f91bd61fbe1b8a5400da3b7a56753564b0b0b2b38bc5d549812d693", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0c4dced3e005": { "error": "", diff --git a/mobile/rpc-foundation/goldens/b3.json b/mobile/rpc-foundation/goldens/b3.json index 1cbde8cdc60..78a1038358e 100644 --- a/mobile/rpc-foundation/goldens/b3.json +++ b/mobile/rpc-foundation/goldens/b3.json @@ -3,13 +3,14 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "130e493fcd7765e037405f59e6cc78a0cc1793b1ae092cad933ff9d5a9df8b7a", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "034a83431f03": { "name": "linear.getIssue#1", diff --git a/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json b/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json index 5fadb7d9681..81d6adfb2f4 100644 --- a/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json +++ b/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json @@ -3,13 +3,14 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "d6c57a5153d915f0a0c0fd9e305cac70b41b7eb8be226fc865227ebf1821e5d1", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "2837f481a843": { "name": "files.list#1", diff --git a/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json b/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json index c5979481087..0a1aca3b4d6 100644 --- a/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json +++ b/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "2d5c6dea28aa1a7bb9e4aa14a4c8441527d9ad401ad30161f05ea1f8da836bb2", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "06eff8247d02": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/inventory-lifecycle.json b/mobile/rpc-foundation/goldens/inventory-lifecycle.json index f9863ed37ec..ad3b9c43a9a 100644 --- a/mobile/rpc-foundation/goldens/inventory-lifecycle.json +++ b/mobile/rpc-foundation/goldens/inventory-lifecycle.json @@ -3,13 +3,14 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "3471f5bcd6923c7b8ba3a737bb45b5239689deb78c00e85a828f38a6d6d68a05", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "2837f481a843": { "name": "files.list#1", diff --git a/mobile/rpc-foundation/goldens/inventory-repeat-query.json b/mobile/rpc-foundation/goldens/inventory-repeat-query.json index 0d2df08b868..64a3d7492f0 100644 --- a/mobile/rpc-foundation/goldens/inventory-repeat-query.json +++ b/mobile/rpc-foundation/goldens/inventory-repeat-query.json @@ -3,13 +3,14 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "73a468d5c7a51c2dbb7af2642f0050d05d861fce29295460c48d7c51f86bf57f", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "003a57e2bf31": { "files": ["alpha.ts"] diff --git a/mobile/rpc-foundation/goldens/lifecycle-b3.json b/mobile/rpc-foundation/goldens/lifecycle-b3.json index 0ea52cd8c86..e0d25b4724f 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-b3.json +++ b/mobile/rpc-foundation/goldens/lifecycle-b3.json @@ -3,13 +3,14 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "8be12d116865d27e8dfd37921d2c723d63da101ec1197b1f5b2d9510838e1943", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "034a83431f03": { "name": "linear.getIssue#1", diff --git a/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json b/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json index 8490de7adcf..ca3b76527e9 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json +++ b/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json @@ -3,13 +3,14 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "46bbafcc57fe2e3aee41a14bc26a0375b7b56e58030705fe4c28841a272b2560", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "2837f481a843": { "name": "files.list#1", diff --git a/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json b/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json index 9258e44763f..f43d942e36d 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json +++ b/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "eb80283956c93849778f23cbabf1dbf83b72744197af4f6f50335b2fc1590d87", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json b/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json index 8feff8ce924..151c59c919f 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json +++ b/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "3a8eab831602443d320ca0aa0f35dc269d8d511e76bdae8fd025c433561d068d", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "002ad269dd44": { "name": "showLinearConnect", diff --git a/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json b/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json index d7af4cb5a20..488a700a09a 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json +++ b/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "136fb1d8d5925ad12ba22f4dd6c72573a9ad03b6a6ec8308668f0d9cd71aa36d", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "06425d8da2e6": { "name": "linear.status#2", diff --git a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json index c6f7cb4d7f5..96fbed0b57d 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json @@ -3,13 +3,14 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "5605a2984d7692aa80e5e38f804bdfed4b1ce8ac2102def5dc728b1a79dc1acf", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0208d586a748": { "name": "repo.baseRefDefault#1", diff --git a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json index 3be1d2da2e1..347625dadf3 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json @@ -3,13 +3,14 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "ed0e97ead1aad0b45bdfc48f5fe4e498810d0cfee88f07d3c6228db56fda1dd9", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "089d79f002a1": { "name": "repo.list#1", diff --git a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json index 55f1ebea0cb..2717fb396a0 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json @@ -3,13 +3,14 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "1db6919b94df3b8548838ff4c206fafa3a09ea096b17c04483f78f9321ccb1ba", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "089d79f002a1": { "name": "repo.list#1", diff --git a/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json b/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json index 14aa01cde22..21171bf6d16 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json @@ -3,13 +3,14 @@ "family": "git.commit-message-ai", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "22ea5279155ecf749aaab521ffd570221ac3169b177fc1daf85ef93a49d38260", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "125fbea5f50a": { "name": "git.generateCommitMessage#1", diff --git a/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json b/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json index f4281440607..abed8bf074b 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json @@ -3,13 +3,14 @@ "family": "git.history-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "86254ed87ad3427d6ee4631d7348075039ba2d4d7496d59f27f03f78580f35a1", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "155f61ed496f": { "status": "rejected", diff --git a/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json b/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json index 8978ef5da2b..97346d0e6b4 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json @@ -3,13 +3,14 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "5009c22df7e74a850bcea41fc110ea7d7eb4bdada623837279f32eaa5149a9b8", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "00e8a3bac22f": { "status": "fulfilled", diff --git a/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json b/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json index 09e6c005800..9f417b48053 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json @@ -3,13 +3,14 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "485b2751006ee8fb4df28b228ea7adda85779feae83974eb0f7e795e31c500a1", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0278e0f0d6cf": { "name": "git.status#1", diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json index a3a594468ce..ce182135651 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "fcf5cdc7388457156dd81fe28a470f42fbabac7435ec5572cb19e209f410ca84", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "06a94a810e5f": { "name": "hostedReview.create#1", diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json index d183ffc842e..0e1fbba63c7 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "26e666a57805f354602a5b3906a691b10c8d6db66c77acc96c67153279c515a7", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "06a94a810e5f": { "name": "hostedReview.create#1", diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json index 8d46a010500..c65b6cf6558 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "08c25b6cb5bc12a7f67e858f229d15cf66b98b2ad4601b11f18c4c03f4a59669", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "03696d515352": { "name": "worktree.set#1", diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json index 779b264e1ec..8bbc14962a5 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "ff9d1bfd6337607f3d3e8162692b589ecea4a32ae01b5ebb3c602f8f0a55642c", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "02652fe244f8": { "name": "git.bulkStage#1", diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json index 7dd3ec28730..f457f4b0052 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "efeb9b248aeb98fac71c043d50afe0036cf804d3c11edfccd4e050fe8f3d8f9b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0278e0f0d6cf": { "name": "git.status#1", diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json index bd4e060ffb8..488238d3bca 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "7b0d9ddcb8df83fc4e465aa6b0dcf05aa0d8f266cd4bb8651969cb8321bcf549", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0278e0f0d6cf": { "name": "git.status#1", diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json index 6a449f53932..20ba5f1e127 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "72c1f08739db1c0dfcd48adffaca582a3596116c1c377f95f7dab8b08b7e6cdc", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0278e0f0d6cf": { "name": "git.status#1", diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json index e80a6b9110f..d4ce67f0673 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "1f002f900c1a3c92e8f7c72261579ee5015ec1529c003a1b32bcf3eaf98b672d", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0179846b4707": { "name": "git.status#2", diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json index 353f1f1d459..ffa68cf4114 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "3a6487a07457e0e5aa6fc3fccfa43687acfb06d94334e621081728de937e4e8d", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "006d7b20ed48": { "name": "git.status#2", diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json index 89077db5de9..75c0eae29c7 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "7355c45a707fa8a31f0999c4805a5b1dace4c65b727e711231f784b2f92c05ff", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "01bc4ad46170": { "outcome": { diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json index 29bcefde002..aefc48d7680 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "45cda6757b76399d282d4b07992dab21bbb8236faadedba5e92eab8818e886bf", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "01bc4ad46170": { "outcome": { diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json index 0806425d50a..5e25cfa990e 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "0ca08d5e70e1780a6ee5c919491dcddb062a22623f803e9960a329825f274cbe", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "000efa3053f3": { "outcome": { diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json index 77f14d83e1d..7fda51cd916 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "658eb7bbf63b3a4b38eca0b1733e523962b6b6943644d65aab6f5c7e62534d6a", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0278e0f0d6cf": { "name": "git.status#1", diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json index b4065bcbca9..2c3dc706047 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "75ba135731290bf734a5eef0b65f9ad8b7cac453c4e2006faac88a5da9dbe3a3", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0278e0f0d6cf": { "name": "git.status#1", diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json index 0e544e8e18d..021c9f2d320 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "beb1161b98ffde8c5f1128e843766a1da3182d195f1f0a9012e12e5318ae01bc", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0278e0f0d6cf": { "name": "git.status#1", diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json index bbdcd9bd8a5..04dd7052c2e 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json @@ -3,13 +3,14 @@ "family": "hostedReview.eligibility", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "6c4de90e2617d204e82ca5e65eb17fc397acbcbb9dc0ec18594d2a7739e3528b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "099a55e691ed": { "name": "hostedReview.getCreationEligibility#1", diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json index bb7c6b395c5..9d016af3ca0 100644 --- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json +++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json @@ -3,13 +3,14 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "4f6472fb7add960be9bcc8596a748264d7cb0755a782ebe9e85753ab1d1d5710", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "003a57e2bf31": { "files": ["alpha.ts"] diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json index 0b495b9d52e..4443cb77710 100644 --- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json +++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json @@ -3,13 +3,14 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "048c3ec55ec67d09d9b02e17822f1154adca577e57ffe6d3059102d552d2f759", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "02a03f44e95f": { "name": "files.searchPaths#2", diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json index 632f7e0afb2..dcab97a3a4e 100644 --- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json +++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json @@ -3,13 +3,14 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "ad458a3407e3f1303343b46a1308b43535abef2c9ed2f68db59157db5b91daa1", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0d903486cbe8": { "name": "files.list#2", diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json index 1a4ff6f9c02..ff0a6d66acc 100644 --- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json +++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json @@ -3,13 +3,14 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "52742d894d0ea53db89729101664a393b10794d9c2d2fe7b40b020643a13af81", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0d903486cbe8": { "name": "files.list#2", diff --git a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json index 2dd4e9387fd..098e80e7c82 100644 --- a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json +++ b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json @@ -3,13 +3,14 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "8e00afc85e5b82d75bedecea0c748a3c8658cfc8545650e755c03f51fdc932d6", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "1696f2f90218": { "name": "detailError", diff --git a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json index a27b2270091..397e91d5859 100644 --- a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json +++ b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json @@ -3,13 +3,14 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "40289acce4a3542773f74681d255d67cfddadf6c42317928d6728f26a76f6cfb", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "034a83431f03": { "name": "linear.getIssue#1", diff --git a/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json b/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json index f5a0764b69b..e564c087182 100644 --- a/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json +++ b/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json @@ -3,13 +3,14 @@ "family": "project-explicit-false", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "926f0d8c37a33d465bf3a04f056600cfc9f1669b1eca7e968aa1a1f797a74c61", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "057a0b5a420b": { "name": "projectRowDetailError", diff --git a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json index 0d4d381b130..b5bfcc6c34b 100644 --- a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json +++ b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json @@ -3,13 +3,14 @@ "family": "session.tab-reveal", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "73366226aeaec1581aeeb47219fc703917143cfd7f6a2eb01d7bd703a7c7612d", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0f9f4df04699": { "name": "session.tabs.activate#1", diff --git a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json index bf3c291f0b4..eb85e61870d 100644 --- a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json @@ -3,13 +3,14 @@ "family": "session.tab-reveal", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "c38f2bc5c9faca0774dfe202137877bada9deba165c5e9c955cbe67eae0cbdd9", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0f9f4df04699": { "name": "session.tabs.activate#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json index 866e9ccf0fc..748dbe75ae2 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json @@ -3,13 +3,14 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "a0effc9a0be519ccd18c1b1abfc8b497cd3858b89ea8d345ac0f8bd6d195cf21", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "07d4c9b0eaf2": { "name": "preflight.detectRemoteAgents#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json index 12fd8e843a7..9946296e487 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json @@ -3,13 +3,14 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "c21b2e0e97fab86664f634cc99d77dd587df4af4d02e6286c8380e09844096b2", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "06b63e0d9986": { "name": "repo.list#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json index b9e92b91fdf..2063dab2889 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json @@ -3,13 +3,14 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "46c4e32a921612c736c8cf45ff72ed513431c917ed3dd03f289c0ba4c28d6adb", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json b/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json index 349a9177531..2ab9a497475 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json @@ -3,13 +3,14 @@ "family": "settings-best-effort", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "cf671da175d50a4c2e1336f4e8338c24c4752db111e1eafd226bee6ff3582b1d", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "178d4ef77ad7": { "name": "settings.update#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json index 35ca7122e46..786467ef280 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json @@ -3,13 +3,14 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "01408cebcc193f8e30119381c8acf494fa5e29850fe010809deb330c2f9bcb36", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json index 7f3d079a30f..de544d6c810 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json @@ -3,13 +3,14 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "19b445b39da98d28bcbcdab6f70e47ce208ca68f165e7b62c5fe9762eee67c8d", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0e7c79cad23f": { "name": "linear.status#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json index dbf80fc423c..8f1903277ee 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json @@ -3,13 +3,14 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "4953dd0de509ce620b9840d7f460e472dc74f54d53636694d12cba2e3bb51da8", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0dcc6f40d62e": { "name": "preflight.check#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json index 207d17af14f..0b50cfc9f24 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json @@ -3,13 +3,14 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "70f601caeaee957bd3b172fc0fc12e85d6e2d6bed7683c86869559c6c9f25834", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090d7111bcf7": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json index ff1eb4b8dc6..047c08fea63 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json @@ -3,13 +3,14 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "687b109bd2bcc0c85b7c858d553e68e2fc4cb5b281d9f8b32836dbacc4bdc8f2", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "02449e890487": { "name": "host.platform#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json index ff6c0e23afe..4909dbc80b6 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json @@ -3,13 +3,14 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "3199c745e22973b432b0a36c34bb0bdda994334a4a0cd7ad2daf8b172625ce8d", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "02449e890487": { "name": "host.platform#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json index e69134aff04..f2a4002299a 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json @@ -3,13 +3,14 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "5e9c3ff57cf432b24a17ee046636b61b94116a687cfa506cd79dee464542b76b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "02449e890487": { "name": "host.platform#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json index 1fd28073945..6745742e69d 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json @@ -3,13 +3,14 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "a88061d3d1f03074b0ed2b663b523f1602362bc317ba614106f1f646d037d6e3", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "02449e890487": { "name": "host.platform#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json index 078110417cc..4d6759cb4bb 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json @@ -3,13 +3,14 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "50ba7c7963cb494e4b3d484eb334977d21cc69018da57d75a7b6fd0c92860bd2", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "14a657727096": { "name": "worktree.ps#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json index 00304faf82b..56603458116 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json @@ -3,13 +3,14 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "8dfd4550b39f0cfcb9aaa72fab0631b11f9e776ed389b206b326359d7f4c2d6e", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "01bc8208ba89": { "name": "projectGroup.list#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json index 6cc1bf4eca1..642386c57c2 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json @@ -3,13 +3,14 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "85dc526201f66409dd6a411c5e14615b82389791ec210efb9889078f5d580373", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0ae64c827aea": { "name": "repo.list#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json index 1efebddc603..de758cfca98 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json @@ -3,13 +3,14 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "080e10ae774ef097082267da0c8b6d0ebacae582d57b04a189c123258d0e5131", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "14a657727096": { "name": "worktree.ps#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json index 44898d0684c..c4874e981ea 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json @@ -3,13 +3,14 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "5988fa5ce0bf6b8585f7ec66918123ee086d5cdf1185a4eeff2e88904985064c", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0620c0819077": { "status": "fulfilled", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json index dc5ebae4f1f..5118bc610db 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json @@ -3,13 +3,14 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "f5033a7a3567cc9e016bf09ac8bcd8ff381c3054c041dbccc773f7011918bf1d", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "002ad269dd44": { "name": "showLinearConnect", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json index 29358df6b32..dcd34e9ac43 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json @@ -3,13 +3,14 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "0931b3d35868e5452cb550962f2408b6ce7cd6c89e90a9cf2897425edbb4b42d", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "002ad269dd44": { "name": "showLinearConnect", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json index 37a44c30440..76565b7a9e0 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json @@ -3,13 +3,14 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "d0f8d9bfe0e1469af3b0dab8b5c9799d91cc2234e72f0e031d6872059654077d", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "002ad269dd44": { "name": "showLinearConnect", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json index bc62298026c..b248c54e214 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json @@ -3,13 +3,14 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "3f448feff463b59c3927dae020ecd8d4931bb4a6036df6d6af080de2ec5fcf2b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "002ad269dd44": { "name": "showLinearConnect", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json index 0b7477afdb0..fdee42d21bc 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json @@ -3,13 +3,14 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "4438f9fd62876333bb980157612aaf457c5a9b9115659c8c941c3b373ad071dd", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "002ad269dd44": { "name": "showLinearConnect", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json index 71908e094a1..1a43cd52057 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json @@ -3,13 +3,14 @@ "family": "settings.task-workspace", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "994ea8b4ddb05774a8c2d5902bb68bf5e8f25399a787262b8f23f458f2790698", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json index 814ef610040..b71bb648aae 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json @@ -3,13 +3,14 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "30b3f8d79589e9fb3d7ef804233554fa231f68ab88e5130ddfa78e79221e3c78", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json index 9e2671ff88a..cb92182e684 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json @@ -3,13 +3,14 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "a5366cbd31d899feeb7e1901edd0c78191c2c8c8179ad5d5b24b7ca22bd538f8", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "02eac6141a1f": { "name": "preflight.check#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json index efb2c892801..d73c6ab0aa7 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json @@ -3,13 +3,14 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "797ea410af6536410335ebe93b8bc354cd633cf980eb95efbb10bc46f5516cb7", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json index 116fa4bd664..d9457d90a8f 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json @@ -3,13 +3,14 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "3cd29e7b6a1cdfd99796a58cf6ad6f9aa3dbac75dd6e989ea99ba6027c210028", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0039f2221403": { "name": "ui.get#1", diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json index 757598a0e6a..34486618f06 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json @@ -3,13 +3,14 @@ "family": "settings.workspace-submit", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "a89bdf93df71a958810aba72c80e42f663644781a29e934898e2ddf86c5dd5d5", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json index 55ac221f14d..8ab2bcc788a 100644 --- a/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json +++ b/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json @@ -3,13 +3,14 @@ "family": "worktree.review-link", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "2fc093ec505bfac04a4ff0adab991baeba985253486dbe9e3ec9884b8d5f0920", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0d39ad71ac82": { "linkedPR": "unread", diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json b/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json index cbe3b5f2261..5d21ce568a0 100644 --- a/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json +++ b/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json @@ -3,13 +3,14 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "819fa73c7700b4d526da91c37558a6498008d745d1debcc26e6bb757550ebf99", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json b/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json index e45c1604510..68a52959edf 100644 --- a/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json +++ b/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json @@ -3,13 +3,14 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "500396d72abd2f73d11ef066bca3f88798c8cbdaef09fa7c1c8d1fbaf0b3b85a", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json b/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json index d240566591c..5a74ca74542 100644 --- a/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json +++ b/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json @@ -3,13 +3,14 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "daf68df8840ea6872521d823cc17e1e5de3f3a74a8855465fcf40cc276e9c2ce", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json b/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json index 2905f3e21e6..441f1284661 100644 --- a/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json +++ b/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json @@ -3,13 +3,14 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "61e36caf6b3bb01c3ad0db282b7f0fbc0f300d40184f9cf3d7e4e3a3194a4f2a", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-default.json b/mobile/rpc-foundation/goldens/sc-base-ref-default.json index 8a2acbff317..efc8a33b474 100644 --- a/mobile/rpc-foundation/goldens/sc-base-ref-default.json +++ b/mobile/rpc-foundation/goldens/sc-base-ref-default.json @@ -3,13 +3,14 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "374129def6baa0e06b808c067831820966638d79d7a782e96c1f2f891cc9dc86", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "089d79f002a1": { "name": "repo.list#1", diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json b/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json index 7b7b6d830e3..8b451a3c47b 100644 --- a/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json +++ b/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json @@ -3,13 +3,14 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "97a8b8f5b9a7c7467745666becee07f5dfc57fb283d4e80dcbe7941509177598", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "594101d24d72": { "name": "repo.list#1", diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json b/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json index 9bc6d400f74..6f61749a0ff 100644 --- a/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json +++ b/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json @@ -3,13 +3,14 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "25a4762d735dfb4979e6ef31b9fdb380941a824a54b45b3d08ddb2cde25c2eb7", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "594101d24d72": { "name": "repo.list#1", diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json b/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json index a0a65af7cb6..e134ff8d55d 100644 --- a/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json +++ b/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json @@ -3,13 +3,14 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "f3b193f93f6c9de41d11e706ecbd99648eb2ed41ccb7c66cdb80c934e780ed7c", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "26accd69bc48": { "name": "repo.list#1", diff --git a/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json b/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json index d34cdd3ecd7..5efc0525535 100644 --- a/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json +++ b/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json @@ -3,13 +3,14 @@ "family": "git.commit-message-ai", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "013db25622b180a8333bb1ef27c22a5b1f8e04148201201e5cc3413a10640781", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "029ea2c16f05": { "name": "git.cancelGenerateCommitMessage#1", diff --git a/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json b/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json index 05f9016d7bf..84768ce1373 100644 --- a/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json +++ b/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json @@ -3,13 +3,14 @@ "family": "git.commit-message-ai", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "15bf6c17f4b524dfbf5373b2eeed61ee2e659421cf8b6e3cff6c0378c7692cc1", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0aeb6552c58a": { "name": "git.generateCommitMessage#1", diff --git a/mobile/rpc-foundation/goldens/sc-commit-message-generated.json b/mobile/rpc-foundation/goldens/sc-commit-message-generated.json index 9857e1fdb33..a8abfe60296 100644 --- a/mobile/rpc-foundation/goldens/sc-commit-message-generated.json +++ b/mobile/rpc-foundation/goldens/sc-commit-message-generated.json @@ -3,13 +3,14 @@ "family": "git.commit-message-ai", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "540f05d84d1cbffd566af933c547838c75500bb5d708e8558c21fe8131d724e3", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "125fbea5f50a": { "name": "git.generateCommitMessage#1", diff --git a/mobile/rpc-foundation/goldens/sc-create-existing-review.json b/mobile/rpc-foundation/goldens/sc-create-existing-review.json index 6917424e65a..e51f2ee4e8b 100644 --- a/mobile/rpc-foundation/goldens/sc-create-existing-review.json +++ b/mobile/rpc-foundation/goldens/sc-create-existing-review.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "7d6099248aa6a2ef19f2e169ff917af794649d9d64d139aa9ffeea6a41355ddc", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "1617f98dc371": { "name": "hostedReview.create#1", diff --git a/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json b/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json index 257a2219380..91ac688ebcb 100644 --- a/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json +++ b/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "447f9b3d697dbfe21cb7fb6e12d1bf5fa94b023b7e1697bdc2dc82ce7072183f", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0278e0f0d6cf": { "name": "git.status#1", diff --git a/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json b/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json index 11e860a8081..818cf613211 100644 --- a/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json +++ b/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "2deb0435ef63a3e0102e28f2f3f331039486d193d1e1ffdfb53ad86d3ff039f0", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "122ef8a1f0b9": { "name": "hostedReview.create#1", diff --git a/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json b/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json index e417a7de77d..32d59893c05 100644 --- a/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json +++ b/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "0f86b3e6059c48cd327c55df2452a9bc6ea85584ffbeacafad496f600c20e06f", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "06a94a810e5f": { "name": "hostedReview.create#1", diff --git a/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json b/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json index ab0ecc6329f..d810ad5a8c5 100644 --- a/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json +++ b/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "5008e69a8e396b1deccd98712d92650a630f971cd76a02862a461afb8617b8a4", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "1617f98dc371": { "name": "hostedReview.create#1", diff --git a/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json b/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json index 317e507f78d..337f070d679 100644 --- a/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json +++ b/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json @@ -3,13 +3,14 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "ea71081982a101d0f8624707b59c99de9981e9b1d1bafa25c66d575e3f876ff4", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "1617f98dc371": { "name": "hostedReview.create#1", diff --git a/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json b/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json index 5784f4b98c9..5de6a24a2af 100644 --- a/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json +++ b/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json @@ -3,13 +3,14 @@ "family": "hostedReview.eligibility", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "f6a1595073abe11b33973e8865900a1d849f44221961da5c12ea13aa696f6490", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "24bd84c9fb40": { "status": "fulfilled", diff --git a/mobile/rpc-foundation/goldens/sc-history-loaded.json b/mobile/rpc-foundation/goldens/sc-history-loaded.json index 361b3506d22..848a5c1acdc 100644 --- a/mobile/rpc-foundation/goldens/sc-history-loaded.json +++ b/mobile/rpc-foundation/goldens/sc-history-loaded.json @@ -3,13 +3,14 @@ "family": "git.history-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "83f61085a91458bad529905ecc6fe240c598cddfe44a56dd497b8aed9fb8a7e5", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "17bc1e177fe1": { "name": "git.history#1", diff --git a/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json b/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json index 3daab688f83..c1a63194a95 100644 --- a/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json +++ b/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json @@ -3,13 +3,14 @@ "family": "worktree.review-link", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "42b0304b2fdce08b7ff52ec979dd9f199f368e5e4ef0b5370acc417909b592b3", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "1852c739af4f": { "linkedPR": "unread", diff --git a/mobile/rpc-foundation/goldens/sc-pr-link-read.json b/mobile/rpc-foundation/goldens/sc-pr-link-read.json index ed8ccb0d097..908b8db23be 100644 --- a/mobile/rpc-foundation/goldens/sc-pr-link-read.json +++ b/mobile/rpc-foundation/goldens/sc-pr-link-read.json @@ -3,13 +3,14 @@ "family": "worktree.review-link", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "4520bd54a55eabfe6ec64a4b2f824f095f98b2fffd1bf22fe4f9ec7f63cbfa3f", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "17ab8ab0a9f4": { "linkedPR": 7, diff --git a/mobile/rpc-foundation/goldens/sc-pr-link-set.json b/mobile/rpc-foundation/goldens/sc-pr-link-set.json index 1df5f5a9b29..b161e5d105f 100644 --- a/mobile/rpc-foundation/goldens/sc-pr-link-set.json +++ b/mobile/rpc-foundation/goldens/sc-pr-link-set.json @@ -3,13 +3,14 @@ "family": "worktree.review-link", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "b65bad4f8c0ae0b686f6c3db93bd43ffa072ae426f978f1a86ad8008fb24fa24", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "1852c739af4f": { "linkedPR": "unread", diff --git a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json index fb5af33ce6c..695d5f054b1 100644 --- a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json +++ b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json @@ -3,13 +3,14 @@ "family": "hostedReview.eligibility", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "9de96287a4dfa6cf5c9a8b683cc696fdc2cd387f86f231e22ee3f100a2e778e3", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0710fc7e2b71": { "name": "hostedReview.getCreationEligibility#1", diff --git a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json index 18f71570b49..2c6c73ee674 100644 --- a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json +++ b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json @@ -3,13 +3,14 @@ "family": "hostedReview.eligibility", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "adbdfcc3895cc04d830900de518e689c9e63f6f75569127e1fde24488658e8a0", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "2f56274e5397": { "status": "fulfilled", diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json b/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json index 2a5ce54f5e9..d1358b6562e 100644 --- a/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json +++ b/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json @@ -3,13 +3,14 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "ec2847b4af357d8564d8e0a9a1072713c1afd7ff86ba69e9c83c056a6841ee39", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "00e8a3bac22f": { "status": "fulfilled", diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json b/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json index ba44e6f2ae6..dfb64a312d6 100644 --- a/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json +++ b/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json @@ -3,13 +3,14 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "6cf6ebd20adc4cc76a12d3424863ee9db2b24f36593664a1f4e0e05de9a53d39", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "00e8a3bac22f": { "status": "fulfilled", diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-push.json b/mobile/rpc-foundation/goldens/sc-prerequisite-push.json index 7aca33ed0c4..ed73ee99553 100644 --- a/mobile/rpc-foundation/goldens/sc-prerequisite-push.json +++ b/mobile/rpc-foundation/goldens/sc-prerequisite-push.json @@ -3,13 +3,14 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "e6e8197a541cd73e5811a1f28b0dbfc414a4d34c1ae6929fc1bbae1213820674", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "00e8a3bac22f": { "status": "fulfilled", diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json b/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json index 31b3c822258..1684dea4b6c 100644 --- a/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json +++ b/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json @@ -3,13 +3,14 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "523d1ee21e3871a4dffc32f48d2e28c31ecea48cbf3f842acffc8355be06b14b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "69f421c50546": { "status": "fulfilled", diff --git a/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json b/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json index aff8a6af74b..16850663572 100644 --- a/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json +++ b/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json @@ -3,13 +3,14 @@ "family": "session.tab-reveal", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "00b26cb279b0a934df98d93ba98a4a0c79e302c7690c582e778dc0156ab4f235", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0f9f4df04699": { "name": "session.tabs.activate#1", diff --git a/mobile/rpc-foundation/goldens/sc-reveal-timeout.json b/mobile/rpc-foundation/goldens/sc-reveal-timeout.json index a5fb7df6775..0ef7c028dea 100644 --- a/mobile/rpc-foundation/goldens/sc-reveal-timeout.json +++ b/mobile/rpc-foundation/goldens/sc-reveal-timeout.json @@ -3,13 +3,14 @@ "family": "session.tab-reveal", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "fcd61f1ef46c42889827a87876239534b851c425f8ef7a9405ea95b8d07d2363", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "3dbdccea1da9": { "name": "session.tabs.list#3", diff --git a/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json b/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json index 54c898b951c..8fbaaf8af5d 100644 --- a/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json +++ b/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json @@ -3,13 +3,14 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "db1fb2a584cd806028b9be861283a63aa4836c83f61558f3d518ddbb7a59498d", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "88185276c233": { "status": "fulfilled", diff --git a/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json b/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json index db10ca894fc..f739f278bf4 100644 --- a/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json +++ b/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json @@ -3,13 +3,14 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "dba1676583dc832ef059285a6bd4c3eefe6be0230e42100cb9d7a125755d136b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "45f289a0f3ae": { "committed": { diff --git a/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json b/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json index 0a90b1839d9..2f5b022f361 100644 --- a/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json +++ b/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json @@ -3,13 +3,14 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "de079de9cc21bfb40da6e1431273b10c3e2a5b5402b91b2b8a85c8d7ac41bc97", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "01bab795ab1e": { "name": "git.commit#1", diff --git a/mobile/rpc-foundation/goldens/sc-review-commit.json b/mobile/rpc-foundation/goldens/sc-review-commit.json index d2613882050..c3092244e76 100644 --- a/mobile/rpc-foundation/goldens/sc-review-commit.json +++ b/mobile/rpc-foundation/goldens/sc-review-commit.json @@ -3,13 +3,14 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "a29d518b2d075e8e4811404e0fcbf8948fbfe53a3aefbf0948cb2f2e622e8cbb", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "17bb401abe83": { "committed": { diff --git a/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json b/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json index 29cca81553b..0c03aa7a953 100644 --- a/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json +++ b/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json @@ -3,13 +3,14 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "37ba7780ca9525ab313c0a9c781ce5bb26344e63af9272c32ae889621f383b2b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "5e330d49c396": { "name": "git.status#1", diff --git a/mobile/rpc-foundation/goldens/sc-review-status-normalized.json b/mobile/rpc-foundation/goldens/sc-review-status-normalized.json index 0ad2ad61872..27735b6ec4f 100644 --- a/mobile/rpc-foundation/goldens/sc-review-status-normalized.json +++ b/mobile/rpc-foundation/goldens/sc-review-status-normalized.json @@ -3,13 +3,14 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "93193acd57d6f00abc8e6c22ec3a8f1ca6ce7c5808d906d0aa7c11e41dab4635", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0278e0f0d6cf": { "name": "git.status#1", diff --git a/mobile/rpc-foundation/goldens/schedules-b3.json b/mobile/rpc-foundation/goldens/schedules-b3.json index 71cd8e9def3..8744ce77f9d 100644 --- a/mobile/rpc-foundation/goldens/schedules-b3.json +++ b/mobile/rpc-foundation/goldens/schedules-b3.json @@ -3,13 +3,14 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "b59fb599dd3a5fbc79bb8602dcec4b1c51a392c662efab7efc8324fc718ce8de", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "034a83431f03": { "name": "linear.getIssue#1", diff --git a/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json index 2037d8a3077..ea6b3307985 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "fbd311a377672a9335521c30734880eea1b04bab0aff367854c1deebcf66b105", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "1081ce76cc68": { "name": "linear.status#1", diff --git a/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json b/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json index 3180150d545..5fade18c847 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json @@ -3,13 +3,14 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "2726d71130f623e3ad02c168c13269979ca6f84703bf1c5aaf36bd4432dfb516", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "06eff8247d02": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json index ebd75b7764e..b211647b7ad 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "664eba1468e229f9ac2dced262e7ad896ead01688dff4c570f397c3f8594efd7", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "02449e890487": { "name": "host.platform#1", diff --git a/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json index d61d2cbce19..6ba9db9e317 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "7bfba3fae1dc33acf40e8a955bbfccf28580b3daee3270dec6a15e6cefd45a84", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0447fbb835ad": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json index d406a8b94d7..46ae74ee9a7 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "02e3ca10296704b5478185e9d3dc0136596a2ee57580d7f9268672568dab4cd4", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "002ad269dd44": { "name": "showLinearConnect", diff --git a/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json index fab898f38d4..1d576fb6c54 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "eb980fc027ca0200212ba6ad3bf9a1ab3460936a7bb4b04353a9462eecd287a1", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "06eff8247d02": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json index b276b010db3..339e6c67c53 100644 --- a/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "4b4b4a8d1acaaec1c8dde0233dc49a696ffe53466578477efcbcdb7263dbd617", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json index 132ca959a1b..47ff0ace506 100644 --- a/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json +++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json @@ -3,13 +3,14 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "cac4980465661fba372e187699741123a4edeb9270125a0a1cad7bbb6a6adebd", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json index 0d38f7b2cb4..f0ea7524e05 100644 --- a/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json +++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json @@ -3,13 +3,14 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "f8ebd2348373b2b39c167735e0c418dfe868511fb5306ecba90cb6f2a905b95e", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json index db57f8eb643..eb7b6d59568 100644 --- a/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json @@ -3,13 +3,14 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "f7e63144421a689f05cc50ad87ec901a9eaeb3163165656887be12a5f2753005", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-home-coalesced.json b/mobile/rpc-foundation/goldens/settings-home-coalesced.json index f8225cbadc2..f75d79cd560 100644 --- a/mobile/rpc-foundation/goldens/settings-home-coalesced.json +++ b/mobile/rpc-foundation/goldens/settings-home-coalesced.json @@ -3,13 +3,14 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "d8d6f738ee11d84d6e9e546624f4babcb42476432f6bddbc74e8519d9ca18370", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "0241b27b279c": { "name": "settings.get#3", diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json b/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json index 3bb9f0495f0..b46ae96ec3e 100644 --- a/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "a32b2fc99e830c58460e6f7c857aed0048738a55501e508eb236604680b9c235", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "24054d93a95f": { "name": "providers", diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json index 5addc76d5a9..873318de0fc 100644 --- a/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json @@ -3,13 +3,14 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "78c48025c4af6cc0f1f136448c0ede9f76b7485d7b33b1356d11dec017bd9053", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "078b082b9b55": { "name": "linear.status#2", diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-refused.json b/mobile/rpc-foundation/goldens/settings-home-providers-refused.json index 88e26b514f6..c0eed18e92b 100644 --- a/mobile/rpc-foundation/goldens/settings-home-providers-refused.json +++ b/mobile/rpc-foundation/goldens/settings-home-providers-refused.json @@ -3,13 +3,14 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "c22f33a0ed28622d4d53ae31e934056f87d2c10e8dc4475831ae1ee5fd3a9b8b", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "24054d93a95f": { "name": "providers", diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json b/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json index 3b30c850f8b..b01cf2c4ea4 100644 --- a/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json @@ -3,13 +3,14 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "4f16b43dddfb9257828342b0297317868df24b03fd98a89c66f5cd1897829d73", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "163d57ce469e": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-new-tab-refused.json b/mobile/rpc-foundation/goldens/settings-new-tab-refused.json index c3ef7235b2a..635d3093dd9 100644 --- a/mobile/rpc-foundation/goldens/settings-new-tab-refused.json +++ b/mobile/rpc-foundation/goldens/settings-new-tab-refused.json @@ -3,13 +3,14 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "b6fb40be3bb92d7d9f1a79d99dee077cf95097077917679dc99702f912241fa4", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json b/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json index 25caccc4629..af4bbc7873a 100644 --- a/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json +++ b/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json @@ -3,13 +3,14 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "31f8a348322551738b14207b3477bae492d48d45c5d51be4d97ffaca2fe2b6e1", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json b/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json index 259eb1d2d80..53721dfee13 100644 --- a/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json @@ -3,13 +3,14 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "1347663aba0ada1eee8e88fac306757dc0d29fe21f0d062ac2d3968a30a2f214", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json b/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json index 6d2355ab518..1dcccf8c919 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json +++ b/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json @@ -3,13 +3,14 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "adebd553e2648278d719a1d7299cb36683fce714682a1ab7b49d4c9027eea34e", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "02449e890487": { "name": "host.platform#1", diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json index 90d0a5230d3..1a996c52104 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "b45eba2007e8e2668f524cd7503b8a711eba67816c9c35af5c3725a1afe32d8d", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "02449e890487": { "name": "host.platform#1", diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json index 3565f07c1a5..06c148924b8 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json @@ -3,13 +3,14 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "b1c0b957b828c32e7ec388ec6668273fe84bbe5d11d8286b9a246fa92395a26e", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "02449e890487": { "name": "host.platform#1", diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json index 930900e3524..cc4100645ad 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json @@ -3,13 +3,14 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "867b6905c8a533ddd1c7c8174bf4aadd5fd725cc72bdddbcb2ea8af26e219078", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "02449e890487": { "name": "host.platform#1", diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json index c97862bc49e..4b6030d3e80 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json @@ -3,13 +3,14 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "d8a00a72849f1ed254c3b35ebcc330dd1bb15b189f006bd1517853a19e53de6c", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "2bd489a9fa29": { "repoColorsByName": [ diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json index 78eda9aed7d..ed46e819bda 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json @@ -3,13 +3,14 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "741db13a84dbcec2e97e80605d742e69558954657c72f8450f3f8bc177dd01b6", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "02449e890487": { "name": "host.platform#1", diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json index 937c2cb963f..40c1299216d 100644 --- a/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "7a8d0a5305aafea56733c229989b6e825fe9b8a681f48f6cef405350304520b6", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "14a657727096": { "name": "worktree.ps#1", diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json index 340c733ac6f..c2134a9da51 100644 --- a/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json @@ -3,13 +3,14 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "a11756ecaf7c2d3955b9512aa7479ca55d810341f1492f472985abb538e140e8", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "14a657727096": { "name": "worktree.ps#1", diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json index 4084eb48dd0..06fcf005535 100644 --- a/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json +++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json @@ -3,13 +3,14 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "def0640be601a8013f9537f161b60d8c14ac9551931e5ee4d4cc2acd3c2baf2a", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "14a657727096": { "name": "worktree.ps#1", diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json index 2b9ba494259..27398aa2494 100644 --- a/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json @@ -3,13 +3,14 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "17c31d0c2b7ae5322fd59bafcfa1d2779ae9eff841e12c0cf16b27e454b49f13", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "14a657727096": { "name": "worktree.ps#1", diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json b/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json index 91fbfd96d75..0487f1b4564 100644 --- a/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "c08cce5d1f71761dbf504863b736e5546abb42b9ff4ab8ced65c7c42e3d66c0e", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "002ad269dd44": { "name": "showLinearConnect", diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json index c92c51226a4..73654e37ced 100644 --- a/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json @@ -3,13 +3,14 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "b23c3076081901c89e8a8fb8d20028e03f030db040c9cd793b6f2c7cd49d8f25", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "002ad269dd44": { "name": "showLinearConnect", diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json b/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json index bc9c7b9d7ef..c22817884ae 100644 --- a/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json +++ b/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json @@ -3,13 +3,14 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "a510ff7505cddbd6dad3c7e5a2dcde206a5dab1940901511d72c97aca576a6f1", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "002ad269dd44": { "name": "showLinearConnect", diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json b/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json index adb5d177665..38b2cd42359 100644 --- a/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json @@ -3,13 +3,14 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "d4a2fef3aefb78bdb4aed94fda982124f24a3af3832227654d324735f44aaeeb", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "002ad269dd44": { "name": "showLinearConnect", diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json b/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json index e7cca9c9425..cc7121f4087 100644 --- a/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.task-workspace", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "5c4c890e4c71e80fa8847a5e29700fc9df3ac3bd634bad6289db37522fadd621", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json b/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json index 04f6b86c5a9..809b521ec44 100644 --- a/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json +++ b/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json @@ -3,13 +3,14 @@ "family": "settings.task-workspace", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "a699a0a5b128fa422dab0c7557b5aa18599b2d23fa6685cdcc02e17edf328af1", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json b/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json index 7eabe3e893d..e21150ea4cd 100644 --- a/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json @@ -3,13 +3,14 @@ "family": "settings.task-workspace", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "a5e812cd508826b3f01ec3798c621ab4303de6536a364113f01a4770dd197bb5", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-task-write.json b/mobile/rpc-foundation/goldens/settings-task-write.json index f130b4ef0fe..000079c0ef8 100644 --- a/mobile/rpc-foundation/goldens/settings-task-write.json +++ b/mobile/rpc-foundation/goldens/settings-task-write.json @@ -3,13 +3,14 @@ "family": "settings-best-effort", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "bbcdefe16b07068a81f3c46ae60df01ccb0fbe5a7c1eade3f584f6f0130c23fe", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "2369258c9999": { "name": "settings.update#1", diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json b/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json index 9c0b3a0feb5..8d7523fc0ec 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "287f94e469548f28c9d5591ff6ffb916fa22caa18776b091542b75704c9e1fee", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json index 2e428b93443..7636c928522 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json @@ -3,13 +3,14 @@ "family": "settings.workspace-context", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "76793a56e7b9e596d8c42e9a5a1c47337db32d7437bec2e41d6e7253943f3fd8", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "02f9384f5305": { "name": "settings.get#2", diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json b/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json index 20993000ca4..998f1287287 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json @@ -3,13 +3,14 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "ad19fc24973b49ee7d14bc31460a7e4af5d207db6a2375b52b5a0aa878e09205", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json b/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json index be440c90f54..5c97bea5c98 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json @@ -3,13 +3,14 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "a2c80c9cdbb631f3a8fa648dfbb9e691418467d6ead8fe769d72e7e1d8b552b4", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json b/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json index 7d834b8f9af..ed74d84b1c7 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json @@ -3,13 +3,14 @@ "family": "settings.workspace-submit", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "b10ff86086c134284cb0446e8857cd4b55f5ff2bd0507388ec659a95f25e2a19", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json b/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json index 72f7ca18afa..4b691635314 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json @@ -3,13 +3,14 @@ "family": "settings.workspace-submit", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "373ea3743dac4e0845df01d5c8f75c909563b8c517f3858293a478234dc9ca5c", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json b/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json index f6d0ea74ccf..a16a6b6b3c4 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json @@ -3,13 +3,14 @@ "family": "settings.workspace-submit", "namedDeltas": [], "runnerVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "70aa6f59e01f8195ab8512a6fb4834315f54b64fa8009d377a45d271422bcf6b", + "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "scenarioSha256": "dfbacbd6392ae8e8199550952fe917e7c01182349df6c99a06eb0682cfd9175c", "platform": "darwin", "scenarioVersion": 1, "projectionVersion": 2, - "goldenFormatVersion": 3, + "goldenFormatVersion": 4, "values": { "090c88478661": { "name": "settings.get#1", diff --git a/mobile/rpc-foundation/pilot-scenarios.json b/mobile/rpc-foundation/pilot-scenarios.json index 2ba9fffb3cc..01652ad047a 100644 --- a/mobile/rpc-foundation/pilot-scenarios.json +++ b/mobile/rpc-foundation/pilot-scenarios.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "baseline": "5ec0b2698fbb74574650d21f96ccef8d4cb33d4f", + "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", "scenarios": [ { "id": "b1", diff --git a/mobile/src/test-support/rpc-recording/README.md b/mobile/src/test-support/rpc-recording/README.md index e74b7b1f56b..7dd7d87b602 100644 --- a/mobile/src/test-support/rpc-recording/README.md +++ b/mobile/src/test-support/rpc-recording/README.md @@ -58,21 +58,39 @@ visible, it does not make the reduction itself observable. ## Golden schema Each file records `runnerVersion`, `baseline`, `lockfileSha256` (mobile's lockfile), -`recorderSha256`, `platform`, `scenarioVersion`, `projectionVersion`, `goldenFormatVersion`, -`operation`, `family`, and `namedDeltas`. `platform` and `lockfileSha256` are provenance and are -not compared: a dependency or OS that changes behaviour changes the trace itself, so comparing -them would only fail candidates on unrelated bumps. The rest are pinned. `recorderSha256` covers every non-markdown file under -this directory plus `pilot-scenarios.json`, so the runner that produced a golden is as pinned as -the product baseline: editing an adapter projection, a fixture or a scenario fails candidate mode -on the header and forces a deliberate re-record. Checkpoints -contain ordered sender calls and serialized physical application payloads, action and request -settlements, projected state, and ordered external effects. Sender args have three positional -slots; absent, undefined and null are distinct `$rpc` tags. Literal objects containing `$rpc` -are escaped. Only object keys are sorted; array/effect order, options, budgets, settlement times -and errors stay observable. Errors contain category, message and `isRpcDeliveryUnknown`, never +`recorderSha256`, `scenarioSha256`, `platform`, `scenarioVersion`, `projectionVersion`, +`goldenFormatVersion`, `operation`, `family`, and `namedDeltas`. `platform` and `lockfileSha256` +are provenance and are not compared: a dependency or OS that changes behaviour changes the trace +itself, so comparing them would only fail candidates on unrelated bumps. The rest are pinned. + +`recorderSha256` covers every non-markdown file under this directory, so the runner that produced a +golden is as pinned as the product baseline: editing an adapter projection or a fixture fails +candidate mode on the header and forces a deliberate re-record of everything. + +`scenarioSha256` covers the scenario input _that golden_ was recorded from — one manifest scenario +for a pilot golden, the generated variants and any hoisted prelude for a matrix or schedule golden, +canonicalised by `captureValue` so an explicit-undefined param stays distinct from an absent one. +Editing a scenario still fails candidate mode on the header, but only for the goldens derived from +it. The manifest used to be an input to `recorderSha256` instead, which made every golden's header +a function of every other family's scenarios: adding one domain's family re-digested all 153 files +and put a conflict on that line in every domain branch in flight. Which goldens a manifest derives +lives in `derived-goldens.ts`, so the digest is a function of the same derivation that records the +file rather than of a restatement of it; `golden-header-digest.test.ts` pins the four properties +that separation buys. + +Checkpoints contain ordered sender calls and serialized physical application payloads, action and +request settlements, projected state, and ordered external effects. Sender args have three +positional slots; absent, undefined and null are distinct `$rpc` tags. Literal objects containing +`$rpc` are escaped. Only object keys are sorted; array/effect order, options, budgets, settlement +times and errors stay observable. Errors contain category, message and `isRpcDeliveryUnknown`, never stack paths, plus `code` and a recursively captured `cause` when the thrown error carries them. Platform is provenance; candidate comparison does not require the same operating system. +Format version 4 adds `scenarioSha256`. A version-3 golden would already fail this reader's byte +compare, so the bump buys the diagnosis rather than the rejection: `readGolden` names the stale +format and says to re-record, instead of reporting an opaque `(encoding)` difference. The bump moved +no observation. + ### Value pool Format version 3 stores each distinct observation _entry_ once under `values`, keyed by the first @@ -201,7 +219,7 @@ families because no reference states are defined for them. ## What this oracle does and does not see -It replays 78 scenarios against frozen goldens and fails on any divergence: 153 goldens over 200 +It replays 78 scenarios against frozen goldens and fails on any divergence: 153 goldens over 210 tests, all inside `pnpm --dir mobile test`. For a migration it answers one question — does the rewritten call site produce the same sender calls, settlements, state and effects as main did? diff --git a/mobile/src/test-support/rpc-recording/derived-goldens.test.ts b/mobile/src/test-support/rpc-recording/derived-goldens.test.ts new file mode 100644 index 00000000000..adaac841bc7 --- /dev/null +++ b/mobile/src/test-support/rpc-recording/derived-goldens.test.ts @@ -0,0 +1,25 @@ +import { readdirSync } from 'node:fs' +import { resolve } from 'node:path' +import { describe, expect, it } from 'vitest' +import { derivedGoldens } from './derived-goldens' +import { readScenarios } from './scenario-input' + +const root = resolve(import.meta.dirname, '../../../..') +const input = readScenarios( + process.env.RPC_FOUNDATION_SCENARIOS ?? + resolve(root, 'mobile/rpc-foundation/pilot-scenarios.json') +) +const directory = + process.env.RPC_FOUNDATION_GOLDENS ?? resolve(root, 'mobile/rpc-foundation/goldens') + +describe('derived goldens', () => { + // Fails closed both ways: a golden the derivation dropped stays frozen with nothing certifying or + // digesting it, and one it derives with no file on disk was never recorded. + it('derives exactly the goldens on disk', () => { + const derived = derivedGoldens(input.scenarios).map((golden) => golden.id) + const onDisk = readdirSync(directory) + .filter((file) => file.endsWith('.json')) + .map((file) => file.replace(/\.json$/, '')) + expect(derived.sort()).toEqual(onDisk.sort()) + }) +}) diff --git a/mobile/src/test-support/rpc-recording/derived-goldens.ts b/mobile/src/test-support/rpc-recording/derived-goldens.ts new file mode 100644 index 00000000000..d372436b8d3 --- /dev/null +++ b/mobile/src/test-support/rpc-recording/derived-goldens.ts @@ -0,0 +1,155 @@ +import { hoistPreludeCheckpoints } from './prelude-checkpoints' +import { driveReplyMatrix, replyMatrixGoldenId, replyMatrixSites } from './reply-matrix' +import { replyMatrixNormalResult } from './reply-matrix-normal-result' +import { + bindCompletions, + interruptionSchedules, + lifecycleSchedules, + siblingSchedules +} from './schedule-driver' +import type { RecordingScenario } from './recording-scenario' + +/** + * One frozen golden and the scenarios it is recorded from. Derived here rather than inside the + * suites so `scenarioSha256` is a function of the same derivation that records the file: a test + * that restated how a matrix or schedule expands could agree with itself while disagreeing with + * what was recorded. + */ +export type DerivedGolden = { + id: string + title: string + family: string + /** The matrix site this golden drives; absent for a pilot or schedule golden. */ + site?: string + /** Lazy, so a family with no replayable success fails its own test instead of collection. */ + scenarios: () => RecordingScenario[] + timeoutMs?: number +} + +const SIBLING_SCHEDULE_BASES = [ + 'b3', + 'settings-new-tab-ssh', + 'settings-home-providers-fulfilled', + 'settings-workspace-context-fulfilled', + 'settings-resume-metadata-fulfilled', + 'settings-task-hydration-fulfilled', + 'settings-repo-metadata-fulfilled' +] +const INTERRUPTION_BASES = ['inventory-lifecycle', 'settings-bot-overrides-fulfilled'] +const LIFECYCLE_BASES = [ + 'inventory-lifecycle', + 'b3', + 'settings-bot-overrides-fulfilled', + 'settings-workspace-context-fulfilled', + 'settings-task-hydration-fulfilled' +] + +function baseScenario(manifest: readonly RecordingScenario[], id: string): RecordingScenario { + const found = manifest.find((scenario) => scenario.id === id) + if (!found) { + throw new Error(`No scenario named ${id}`) + } + return found +} + +/** The manifest scenario a pilot golden expands from, which its suite also mounts and mutates. */ +export type PilotGolden = DerivedGolden & { scenario: RecordingScenario } + +/** One golden per manifest scenario: frozen main parity for the scenario as written. */ +export function pilotGoldens(manifest: readonly RecordingScenario[]): PilotGolden[] { + return manifest.map((scenario) => ({ + id: scenario.id, + title: `${scenario.id}: frozen main parity and determinism`, + family: scenario.family, + scenario, + scenarios: () => [scenario] + })) +} + +/** Every golden generated from a family's base scenario: reply matrices and owned schedules. */ +export function familyGoldens(manifest: readonly RecordingScenario[]): DerivedGolden[] { + const families = new Map() + for (const scenario of manifest) { + families.set(scenario.family, [...(families.get(scenario.family) ?? []), scenario]) + } + const goldens: DerivedGolden[] = [] + const ids = new Set() + for (const [family, scenarios] of families) { + const [base] = scenarios + if (!base) { + throw new Error(`Family has no scenario: ${family}`) + } + for (const site of replyMatrixSites(base)) { + const id = replyMatrixGoldenId(family, site) + if (ids.has(id)) { + throw new Error(`Two matrix sites share a golden: ${id}`) + } + ids.add(id) + goldens.push({ + id, + title: `${family}: reply partitions at ${site}`, + family, + site, + timeoutMs: 30_000, + scenarios: () => + driveReplyMatrix(base, site, replyMatrixNormalResult(family, scenarios, site)) + }) + } + } + for (const id of SIBLING_SCHEDULE_BASES) { + const base = baseScenario(manifest, id) + const replies = base.steps.flatMap((step) => ('complete' in step ? [step] : [])) + // Complete prerequisites before permuting the sibling barrier. + const first = replies.find((step) => + step.complete.startsWith(id === 'b3' ? 'linear.getIssue' : 'settings.get') + ) + if (!first) { + throw new Error(`No prerequisite completion to order siblings against: ${id}`) + } + const second = replies[replies.indexOf(first) + 1] + if (!second) { + continue + } + goldens.push({ + id: `schedules-${id}`, + title: `${id}: completion orders and correlated faults`, + family: base.family, + scenarios: () => siblingSchedules(base, first, second) + }) + } + for (const id of INTERRUPTION_BASES) { + const base = baseScenario(manifest, id) + goldens.push({ + id: `interruptions-${id}`, + title: `${id}: timeout, disconnect and stable-client cutover`, + family: base.family, + scenarios: () => interruptionSchedules(base) + }) + } + for (const id of LIFECYCLE_BASES) { + const base = baseScenario(manifest, id) + const actions: readonly ('reset' | 'unmount' | 'blur')[] = id.includes('hydration') + ? ['unmount'] + : id.includes('context') + ? ['unmount', 'blur'] + : ['reset', 'unmount', 'blur'] + goldens.push({ + id: `lifecycle-${id}`, + title: `${id}: lifecycle boundaries`, + family: base.family, + scenarios: () => + hoistPreludeCheckpoints( + { ...base, steps: bindCompletions(base.steps) }, + actions + .flatMap((action) => lifecycleSchedules(base, action)) + .filter(({ scenario }) => !id.includes('hydration') || !scenario.id.endsWith('-1')) + ) + }) + } + return goldens +} + +/** Every golden the oracle freezes, pilot and family alike. */ +export function derivedGoldens(manifest: readonly RecordingScenario[]): DerivedGolden[] { + return [...pilotGoldens(manifest), ...familyGoldens(manifest)] +} diff --git a/mobile/src/test-support/rpc-recording/family-recordings.test.ts b/mobile/src/test-support/rpc-recording/family-recordings.test.ts index 0fcac72a068..e7c971810d6 100644 --- a/mobile/src/test-support/rpc-recording/family-recordings.test.ts +++ b/mobile/src/test-support/rpc-recording/family-recordings.test.ts @@ -1,18 +1,8 @@ import { resolve } from 'node:path' import { describe, expect, it } from 'vitest' import { readScenarios } from './scenario-input' -import { driveReplyMatrix, replyMatrixGoldenId, replyMatrixSites } from './reply-matrix' -import { - REPLY_MATRIX_NORMAL_RESULT_INVENTORY, - replyMatrixNormalResult -} from './reply-matrix-normal-result' -import { - bindCompletions, - interruptionSchedules, - lifecycleSchedules, - siblingSchedules -} from './schedule-driver' -import { hoistPreludeCheckpoints } from './prelude-checkpoints' +import { familyGoldens } from './derived-goldens' +import { REPLY_MATRIX_NORMAL_RESULT_INVENTORY } from './reply-matrix-normal-result' import { runRecording } from './run-recording' import { pilotMountAdapters } from './pilot-mount-adapters' import { vitestRecordingScheduler } from './vitest-recording-scheduler' @@ -48,7 +38,7 @@ async function certify(id: string, scenarios: RecordingScenario[]) { checkpoints.push({ ...checkpoint, id: `${scenario.id}:${checkpoint.id}` }) } } - const golden = goldenRecording(root, input.baseline, scenarios[0], { + const golden = goldenRecording(root, input.baseline, scenarios, { scenario: id, checkpoints }) @@ -66,95 +56,29 @@ async function certify(id: string, scenarios: RecordingScenario[]) { } describe('family reply partitions and owned schedules', () => { - const families = new Map() - for (const scenario of input.scenarios) { - families.set(scenario.family, [...(families.get(scenario.family) ?? []), scenario]) - } - const goldenIds = new Set() - // Filled only when a site actually generates a test, so the census below is independent of - // replyMatrixSites throwing on an empty list: the mechanism this replaced skipped families. - const matrixed = new Set() - const liveSites = new Set() + const goldens = familyGoldens(input.scenarios) + const families = [...new Set(input.scenarios.map((scenario) => scenario.family))] + // Read off the goldens that actually generate a test, so the census is independent of whether + // replyMatrixSites would throw on an empty list: the mechanism this replaced skipped families. + const sites = goldens.flatMap((golden) => (golden.site ? [golden] : [])) it('matrices every family in the manifest', () => { - expect([...matrixed]).toEqual([...families.keys()]) + expect([...new Set(sites.map((golden) => golden.family))]).toEqual(families) }) // The inventory is only consulted for a live site, so a stale entry would retire silently. it('lists only live matrix sites in the normal-result inventory', () => { + const live = new Set(sites.map((golden) => `${golden.family}\0${golden.site}`)) const stale = REPLY_MATRIX_NORMAL_RESULT_INVENTORY.filter( - (entry) => !liveSites.has(`${entry.family}\0${entry.request}`) + (entry) => !live.has(`${entry.family}\0${entry.request}`) ).map((entry) => `${entry.family} ${entry.request}`) expect(stale).toEqual([]) }) - for (const [family, scenarios] of families) { - const base = scenarios[0]! - for (const request of replyMatrixSites(base)) { - const id = replyMatrixGoldenId(family, request) - if (goldenIds.has(id)) { - throw new Error(`Two matrix sites share a golden: ${id}`) - } - goldenIds.add(id) - matrixed.add(family) - liveSites.add(`${family}\0${request}`) - it(`${family}: reply partitions at ${request}`, async () => { - await certify( - id, - driveReplyMatrix(base, request, replyMatrixNormalResult(family, scenarios, request)) - ) - }, 30_000) - } - } - for (const id of [ - 'b3', - 'settings-new-tab-ssh', - 'settings-home-providers-fulfilled', - 'settings-workspace-context-fulfilled', - 'settings-resume-metadata-fulfilled', - 'settings-task-hydration-fulfilled', - 'settings-repo-metadata-fulfilled' - ]) { - const base = input.scenarios.find((scenario) => scenario.id === id)! - const replies = base.steps.filter((step) => 'complete' in step) - // Complete prerequisites before permuting the sibling barrier. - const first = replies.find((step) => - step.complete.startsWith(id === 'b3' ? 'linear.getIssue' : 'settings.get') - )! - const second = replies[replies.indexOf(first) + 1] - if (!second) { - continue - } - it(`${id}: completion orders and correlated faults`, async () => { - await certify(`schedules-${id}`, siblingSchedules(base, first, second)) - }) - } - for (const id of ['inventory-lifecycle', 'settings-bot-overrides-fulfilled']) { - const base = input.scenarios.find((scenario) => scenario.id === id)! - it(`${id}: timeout, disconnect and stable-client cutover`, async () => { - await certify(`interruptions-${id}`, interruptionSchedules(base)) - }) - } - for (const id of [ - 'inventory-lifecycle', - 'b3', - 'settings-bot-overrides-fulfilled', - 'settings-workspace-context-fulfilled', - 'settings-task-hydration-fulfilled' - ]) { - const base = input.scenarios.find((scenario) => scenario.id === id)! - const actions = id.includes('hydration') - ? (['unmount'] as const) - : id.includes('context') - ? (['unmount', 'blur'] as const) - : (['reset', 'unmount', 'blur'] as const) - it(`${id}: lifecycle boundaries`, async () => { - await certify( - `lifecycle-${id}`, - hoistPreludeCheckpoints( - { ...base, steps: bindCompletions(base.steps) }, - actions - .flatMap((action) => lifecycleSchedules(base, action)) - .filter(({ scenario }) => !id.includes('hydration') || !scenario.id.endsWith('-1')) - ) - ) - }) + for (const golden of goldens) { + it( + golden.title, + async () => { + await certify(golden.id, golden.scenarios()) + }, + golden.timeoutMs + ) } }) diff --git a/mobile/src/test-support/rpc-recording/golden-header-digest.test.ts b/mobile/src/test-support/rpc-recording/golden-header-digest.test.ts new file mode 100644 index 00000000000..cf05b38cfca --- /dev/null +++ b/mobile/src/test-support/rpc-recording/golden-header-digest.test.ts @@ -0,0 +1,175 @@ +import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs' +import { tmpdir } from 'node:os' +import { join, resolve } from 'node:path' +import { afterAll, describe, expect, it } from 'vitest' +import { derivedGoldens } from './derived-goldens' +import { goldenRecording, type GoldenRecording } from './golden-recording' +import { RECORDER_DIRECTORY } from './recorder-digest' +import { readScenarios } from './scenario-input' +import type { RecordingScenario, ScenarioStep } from './recording-scenario' + +const root = resolve(import.meta.dirname, '../../../..') +const manifest = readScenarios( + process.env.RPC_FOUNDATION_SCENARIOS ?? + resolve(root, 'mobile/rpc-foundation/pilot-scenarios.json') +).scenarios +const BASELINE = 'a'.repeat(40) +const EDITED_SCENARIO = 'b1' +const EDITED_SITE = 'files.searchPaths#1' +/** The only `legacy-inventory` scenario with a fulfilled reply at `EDITED_SITE`. */ +const REPLAYED_SCENARIO = 'inventory-repeat-query' +const REPLAYED_GOLDEN = 'matrix-legacy-inventory-files.searchpaths-1' +/** + * Every golden derived from `b1`: its own, and its family's four matrix sites, which expand from it + * as the family's base. The two other `legacy-inventory` scenarios and the interruption and + * lifecycle goldens that expand from `inventory-lifecycle` are deliberately absent. + */ +const EDITED_GOLDENS = [ + 'b1', + 'matrix-legacy-inventory-files.searchpaths-1', + 'matrix-legacy-inventory-files.searchpaths-2', + 'matrix-legacy-inventory-fresh-inventory', + 'matrix-legacy-inventory-old-inventory' +] +type Header = Omit + +const created: string[] = [] +afterAll(() => { + for (const directory of created) { + rmSync(directory, { recursive: true, force: true }) + } +}) + +/** The two files a root contributes to a header, plus the manifest the old digest also read. */ +function stubRoot(recorder: string, scenarioFile: string): string { + const directory = mkdtempSync(join(tmpdir(), 'rpc-header-')) + created.push(directory) + mkdirSync(join(directory, RECORDER_DIRECTORY), { recursive: true }) + writeFileSync(join(directory, RECORDER_DIRECTORY, 'runner.ts'), recorder) + writeFileSync(join(directory, 'mobile/pnpm-lock.yaml'), 'lockfile: stub\n') + mkdirSync(join(directory, 'mobile/rpc-foundation'), { recursive: true }) + writeFileSync(join(directory, 'mobile/rpc-foundation/pilot-scenarios.json'), scenarioFile) + return directory +} + +/** Every golden's header for one recorder revision and one manifest, both written to a stub root. */ +function headers(recorder: string, scenarios: readonly RecordingScenario[]): Map { + const stub = stubRoot(recorder, JSON.stringify({ baseline: BASELINE, scenarios })) + return new Map( + derivedGoldens(scenarios).map((golden) => { + const { recording: _recording, ...header } = goldenRecording( + stub, + BASELINE, + golden.scenarios(), + { scenario: golden.id, checkpoints: [] } + ) + return [golden.id, header] + }) + ) +} + +function moved(before: Map, after: Map): string[] { + return [...before] + .filter(([id, header]) => JSON.stringify(after.get(id)) !== JSON.stringify(header)) + .map(([id]) => id) + .sort() +} + +/** A family no other golden consumes, with one reply the matrix can replay as its success. */ +const ADDED_FAMILY: RecordingScenario = { + id: 'digest-probe', + operation: 'digest.probe', + version: 1, + family: 'digest-probe', + sites: [], + schedules: ['probe'], + steps: [ + { + complete: 'probe.read#1', + params: { worktree: 'id:A' }, + reply: { ok: true, result: { probed: true } } + }, + { checkpoint: 'settled' } + ] +} + +type Completion = Extract + +/** Rewrites one named completion, and fails loudly if the step it names has moved or multiplied. */ +function editCompletion( + scenarios: readonly RecordingScenario[], + scenarioId: string, + request: string, + rewrite: (step: Completion) => Completion +): RecordingScenario[] { + let edits = 0 + const edited = scenarios.map((scenario) => + scenario.id !== scenarioId + ? scenario + : { + ...scenario, + steps: scenario.steps.map((step) => { + if (!('complete' in step) || step.complete !== request) { + return step + } + edits++ + return rewrite(step) + }) + } + ) + if (edits !== 1) { + throw new Error(`Expected one ${request} completion in ${scenarioId}, edited ${edits}`) + } + return edited +} + +describe('golden header digests', () => { + it('re-digests nothing when the manifest gains a family', () => { + const before = headers('export const runner = 1', manifest) + const after = headers('export const runner = 1', [...manifest, ADDED_FAMILY]) + expect(moved(before, after)).toEqual([]) + // The added family did derive goldens of its own: a pilot golden and one matrix site. + expect(after.size).toBe(before.size + 2) + }) + + it('re-digests exactly the goldens derived from an edited scenario', () => { + const before = headers('export const runner = 1', manifest) + const after = headers( + 'export const runner = 1', + editCompletion(manifest, EDITED_SCENARIO, EDITED_SITE, (step) => ({ + ...step, + params: { worktree: 'id:A', query: 'old', limit: 17 } + })) + ) + expect(moved(before, after)).toEqual([...EDITED_GOLDENS].sort()) + for (const id of EDITED_GOLDENS) { + expect(after.get(id)?.recorderSha256).toBe(before.get(id)?.recorderSha256) + expect(after.get(id)?.scenarioSha256).not.toBe(before.get(id)?.scenarioSha256) + } + }) + + // The generated variants are hashed, not the base they expand from, and this is what that buys: + // the `normal` partition replays a sibling's recorded reply, so the sibling is a real input to a + // matrix golden that its own scenario never appears in. + it('re-digests a matrix golden whose replayed success comes from an edited sibling', () => { + const before = headers('export const runner = 1', manifest) + const after = headers( + 'export const runner = 1', + editCompletion(manifest, REPLAYED_SCENARIO, EDITED_SITE, (step) => ({ + ...step, + reply: { ok: true, result: { files: [{ relativePath: 'edited.ts' }] } } + })) + ) + expect(moved(before, after)).toEqual([REPLAYED_SCENARIO, REPLAYED_GOLDEN].sort()) + }) + + it('re-digests every golden when a recorder file changes', () => { + const before = headers('export const runner = 1', manifest) + const after = headers('export const runner = 2', manifest) + expect(moved(before, after)).toEqual([...before.keys()].sort()) + for (const [id, header] of before) { + expect(after.get(id)?.recorderSha256).not.toBe(header.recorderSha256) + expect(after.get(id)?.scenarioSha256).toBe(header.scenarioSha256) + } + }) +}) diff --git a/mobile/src/test-support/rpc-recording/golden-recording.ts b/mobile/src/test-support/rpc-recording/golden-recording.ts index e7ae72c60b1..911da5997b0 100644 --- a/mobile/src/test-support/rpc-recording/golden-recording.ts +++ b/mobile/src/test-support/rpc-recording/golden-recording.ts @@ -11,14 +11,16 @@ import { type ValuePool } from './golden-value-pool' import { recorderSha256 } from './recorder-digest' +import { scenarioSha256 } from './scenario-digest' import type { Recording, RecordingScenario } from './recording-scenario' import type { RecordedValue } from './recording-values' export const RUNNER_VERSION = 1 // 2 stamps every settlement with startedAt/settledAt on the pinned virtual clock. export const PROJECTION_VERSION = 2 -// 3 interns each entry of a list or map field, not the whole field; an older file is not comparable. -export const GOLDEN_FORMAT_VERSION = 3 +// 4 pins scenarioSha256 per golden. The byte compare would fail a version-3 golden anyway; the bump +// buys the diagnosis, reporting the stale format instead of an opaque `(encoding)` difference. +export const GOLDEN_FORMAT_VERSION = 4 export type GoldenRecording = { operation: string family: string @@ -27,6 +29,7 @@ export type GoldenRecording = { baseline: string lockfileSha256: string recorderSha256: string + scenarioSha256: string platform: string scenarioVersion: number projectionVersion: number @@ -40,9 +43,13 @@ type GoldenFile = Omit & { export function goldenRecording( root: string, baseline: string, - scenario: RecordingScenario, + scenarios: readonly RecordingScenario[], recording: Recording ): GoldenRecording { + const [scenario] = scenarios + if (!scenario) { + throw new Error('A golden records at least one scenario') + } return { operation: scenario.operation, family: scenario.family, @@ -53,6 +60,7 @@ export function goldenRecording( .update(readFileSync(join(root, 'mobile/pnpm-lock.yaml'))) .digest('hex'), recorderSha256: recorderSha256(root), + scenarioSha256: scenarioSha256(scenarios), platform: process.platform, scenarioVersion: scenario.version, projectionVersion: PROJECTION_VERSION, diff --git a/mobile/src/test-support/rpc-recording/pilot-recordings.test.ts b/mobile/src/test-support/rpc-recording/pilot-recordings.test.ts index b3ac0688539..87aa9dfc6ef 100644 --- a/mobile/src/test-support/rpc-recording/pilot-recordings.test.ts +++ b/mobile/src/test-support/rpc-recording/pilot-recordings.test.ts @@ -1,4 +1,5 @@ import { readScenarios } from './scenario-input' +import { pilotGoldens } from './derived-goldens' import { resolve } from 'node:path' import { describe, expect, it } from 'vitest' import { runRecording, runRecordingMutant } from './run-recording' @@ -66,8 +67,9 @@ function visibleState(recording: Recording): RecordedValue { } describe('RPC main recordings', () => { - for (const scenario of input.scenarios) { - it(`${scenario.id}: frozen main parity and determinism`, async () => { + for (const pilot of pilotGoldens(input.scenarios)) { + const { id, scenario } = pilot + it(pilot.title, async () => { let first = '' for (let run = 0; run < determinismRuns(); run++) { const { adapters } = pilotMountAdapters(root) @@ -76,21 +78,21 @@ describe('RPC main recordings', () => { adapters[scenario.operation], vitestRecordingScheduler() ) - if (scenario.id === 'b1') { + if (id === 'b1') { expect(visibleState(recording)).toEqual({ files: ['third.ts'] }) } - if (scenario.id === 'b2') { + if (id === 'b2') { expect(visibleState(recording)).toMatchObject({ error: "Cannot read properties of null (reading 'ok')" }) } - if (scenario.id === 'b3') { + if (id === 'b3') { expect(visibleState(recording)).toMatchObject({ error: 'comments transport error', loading: false }) } - const golden = goldenRecording(root, input.baseline, scenario, recording) + const golden = goldenRecording(root, input.baseline, pilot.scenarios(), recording) const bytes = goldenBytes(golden) if (run) { expect(bytes).toBe(first) @@ -99,44 +101,41 @@ describe('RPC main recordings', () => { if (process.env.RPC_FOUNDATION_MODE === '--record') { await writeGolden(goldens, golden, '--record') } else { - compareGolden(readGolden(goldens, scenario.id), golden) + compareGolden(readGolden(goldens, id), golden) } } }) - const mutation = mutants[scenario.id] + const mutation = mutants[id] if (!mutation) { continue } - it(`${scenario.id}: kills ${mutation}`, async () => { + it(`${id}: kills ${mutation}`, async () => { const { adapters, assertMutationApplied } = pilotMountAdapters(root, { mutation }) const result = await runRecordingMutant( scenario, adapters[scenario.operation], vitestRecordingScheduler(), - readGolden(goldens, scenario.id).recording, + readGolden(goldens, id).recording, visibleState ) assertMutationApplied() expect(result.verdict).toBe('killed') }) - const reference = referenceStates[scenario.id] + const reference = referenceStates[id] if (!reference) { continue } - it.skipIf(!process.env.RPC_FOUNDATION_REFERENCE_ROOT)( - `${scenario.id}: rejects bcba08b3e4`, - async () => { - const { adapters } = pilotMountAdapters(process.env.RPC_FOUNDATION_REFERENCE_ROOT!, { - reference: true - }) - const result = await runRecording( - scenario, - adapters[scenario.operation], - vitestRecordingScheduler() - ) - expect(visibleState(result)).toEqual(reference) - expect(reference).not.toEqual(visibleState(readGolden(goldens, scenario.id).recording)) - } - ) + it.skipIf(!process.env.RPC_FOUNDATION_REFERENCE_ROOT)(`${id}: rejects bcba08b3e4`, async () => { + const { adapters } = pilotMountAdapters(process.env.RPC_FOUNDATION_REFERENCE_ROOT!, { + reference: true + }) + const result = await runRecording( + scenario, + adapters[scenario.operation], + vitestRecordingScheduler() + ) + expect(visibleState(result)).toEqual(reference) + expect(reference).not.toEqual(visibleState(readGolden(goldens, id).recording)) + }) } }) diff --git a/mobile/src/test-support/rpc-recording/recorder-digest.ts b/mobile/src/test-support/rpc-recording/recorder-digest.ts index af25eb1f5fd..b2a5e893a70 100644 --- a/mobile/src/test-support/rpc-recording/recorder-digest.ts +++ b/mobile/src/test-support/rpc-recording/recorder-digest.ts @@ -3,7 +3,6 @@ import { readFileSync, readdirSync } from 'node:fs' import { join, posix } from 'node:path' export const RECORDER_DIRECTORY = 'mobile/src/test-support/rpc-recording' -export const RECORDER_SCENARIO_INPUT = 'mobile/rpc-foundation/pilot-scenarios.json' const digests = new Map() function collect(root: string, relative: string, files: string[]): void { @@ -20,9 +19,14 @@ function collect(root: string, relative: string, files: string[]): void { } /** - * Every executable recorder input, so a golden is attributable to one runner and one scenario file. - * Prose is excluded because it cannot change a recording; a candidate run recomputes this and - * `compareGolden` fails the header, which forces a recorder edit to re-record deliberately. + * Every executable recorder input, so a golden is attributable to one runner. Prose is excluded + * because it cannot change a recording; a candidate run recomputes this and `compareGolden` fails + * the header, which forces a recorder edit to re-record deliberately. + * + * The scenario manifest is deliberately not an input. It used to be, which made every golden's + * header a function of every other family's scenarios: adding one family re-digested all 153 files + * and put a conflict on that line in every domain branch. `scenarioSha256` pins each golden to the + * scenarios it was actually recorded from instead. */ export function recorderSha256(root: string): string { const cached = digests.get(root) @@ -31,7 +35,6 @@ export function recorderSha256(root: string): string { } const files: string[] = [] collect(root, RECORDER_DIRECTORY, files) - files.push(RECORDER_SCENARIO_INPUT) const digest = createHash('sha256') .update( files diff --git a/mobile/src/test-support/rpc-recording/recording-runner.test.ts b/mobile/src/test-support/rpc-recording/recording-runner.test.ts index b81597248ae..867a1aefcd5 100644 --- a/mobile/src/test-support/rpc-recording/recording-runner.test.ts +++ b/mobile/src/test-support/rpc-recording/recording-runner.test.ts @@ -390,8 +390,6 @@ describe('recording boundaries', () => { try { const directory = join(root, RECORDER_DIRECTORY) mkdirSync(directory, { recursive: true }) - mkdirSync(join(root, 'mobile/rpc-foundation'), { recursive: true }) - writeFileSync(join(root, 'mobile/rpc-foundation/pilot-scenarios.json'), '{}') writeFileSync(join(directory, 'runner.ts'), 'export const runner = 1') const original = recorderSha256(root) writeFileSync(join(directory, 'README.md'), 'prose') @@ -466,6 +464,7 @@ function sampleGolden(id: string): GoldenRecording { baseline: 'a'.repeat(40), lockfileSha256: 'b'.repeat(64), recorderSha256: 'c'.repeat(64), + scenarioSha256: 'd'.repeat(64), platform: process.platform, scenarioVersion: 1, projectionVersion: PROJECTION_VERSION, diff --git a/mobile/src/test-support/rpc-recording/scenario-digest.ts b/mobile/src/test-support/rpc-recording/scenario-digest.ts new file mode 100644 index 00000000000..a83ebe32002 --- /dev/null +++ b/mobile/src/test-support/rpc-recording/scenario-digest.ts @@ -0,0 +1,24 @@ +import { createHash } from 'node:crypto' +import { canonicalJson } from './golden-value-pool' +import { captureValue } from './recording-values' +import type { RecordingScenario } from './recording-scenario' + +/** + * The scenario input one golden was recorded from: every scenario the runner consumed for it, in + * order — one manifest scenario for a pilot golden, the generated variants (and any hoisted + * prelude) for a matrix or schedule golden. + * + * Pinned per golden rather than over the whole manifest so a family added for one domain moves only + * its own goldens, while a field edited inside a scenario moves every golden derived from it. The + * variants are hashed rather than the base they came from because they are what `runRecording` + * consumed: a matrix site, its replayed normal result and its partition replies are all visible + * here without the derivation having to be restated. + * + * `captureValue` sorts object keys and tags an explicit-undefined param, which `JSON.stringify` + * would drop and so conflate with an absent one. + */ +export function scenarioSha256(scenarios: readonly RecordingScenario[]): string { + return createHash('sha256') + .update(canonicalJson(captureValue(scenarios))) + .digest('hex') +} From a4c11f18899cb47d28cbad2db6bf96e0a694bfcb Mon Sep 17 00:00:00 2001 From: Brennan Benson <79079362+brennanb2025@users.noreply.github.com> Date: Mon, 14 Sep 2026 10:28:16 -0700 Subject: [PATCH 11/12] fix(native-chat): stop a bounded tail read from moving the chat cursor past unapplied rows (#20581) * fix(native-chat): stop a bounded tail read from moving the chat cursor past unapplied rows A structured chat pane could latch "Working for N" forever after the agent had finished, showing the send arrow rather than Stop, while the sidebar and `worktree ps` correctly read idle. The client replica has one position (`state.cursor`) and one body. Two operations keep those consistent: replace (both from one host snapshot) and append (rows contiguous with the cursor). The `tail-page` branch was a third thing: it took the cursor from the journal head, the items from a bounded page (200 items, byte-capped), then merged retained client submissions over the page's. Under continuous journal writes the client is always slightly behind, so the branch ran on every window focus and on every pane re-activation. When more than a page of rows had landed since a send, that send's user item fell off the page, its submission was not carried, the retained `pending` survived, and the cursor jumped past the dispatch-acceptance row. Nothing re-sends it: a batch carries only touched items and that submission is never touched again. Delete the third operation rather than guard it. A live subscription is now the only thing that moves the cursor, and `subscribe({ cursor })` already replays exactly the missed rows. - remove the window `focus` listener and the owner/transport `refresh` contract - skip warm hydration: a retained owner subscribes at its applied cursor - cold hydration keeps its history read, applied as the existing `snapshot` (replace) event rather than `tail-page` - delete the `tail-page` action and its reducer branch - delete `resumeCursor` and `shouldAdvanceStructuredResumeCursor`; two cursors with two advancement rules were how position and body drifted apart `older-page`/`loadOlder`, the unattached-refusal grace, generation guards and the coalescer are unchanged. No host, wire or schema change. Also fixes a second cost of the same branch: focus during a busy turn discarded paged-in older items, shrinking the transcript to one bounded page mid-turn. * fix(native-chat): preserve unavailable mixed-version session fences --- .../structured-agent-session-read-owner.ts | 11 +- ...tured-agent-session-read-transport.test.ts | 66 ++++- ...structured-agent-session-read-transport.ts | 52 +--- ...use-structured-agent-session-read.test.tsx | 169 ++---------- .../use-structured-agent-session-read.ts | 13 - .../structured-agent-session-reducer.test.ts | 212 --------------- .../structured-agent-session-reducer.ts | 71 +---- ...ured-agent-session-read-owner.unit.test.ts | 251 ++++++++++++++++++ 8 files changed, 357 insertions(+), 488 deletions(-) create mode 100644 tests/e2e/structured-agent-session-read-owner.unit.test.ts diff --git a/src/renderer/src/components/native-chat/structured-agent-session-read-owner.ts b/src/renderer/src/components/native-chat/structured-agent-session-read-owner.ts index 82c231c9982..68e1e3bc250 100644 --- a/src/renderer/src/components/native-chat/structured-agent-session-read-owner.ts +++ b/src/renderer/src/components/native-chat/structured-agent-session-read-owner.ts @@ -29,7 +29,6 @@ export type StructuredAgentSessionReadOwner = { dispose: () => void getSnapshot: () => StructuredAgentSessionReadSnapshot loadOlder: () => Promise - refresh: () => void subscribe: (listener: () => void) => () => void } @@ -57,7 +56,6 @@ function createReadOwner( loadingOlder: false } let stopActiveRun: (() => void) | null = null - let refreshActiveRun = (): void => {} const retiredHistoryRead = (): boolean => true let captureActiveHistoryReadGuard = (): (() => boolean) => retiredHistoryRead const activations = new Set() @@ -91,7 +89,7 @@ function createReadOwner( setSnapshot({ ...snapshot, loadingOlder: false }) } } - const refreshTail = async (shouldStop: () => boolean): Promise => { + const hydrate = async (shouldStop: () => boolean): Promise => { const result = await callStructuredAgentSession( target, 'agentSession.history', @@ -120,7 +118,7 @@ function createReadOwner( if (shouldStop()) { return } - apply({ type: 'tail-page', page: result.page }) + apply({ type: 'history-page', page: result.page }) if (shouldStop()) { return } @@ -177,15 +175,13 @@ function createReadOwner( applyError: (message) => apply({ type: 'error', message }), getCursor: () => snapshot.state.cursor, onHistoryReadInvalidated: clearLoadingOlder, - refreshTail, + hydrate: snapshot.state.epoch === null ? hydrate : undefined, sessionId, target }) captureActiveHistoryReadGuard = transport.captureHistoryReadGuard - refreshActiveRun = transport.refresh stopActiveRun = () => { captureActiveHistoryReadGuard = () => retiredHistoryRead - refreshActiveRun = (): void => {} transport.dispose() stopActiveRun = null } @@ -266,7 +262,6 @@ function createReadOwner( } } }, - refresh: () => refreshActiveRun(), subscribe: (listener) => { listeners.add(listener) return () => { diff --git a/src/renderer/src/components/native-chat/structured-agent-session-read-transport.test.ts b/src/renderer/src/components/native-chat/structured-agent-session-read-transport.test.ts index 555c09acdc4..5e5be1b6b3b 100644 --- a/src/renderer/src/components/native-chat/structured-agent-session-read-transport.test.ts +++ b/src/renderer/src/components/native-chat/structured-agent-session-read-transport.test.ts @@ -1,4 +1,8 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' +import { + EMPTY_STRUCTURED_AGENT_SESSION, + reduceStructuredAgentSession +} from '../../../../shared/structured-agent-session-reducer' import type { AgentJournalCursor } from '../../../../shared/agent-session-journal-types' import type { AgentSessionHistoryPage, @@ -70,12 +74,56 @@ describe('structured agent-session read transport generations', () => { applyError, getCursor: () => null, onHistoryReadInvalidated: () => undefined, - refreshTail: async () => undefined, + hydrate: async () => undefined, sessionId: 'session-a', target }) } + it('flushes queued rows before reading the applied cursor for reconnect', async () => { + vi.useFakeTimers() + try { + let state = EMPTY_STRUCTURED_AGENT_SESSION + const transport = startStructuredAgentSessionReadTransport({ + applyEvent: (event) => { + state = reduceStructuredAgentSession(state, { type: 'event', event }) + }, + applyError: vi.fn(), + getCursor: () => state.cursor, + onHistoryReadInvalidated: () => undefined, + sessionId: 'session-a', + target + }) + attempts[0].onEvent(snapshot(100)) + attempts[0].closed.resolve({ unsubscribe: attempts[0].unsubscribe }) + await flushPromises() + attempts[0].onClose() + await vi.advanceTimersByTimeAsync(720) + attempts[0].onEvent({ + type: 'batch', + sessionId: 'session-a', + batch: { + cursor: { epoch: 'epoch-a', sequence: 101 }, + items: [], + removedItemIds: [], + submissions: [] + } + }) + expect(state.cursor?.sequence).toBe(100) + await vi.advanceTimersByTimeAsync(30) + expect(state.cursor?.sequence).toBe(101) + expect(mocks.subscribe.mock.calls[1]?.[1]).toEqual({ + sessionId: 'session-a', + cursor: { epoch: 'epoch-a', sequence: 101 } + }) + attempts[1].closed.resolve({ unsubscribe: attempts[1].unsubscribe }) + await flushPromises() + transport.dispose() + } finally { + vi.useRealTimers() + } + }) + it('ignores opening frames after disposal and a replacement transport starts', async () => { const applyEvent = vi.fn() const applyError = vi.fn() @@ -159,8 +207,8 @@ describe('structured agent-session read transport unattached refusals', () => { }) }) - function startWithTail( - refreshTail: () => Promise, + function startWithHydration( + hydrate: () => Promise, applyError: (message: string) => void, applyEvent = vi.fn() ) { @@ -169,7 +217,7 @@ describe('structured agent-session read transport unattached refusals', () => { applyError, getCursor: () => null, onHistoryReadInvalidated: () => undefined, - refreshTail, + hydrate, sessionId: 'session-a', target }) @@ -186,7 +234,7 @@ describe('structured agent-session read transport unattached refusals', () => { vi.useFakeTimers() try { const applyError = vi.fn() - const transport = startWithTail(async () => { + const transport = startWithHydration(async () => { throw rpcRefusal(UNATTACHED) }, applyError) await flushPromises() @@ -204,7 +252,7 @@ describe('structured agent-session read transport unattached refusals', () => { vi.useFakeTimers() try { const applyError = vi.fn() - const transport = startWithTail(async () => { + const transport = startWithHydration(async () => { throw rpcRefusal(UNATTACHED) }, applyError) await flushPromises() @@ -232,7 +280,7 @@ describe('structured agent-session read transport unattached refusals', () => { vi.useFakeTimers() try { const applyError = vi.fn() - const transport = startWithTail(async () => { + const transport = startWithHydration(async () => { throw new Error('journal read failed') }, applyError) await flushPromises() @@ -247,7 +295,7 @@ describe('structured agent-session read transport unattached refusals', () => { vi.useFakeTimers() try { const applyError = vi.fn() - const transport = startWithTail(async () => undefined, applyError) + const transport = startWithHydration(async () => undefined, applyError) await flushPromises() expect(attempts).toHaveLength(1) @@ -267,7 +315,7 @@ describe('structured agent-session read transport unattached refusals', () => { try { const applyError = vi.fn() const applyEvent = vi.fn() - const transport = startWithTail(async () => undefined, applyError, applyEvent) + const transport = startWithHydration(async () => undefined, applyError, applyEvent) await flushPromises() expect(attempts).toHaveLength(1) diff --git a/src/renderer/src/components/native-chat/structured-agent-session-read-transport.ts b/src/renderer/src/components/native-chat/structured-agent-session-read-transport.ts index b380c89d577..f4310cec890 100644 --- a/src/renderer/src/components/native-chat/structured-agent-session-read-transport.ts +++ b/src/renderer/src/components/native-chat/structured-agent-session-read-transport.ts @@ -5,7 +5,6 @@ import { AGENT_SESSION_UNATTACHED_READ_GRACE_MS, isUnattachedAgentSessionReadRefusal } from '../../../../shared/structured-agent-session-read-refusal' -import { shouldAdvanceStructuredResumeCursor } from '../../../../shared/structured-agent-session-reducer' import type { RuntimeClientTarget } from '@/runtime/runtime-rpc-client' import { subscribeStructuredAgentSession } from '@/runtime/structured-agent-session-client' @@ -37,13 +36,12 @@ export function startStructuredAgentSessionReadTransport(args: { applyError: (message: string) => void getCursor: () => AgentJournalCursor | null onHistoryReadInvalidated: () => void - refreshTail: (shouldStop: () => boolean) => Promise + hydrate?: (shouldStop: () => boolean) => Promise sessionId: string target: RuntimeClientTarget }): { captureHistoryReadGuard: () => () => boolean dispose: () => void - refresh: () => void } { let stopped = false let connected = false @@ -52,7 +50,6 @@ export function startStructuredAgentSessionReadTransport(args: { let openGeneration = 0 let stateGeneration = 0 let unsubscribe = (): void => {} - let resumeCursor = args.getCursor() let shouldStopCoalescedEvent = (): boolean => true const coalescer = createStructuredAgentSessionEventCoalescer((event) => { if (!shouldStopCoalescedEvent()) { @@ -112,12 +109,6 @@ export function startStructuredAgentSessionReadTransport(args: { if (!isCurrentOpenGeneration(eventOpenGeneration)) { return } - resumeCursor = event.page.liveCursor ?? event.page.window.nextCursor - } else if ( - event.type === 'batch' && - shouldAdvanceStructuredResumeCursor(resumeCursor, event.batch.cursor) - ) { - resumeCursor = event.batch.cursor } else if (event.type === 'end') { connected = false reconnectScheduler.schedule() @@ -148,9 +139,10 @@ export function startStructuredAgentSessionReadTransport(args: { return } let closedDuringOpen = false + const cursor = args.getCursor() const handle = await subscribeStructuredAgentSession( args.target, - { sessionId: args.sessionId, ...(resumeCursor ? { cursor: resumeCursor } : {}) }, + { sessionId: args.sessionId, ...(cursor ? { cursor } : {}) }, (event) => handleEvent(event, currentOpenGeneration), (error) => { if (!isCurrentOpenGeneration(currentOpenGeneration)) { @@ -192,43 +184,26 @@ export function startStructuredAgentSessionReadTransport(args: { } } } - const refresh = (): void => { - const shouldStop = captureHistoryReadGuard() + if (args.hydrate) { + const shouldStopInitialRead = captureHistoryReadGuard() void args - .refreshTail(shouldStop) + .hydrate(shouldStopInitialRead) .then(() => { - if (shouldStop()) { + if (shouldStopInitialRead()) { return } clearUnattachedReadGrace() - resumeCursor = args.getCursor() - if (!connected) { - reconnectScheduler.schedule(0) - } + return open() }) .catch((error) => { - if (!shouldStop()) { + if (!shouldStopInitialRead()) { reportReadFailure(error) + reconnectScheduler.schedule() } }) + } else { + void open() } - const shouldStopInitialRead = captureHistoryReadGuard() - void args - .refreshTail(shouldStopInitialRead) - .then(() => { - if (shouldStopInitialRead()) { - return - } - clearUnattachedReadGrace() - resumeCursor = args.getCursor() - return open() - }) - .catch((error) => { - if (!shouldStopInitialRead()) { - reportReadFailure(error) - reconnectScheduler.schedule() - } - }) return { captureHistoryReadGuard, dispose: () => { @@ -238,7 +213,6 @@ export function startStructuredAgentSessionReadTransport(args: { reconnectScheduler.dispose() coalescer.dispose() unsubscribe() - }, - refresh + } } } diff --git a/src/renderer/src/components/native-chat/use-structured-agent-session-read.test.tsx b/src/renderer/src/components/native-chat/use-structured-agent-session-read.test.tsx index cb42c013ac4..faf4e5f3b92 100644 --- a/src/renderer/src/components/native-chat/use-structured-agent-session-read.test.tsx +++ b/src/renderer/src/components/native-chat/use-structured-agent-session-read.test.tsx @@ -8,8 +8,7 @@ import type { } from '../../../../shared/agent-session-journal-types' import { AGENT_SESSION_HISTORY_MAX_LIMIT, - type AgentSessionHistoryPage, - type AgentSessionSubscribeEvent + type AgentSessionHistoryPage } from '../../../../shared/agent-session-wire' const mocks = vi.hoisted(() => ({ call: vi.fn(), subscribe: vi.fn() })) @@ -124,6 +123,17 @@ describe('useStructuredAgentSessionRead history window', () => { }) }) + it('does not invent a writable fence for a mixed-version history page', async () => { + mocks.call.mockResolvedValueOnce({ ok: true, page: page('tail', [], false) }) + + const { result } = renderHook(() => + useStructuredAgentSessionRead({ sessionId: 'session-a', target: LOCAL_TARGET }) + ) + + await waitFor(() => expect(result.current.state.status).toBe('ready')) + expect(result.current.state.fence).toBeNull() + }) + it('loads each earlier page at the wire maximum', async () => { const tailItems = Array.from({ length: 200 }, (_, index) => message(`tail-${index}`, 301 + index, 'assistant') @@ -162,7 +172,7 @@ describe('useStructuredAgentSessionRead history window', () => { expect(result.current.state.items[0]?.itemId).toBe('oldest') }) - it('refreshes only visible structured sessions when the app regains focus', async () => { + it('does no host work when the app regains focus', async () => { const hasFocus = vi.spyOn(document, 'hasFocus').mockReturnValue(true) mocks.call.mockResolvedValue({ ok: true, page: page('tail', [], false) }) const visible = renderHook(() => @@ -182,154 +192,15 @@ describe('useStructuredAgentSessionRead history window', () => { await waitFor(() => expect(mocks.call).toHaveBeenCalledTimes(1)) expect(mocks.subscribe).toHaveBeenCalledTimes(1) - act(() => window.dispatchEvent(new Event('focus'))) + await act(async () => window.dispatchEvent(new Event('focus'))) - await waitFor(() => expect(mocks.call).toHaveBeenCalledTimes(2)) - expect(mocks.call).toHaveBeenLastCalledWith(LOCAL_TARGET, 'agentSession.history', { - sessionId: 'session-visible', - direction: 'tail', - limit: AGENT_SESSION_HISTORY_MAX_LIMIT - }) + expect(mocks.call).toHaveBeenCalledTimes(1) + expect(mocks.subscribe).toHaveBeenCalledTimes(1) visible.unmount() hidden.unmount() hasFocus.mockRestore() }) - it('drops a delayed refresh after reconnect without mutating state or provider session', async () => { - const hasFocus = vi.spyOn(document, 'hasFocus').mockReturnValue(true) - const delayedRefresh = Promise.withResolvers<{ - ok: true - page: AgentSessionHistoryPage - providerSession: { key: 'session_id'; id: string } - }>() - const closes: (() => void)[] = [] - const initialProviderSession = { key: 'session_id', id: 'provider-initial' } as const - mocks.call - .mockResolvedValueOnce({ - ok: true, - page: page('tail', [message('initial', 1, 'assistant')], false), - providerSession: initialProviderSession - }) - .mockReturnValueOnce(delayedRefresh.promise) - mocks.subscribe.mockImplementation((_target, _params, _onEvent, _onError, onClose) => { - closes.push(onClose) - return Promise.resolve({ unsubscribe: vi.fn() }) - }) - - const view = renderHook(() => - useStructuredAgentSessionRead({ sessionId: 'session-a', target: LOCAL_TARGET }) - ) - - try { - await waitFor(() => expect(mocks.subscribe).toHaveBeenCalledOnce()) - expect(view.result.current.state.items[0]?.itemId).toBe('initial') - expect(view.result.current.providerSession).toBe(initialProviderSession) - const stateBeforeRefresh = view.result.current.state - - act(() => window.dispatchEvent(new Event('focus'))) - await waitFor(() => expect(mocks.call).toHaveBeenCalledTimes(2)) - - vi.useFakeTimers() - act(() => closes[0]?.()) - await act(async () => vi.advanceTimersByTimeAsync(750)) - expect(mocks.subscribe).toHaveBeenCalledTimes(2) - - await act(async () => { - delayedRefresh.resolve({ - ok: true, - page: page('tail', [message('stale', 2, 'assistant')], false), - providerSession: { key: 'session_id', id: 'provider-stale' } - }) - await delayedRefresh.promise - await Promise.resolve() - }) - - expect(view.result.current.state).toBe(stateBeforeRefresh) - expect(view.result.current.state.items[0]?.itemId).toBe('initial') - expect(view.result.current.providerSession).toBe(initialProviderSession) - } finally { - vi.useRealTimers() - view.unmount() - hasFocus.mockRestore() - } - }) - - it.each(['snapshot', 'reset'] as const)( - 'drops a delayed refresh after a same-stream %s advances the epoch', - async (eventType) => { - const hasFocus = vi.spyOn(document, 'hasFocus').mockReturnValue(true) - const delayedRefresh = Promise.withResolvers<{ - ok: true - page: AgentSessionHistoryPage - providerSession: { key: 'session_id'; id: string } - }>() - const onEvents: ((event: AgentSessionSubscribeEvent) => void)[] = [] - const initialProviderSession = { key: 'session_id', id: 'provider-initial' } as const - mocks.call - .mockResolvedValueOnce({ - ok: true, - page: page('tail', [message('initial', 1, 'assistant')], false), - providerSession: initialProviderSession - }) - .mockReturnValueOnce(delayedRefresh.promise) - mocks.subscribe.mockImplementation((_target, _params, onEvent) => { - onEvents.push(onEvent) - return Promise.resolve({ unsubscribe: vi.fn() }) - }) - - const view = renderHook(() => - useStructuredAgentSessionRead({ sessionId: 'session-a', target: LOCAL_TARGET }) - ) - - try { - await waitFor(() => expect(onEvents).toHaveLength(1)) - act(() => window.dispatchEvent(new Event('focus'))) - await waitFor(() => expect(mocks.call).toHaveBeenCalledTimes(2)) - - const replacementPage = page( - 'tail', - [message('new-epoch', 2, 'assistant')], - false, - 'epoch-b' - ) - const replacementEvent: AgentSessionSubscribeEvent = - eventType === 'reset' - ? { - type: 'reset', - sessionId: 'session-a', - reset: 'epoch_changed', - page: replacementPage, - fence: 2 - } - : { type: 'snapshot', sessionId: 'session-a', page: replacementPage, fence: 2 } - act(() => onEvents[0]?.(replacementEvent)) - - expect(view.result.current.state.epoch).toBe('epoch-b') - expect(view.result.current.state.items[0]?.itemId).toBe('new-epoch') - expect(view.result.current.providerSession).toBe(initialProviderSession) - const stateAfterReplacement = view.result.current.state - - await act(async () => { - delayedRefresh.resolve({ - ok: true, - page: page('tail', [message('stale-refresh', 3, 'assistant')], false), - providerSession: { key: 'session_id', id: 'provider-stale' } - }) - await delayedRefresh.promise - await Promise.resolve() - }) - - expect(view.result.current.state).toBe(stateAfterReplacement) - expect(view.result.current.state.epoch).toBe('epoch-b') - expect(view.result.current.state.items[0]?.itemId).toBe('new-epoch') - expect(view.result.current.providerSession).toBe(initialProviderSession) - } finally { - view.unmount() - hasFocus.mockRestore() - } - } - ) - it('does no host work for retained inactive sessions', async () => { const first = renderHook(() => useStructuredAgentSessionRead({ @@ -354,7 +225,7 @@ describe('useStructuredAgentSessionRead history window', () => { second.unmount() }) - it('preserves cached state while switching away and refreshes once on re-entry', async () => { + it('preserves cached state and resumes at the applied cursor on re-entry', async () => { const unsubscribe = vi.fn() mocks.call.mockImplementation((_target, _method, params) => { const sessionId = (params as { sessionId: string }).sessionId @@ -395,7 +266,11 @@ describe('useStructuredAgentSessionRead history window', () => { view.rerender({ active: 'first' }) expect(view.result.current.first.state.items[0]?.itemId).toBe('session-switch-a-message') await waitFor(() => expect(mocks.subscribe).toHaveBeenCalledTimes(3)) - expect(mocks.call).toHaveBeenCalledTimes(3) + expect(mocks.call).toHaveBeenCalledTimes(2) + expect(mocks.subscribe.mock.calls[2]?.[1]).toEqual({ + sessionId: 'session-switch-a', + cursor: view.result.current.first.state.cursor + }) expect(unsubscribe).toHaveBeenCalledTimes(2) }) }) diff --git a/src/renderer/src/components/native-chat/use-structured-agent-session-read.ts b/src/renderer/src/components/native-chat/use-structured-agent-session-read.ts index 834d11d3fa1..25dc3777d16 100644 --- a/src/renderer/src/components/native-chat/use-structured-agent-session-read.ts +++ b/src/renderer/src/components/native-chat/use-structured-agent-session-read.ts @@ -30,19 +30,6 @@ export function useStructuredAgentSessionRead(args: { useEffect(() => (isVisible ? owner.activate() : undefined), [isVisible, owner]) - useEffect(() => { - if (!isVisible) { - return - } - const refresh = (): void => { - if (document.hasFocus()) { - owner.refresh() - } - } - window.addEventListener('focus', refresh) - return () => window.removeEventListener('focus', refresh) - }, [isVisible, owner]) - return { state: snapshot.state, loadingOlder: snapshot.loadingOlder, diff --git a/src/shared/structured-agent-session-reducer.test.ts b/src/shared/structured-agent-session-reducer.test.ts index ca3c8774e0d..aa90749ffdf 100644 --- a/src/shared/structured-agent-session-reducer.test.ts +++ b/src/shared/structured-agent-session-reducer.test.ts @@ -144,186 +144,6 @@ describe('structured agent session reducer', () => { expect(restored.hasOlder).toBe(false) }) - it('does not let a stale focus refresh replace newer streamed state', () => { - const streamed = reduceStructuredAgentSession(EMPTY_STRUCTURED_AGENT_SESSION, { - type: 'event', - event: { - type: 'snapshot', - sessionId: 'session-a', - fence: 1, - page: hydrationPage([item('streamed', 50)]) - } - }) - const afterRefresh = reduceStructuredAgentSession(streamed, { - type: 'tail-page', - page: { - sessionId: 'session-a', - epoch: 'epoch-a', - direction: 'tail', - items: [item('stale', 40)], - removedItemIds: [], - submissions: [], - window: { - oldest: { epoch: 'epoch-a', sequence: 40 }, - newest: { epoch: 'epoch-a', sequence: 40 }, - nextCursor: { epoch: 'epoch-a', sequence: 40 } - }, - liveCursor: { epoch: 'epoch-a', sequence: 40 }, - hasOlder: true, - hasNewer: false - } - }) - - expect(afterRefresh).toBe(streamed) - }) - - it('keeps paged-in older items when a focus refresh carries nothing new', () => { - const snapshot = reduceStructuredAgentSession(EMPTY_STRUCTURED_AGENT_SESSION, { - type: 'event', - event: { - type: 'snapshot', - sessionId: 'session-a', - fence: 1, - page: hydrationPage([item('newest', 50)]) - } - }) - const withOlder = reduceStructuredAgentSession(snapshot, { - type: 'older-page', - requestedCursor: { epoch: 'epoch-a', sequence: 50 }, - page: { - sessionId: 'session-a', - epoch: 'epoch-a', - direction: 'before', - items: [item('older', 10)], - removedItemIds: [], - submissions: [], - window: { - oldest: { epoch: 'epoch-a', sequence: 10 }, - newest: { epoch: 'epoch-a', sequence: 10 }, - nextCursor: { epoch: 'epoch-a', sequence: 10 } - }, - hasOlder: false, - hasNewer: true - } - }) - const afterRefresh = reduceStructuredAgentSession(withOlder, { - type: 'tail-page', - page: { - sessionId: 'session-a', - epoch: 'epoch-a', - direction: 'tail', - items: [item('newest', 50)], - removedItemIds: [], - submissions: [], - window: { - oldest: { epoch: 'epoch-a', sequence: 50 }, - newest: { epoch: 'epoch-a', sequence: 50 }, - nextCursor: { epoch: 'epoch-a', sequence: 50 } - }, - liveCursor: { epoch: 'epoch-a', sequence: 50 }, - hasOlder: true, - hasNewer: false - } - }) - - expect(afterRefresh).toBe(withOlder) - expect(afterRefresh.items.map((entry) => entry.itemId)).toEqual(['older', 'newest']) - }) - - it('accepts a newer fence from an equal-cursor tail refresh', () => { - const initial = reduceStructuredAgentSession(EMPTY_STRUCTURED_AGENT_SESSION, { - type: 'event', - event: { - type: 'snapshot', - sessionId: 'session-a', - fence: 1, - page: hydrationPage([item('newest', 50)]) - } - }) - const page = { ...hydrationPage([item('newest', 50)]), fence: 2 } - - const refreshed = reduceStructuredAgentSession(initial, { type: 'tail-page', page }) - - expect(refreshed.fence).toBe(2) - expect(refreshed.items).toBe(initial.items) - }) - - it('keeps rapid-send submissions when a newer tail refresh contains only the last one', () => { - const initial = reduceStructuredAgentSession(EMPTY_STRUCTURED_AGENT_SESSION, { - type: 'event', - event: { - type: 'snapshot', - sessionId: 'session-a', - fence: 1, - page: hydrationPage( - [item('first', 10)], - Array.from({ length: 8 }, (_, index) => submission(index)) - ) - } - }) - const refreshed = reduceStructuredAgentSession(initial, { - type: 'tail-page', - page: { - sessionId: 'session-a', - epoch: 'epoch-a', - direction: 'tail', - items: [item('latest', 11)], - removedItemIds: [], - submissions: [submission(7)], - window: { - oldest: { epoch: 'epoch-a', sequence: 11 }, - newest: { epoch: 'epoch-a', sequence: 11 }, - nextCursor: { epoch: 'epoch-a', sequence: 11 } - }, - liveCursor: { epoch: 'epoch-a', sequence: 11 }, - hasOlder: true, - hasNewer: false - } - }) - - expect(refreshed.submissions.map((entry) => entry.clientMessageId)).toEqual( - Array.from({ length: 8 }, (_, index) => `client-${index}`) - ) - }) - - it('bounds retained submission identities across repeated tail refreshes', () => { - let state = reduceStructuredAgentSession(EMPTY_STRUCTURED_AGENT_SESSION, { - type: 'event', - event: { - type: 'snapshot', - sessionId: 'session-a', - fence: 1, - page: hydrationPage([item('first', 1)]) - } - }) - - for (let index = 0; index < 300; index += 1) { - state = reduceStructuredAgentSession(state, { - type: 'tail-page', - page: { - sessionId: 'session-a', - epoch: 'epoch-a', - direction: 'tail', - items: [item(`item-${index}`, index + 2)], - removedItemIds: [], - submissions: [submission(index)], - window: { - oldest: { epoch: 'epoch-a', sequence: index + 2 }, - newest: { epoch: 'epoch-a', sequence: index + 2 }, - nextCursor: { epoch: 'epoch-a', sequence: index + 2 } - }, - liveCursor: { epoch: 'epoch-a', sequence: index + 2 }, - hasOlder: true, - hasNewer: false - } - }) - } - - expect(state.submissions).toHaveLength(256) - expect(state.submissions[0]?.clientMessageId).toBe('client-44') - expect(state.submissions.at(-1)?.clientMessageId).toBe('client-299') - }) - it('projects additive background task state without changing transcript identity', () => { const initial = reduceStructuredAgentSession(EMPTY_STRUCTURED_AGENT_SESSION, { type: 'event', @@ -625,38 +445,6 @@ describe('structured agent session reducer', () => { 9_800 ) expect(unstamped.hostClock).toEqual({ hostNow: 5_400, receivedAt: 9_400 }) - - const paged = reduceStructuredAgentSession( - unstamped, - { type: 'tail-page', page: { ...hydrationPage([item('fourth', 4)]), hostNow: 6_000 } }, - 10_000 - ) - expect(paged.hostClock).toEqual({ hostNow: 6_000, receivedAt: 10_000 }) - expect( - reduceStructuredAgentSession(EMPTY_STRUCTURED_AGENT_SESSION, { - type: 'tail-page', - page: hydrationPage([item('first', 1)]) - }).hostClock - ).toBeUndefined() - }) - - it('retains same-epoch activity across a newer journal tail refresh', () => { - const active = reduceStructuredAgentSession(EMPTY_STRUCTURED_AGENT_SESSION, { - type: 'event', - event: { - type: 'snapshot', - sessionId: 'session-a', - fence: 1, - page: hydrationPage([item('first', 1)]), - activity: { turnId: 'turn-1', text: 'Checking the renderer' } - } - }) - const refreshed = reduceStructuredAgentSession(active, { - type: 'tail-page', - page: hydrationPage([item('latest', 2)]) - }) - - expect(refreshed.activity).toEqual({ turnId: 'turn-1', text: 'Checking the renderer' }) }) }) diff --git a/src/shared/structured-agent-session-reducer.ts b/src/shared/structured-agent-session-reducer.ts index 15a2ad34608..b86e927c15d 100644 --- a/src/shared/structured-agent-session-reducer.ts +++ b/src/shared/structured-agent-session-reducer.ts @@ -45,7 +45,7 @@ export type StructuredAgentSessionAction = | { type: 'error'; message: string } | { type: 'handoff'; handoff: AgentSessionHandoffStatus } | { type: 'event'; event: AgentSessionSubscribeEvent } - | { type: 'tail-page'; page: AgentSessionHistoryPage } + | { type: 'history-page'; page: AgentSessionHistoryPage } | { type: 'older-page'; requestedCursor: AgentJournalCursor; page: AgentSessionHistoryPage } const MAX_RETAINED_SUBMISSIONS = 256 @@ -77,7 +77,7 @@ function hostClockField( function replacePage( page: AgentSessionHistoryPage, - fence: number, + fence: number | null, handoff?: AgentSessionHandoffStatus, backgroundTasks?: AgentSessionBackgroundTaskState | null, activity?: AgentSessionTurnActivity | null @@ -165,56 +165,16 @@ export function reduceStructuredAgentSession( if (action.type === 'handoff') { return { ...state, handoff: action.handoff } } - if (action.type === 'tail-page') { - const pageCursor = action.page.liveCursor ?? action.page.window.newest - // An equal cursor means the page holds nothing the stream has not already - // delivered; replacing would throw away paged-in older items mid-scroll. - if ( - state.epoch === action.page.epoch && - state.cursor && - (!pageCursor || pageCursor.sequence <= state.cursor.sequence) - ) { - const backgroundTasksChanged = - action.page.backgroundTasks !== undefined && - !backgroundTaskStatesEqual(action.page.backgroundTasks, state.backgroundTasks) - if ( - pageCursor?.sequence === state.cursor.sequence && - ((action.page.fence !== undefined && action.page.fence !== state.fence) || - backgroundTasksChanged) - ) { - return { - ...state, - ...(action.page.fence !== undefined ? { fence: action.page.fence } : {}), - ...(action.page.backgroundTasks !== undefined - ? { backgroundTasks: action.page.backgroundTasks } - : {}), - ...hostClockField(action.page.hostNow, receivedAt, state.hostClock), - status: 'ready', - error: undefined - } - } - return state - } - const sameEpoch = state.epoch === action.page.epoch + if (action.type === 'history-page') { return { - epoch: action.page.epoch, - cursor: action.page.liveCursor ?? null, - fence: action.page.fence ?? null, - items: action.page.items, - submissions: sameEpoch - ? mergeSubmissions(state.submissions, action.page.submissions, action.page.items) - : action.page.submissions, - retainedItemLimit: Math.max(MAX_RETAINED_ITEMS, action.page.items.length), - hasOlder: action.page.hasOlder, - status: 'ready', - handoff: state.handoff, - ...(sameEpoch ? { commands: state.commands } : {}), - ...(sameEpoch && state.activity !== undefined ? { activity: state.activity } : {}), - ...(action.page.backgroundTasks !== undefined - ? { backgroundTasks: action.page.backgroundTasks } - : state.backgroundTasks !== undefined - ? { backgroundTasks: state.backgroundTasks } - : {}), + ...replacePage( + action.page, + action.page.fence ?? null, + state.handoff ?? undefined, + state.backgroundTasks, + state.activity + ), + commands: state.commands, ...hostClockField(action.page.hostNow, receivedAt, state.hostClock) } } @@ -309,12 +269,3 @@ export function oldestStructuredAgentSessionCursor( const oldest = state.items[0] return state.epoch && oldest ? { epoch: state.epoch, sequence: oldest.sequence } : null } - -export function shouldAdvanceStructuredResumeCursor( - current: AgentJournalCursor | null, - incoming: AgentJournalCursor -): boolean { - return ( - current === null || (current.epoch === incoming.epoch && incoming.sequence >= current.sequence) - ) -} diff --git a/tests/e2e/structured-agent-session-read-owner.unit.test.ts b/tests/e2e/structured-agent-session-read-owner.unit.test.ts new file mode 100644 index 00000000000..4e64a047efc --- /dev/null +++ b/tests/e2e/structured-agent-session-read-owner.unit.test.ts @@ -0,0 +1,251 @@ +import { mkdtemp, rm } from 'node:fs/promises' +import { tmpdir } from 'node:os' +import { join } from 'node:path' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import type { + AgentSessionHistoryRequest, + AgentSessionHistoryResult, + AgentSessionStatusSummary, + AgentSessionSubscribeEvent +} from '../../src/shared/agent-session-wire' +import type { AgentJournalCursor } from '../../src/shared/agent-session-journal-types' +import { + EMPTY_STRUCTURED_AGENT_SESSION, + reduceStructuredAgentSession +} from '../../src/shared/structured-agent-session-reducer' +import { + hasUnansweredStructuredAgentSessionDispatch, + projectStructuredAgentSessionStatus +} from '../../src/shared/structured-agent-session-projection' +import { createTrackedJournalOpener } from '../../src/main/native-chat/agent-session-journal/journal-store-test-open' +import { readAgentSessionHistory } from '../../src/main/native-chat/agent-session-wire/agent-session-history-page' +import { AgentSessionSubscribers } from '../../src/main/native-chat/agent-session-wire/structured-agent-session-subscribers' +import { StructuredAgentSessionStatusFeed } from '../../src/main/native-chat/agent-session-wire/structured-agent-session-status-feed' + +const mocks = vi.hoisted(() => ({ call: vi.fn(), subscribe: vi.fn() })) +vi.mock('@/runtime/structured-agent-session-client', () => ({ + callStructuredAgentSession: mocks.call, + subscribeStructuredAgentSession: mocks.subscribe +})) + +import { + getStructuredAgentSessionReadOwner, + resetStructuredAgentSessionReadOwnersForTests +} from '../../src/renderer/src/components/native-chat/structured-agent-session-read-owner' + +const SESSION = 'cursor-body-regression' +const target = { kind: 'local' } as const +const journals = createTrackedJournalOpener() +let root: string + +beforeEach(async () => { + vi.resetAllMocks() + root = await mkdtemp(join(tmpdir(), 'orca-cursor-body-')) +}) +afterEach(async () => { + resetStructuredAgentSessionReadOwnersForTests() + await journals.closeAll() + await rm(root, { recursive: true, force: true }) +}) + +async function fixture() { + const journal = await journals.open({ + identity: { + sessionId: SESSION, + workspaceId: 'folder-workspace', + hostId: 'local', + agent: 'codex', + providerHandle: { kind: 'codex', threadId: 'thread-1' } + }, + journalDir: join(root, 'journal') + }) + async function appendOutput(index: number) { + await journal.appendItem( + { provider: 'orca', clientMessageId: `output-${index}` }, + { kind: 'status', text: `Tool output ${index}` }, + { fence: 1 } + ) + } + for (let index = 1; index < 99; index += 1) { + await appendOutput(index) + } + await journal.appendSubmission({ + clientMessageId: 'pending-send', + payloadFingerprint: 'prompt', + body: { kind: 'message', role: 'user', blocks: [{ type: 'text', text: 'Run tools' }] }, + fence: 1 + }) + expect(journal.cursor().sequence).toBe(100) + const initial = structuredClone( + readAgentSessionHistory(journal, { sessionId: SESSION, direction: 'tail' }) + ) + const accept = () => + journal.resolveDispatch({ + clientMessageId: 'pending-send', + fence: 1, + state: 'accepted', + providerIdentity: { provider: 'codex', threadId: 'thread-1', turnId: 'turn-1', ordinal: 0 } + }) + return { journal, initial, appendOutput, accept } +} + +describe('structured session cursor/body regression', () => { + it('replaces retained pending submissions together with a real bounded snapshot at 140', async () => { + const { journal, initial, appendOutput, accept } = await fixture() + const retained = reduceStructuredAgentSession(EMPTY_STRUCTURED_AGENT_SESSION, { + type: 'event', + event: { type: 'snapshot', sessionId: SESSION, page: initial.page, fence: 1 } + }) + expect(retained.submissions[0]?.dispatchState).toBe('pending') + await accept() + for (let index = 102; index <= 140; index += 1) { + await appendOutput(index) + } + const bounded = readAgentSessionHistory(journal, { + sessionId: SESSION, + direction: 'tail', + limit: 1 + }).page + expect(bounded.liveCursor?.sequence).toBe(140) + expect(bounded.items).not.toContainEqual(retained.items.at(-1)) + expect(bounded.submissions).toEqual([]) + + const replaced = reduceStructuredAgentSession(retained, { + type: 'event', + event: { type: 'snapshot', sessionId: SESSION, page: bounded, fence: 1 } + }) + expect(replaced.cursor).toEqual(bounded.liveCursor) + expect(replaced.submissions).toEqual(bounded.submissions) + expect(hasUnansweredStructuredAgentSessionDispatch(replaced.submissions, 1)).toBe(false) + }) + + it.each([40, 401])( + 'replays an off-page dispatch after %i missed rows without stranding pending state', + async (missedRows) => { + const { journal, appendOutput, accept } = await fixture() + let hostSummary: AgentSessionStatusSummary | undefined + const feed = new StructuredAgentSessionStatusFeed({ + sessions: new Map([ + [ + SESSION, + { + journal, + fence: 1, + params: { location: { workspaceId: 'folder-workspace' }, provider: 'codex' } + } + ] + ]), + getRecord: () => null, + now: () => 1_000, + onStatusChanged: (summary) => { + hostSummary = summary + } + }) + const subscribers = new AgentSessionSubscribers({ + onJournalPublished: (sessionId, published) => feed.publish(sessionId, published) + }) + const delayedOlder = Promise.withResolvers() + let warm = false + mocks.call.mockImplementation((_target, _method, request: AgentSessionHistoryRequest) => { + // Hold the measured bounded page before its asynchronous older-page fill can mask it. + if (warm && missedRows === 40 && request.direction === 'before') { + return delayedOlder.promise + } + const result = readAgentSessionHistory(journal, { + ...request, + ...(warm && missedRows === 40 ? { limit: 1 } : {}) + }) + return Promise.resolve( + structuredClone({ + ...result, + page: { ...result.page, fence: 1, hostNow: 1234 }, + providerSession: { key: 'session_id', id: 'provider-1' } + }) + ) + }) + mocks.subscribe.mockImplementation( + ( + _target, + request: { cursor?: AgentJournalCursor }, + onEvent: (event: AgentSessionSubscribeEvent) => void + ) => + Promise.resolve({ + unsubscribe: subscribers.open({ + id: 'pane', + sessionId: SESSION, + journal, + fence: 1, + cursor: request.cursor, + emit: (event) => onEvent(structuredClone(event)) + }) + }) + ) + const owner = getStructuredAgentSessionReadOwner(SESSION, target) + const unlisten = owner.subscribe(() => {}) + const deactivate = owner.activate() + await vi.waitFor(() => expect(mocks.subscribe).toHaveBeenCalledTimes(1)) + expect(owner.getSnapshot().state.cursor?.sequence).toBe(100) + expect(owner.getSnapshot().state.items.at(-1)?.body).toMatchObject({ role: 'user' }) + expect(owner.getSnapshot().state.submissions[0]?.dispatchState).toBe('pending') + expect(owner.getSnapshot().providerSession).toEqual({ key: 'session_id', id: 'provider-1' }) + expect(owner.getSnapshot().state.hostClock?.hostNow).toBe(1234) + expect(mocks.call).toHaveBeenCalledTimes(1) + deactivate() + + await accept() + for (let index = 102; index <= 100 + missedRows; index += 1) { + await appendOutput(index) + } + const tail = readAgentSessionHistory(journal, { + sessionId: SESSION, + direction: 'tail', + limit: missedRows === 40 ? 1 : 200 + }).page + expect(tail.liveCursor?.sequence).toBe(100 + missedRows) + expect(tail.submissions).toEqual([]) + feed.publish(SESSION, journal) + // IPC/RPC copies values; the journal mutates its own submission records in place. + expect(owner.getSnapshot().state.submissions[0]?.dispatchState).toBe('pending') + warm = true + const stop = owner.activate() + + await vi.waitFor(() => expect(owner.getSnapshot().state.cursor).toEqual(journal.cursor())) + const caughtUp = owner.getSnapshot().state + if (missedRows === 40) { + expect({ + cursor: caughtUp.cursor?.sequence, + dispatch: caughtUp.submissions[0]?.dispatchState, + unansweredDispatch: hasUnansweredStructuredAgentSessionDispatch(caughtUp.submissions, 1) + }).toEqual({ cursor: 140, dispatch: 'accepted', unansweredDispatch: false }) + } + + await journal.appendItem( + { provider: 'orca', clientMessageId: 'completed-turn' }, + { kind: 'turn', turnId: 'turn-1', state: 'completed' }, + { fence: 1 } + ) + subscribers.publish(SESSION, journal) + await vi.waitFor(() => expect(owner.getSnapshot().state.cursor).toEqual(journal.cursor())) + const settled = owner.getSnapshot().state + expect(hostSummary?.status).toBe('idle') + expect( + projectStructuredAgentSessionStatus(settled.items, settled.submissions, settled.fence) + ).toBe(hostSummary?.status) + expect(settled.submissions).toEqual(journal.snapshot().submissions) + expect({ + cursor: caughtUp.cursor?.sequence, + dispatch: caughtUp.submissions[0]?.dispatchState, + unansweredDispatch: hasUnansweredStructuredAgentSessionDispatch(caughtUp.submissions, 1) + }).toEqual({ cursor: 100 + missedRows, dispatch: 'accepted', unansweredDispatch: false }) + expect(mocks.call).toHaveBeenCalledTimes(1) + expect(mocks.subscribe).toHaveBeenCalledTimes(2) + expect(mocks.subscribe.mock.calls[1]?.[1]).toEqual({ + sessionId: SESSION, + cursor: { epoch: journal.cursor().epoch, sequence: 100 } + }) + + stop() + unlisten() + } + ) +}) From fc525c355d741ea5478dd1b106526b5b8205de1b Mon Sep 17 00:00:00 2001 From: Jinwoo Hong <73622457+Jinwoo-H@users.noreply.github.com> Date: Mon, 14 Sep 2026 13:36:16 -0400 Subject: [PATCH 12/12] refactor(mobile): send the task workspace-creation domain through typed RpcOperations (#20568) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * test(mobile): record main's task workspace-creation RPC behaviour before migrating it 28 scenarios over nine task senders, recorded from main so the step-4 migration of the workspace-creation half of src/tasks/ has a frozen answer to compare against. Four senders mount as plain exported functions; three are model-chained hooks mounted the way the settings adapters mount theirs. The 153 existing goldens change header-only (`baseline`, `recorderSha256`): any new scenario re-digests the recorder, and the pinned baseline had drifted from main because the source-control migration landed. Content is byte-identical on all 153 — verified field-by-field against HEAD. `operation-module-loader.ts` now shares src/transport/rpc-delivery-ambiguity.ts with mounted modules instead of evaluating a second copy. The mark is a WeakSet keyed on the rejection object, so the copy the loader built had an empty registry and every delivery-unknown rejection read as a definite failure inside the operation under test — worktree.create's whole replay path was unreachable. With one registry, `tw-create-retry-ambiguous-after-drop` records the create still pending at the reconnect wait and abandoning at exactly 20000 ms, while the unstamped-create scenario records the same rejection surfacing at 0 ms. No existing golden moves: no other mounted module consumes the mark. `task-preferences-optimistic` is re-anchored above the send rather than across it, so migrating this file does not have to move the anchor. It still kills, and for the same reason: the preset the screen shows no longer follows the tap. Scenarios deliberately pin the empty-message refusals (`*-refused-empty-message`, `*-empty-message`), because a refusal with no message falls back to the screen's copy while a transport error with no message does not, and the two paths are easy to collapse when a call site moves behind an acceptance policy. Goldens: 153 -> 201, 2.9M -> 3.7M. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): format the recording manifest and re-digest the goldens `oxfmt --check` from mobile/ collapses a one-element `sites` array in each new scenario. The JSON value is unchanged — verified by comparing both files parsed and key-sorted — but the manifest is inside `recorderSha256`, so all 201 goldens carry a new digest. Every other field, header and observation alike, is byte-identical. Re-recorded in a separate worktree at the previous commit so the goldens stay attributable to main's product source rather than to the migration that follows. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): separate the goldens from the migration, and re-digest The previous commit accidentally carried the product migration alongside the manifest format, which both broke the commit that is supposed to prove parity and left the suite red: the digest was recorded without a comment move that a lint fix had made inside the adapter, so all 201 goldens failed their `recorderSha256` header. This backs the product half straight out again — the next commit re-applies it byte-for-byte — and re-records from the pinned baseline in a separate worktree carrying this branch's recorder, per the procedure in the recording README. Every field except `recorderSha256` is byte-identical to the previous commit's goldens on all 201 files, so no observation moved in either direction. The suite is green here with main's product source, which is what makes the next commit's "no golden changed" claim mean something. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * refactor(mobile): send the task workspace-creation domain through typed RpcOperations 12 of src/tasks/'s 37 raw-port files now send through a declared operation instead of the raw request port: 36 references to 0, leaving 25 files and 73 references for the provider item/detail/mutation half. No golden moved — `git show --stat` on this commit touches nothing under mobile/rpc-foundation/, which is the parity claim. Twenty-two operations over twenty methods, in four modules named for what they send: workspace create (create, PR/MR base resolution, create-time capabilities), workspace source (SSH connect/state, agent detection, repo hooks, sparse presets, ref search), task runtime (status, ui.get/ui.set, preflight, Linear status, settings.update) and the Smart picker's provider reads. Two methods carry two policies each, and both pairs are named. `status.get`: the Tasks screen cannot hydrate without it and surfaces the host's message, while create-time capability probing degrades to "no capabilities" and creates anyway — so one throws on refusal and one skips. `ui.set`: two sites await it, one is fire-and-forget and never interprets the reply at all. Both pairs share one reader, so no method has two readers. No new acceptance policy. worktree.create keeps its delivery-unknown contract. `request` returns the transport promise itself, so the retry loop catches the object the transport marked; two new tests assert `toBe(marked)` in one direction and that an unmarked rejection stays unmarked in the other, because a mark added on the way out would replay a create the host never received. `tw-create-retry-ambiguous-after-drop` records the create still pending at the reconnect wait and abandoning at exactly 20000 ms. Three sites still read the raw refusal envelope before interpreting, because the code or the message decides the route and no acceptance policy carries either through: the create retry needs the message for `isRetryableWorktreeCreateConflict`, and the paste lookup needs `method_not_found` to retire the slug probe host-wide. Both are documented at the site. The hydration barrier keeps raw requests inside its `Promise.all`. main's group rejects as soon as one leg rejects; `startRpcOperation` + `interpretAtRpcBarrier` would wait for the slowest peer and let a later policy surface a different error. Interpretation stays after the `stale` guard, where it was. `WorkspaceCreateParams` is now `RpcSendParams<'worktree.create'>` rather than `Record`, which types the builder and the operation together; every field the three builders already sent typechecks against the host schema unchanged. `RpcSendArguments` now also makes params optional for a method whose params type has no required field, because `preflight.check` is such a method and main sent it none — requiring `{}` would have put a new object on the wire. The Mobile Tasks source-parity hashes move for the same reason bound settings requests moved them: the method string and the envelope read leave the screen. The signature diff is evidence rather than a re-pin — `semantics` is a pure deletion of 22 `rpc:` call signatures and 22 method literals with nothing added, statement/declaration/render/style counts are unchanged, and render tokens, styles and declarations are byte-identical. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): split the task workspace adapters at the sender/hook seam The single adapter file reached 344 lines against mobile's 300-line limit. CI lints every file, so this is red there even though the changed-code gate does not report it. Split along the seam the recording README already draws: exported async senders that take a client and need no React host, and the drawer's three model-chained hooks. No adapter body changed. Both files are inside `recorderSha256`, so all 201 goldens carry a new digest. Every other field is byte-identical, verified file by file. Re-recorded from the pinned baseline in a separate worktree carrying this branch's recorder, so the goldens stay attributable to main's product source. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * refactor(mobile): give the one-key unchecked reader a name Four readers were the same three lines: read one property off the reply, wrap it unchecked. `rpcUncheckedMemberReader` is the one-key sibling of the existing `rpcUncheckedPayloadReader`, so the annotation and the closure go away at each site. The pilot's `commitCompareEntriesReader` is converted too, so the helper has no longhand twin left to copy from. No behaviour change: the helper composes the same `rpcReadUnchecked` over `rpcPayloadMember`, including the property-read exception on a null result. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): record the local arm of workspace agent detection `preflight.detectAgents` was the one migrated operation with no recorded coverage: the ssh adapter hardcoded `connectionId: 'ssh-1'`, so the detection effect's ternary only ever took the remote arm and the local call site could be repointed at another method without a golden noticing. The adapter now takes the connectionId as a parameter and registers twice; `tasks.workspace-ssh-local` mounts the same hook with no connection, which is the only difference the effect branches on. Recorded at the pinned baseline with this branch's recorder laid over it, so the new golden is main's behaviour and the migrated code has to reproduce it — it does. Goldens: two added (`tw-workspace-ssh-local-agents` and its reply matrix). The other 201 changed on `recorderSha256` only, because the adapter edit moves the recorder digest every golden pins. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): drive workspace create and the Linear list to a recorded wire Two operations passed a policy swap unnoticed, both because no golden reached their acceptance branch. `worktree.create`: the create hook's fixture resolved setup to a prompt, so all three settings.task-workspace scenarios stopped before the request and the only consumer that hands a refusal to interpret was never recorded. The adapter now takes the setup resolution as a parameter and registers a second family that resolves it, so createWorkspace runs to the wire. Two scenarios: a Linear item that creates directly, and a GitHub pull request that resolves its base first, which also puts this hook's built params — start point, generated display name, agent launch fields — in a golden for the first time. The existing prompt family is untouched, so its recordings still pin that branch. `linear.listIssues`: it appeared only in a non-base scenario, and the matrix reads the family base, so the family had no partition for it. The base now lists assigned issues after searching. Goldens: five added. Five moved beyond the digest, all derived from the smart-search base that gained the list leg. The other 198 changed on `recorderSha256` only. Recorded at the pinned baseline with this branch's recorder laid over it, so every new golden is main's behaviour. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): drop the unreachable unmount branches from the task adapters Nothing dispatches `unmount` to these three adapters: the only producer is `lifecycleSchedules`, driven from a hardcoded five-id list that names no task-workspace family, and it pushes a `remount` right after, which these adapters would throw on. The branch read as lifecycle coverage that was never wired up. `dispose: hook.unmount` already tears the mount down. Goldens re-recorded at the pinned baseline because the recorder digest moved; `recorderSha256` is the only line that changed in all 208. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): re-record the goldens at main's post-squash baseline Recorded from a detached checkout of e53f1557e1 (main's unmigrated product code) with this branch's recorder laid over it, so the parity claim stays non-circular. - `baseline` repinned to e53f1557e1 on all 208 goldens; main pinned 5ec0b2698f, a pre-squash branch commit not reachable from main. - `recorderSha256` moved on all 208 because this branch's adapters are in the whole-manifest digest. - 55 task-workspace goldens re-recorded at the new baseline. - No other line in any of main's 153 goldens changed. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): re-record the goldens under #20562's per-scenario digest Baseline repinned to 50e752fc66 and all 208 goldens recorded from that commit's unmigrated product tree with this branch's recorder laid over it. recorderSha256 moves on every golden because the task-workspace adapters live in the recorder directory. scenarioSha256 does not move on any of main's 153: the manifest only adds 31 scenarios and edits none, which is the property #20562 was built to give. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb --- mobile/rpc-foundation/goldens/b1.json | 4 +- mobile/rpc-foundation/goldens/b2.json | 4 +- mobile/rpc-foundation/goldens/b3.json | 4 +- .../interruptions-inventory-lifecycle.json | 4 +- ...ions-settings-bot-overrides-fulfilled.json | 4 +- .../goldens/inventory-lifecycle.json | 4 +- .../goldens/inventory-repeat-query.json | 4 +- .../rpc-foundation/goldens/lifecycle-b3.json | 4 +- .../lifecycle-inventory-lifecycle.json | 4 +- ...ycle-settings-bot-overrides-fulfilled.json | 4 +- ...cle-settings-task-hydration-fulfilled.json | 4 +- ...-settings-workspace-context-fulfilled.json | 4 +- ....base-ref-chain-repo.baserefdefault-1.json | 4 +- ...matrix-git.base-ref-chain-repo.list-1.json | 4 +- ...ix-git.base-ref-chain-worktree.show-1.json | 4 +- ...essage-ai-git.generatecommitmessage-1.json | 4 +- ...matrix-git.history-read-git.history-1.json | 4 +- ...ix-git.remote-prerequisite-git.push-1.json | 4 +- ...x-git.review-preparation-git.status-1.json | 4 +- ...-hostedreview.create-chain-git.push-1.json | 4 +- ...ew.create-chain-hostedreview.create-1.json | 4 +- ...tedreview.create-chain-worktree.set-1.json | 4 +- ...dreview.create-intent-git.bulkstage-1.json | 4 +- ...stedreview.create-intent-git.commit-1.json | 4 +- ...te-intent-git.generatecommitmessage-1.json | 4 +- ...hostedreview.create-intent-git.push-1.json | 4 +- ...stedreview.create-intent-git.status-1.json | 4 +- ...stedreview.create-intent-git.status-2.json | 4 +- ...stedreview.create-intent-git.status-3.json | 4 +- ...stedreview.create-intent-git.status-4.json | 4 +- ...w.create-intent-hostedreview.create-1.json | 4 +- ...hostedreview.getcreationeligibility-1.json | 4 +- ...hostedreview.getcreationeligibility-2.json | 4 +- ...edreview.create-intent-worktree.set-1.json | 4 +- ...hostedreview.getcreationeligibility-1.json | 4 +- ...-legacy-inventory-files.searchpaths-1.json | 4 +- ...-legacy-inventory-files.searchpaths-2.json | 4 +- ...trix-legacy-inventory-fresh-inventory.json | 4 +- ...matrix-legacy-inventory-old-inventory.json | 4 +- ...near-detail-barrier-linear.getissue-1.json | 4 +- ...detail-barrier-linear.issuecomments-1.json | 4 +- ...se-github.project.updateissuebyslug-1.json | 4 +- ...on.tab-reveal-session.tabs.activate-1.json | 4 +- ...ession.tab-reveal-session.tabs.list-1.json | 4 +- ...t-read-preflight.detectremoteagents-1.json | 4 +- ...atrix-settings-agent-read-repo.list-1.json | 4 +- ...ix-settings-agent-read-settings.get-1.json | 4 +- ...ettings-best-effort-settings.update-1.json | 4 +- ...settings.bot-overrides-settings.get-1.json | 4 +- ...ttings.home-providers-linear.status-1.json | 4 +- ...ings.home-providers-preflight.check-1.json | 4 +- ...ettings.home-providers-settings.get-1.json | 4 +- ...ettings.repo-metadata-host.platform-1.json | 4 +- ...ix-settings.repo-metadata-repo.list-1.json | 4 +- ...settings.repo-metadata-settings.get-1.json | 4 +- ...po-metadata-ssh.listtargetsummaries-1.json | 4 +- ...esume-metadata-folderworkspace.list-1.json | 4 +- ...s.resume-metadata-projectgroup.list-1.json | 4 +- ...-settings.resume-metadata-repo.list-1.json | 4 +- ...ttings.resume-metadata-settings.get-1.json | 4 +- ...ettings.resume-metadata-worktree.ps-1.json | 4 +- ...ttings.task-hydration-linear.status-1.json | 4 +- ...ings.task-hydration-preflight.check-1.json | 4 +- ...ettings.task-hydration-settings.get-1.json | 4 +- ...-settings.task-hydration-status.get-1.json | 4 +- ...trix-settings.task-hydration-ui.get-1.json | 4 +- ....task-workspace-create-settings.get-1.json | 860 ++++++++ ...sk-workspace-create-worktree.create-1.json | 1010 +++++++++ ...ettings.task-workspace-settings.get-1.json | 4 +- ...ngs.workspace-context-linear.status-1.json | 4 +- ...s.workspace-context-preflight.check-1.json | 4 +- ...ings.workspace-context-settings.get-1.json | 4 +- ...x-settings.workspace-context-ui.get-1.json | 4 +- ...tings.workspace-submit-settings.get-1.json | 4 +- ...-tasks.paste-lookup-github.reposlug-1.json | 1081 ++++++++++ ...-tasks.paste-lookup-github.workitem-1.json | 1645 ++++++++++++++ ...e-lookup-github.workitembyownerrepo-1.json | 1513 +++++++++++++ ....paste-lookup-gitlab.workitembypath-1.json | 1319 ++++++++++++ ...-source-search-github.listworkitems-1.json | 1885 +++++++++++++++++ ...-source-search-gitlab.listworkitems-1.json | 1772 ++++++++++++++++ ...art-source-search-linear.listissues-1.json | 1199 +++++++++++ ...t-source-search-linear.searchissues-1.json | 1495 +++++++++++++ ...smart-source-search-repo.searchrefs-1.json | 1410 ++++++++++++ ...ks.workspace-source-repo.searchrefs-1.json | 976 +++++++++ ...workspace-source-repo.sparsepresets-1.json | 1265 +++++++++++ ...kspace-sparse-repo.savesparsepreset-1.json | 940 ++++++++ ...tasks.workspace-sparse-ssh.getstate-1.json | 1164 ++++++++++ ...ce-ssh-local-preflight.detectagents-1.json | 566 +++++ ...ce-ssh-preflight.detectremoteagents-1.json | 1268 +++++++++++ ...trix-tasks.workspace-ssh-repo.hooks-1.json | 975 +++++++++ ...rix-tasks.workspace-ssh-ssh.connect-1.json | 1421 +++++++++++++ ...rktree.create-retry-worktree.create-1.json | 652 ++++++ ....hosted-base-worktree.resolvemrbase-1.json | 738 +++++++ ....hosted-base-worktree.resolveprbase-1.json | 868 ++++++++ ...x-worktree.review-link-worktree.set-1.json | 4 +- ...ree.runtime-capabilities-status.get-1.json | 570 +++++ ...ix-worktree.setup-hook-trust-ui.set-1.json | 673 ++++++ .../goldens/probe-new-tab-both-refused.json | 4 +- .../probe-new-tab-null-sibling-refused.json | 4 +- ...probe-new-tab-refused-sibling-rejects.json | 4 +- ...probe-new-tab-rejects-sibling-refused.json | 4 +- .../goldens/sc-base-ref-default.json | 4 +- .../goldens/sc-base-ref-repo-fallback.json | 4 +- .../goldens/sc-base-ref-unavailable.json | 4 +- .../goldens/sc-base-ref-worktree-hit.json | 4 +- .../sc-commit-message-cancel-rejected.json | 4 +- .../goldens/sc-commit-message-canceled.json | 4 +- .../goldens/sc-commit-message-generated.json | 4 +- .../goldens/sc-create-existing-review.json | 4 +- ...reate-intent-stage-commit-push-create.json | 4 +- .../sc-create-link-failure-is-non-fatal.json | 4 +- .../sc-create-pushes-then-creates.json | 4 +- .../sc-create-refused-empty-message.json | 4 +- .../sc-create-rejected-empty-message.json | 4 +- .../goldens/sc-eligibility-fetched.json | 4 +- .../goldens/sc-history-loaded.json | 4 +- .../goldens/sc-pr-link-hosted-review.json | 4 +- .../goldens/sc-pr-link-read.json | 4 +- .../goldens/sc-pr-link-set.json | 4 +- .../sc-prefill-unavailable-on-refusal.json | 4 +- .../sc-prefill-unavailable-on-rejection.json | 4 +- .../sc-prerequisite-force-with-lease.json | 4 +- .../goldens/sc-prerequisite-publish.json | 4 +- .../goldens/sc-prerequisite-push.json | 4 +- .../goldens/sc-prerequisite-skipped.json | 4 +- .../goldens/sc-reveal-first-poll.json | 4 +- .../goldens/sc-reveal-timeout.json | 4 +- .../sc-review-commit-inner-failure.json | 4 +- ...c-review-commit-refused-empty-message.json | 4 +- .../goldens/sc-review-commit-rejected.json | 4 +- .../goldens/sc-review-commit.json | 4 +- .../sc-review-status-entries-not-array.json | 4 +- .../goldens/sc-review-status-normalized.json | 4 +- .../rpc-foundation/goldens/schedules-b3.json | 4 +- ...les-settings-home-providers-fulfilled.json | 4 +- .../schedules-settings-new-tab-ssh.json | 4 +- ...ules-settings-repo-metadata-fulfilled.json | 4 +- ...es-settings-resume-metadata-fulfilled.json | 4 +- ...les-settings-task-hydration-fulfilled.json | 4 +- ...-settings-workspace-context-fulfilled.json | 4 +- .../settings-bot-overrides-fulfilled.json | 4 +- ...ettings-bot-overrides-refresh-refused.json | 4 +- .../settings-bot-overrides-refused.json | 4 +- ...ettings-bot-overrides-transport-error.json | 4 +- .../goldens/settings-home-coalesced.json | 4 +- .../settings-home-providers-fulfilled.json | 4 +- ...ings-home-providers-refuse-after-data.json | 4 +- .../settings-home-providers-refused.json | 4 +- ...ttings-home-providers-transport-error.json | 4 +- .../goldens/settings-new-tab-refused.json | 4 +- .../goldens/settings-new-tab-ssh.json | 4 +- .../settings-new-tab-transport-error.json | 4 +- .../goldens/settings-repo-cache-expiry.json | 4 +- .../settings-repo-metadata-fulfilled.json | 4 +- ...tings-repo-metadata-refuse-after-data.json | 4 +- .../settings-repo-metadata-refused.json | 4 +- .../settings-repo-metadata-single-host.json | 4 +- ...ettings-repo-metadata-transport-error.json | 4 +- .../settings-resume-metadata-fulfilled.json | 4 +- ...ngs-resume-metadata-refuse-after-data.json | 4 +- .../settings-resume-metadata-refused.json | 4 +- ...tings-resume-metadata-transport-error.json | 4 +- .../settings-task-hydration-fulfilled.json | 4 +- ...ings-task-hydration-refuse-after-data.json | 4 +- .../settings-task-hydration-refused.json | 4 +- ...ttings-task-hydration-transport-error.json | 4 +- ...settings-task-workspace-create-linear.json | 241 +++ ...-task-workspace-create-pr-start-point.json | 335 +++ .../settings-task-workspace-fulfilled.json | 4 +- .../settings-task-workspace-refused.json | 4 +- ...ttings-task-workspace-transport-error.json | 4 +- .../goldens/settings-task-write.json | 4 +- .../settings-workspace-context-fulfilled.json | 4 +- ...s-workspace-context-refuse-after-data.json | 4 +- .../settings-workspace-context-refused.json | 4 +- ...ngs-workspace-context-transport-error.json | 4 +- .../settings-workspace-submit-fulfilled.json | 4 +- .../settings-workspace-submit-refused.json | 4 +- ...ings-workspace-submit-transport-error.json | 4 +- .../goldens/tw-capabilities-advertised.json | 99 + .../tw-capabilities-cutover-retried.json | 185 ++ .../tw-capabilities-legacy-idempotency.json | 95 + .../tw-create-retry-ambiguous-after-drop.json | 109 + ...reate-retry-ambiguous-while-connected.json | 83 + ...e-retry-ambiguous-without-idempotency.json | 82 + .../goldens/tw-create-retry-created.json | 90 + .../tw-create-retry-name-collision.json | 176 ++ .../tw-create-retry-unretryable-refusal.json | 86 + .../goldens/tw-create-retry-warning-kept.json | 92 + .../goldens/tw-hosted-base-resolved.json | 158 ++ .../goldens/tw-hosted-base-soft-error.json | 148 ++ .../goldens/tw-paste-lookup-resolved.json | 340 +++ .../goldens/tw-paste-lookup-slug-refused.json | 135 ++ .../tw-paste-lookup-slug-unsupported.json | 133 ++ .../goldens/tw-setup-hook-trust-always.json | 90 + .../goldens/tw-setup-hook-trust-approved.json | 100 + .../tw-smart-search-all-providers.json | 489 +++++ ...tw-smart-search-gitlab-provider-error.json | 165 ++ .../tw-smart-search-linear-listed.json | 93 + .../tw-task-preferences-resume-write.json | 154 ++ .../tw-workspace-source-presets-refused.json | 136 ++ .../goldens/tw-workspace-source-presets.json | 254 +++ .../tw-workspace-sparse-missing-preset.json | 159 ++ .../goldens/tw-workspace-sparse-saved.json | 229 ++ .../tw-workspace-ssh-connect-refused.json | 277 +++ .../goldens/tw-workspace-ssh-connected.json | 319 +++ .../tw-workspace-ssh-local-agents.json | 103 + .../goldens/tw-workspace-ssh-not-ready.json | 268 +++ mobile/rpc-foundation/pilot-scenarios.json | 1618 +++++++++++++- .../mobile-git-read-operations.ts | 26 +- mobile/src/tasks/blank-workspace-create.ts | 3 +- .../src/tasks/composer-source-base-resolve.ts | 22 +- .../tasks/mobile-task-runtime-operations.ts | 87 + .../mobile-task-source-search-operations.ts | 100 + .../mobile-tasks-refactor-parity.test.ts | 21 +- .../mobile-workspace-create-operations.ts | 64 + .../mobile-workspace-source-operations.ts | 101 + mobile/src/tasks/setup-hook-trust.ts | 8 +- mobile/src/tasks/smart-source-paste-intent.ts | 45 +- .../src/tasks/smart-source-search-requests.ts | 75 +- mobile/src/tasks/source-workspace-create.ts | 7 +- ...e-mobile-tasks-client-settings-actions.tsx | 29 +- .../use-mobile-tasks-runtime-hydration.tsx | 57 +- ...-mobile-tasks-workspace-create-actions.tsx | 47 +- ...-mobile-tasks-workspace-source-effects.tsx | 32 +- ...-mobile-tasks-workspace-sparse-actions.tsx | 24 +- .../use-mobile-tasks-workspace-ssh-state.tsx | 64 +- mobile/src/tasks/workspace-create-params.ts | 4 +- .../src/tasks/worktree-create-capability.ts | 11 +- .../src/tasks/worktree-create-retry.test.ts | 45 +- mobile/src/tasks/worktree-create-retry.ts | 17 +- .../rpc-recording/operation-module-loader.ts | 10 + .../rpc-recording/operation-mutations.ts | 13 +- .../rpc-recording/pilot-mount-adapters.ts | 10 + .../task-workspace-hook-mount-adapters.ts | 193 ++ .../task-workspace-sender-mount-adapters.ts | 180 ++ .../workspace-settings-mounts.ts | 138 +- mobile/src/transport/rpc-operation.ts | 12 +- mobile/src/transport/rpc-reader-payload.ts | 8 + .../unvalidated-rpc-request-port-inventory.ts | 23 +- 240 files changed, 35768 insertions(+), 626 deletions(-) create mode 100644 mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-settings.get-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-worktree.create-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.reposlug-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitem-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitembyownerrepo-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-gitlab.workitembypath-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-github.listworkitems-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-gitlab.listworkitems-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.listissues-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.searchissues-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-repo.searchrefs-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.searchrefs-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.sparsepresets-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-repo.savesparsepreset-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-ssh.getstate-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-local-preflight.detectagents-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-preflight.detectremoteagents-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-repo.hooks-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-ssh.connect-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-worktree.create-retry-worktree.create-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolvemrbase-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolveprbase-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-worktree.runtime-capabilities-status.get-1.json create mode 100644 mobile/rpc-foundation/goldens/matrix-worktree.setup-hook-trust-ui.set-1.json create mode 100644 mobile/rpc-foundation/goldens/settings-task-workspace-create-linear.json create mode 100644 mobile/rpc-foundation/goldens/settings-task-workspace-create-pr-start-point.json create mode 100644 mobile/rpc-foundation/goldens/tw-capabilities-advertised.json create mode 100644 mobile/rpc-foundation/goldens/tw-capabilities-cutover-retried.json create mode 100644 mobile/rpc-foundation/goldens/tw-capabilities-legacy-idempotency.json create mode 100644 mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-after-drop.json create mode 100644 mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-while-connected.json create mode 100644 mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-without-idempotency.json create mode 100644 mobile/rpc-foundation/goldens/tw-create-retry-created.json create mode 100644 mobile/rpc-foundation/goldens/tw-create-retry-name-collision.json create mode 100644 mobile/rpc-foundation/goldens/tw-create-retry-unretryable-refusal.json create mode 100644 mobile/rpc-foundation/goldens/tw-create-retry-warning-kept.json create mode 100644 mobile/rpc-foundation/goldens/tw-hosted-base-resolved.json create mode 100644 mobile/rpc-foundation/goldens/tw-hosted-base-soft-error.json create mode 100644 mobile/rpc-foundation/goldens/tw-paste-lookup-resolved.json create mode 100644 mobile/rpc-foundation/goldens/tw-paste-lookup-slug-refused.json create mode 100644 mobile/rpc-foundation/goldens/tw-paste-lookup-slug-unsupported.json create mode 100644 mobile/rpc-foundation/goldens/tw-setup-hook-trust-always.json create mode 100644 mobile/rpc-foundation/goldens/tw-setup-hook-trust-approved.json create mode 100644 mobile/rpc-foundation/goldens/tw-smart-search-all-providers.json create mode 100644 mobile/rpc-foundation/goldens/tw-smart-search-gitlab-provider-error.json create mode 100644 mobile/rpc-foundation/goldens/tw-smart-search-linear-listed.json create mode 100644 mobile/rpc-foundation/goldens/tw-task-preferences-resume-write.json create mode 100644 mobile/rpc-foundation/goldens/tw-workspace-source-presets-refused.json create mode 100644 mobile/rpc-foundation/goldens/tw-workspace-source-presets.json create mode 100644 mobile/rpc-foundation/goldens/tw-workspace-sparse-missing-preset.json create mode 100644 mobile/rpc-foundation/goldens/tw-workspace-sparse-saved.json create mode 100644 mobile/rpc-foundation/goldens/tw-workspace-ssh-connect-refused.json create mode 100644 mobile/rpc-foundation/goldens/tw-workspace-ssh-connected.json create mode 100644 mobile/rpc-foundation/goldens/tw-workspace-ssh-local-agents.json create mode 100644 mobile/rpc-foundation/goldens/tw-workspace-ssh-not-ready.json create mode 100644 mobile/src/tasks/mobile-task-runtime-operations.ts create mode 100644 mobile/src/tasks/mobile-task-source-search-operations.ts create mode 100644 mobile/src/tasks/mobile-workspace-create-operations.ts create mode 100644 mobile/src/tasks/mobile-workspace-source-operations.ts create mode 100644 mobile/src/test-support/rpc-recording/task-workspace-hook-mount-adapters.ts create mode 100644 mobile/src/test-support/rpc-recording/task-workspace-sender-mount-adapters.ts diff --git a/mobile/rpc-foundation/goldens/b1.json b/mobile/rpc-foundation/goldens/b1.json index 604256d7437..6e3aee261b6 100644 --- a/mobile/rpc-foundation/goldens/b1.json +++ b/mobile/rpc-foundation/goldens/b1.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "23ffc912a432dcd3ff70be1903a8d518cf85634f27a2be6d21585963e338e7e3", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/b2.json b/mobile/rpc-foundation/goldens/b2.json index c919ca011f5..d53dc06a053 100644 --- a/mobile/rpc-foundation/goldens/b2.json +++ b/mobile/rpc-foundation/goldens/b2.json @@ -3,9 +3,9 @@ "family": "project-explicit-false", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "b31992be2f91bd61fbe1b8a5400da3b7a56753564b0b0b2b38bc5d549812d693", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/b3.json b/mobile/rpc-foundation/goldens/b3.json index 78a1038358e..8fa86acb2cf 100644 --- a/mobile/rpc-foundation/goldens/b3.json +++ b/mobile/rpc-foundation/goldens/b3.json @@ -3,9 +3,9 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "130e493fcd7765e037405f59e6cc78a0cc1793b1ae092cad933ff9d5a9df8b7a", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json b/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json index 81d6adfb2f4..7e06d275855 100644 --- a/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json +++ b/mobile/rpc-foundation/goldens/interruptions-inventory-lifecycle.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "d6c57a5153d915f0a0c0fd9e305cac70b41b7eb8be226fc865227ebf1821e5d1", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json b/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json index 0a1aca3b4d6..bc632784698 100644 --- a/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json +++ b/mobile/rpc-foundation/goldens/interruptions-settings-bot-overrides-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "2d5c6dea28aa1a7bb9e4aa14a4c8441527d9ad401ad30161f05ea1f8da836bb2", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/inventory-lifecycle.json b/mobile/rpc-foundation/goldens/inventory-lifecycle.json index ad3b9c43a9a..f794d497b8e 100644 --- a/mobile/rpc-foundation/goldens/inventory-lifecycle.json +++ b/mobile/rpc-foundation/goldens/inventory-lifecycle.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "3471f5bcd6923c7b8ba3a737bb45b5239689deb78c00e85a828f38a6d6d68a05", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/inventory-repeat-query.json b/mobile/rpc-foundation/goldens/inventory-repeat-query.json index 64a3d7492f0..8c8a21feb45 100644 --- a/mobile/rpc-foundation/goldens/inventory-repeat-query.json +++ b/mobile/rpc-foundation/goldens/inventory-repeat-query.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "73a468d5c7a51c2dbb7af2642f0050d05d861fce29295460c48d7c51f86bf57f", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/lifecycle-b3.json b/mobile/rpc-foundation/goldens/lifecycle-b3.json index e0d25b4724f..e847f82f811 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-b3.json +++ b/mobile/rpc-foundation/goldens/lifecycle-b3.json @@ -3,9 +3,9 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "8be12d116865d27e8dfd37921d2c723d63da101ec1197b1f5b2d9510838e1943", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json b/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json index ca3b76527e9..55736257efd 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json +++ b/mobile/rpc-foundation/goldens/lifecycle-inventory-lifecycle.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "46bbafcc57fe2e3aee41a14bc26a0375b7b56e58030705fe4c28841a272b2560", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json b/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json index f43d942e36d..e55ef1e8476 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json +++ b/mobile/rpc-foundation/goldens/lifecycle-settings-bot-overrides-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "eb80283956c93849778f23cbabf1dbf83b72744197af4f6f50335b2fc1590d87", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json b/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json index 151c59c919f..ac6785a567e 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json +++ b/mobile/rpc-foundation/goldens/lifecycle-settings-task-hydration-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "3a8eab831602443d320ca0aa0f35dc269d8d511e76bdae8fd025c433561d068d", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json b/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json index 488a700a09a..7d9aff28b52 100644 --- a/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json +++ b/mobile/rpc-foundation/goldens/lifecycle-settings-workspace-context-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "136fb1d8d5925ad12ba22f4dd6c72573a9ad03b6a6ec8308668f0d9cd71aa36d", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json index 96fbed0b57d..ba3eab1b2f6 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.baserefdefault-1.json @@ -3,9 +3,9 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "5605a2984d7692aa80e5e38f804bdfed4b1ce8ac2102def5dc728b1a79dc1acf", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json index 347625dadf3..5f41233ede5 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-repo.list-1.json @@ -3,9 +3,9 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "ed0e97ead1aad0b45bdfc48f5fe4e498810d0cfee88f07d3c6228db56fda1dd9", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json index 2717fb396a0..41d913f3426 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.base-ref-chain-worktree.show-1.json @@ -3,9 +3,9 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "1db6919b94df3b8548838ff4c206fafa3a09ea096b17c04483f78f9321ccb1ba", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json b/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json index 21171bf6d16..fe43bc5d401 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.commit-message-ai-git.generatecommitmessage-1.json @@ -3,9 +3,9 @@ "family": "git.commit-message-ai", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "22ea5279155ecf749aaab521ffd570221ac3169b177fc1daf85ef93a49d38260", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json b/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json index abed8bf074b..529df6444b3 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.history-read-git.history-1.json @@ -3,9 +3,9 @@ "family": "git.history-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "86254ed87ad3427d6ee4631d7348075039ba2d4d7496d59f27f03f78580f35a1", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json b/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json index 97346d0e6b4..bf6290b001a 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.remote-prerequisite-git.push-1.json @@ -3,9 +3,9 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "5009c22df7e74a850bcea41fc110ea7d7eb4bdada623837279f32eaa5149a9b8", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json b/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json index 9f417b48053..b584a8ea2f1 100644 --- a/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-git.review-preparation-git.status-1.json @@ -3,9 +3,9 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "485b2751006ee8fb4df28b228ea7adda85779feae83974eb0f7e795e31c500a1", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json index ce182135651..f216ef38c7e 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-git.push-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "fcf5cdc7388457156dd81fe28a470f42fbabac7435ec5572cb19e209f410ca84", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json index 0e1fbba63c7..da6223966d8 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-hostedreview.create-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "26e666a57805f354602a5b3906a691b10c8d6db66c77acc96c67153279c515a7", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json index c65b6cf6558..46096225d3e 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-chain-worktree.set-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "08c25b6cb5bc12a7f67e858f229d15cf66b98b2ad4601b11f18c4c03f4a59669", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json index 8bbc14962a5..f78da080d66 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.bulkstage-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "ff9d1bfd6337607f3d3e8162692b589ecea4a32ae01b5ebb3c602f8f0a55642c", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json index f457f4b0052..58bb6579d1d 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.commit-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "efeb9b248aeb98fac71c043d50afe0036cf804d3c11edfccd4e050fe8f3d8f9b", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json index 488238d3bca..10d47a76df4 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.generatecommitmessage-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "7b0d9ddcb8df83fc4e465aa6b0dcf05aa0d8f266cd4bb8651969cb8321bcf549", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json index 20ba5f1e127..956e07af5bc 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.push-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "72c1f08739db1c0dfcd48adffaca582a3596116c1c377f95f7dab8b08b7e6cdc", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json index d4ce67f0673..5853244f4c4 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "1f002f900c1a3c92e8f7c72261579ee5015ec1529c003a1b32bcf3eaf98b672d", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json index ffa68cf4114..6f62bbf402f 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-2.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "3a6487a07457e0e5aa6fc3fccfa43687acfb06d94334e621081728de937e4e8d", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json index 75c0eae29c7..fcd4af54182 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-3.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "7355c45a707fa8a31f0999c4805a5b1dace4c65b727e711231f784b2f92c05ff", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json index aefc48d7680..b9208854e45 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-git.status-4.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "45cda6757b76399d282d4b07992dab21bbb8236faadedba5e92eab8818e886bf", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json index 5e25cfa990e..cf2c57ed343 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.create-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "0ca08d5e70e1780a6ee5c919491dcddb062a22623f803e9960a329825f274cbe", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json index 7fda51cd916..07de81c2d40 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "658eb7bbf63b3a4b38eca0b1733e523962b6b6943644d65aab6f5c7e62534d6a", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json index 2c3dc706047..604d0e4e0b9 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-hostedreview.getcreationeligibility-2.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "75ba135731290bf734a5eef0b65f9ad8b7cac453c4e2006faac88a5da9dbe3a3", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json index 021c9f2d320..6a662ac9ef4 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.create-intent-worktree.set-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "beb1161b98ffde8c5f1128e843766a1da3182d195f1f0a9012e12e5318ae01bc", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json b/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json index 04dd7052c2e..5a1d7479587 100644 --- a/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json +++ b/mobile/rpc-foundation/goldens/matrix-hostedreview.eligibility-hostedreview.getcreationeligibility-1.json @@ -3,9 +3,9 @@ "family": "hostedReview.eligibility", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "6c4de90e2617d204e82ca5e65eb17fc397acbcbb9dc0ec18594d2a7739e3528b", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json index 9d016af3ca0..436aff9d0ca 100644 --- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json +++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-1.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "4f6472fb7add960be9bcc8596a748264d7cb0755a782ebe9e85753ab1d1d5710", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json index 4443cb77710..c689669bdb2 100644 --- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json +++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-files.searchpaths-2.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "048c3ec55ec67d09d9b02e17822f1154adca577e57ffe6d3059102d552d2f759", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json index dcab97a3a4e..6249c1cc7a6 100644 --- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json +++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-fresh-inventory.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "ad458a3407e3f1303343b46a1308b43535abef2c9ed2f68db59157db5b91daa1", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json index ff0a6d66acc..5a283c73742 100644 --- a/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json +++ b/mobile/rpc-foundation/goldens/matrix-legacy-inventory-old-inventory.json @@ -3,9 +3,9 @@ "family": "legacy-inventory", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "52742d894d0ea53db89729101664a393b10794d9c2d2fe7b40b020643a13af81", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json index 098e80e7c82..a9ba0073130 100644 --- a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json +++ b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.getissue-1.json @@ -3,9 +3,9 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "8e00afc85e5b82d75bedecea0c748a3c8658cfc8545650e755c03f51fdc932d6", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json index 397e91d5859..967000e9bfc 100644 --- a/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json +++ b/mobile/rpc-foundation/goldens/matrix-linear-detail-barrier-linear.issuecomments-1.json @@ -3,9 +3,9 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "40289acce4a3542773f74681d255d67cfddadf6c42317928d6728f26a76f6cfb", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json b/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json index e564c087182..9b991b64f7d 100644 --- a/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json +++ b/mobile/rpc-foundation/goldens/matrix-project-explicit-false-github.project.updateissuebyslug-1.json @@ -3,9 +3,9 @@ "family": "project-explicit-false", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "926f0d8c37a33d465bf3a04f056600cfc9f1669b1eca7e968aa1a1f797a74c61", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json index b5bfcc6c34b..8fafc9beff9 100644 --- a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json +++ b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.activate-1.json @@ -3,9 +3,9 @@ "family": "session.tab-reveal", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "73366226aeaec1581aeeb47219fc703917143cfd7f6a2eb01d7bd703a7c7612d", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json index eb85e61870d..8b5cd2c1fab 100644 --- a/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-session.tab-reveal-session.tabs.list-1.json @@ -3,9 +3,9 @@ "family": "session.tab-reveal", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "c38f2bc5c9faca0774dfe202137877bada9deba165c5e9c955cbe67eae0cbdd9", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json index 748dbe75ae2..7505109479a 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-preflight.detectremoteagents-1.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "a0effc9a0be519ccd18c1b1abfc8b497cd3858b89ea8d345ac0f8bd6d195cf21", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json index 9946296e487..dfde62ab602 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-repo.list-1.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "c21b2e0e97fab86664f634cc99d77dd587df4af4d02e6286c8380e09844096b2", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json index 2063dab2889..e6f450c3d25 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings-agent-read-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "46c4e32a921612c736c8cf45ff72ed513431c917ed3dd03f289c0ba4c28d6adb", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json b/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json index 2ab9a497475..ee5fbf6c1e7 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings-best-effort-settings.update-1.json @@ -3,9 +3,9 @@ "family": "settings-best-effort", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "cf671da175d50a4c2e1336f4e8338c24c4752db111e1eafd226bee6ff3582b1d", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json index 786467ef280..9dfa1058b3f 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.bot-overrides-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "01408cebcc193f8e30119381c8acf494fa5e29850fe010809deb330c2f9bcb36", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json index de544d6c810..b765e4a4eb9 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-linear.status-1.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "19b445b39da98d28bcbcdab6f70e47ce208ca68f165e7b62c5fe9762eee67c8d", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json index 8f1903277ee..029719ef81e 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-preflight.check-1.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "4953dd0de509ce620b9840d7f460e472dc74f54d53636694d12cba2e3bb51da8", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json index 0b50cfc9f24..9eb7464df6e 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.home-providers-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "70f601caeaee957bd3b172fc0fc12e85d6e2d6bed7683c86869559c6c9f25834", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json index 047c08fea63..b7ee4ec8711 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-host.platform-1.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "687b109bd2bcc0c85b7c858d553e68e2fc4cb5b281d9f8b32836dbacc4bdc8f2", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json index 4909dbc80b6..39027b3569d 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-repo.list-1.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "3199c745e22973b432b0a36c34bb0bdda994334a4a0cd7ad2daf8b172625ce8d", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json index f2a4002299a..a12a8e3ec0e 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "5e9c3ff57cf432b24a17ee046636b61b94116a687cfa506cd79dee464542b76b", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json index 6745742e69d..33488a5f028 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.repo-metadata-ssh.listtargetsummaries-1.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "a88061d3d1f03074b0ed2b663b523f1602362bc317ba614106f1f646d037d6e3", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json index 4d6759cb4bb..3c390724097 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-folderworkspace.list-1.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "50ba7c7963cb494e4b3d484eb334977d21cc69018da57d75a7b6fd0c92860bd2", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json index 56603458116..d34f364bd50 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-projectgroup.list-1.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "8dfd4550b39f0cfcb9aaa72fab0631b11f9e776ed389b206b326359d7f4c2d6e", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json index 642386c57c2..61422bd128f 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-repo.list-1.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "85dc526201f66409dd6a411c5e14615b82389791ec210efb9889078f5d580373", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json index de758cfca98..81cb1e44276 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "080e10ae774ef097082267da0c8b6d0ebacae582d57b04a189c123258d0e5131", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json index c4874e981ea..a56126483d7 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.resume-metadata-worktree.ps-1.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "5988fa5ce0bf6b8585f7ec66918123ee086d5cdf1185a4eeff2e88904985064c", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json index 5118bc610db..c99fdf77613 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-linear.status-1.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "f5033a7a3567cc9e016bf09ac8bcd8ff381c3054c041dbccc773f7011918bf1d", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json index dcd34e9ac43..33d8f68499e 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-preflight.check-1.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "0931b3d35868e5452cb550962f2408b6ce7cd6c89e90a9cf2897425edbb4b42d", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json index 76565b7a9e0..f906996b6b9 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "d0f8d9bfe0e1469af3b0dab8b5c9799d91cc2234e72f0e031d6872059654077d", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json index b248c54e214..287f8acd339 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-status.get-1.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "3f448feff463b59c3927dae020ecd8d4931bb4a6036df6d6af080de2ec5fcf2b", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json index fdee42d21bc..a889d4ef078 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-hydration-ui.get-1.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "4438f9fd62876333bb980157612aaf457c5a9b9115659c8c941c3b373ad071dd", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-settings.get-1.json new file mode 100644 index 00000000000..979228bca1f --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-settings.get-1.json @@ -0,0 +1,860 @@ +{ + "operation": "settings.task-workspace-create", + "family": "settings.task-workspace-create", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "7e4c5bb29e0f630cda8a09233575b9295e485f3d3e315ebdc0458c69515fcfc7", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "067cef118d9f": { + "name": "runtimeTaskSettings", + "value": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "090c88478661": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "pending", + "startedAt": 0 + } + }, + "0f72e7ee78c9": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "createdWithAgent": "claude", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "name": "orc-1", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://linear.app/orca/issue/ORC-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "worktree": { + "displayName": "ORC-1 Recorded issue", + "id": "wt-1" + } + } + } + } + }, + "0fc3e204e7ba": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "127ad2bdc042": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "180125f5d1a6": { + "name": "workspaceCreateDraft", + "value": { + "$rpc": "null" + } + }, + "2473f12c7cdd": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + } + } + } + }, + "2b3aa0da0852": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "33e3b949d4c5": { + "creating": { + "$rpc": "null" + }, + "error": "", + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "3405a06dce84": { + "name": "error", + "value": "Selected agent is disabled. Choose an enabled agent before creating." + }, + "3f453dd79b03": { + "name": "workspaceAgent", + "value": "codex" + }, + "6a98511b6371": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + }, + "6eb4e79ad99a": { + "name": "setupPrompt", + "value": { + "$rpc": "null" + } + }, + "730f92993963": { + "name": "creatingKey", + "value": "linear:1" + }, + "7abdfe20af50": { + "creating": "linear:1", + "error": "", + "settings": { + "disabledTuiAgents": ["claude"] + } + }, + "7ddcb1852b39": { + "name": "settings.get#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" + }, + "7ee99993a895": { + "name": "navigation", + "value": "/h/host-1/session/wt-1?name=ORC-1+Recorded+issue&created=1" + }, + "82cd71d524c8": { + "name": "error", + "value": "" + }, + "8b77098df0c3": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "8f8296303a77": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-1", + "ok": false + } + } + }, + "9270aeb7d9c6": { + "status": "pending", + "startedAt": 0 + }, + "ac9996319e05": { + "name": "actionItem", + "value": { + "$rpc": "null" + } + }, + "adec34c2065c": { + "creating": { + "$rpc": "null" + }, + "error": "", + "settings": {} + }, + "b759ab27e4dd": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-1", + "ok": false + } + } + }, + "baa74a0ec378": { + "name": "worktree.create#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.create\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"orc-1\",\"displayName\":\"ORC-1 Recorded issue\",\"displayNameKind\":\"generated\",\"linkedLinearIssue\":\"ORC-1\",\"setupDecision\":\"inherit\",\"activate\":true,\"startupDraft\":\"https://linear.app/orca/issue/ORC-1\",\"createdWithAgent\":\"claude\"}}" + }, + "c9cb32059b8d": { + "name": "creatingKey", + "value": { + "$rpc": "null" + } + }, + "d27ce798af34": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "d5df3f6b123a": { + "creating": { + "$rpc": "null" + }, + "error": "Selected agent is disabled. Choose an enabled agent before creating.", + "settings": { + "disabledTuiAgents": ["claude"] + } + }, + "dae7907f03cc": { + "name": "runtimeTaskSettings", + "value": {} + }, + "e0cf1af55a54": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true + } + } + }, + "e1bd8b4a5d70": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "ea709e13f0f0": { + "name": "workspaceAgentOverridden", + "value": false + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "f84a8688af61": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Connection closed", + "isRpcDeliveryUnknown": true + } + } + } + }, + "recording": { + "scenario": "matrix-settings.task-workspace-create-settings.get-1", + "checkpoints": [ + { + "id": "settings-task-workspace-create-linear.prelude:settings-pending", + "observation": { + "sender": ["090c88478661"], + "payloads": ["7ddcb1852b39"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "9270aeb7d9c6" + }, + "state": "7abdfe20af50", + "effects": ["730f92993963", "82cd71d524c8"] + } + }, + { + "id": "settings-task-workspace-create-linear.prelude:cleanup", + "observation": { + "sender": ["f84a8688af61"], + "payloads": ["7ddcb1852b39"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "7abdfe20af50", + "effects": [ + "730f92993963", + "82cd71d524c8", + "3f453dd79b03", + "ea709e13f0f0", + "3405a06dce84", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.normal:created", + "observation": { + "sender": ["2473f12c7cdd", "0f72e7ee78c9"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "33e3b949d4c5", + "effects": [ + "730f92993963", + "82cd71d524c8", + "067cef118d9f", + "ac9996319e05", + "180125f5d1a6", + "6eb4e79ad99a", + "7ee99993a895", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.result-absent:created", + "observation": { + "sender": ["e0cf1af55a54"], + "payloads": ["7ddcb1852b39"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "d5df3f6b123a", + "effects": [ + "730f92993963", + "82cd71d524c8", + "3f453dd79b03", + "ea709e13f0f0", + "3405a06dce84", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.result-null:created", + "observation": { + "sender": ["e1bd8b4a5d70"], + "payloads": ["7ddcb1852b39"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "d5df3f6b123a", + "effects": [ + "730f92993963", + "82cd71d524c8", + "3f453dd79b03", + "ea709e13f0f0", + "3405a06dce84", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.inner-ok-missing:created", + "observation": { + "sender": ["0fc3e204e7ba", "0f72e7ee78c9"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "adec34c2065c", + "effects": [ + "730f92993963", + "82cd71d524c8", + "dae7907f03cc", + "ac9996319e05", + "180125f5d1a6", + "6eb4e79ad99a", + "7ee99993a895", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.inner-false-string-error:created", + "observation": { + "sender": ["d27ce798af34", "0f72e7ee78c9"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "adec34c2065c", + "effects": [ + "730f92993963", + "82cd71d524c8", + "dae7907f03cc", + "ac9996319e05", + "180125f5d1a6", + "6eb4e79ad99a", + "7ee99993a895", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.inner-false-object-error:created", + "observation": { + "sender": ["127ad2bdc042", "0f72e7ee78c9"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "adec34c2065c", + "effects": [ + "730f92993963", + "82cd71d524c8", + "dae7907f03cc", + "ac9996319e05", + "180125f5d1a6", + "6eb4e79ad99a", + "7ee99993a895", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.outer-refused:created", + "observation": { + "sender": ["8f8296303a77"], + "payloads": ["7ddcb1852b39"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "d5df3f6b123a", + "effects": [ + "730f92993963", + "82cd71d524c8", + "3f453dd79b03", + "ea709e13f0f0", + "3405a06dce84", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.outer-refused-no-message:created", + "observation": { + "sender": ["6a98511b6371"], + "payloads": ["7ddcb1852b39"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "d5df3f6b123a", + "effects": [ + "730f92993963", + "82cd71d524c8", + "3f453dd79b03", + "ea709e13f0f0", + "3405a06dce84", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.method-not-found:created", + "observation": { + "sender": ["b759ab27e4dd"], + "payloads": ["7ddcb1852b39"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "d5df3f6b123a", + "effects": [ + "730f92993963", + "82cd71d524c8", + "3f453dd79b03", + "ea709e13f0f0", + "3405a06dce84", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.transport-rejection:created", + "observation": { + "sender": ["8b77098df0c3"], + "payloads": ["7ddcb1852b39"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "d5df3f6b123a", + "effects": [ + "730f92993963", + "82cd71d524c8", + "3f453dd79b03", + "ea709e13f0f0", + "3405a06dce84", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.transport-rejection-no-message:created", + "observation": { + "sender": ["2b3aa0da0852"], + "payloads": ["7ddcb1852b39"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "d5df3f6b123a", + "effects": [ + "730f92993963", + "82cd71d524c8", + "3f453dd79b03", + "ea709e13f0f0", + "3405a06dce84", + "c9cb32059b8d" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-worktree.create-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-worktree.create-1.json new file mode 100644 index 00000000000..1ccd90e4c6e --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-create-worktree.create-1.json @@ -0,0 +1,1010 @@ +{ + "operation": "settings.task-workspace-create", + "family": "settings.task-workspace-create", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "1d7713cf4c23d053105c2abb02340d81d5eb689f4311a0984932d8ebd031b4ce", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "067cef118d9f": { + "name": "runtimeTaskSettings", + "value": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "090c88478661": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "pending", + "startedAt": 0 + } + }, + "0ca3bb7ac195": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "createdWithAgent": "claude", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "name": "orc-1", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://linear.app/orca/issue/ORC-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "0f72e7ee78c9": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "createdWithAgent": "claude", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "name": "orc-1", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://linear.app/orca/issue/ORC-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "worktree": { + "displayName": "ORC-1 Recorded issue", + "id": "wt-1" + } + } + } + } + }, + "12b9d0436b8a": { + "name": "error", + "value": "Cannot read properties of undefined (reading 'displayName')" + }, + "180125f5d1a6": { + "name": "workspaceCreateDraft", + "value": { + "$rpc": "null" + } + }, + "186f44bc465a": { + "name": "error", + "value": "Unknown method" + }, + "1bb065c2a768": { + "creating": { + "$rpc": "null" + }, + "error": "Unknown method", + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "2473f12c7cdd": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + } + } + } + }, + "2e80de97dd3b": { + "name": "error", + "value": "Cannot read properties of null (reading 'worktree')" + }, + "2f13b6f74cc6": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "createdWithAgent": "claude", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "name": "orc-1", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://linear.app/orca/issue/ORC-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-2", + "ok": false + } + } + }, + "2fac0da15fae": { + "creating": { + "$rpc": "null" + }, + "error": "transport failure", + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "31738898988e": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "createdWithAgent": "claude", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "name": "orc-1", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://linear.app/orca/issue/ORC-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "33e3b949d4c5": { + "creating": { + "$rpc": "null" + }, + "error": "", + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "37345621a939": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "createdWithAgent": "claude", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "name": "orc-1", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://linear.app/orca/issue/ORC-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "5b8e61be1638": { + "name": "error", + "value": "Cannot read properties of undefined (reading 'worktree')" + }, + "67b44e804cc9": { + "creating": { + "$rpc": "null" + }, + "error": "Cannot read properties of null (reading 'worktree')", + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "6eb4e79ad99a": { + "name": "setupPrompt", + "value": { + "$rpc": "null" + } + }, + "730f92993963": { + "name": "creatingKey", + "value": "linear:1" + }, + "7abdfe20af50": { + "creating": "linear:1", + "error": "", + "settings": { + "disabledTuiAgents": ["claude"] + } + }, + "7b27297e7f2d": { + "creating": { + "$rpc": "null" + }, + "error": "outer refused", + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "7ddcb1852b39": { + "name": "settings.get#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" + }, + "7ee99993a895": { + "name": "navigation", + "value": "/h/host-1/session/wt-1?name=ORC-1+Recorded+issue&created=1" + }, + "82cd71d524c8": { + "name": "error", + "value": "" + }, + "841ba02855c9": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "createdWithAgent": "claude", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "name": "orc-1", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://linear.app/orca/issue/ORC-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true + } + } + }, + "89456eae5a16": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "createdWithAgent": "claude", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "name": "orc-1", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://linear.app/orca/issue/ORC-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "9270aeb7d9c6": { + "status": "pending", + "startedAt": 0 + }, + "945ea389c1ef": { + "name": "error", + "value": "transport failure" + }, + "97348f3fe285": { + "creating": { + "$rpc": "null" + }, + "error": "Cannot read properties of undefined (reading 'worktree')", + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "97dc8fc98386": { + "creating": { + "$rpc": "null" + }, + "error": "Cannot read properties of undefined (reading 'displayName')", + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "9f82f10075a3": { + "name": "error", + "value": "Connection closed" + }, + "ac9996319e05": { + "name": "actionItem", + "value": { + "$rpc": "null" + } + }, + "adfc4e9a82be": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "createdWithAgent": "claude", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "name": "orc-1", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://linear.app/orca/issue/ORC-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-2", + "ok": false + } + } + }, + "ba65a7abe43b": { + "name": "error", + "value": "outer refused" + }, + "baa74a0ec378": { + "name": "worktree.create#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.create\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"orc-1\",\"displayName\":\"ORC-1 Recorded issue\",\"displayNameKind\":\"generated\",\"linkedLinearIssue\":\"ORC-1\",\"setupDecision\":\"inherit\",\"activate\":true,\"startupDraft\":\"https://linear.app/orca/issue/ORC-1\",\"createdWithAgent\":\"claude\"}}" + }, + "c7d9517809c8": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "createdWithAgent": "claude", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "name": "orc-1", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://linear.app/orca/issue/ORC-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-2", + "ok": false + } + } + }, + "c9cb32059b8d": { + "name": "creatingKey", + "value": { + "$rpc": "null" + } + }, + "eb44ca9ac41f": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "createdWithAgent": "claude", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "name": "orc-1", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://linear.app/orca/issue/ORC-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Connection closed", + "isRpcDeliveryUnknown": true + } + } + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "eecc0c1b6490": { + "creating": "linear:1", + "error": "", + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "f73b6faeedba": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "createdWithAgent": "claude", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "name": "orc-1", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://linear.app/orca/issue/ORC-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "ff28e2c78e1b": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "createdWithAgent": "claude", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "name": "orc-1", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://linear.app/orca/issue/ORC-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "refused" + } + } + } + } + }, + "recording": { + "scenario": "matrix-settings.task-workspace-create-worktree.create-1", + "checkpoints": [ + { + "id": "settings-task-workspace-create-linear.prelude:settings-pending", + "observation": { + "sender": ["090c88478661"], + "payloads": ["7ddcb1852b39"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "9270aeb7d9c6" + }, + "state": "7abdfe20af50", + "effects": ["730f92993963", "82cd71d524c8"] + } + }, + { + "id": "settings-task-workspace-create-linear.prelude:cleanup", + "observation": { + "sender": ["2473f12c7cdd", "eb44ca9ac41f"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "eecc0c1b6490", + "effects": [ + "730f92993963", + "82cd71d524c8", + "067cef118d9f", + "9f82f10075a3", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.normal:created", + "observation": { + "sender": ["2473f12c7cdd", "0f72e7ee78c9"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "33e3b949d4c5", + "effects": [ + "730f92993963", + "82cd71d524c8", + "067cef118d9f", + "ac9996319e05", + "180125f5d1a6", + "6eb4e79ad99a", + "7ee99993a895", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.result-absent:created", + "observation": { + "sender": ["2473f12c7cdd", "841ba02855c9"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "97348f3fe285", + "effects": [ + "730f92993963", + "82cd71d524c8", + "067cef118d9f", + "ac9996319e05", + "180125f5d1a6", + "6eb4e79ad99a", + "5b8e61be1638", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.result-null:created", + "observation": { + "sender": ["2473f12c7cdd", "0ca3bb7ac195"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "67b44e804cc9", + "effects": [ + "730f92993963", + "82cd71d524c8", + "067cef118d9f", + "ac9996319e05", + "180125f5d1a6", + "6eb4e79ad99a", + "2e80de97dd3b", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.inner-ok-missing:created", + "observation": { + "sender": ["2473f12c7cdd", "ff28e2c78e1b"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "97dc8fc98386", + "effects": [ + "730f92993963", + "82cd71d524c8", + "067cef118d9f", + "ac9996319e05", + "180125f5d1a6", + "6eb4e79ad99a", + "12b9d0436b8a", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.inner-false-string-error:created", + "observation": { + "sender": ["2473f12c7cdd", "89456eae5a16"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "97dc8fc98386", + "effects": [ + "730f92993963", + "82cd71d524c8", + "067cef118d9f", + "ac9996319e05", + "180125f5d1a6", + "6eb4e79ad99a", + "12b9d0436b8a", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.inner-false-object-error:created", + "observation": { + "sender": ["2473f12c7cdd", "f73b6faeedba"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "97dc8fc98386", + "effects": [ + "730f92993963", + "82cd71d524c8", + "067cef118d9f", + "ac9996319e05", + "180125f5d1a6", + "6eb4e79ad99a", + "12b9d0436b8a", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.outer-refused:created", + "observation": { + "sender": ["2473f12c7cdd", "c7d9517809c8"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "7b27297e7f2d", + "effects": [ + "730f92993963", + "82cd71d524c8", + "067cef118d9f", + "ba65a7abe43b", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.outer-refused-no-message:created", + "observation": { + "sender": ["2473f12c7cdd", "2f13b6f74cc6"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "33e3b949d4c5", + "effects": [ + "730f92993963", + "82cd71d524c8", + "067cef118d9f", + "82cd71d524c8", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.method-not-found:created", + "observation": { + "sender": ["2473f12c7cdd", "adfc4e9a82be"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "1bb065c2a768", + "effects": [ + "730f92993963", + "82cd71d524c8", + "067cef118d9f", + "186f44bc465a", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.transport-rejection:created", + "observation": { + "sender": ["2473f12c7cdd", "31738898988e"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "2fac0da15fae", + "effects": [ + "730f92993963", + "82cd71d524c8", + "067cef118d9f", + "945ea389c1ef", + "c9cb32059b8d" + ] + } + }, + { + "id": "settings-task-workspace-create-linear.transport-rejection-no-message:created", + "observation": { + "sender": ["2473f12c7cdd", "37345621a939"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "33e3b949d4c5", + "effects": [ + "730f92993963", + "82cd71d524c8", + "067cef118d9f", + "82cd71d524c8", + "c9cb32059b8d" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json index 1a43cd52057..acd992a7643 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.task-workspace-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.task-workspace", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "994ea8b4ddb05774a8c2d5902bb68bf5e8f25399a787262b8f23f458f2790698", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json index b71bb648aae..362a218cdad 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-linear.status-1.json @@ -3,9 +3,9 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "30b3f8d79589e9fb3d7ef804233554fa231f68ab88e5130ddfa78e79221e3c78", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json index cb92182e684..45564a167e7 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-preflight.check-1.json @@ -3,9 +3,9 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "a5366cbd31d899feeb7e1901edd0c78191c2c8c8179ad5d5b24b7ca22bd538f8", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json index d73c6ab0aa7..e26dc16d6ad 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "797ea410af6536410335ebe93b8bc354cd633cf980eb95efbb10bc46f5516cb7", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json index d9457d90a8f..94da15df846 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-context-ui.get-1.json @@ -3,9 +3,9 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "3cd29e7b6a1cdfd99796a58cf6ad6f9aa3dbac75dd6e989ea99ba6027c210028", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json b/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json index 34486618f06..170d452ac51 100644 --- a/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json +++ b/mobile/rpc-foundation/goldens/matrix-settings.workspace-submit-settings.get-1.json @@ -3,9 +3,9 @@ "family": "settings.workspace-submit", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "a89bdf93df71a958810aba72c80e42f663644781a29e934898e2ddf86c5dd5d5", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.reposlug-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.reposlug-1.json new file mode 100644 index 00000000000..e408bae4119 --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.reposlug-1.json @@ -0,0 +1,1081 @@ +{ + "operation": "tasks.paste-lookup", + "family": "tasks.paste-lookup", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "749f877ac0c08860f74fc56e34b07f51960dda5bd1fdcf9df847b5200bf67779", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "09b235c17bb0": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "0e9d6525a582": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "11ab96fde6c9": { + "name": "gitlab.workItemByPath#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.workItemByPath\",\"params\":{\"repo\":\"id:repo-1\",\"host\":\"gitlab.com\",\"path\":\"group/project\",\"iid\":7,\"type\":\"issue\"}}" + }, + "135faf86ace7": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "error": "inner refused", + "ok": false + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "1c3567f57943": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true + } + } + }, + "2113a0cc7708": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "285ceb964a96": { + "name": "github.repoSlug#2", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-2" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "pending", + "startedAt": 0 + } + }, + "398515139d34": { + "name": "github.repoSlug#2", + "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-2\"}}" + }, + "46e234697d93": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot read properties of undefined (reading 'toLowerCase')", + "isRpcDeliveryUnknown": false + } + }, + "4a3429622287": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "4eec4620374a": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "error": { + "message": "inner refused" + }, + "ok": false + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "5248ebd8f08a": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "65342779da15": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "number": 12, + "title": "twelve" + } + } + } + }, + "6662fbe6a28e": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-4", + "ok": false + } + } + }, + "731507dd2e23": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + } + }, + "7445a582a9c8": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "owner": "owner", + "repo": "repo" + } + } + } + }, + "8f410b944069": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-4", + "ok": false + } + } + }, + "9270aeb7d9c6": { + "status": "pending", + "startedAt": 0 + }, + "9e6675f5d017": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "a091594f56e6": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "$rpc": "null" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "a3d7eef0da8a": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-4", + "ok": false + } + } + }, + "a45a7dd68af6": { + "name": "github.repoSlug#1", + "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "aaad292bbd1b": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "aaf80675fc49": { + "name": "github.workItem#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItem\",\"params\":{\"repo\":\"id:repo-1\",\"number\":12}}" + }, + "b303200fec39": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "bd533f6b0b40": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "cded841b4a1b": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "d48fa181d583": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "error": "refused" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "e1f537905a65": { + "name": "github.workItemByOwnerRepo#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItemByOwnerRepo\",\"params\":{\"repo\":\"id:repo-1\",\"owner\":\"owner\",\"ownerRepo\":\"repo\",\"number\":12,\"type\":\"issue\"}}" + }, + "e29333b1693f": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "iid": 7, + "title": "seven" + } + } + } + }, + "e2af62b90b0b": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "$rpc": "null" + } + ], + [ + "repo-2", + { + "$rpc": "null" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "$rpc": "null" + } + }, + "e970eb27f5ca": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "ee20a1dc39e7": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "null" + } + }, + "f0486ebd441c": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "f9ea1f747023": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "number": 12, + "title": "twelve" + } + } + } + } + }, + "recording": { + "scenario": "matrix-tasks.paste-lookup-github.reposlug-1", + "checkpoints": [ + { + "id": "tw-paste-lookup-resolved.prelude:by-number", + "observation": { + "sender": ["65342779da15"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "731507dd2e23" + }, + "state": "09b235c17bb0", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.prelude:by-slug", + "observation": { + "sender": ["65342779da15", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23" + }, + "state": "e970eb27f5ca", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.prelude:gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "4a3429622287", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.normal:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "2113a0cc7708", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-absent:repo-slug-matched", + "observation": { + "sender": [ + "65342779da15", + "f9ea1f747023", + "e29333b1693f", + "1c3567f57943", + "285ceb964a96" + ], + "payloads": [ + "aaf80675fc49", + "e1f537905a65", + "11ab96fde6c9", + "a45a7dd68af6", + "398515139d34" + ], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "9270aeb7d9c6" + }, + "state": "a091594f56e6", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-null:repo-slug-matched", + "observation": { + "sender": [ + "65342779da15", + "f9ea1f747023", + "e29333b1693f", + "aaad292bbd1b", + "285ceb964a96" + ], + "payloads": [ + "aaf80675fc49", + "e1f537905a65", + "11ab96fde6c9", + "a45a7dd68af6", + "398515139d34" + ], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "9270aeb7d9c6" + }, + "state": "a091594f56e6", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-ok-missing:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "e29333b1693f", "f0486ebd441c"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "46e234697d93" + }, + "state": "d48fa181d583", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-string-error:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "e29333b1693f", "9e6675f5d017"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "46e234697d93" + }, + "state": "135faf86ace7", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-object-error:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "e29333b1693f", "cded841b4a1b"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "46e234697d93" + }, + "state": "4eec4620374a", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused:repo-slug-matched", + "observation": { + "sender": [ + "65342779da15", + "f9ea1f747023", + "e29333b1693f", + "a3d7eef0da8a", + "285ceb964a96" + ], + "payloads": [ + "aaf80675fc49", + "e1f537905a65", + "11ab96fde6c9", + "a45a7dd68af6", + "398515139d34" + ], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "9270aeb7d9c6" + }, + "state": "a091594f56e6", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused-no-message:repo-slug-matched", + "observation": { + "sender": [ + "65342779da15", + "f9ea1f747023", + "e29333b1693f", + "8f410b944069", + "285ceb964a96" + ], + "payloads": [ + "aaf80675fc49", + "e1f537905a65", + "11ab96fde6c9", + "a45a7dd68af6", + "398515139d34" + ], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "9270aeb7d9c6" + }, + "state": "a091594f56e6", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.method-not-found:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "e29333b1693f", "6662fbe6a28e"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "ee20a1dc39e7" + }, + "state": "e2af62b90b0b", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection:repo-slug-matched", + "observation": { + "sender": [ + "65342779da15", + "f9ea1f747023", + "e29333b1693f", + "5248ebd8f08a", + "285ceb964a96" + ], + "payloads": [ + "aaf80675fc49", + "e1f537905a65", + "11ab96fde6c9", + "a45a7dd68af6", + "398515139d34" + ], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "9270aeb7d9c6" + }, + "state": "a091594f56e6", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection-no-message:repo-slug-matched", + "observation": { + "sender": [ + "65342779da15", + "f9ea1f747023", + "e29333b1693f", + "b303200fec39", + "285ceb964a96" + ], + "payloads": [ + "aaf80675fc49", + "e1f537905a65", + "11ab96fde6c9", + "a45a7dd68af6", + "398515139d34" + ], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "9270aeb7d9c6" + }, + "state": "a091594f56e6", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitem-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitem-1.json new file mode 100644 index 00000000000..4993b35565a --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitem-1.json @@ -0,0 +1,1645 @@ +{ + "operation": "tasks.paste-lookup", + "family": "tasks.paste-lookup", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "2a11156b7b6d3cf0773c8dc02a72e126bc187dcf62ad7d1bf5f30d7b27192b03", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "06c63d693b0e": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-1", + "ok": false + } + } + }, + "09b235c17bb0": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "0e9d6525a582": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "11ab96fde6c9": { + "name": "gitlab.workItemByPath#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.workItemByPath\",\"params\":{\"repo\":\"id:repo-1\",\"host\":\"gitlab.com\",\"path\":\"group/project\",\"iid\":7,\"type\":\"issue\"}}" + }, + "19bc74accf11": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "1e7d56be018c": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "2113a0cc7708": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "21981303c684": { + "by-number": { + "$rpc": "null" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "32a7c0ae7918": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "outer refused", + "isRpcDeliveryUnknown": false + } + }, + "38e35cd6299a": { + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "3bae2da7492a": { + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "3c03bbd195d8": { + "by-number": { + "error": "inner refused", + "ok": false, + "repoId": "repo-1" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "3e4f8a2833ba": { + "by-number": { + "error": "inner refused", + "ok": false, + "repoId": "repo-1" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "4267f9cc3919": { + "by-number": { + "error": { + "message": "inner refused" + }, + "ok": false, + "repoId": "repo-1" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "46daeacd502c": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "refused", + "repoId": "repo-1" + } + }, + "4a3429622287": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "5827c760c69a": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "5b601868bb59": { + "by-number": { + "error": { + "message": "inner refused" + }, + "ok": false, + "repoId": "repo-1" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "65342779da15": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "number": 12, + "title": "twelve" + } + } + } + }, + "731507dd2e23": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + } + }, + "73fe68f6a6fc": { + "by-number": { + "error": "inner refused", + "ok": false, + "repoId": "repo-1" + }, + "cache": [] + }, + "7445a582a9c8": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "owner": "owner", + "repo": "repo" + } + } + } + }, + "870d10fe8de9": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + }, + "894b40a0b814": { + "by-number": { + "$rpc": "null" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "896610e0c4e7": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "8aa944d2f7a1": { + "cache": [] + }, + "8f8ff0f7d554": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "90de73e52a3d": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-1", + "ok": false + } + } + }, + "9dcdd903c10f": { + "by-number": { + "error": "refused", + "repoId": "repo-1" + }, + "cache": [] + }, + "9e9f15f7df58": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "inner refused", + "ok": false, + "repoId": "repo-1" + } + }, + "a45a7dd68af6": { + "name": "github.repoSlug#1", + "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "a7f4472cdb70": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "message": "inner refused" + }, + "ok": false, + "repoId": "repo-1" + } + }, + "a947768bc0ed": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + }, + "aaf80675fc49": { + "name": "github.workItem#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItem\",\"params\":{\"repo\":\"id:repo-1\",\"number\":12}}" + }, + "ad658847a638": { + "by-number": { + "error": "refused", + "repoId": "repo-1" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "b19c59c5ee88": { + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "b70f6ec811e0": { + "by-number": { + "error": "inner refused", + "ok": false, + "repoId": "repo-1" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "b948e8307e81": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Unknown method", + "isRpcDeliveryUnknown": false + } + }, + "bd533f6b0b40": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "c392cc9aa63a": { + "by-number": { + "$rpc": "null" + }, + "cache": [] + }, + "c57df09a398c": { + "by-number": { + "error": "refused", + "repoId": "repo-1" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "c6646b64fc57": { + "by-number": { + "error": { + "message": "inner refused" + }, + "ok": false, + "repoId": "repo-1" + }, + "cache": [] + }, + "c7584e82c72f": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + }, + "c9a1abec42e3": { + "by-number": { + "$rpc": "null" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "d0150efe4124": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "d65cceb204a7": { + "by-number": { + "error": "refused", + "repoId": "repo-1" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "de772915aa03": { + "by-number": { + "error": { + "message": "inner refused" + }, + "ok": false, + "repoId": "repo-1" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "e1f537905a65": { + "name": "github.workItemByOwnerRepo#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItemByOwnerRepo\",\"params\":{\"repo\":\"id:repo-1\",\"owner\":\"owner\",\"ownerRepo\":\"repo\",\"number\":12,\"type\":\"issue\"}}" + }, + "e29333b1693f": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "iid": 7, + "title": "seven" + } + } + } + }, + "e970eb27f5ca": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "ee20a1dc39e7": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "null" + } + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + }, + "f9ea1f747023": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "number": 12, + "title": "twelve" + } + } + } + }, + "fb69e80392e8": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true + } + } + } + }, + "recording": { + "scenario": "matrix-tasks.paste-lookup-github.workitem-1", + "checkpoints": [ + { + "id": "tw-paste-lookup-resolved.normal:by-number", + "observation": { + "sender": ["65342779da15"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "731507dd2e23" + }, + "state": "09b235c17bb0", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.normal:by-slug", + "observation": { + "sender": ["65342779da15", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23" + }, + "state": "e970eb27f5ca", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.normal:gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "4a3429622287", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.normal:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "2113a0cc7708", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-absent:by-number", + "observation": { + "sender": ["fb69e80392e8"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "ee20a1dc39e7" + }, + "state": "c392cc9aa63a", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-absent:by-slug", + "observation": { + "sender": ["fb69e80392e8", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "ee20a1dc39e7", + "by-slug": "731507dd2e23" + }, + "state": "21981303c684", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-absent:gitlab-path", + "observation": { + "sender": ["fb69e80392e8", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "ee20a1dc39e7", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "c9a1abec42e3", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-absent:repo-slug-matched", + "observation": { + "sender": ["fb69e80392e8", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "ee20a1dc39e7", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "894b40a0b814", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-null:by-number", + "observation": { + "sender": ["5827c760c69a"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "ee20a1dc39e7" + }, + "state": "c392cc9aa63a", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-null:by-slug", + "observation": { + "sender": ["5827c760c69a", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "ee20a1dc39e7", + "by-slug": "731507dd2e23" + }, + "state": "21981303c684", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-null:gitlab-path", + "observation": { + "sender": ["5827c760c69a", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "ee20a1dc39e7", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "c9a1abec42e3", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-null:repo-slug-matched", + "observation": { + "sender": ["5827c760c69a", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "ee20a1dc39e7", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "894b40a0b814", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-ok-missing:by-number", + "observation": { + "sender": ["19bc74accf11"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "46daeacd502c" + }, + "state": "9dcdd903c10f", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-ok-missing:by-slug", + "observation": { + "sender": ["19bc74accf11", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "46daeacd502c", + "by-slug": "731507dd2e23" + }, + "state": "d65cceb204a7", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-ok-missing:gitlab-path", + "observation": { + "sender": ["19bc74accf11", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "46daeacd502c", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "c57df09a398c", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-ok-missing:repo-slug-matched", + "observation": { + "sender": ["19bc74accf11", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "46daeacd502c", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "ad658847a638", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-string-error:by-number", + "observation": { + "sender": ["d0150efe4124"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "9e9f15f7df58" + }, + "state": "73fe68f6a6fc", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-string-error:by-slug", + "observation": { + "sender": ["d0150efe4124", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "9e9f15f7df58", + "by-slug": "731507dd2e23" + }, + "state": "b70f6ec811e0", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-string-error:gitlab-path", + "observation": { + "sender": ["d0150efe4124", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "9e9f15f7df58", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "3e4f8a2833ba", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-string-error:repo-slug-matched", + "observation": { + "sender": ["d0150efe4124", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "9e9f15f7df58", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "3c03bbd195d8", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-object-error:by-number", + "observation": { + "sender": ["896610e0c4e7"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "a7f4472cdb70" + }, + "state": "c6646b64fc57", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-object-error:by-slug", + "observation": { + "sender": ["896610e0c4e7", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "a7f4472cdb70", + "by-slug": "731507dd2e23" + }, + "state": "4267f9cc3919", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-object-error:gitlab-path", + "observation": { + "sender": ["896610e0c4e7", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "a7f4472cdb70", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "5b601868bb59", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-object-error:repo-slug-matched", + "observation": { + "sender": ["896610e0c4e7", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "a7f4472cdb70", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "de772915aa03", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused:by-number", + "observation": { + "sender": ["90de73e52a3d"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "32a7c0ae7918" + }, + "state": "8aa944d2f7a1", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused:by-slug", + "observation": { + "sender": ["90de73e52a3d", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "32a7c0ae7918", + "by-slug": "731507dd2e23" + }, + "state": "b19c59c5ee88", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused:gitlab-path", + "observation": { + "sender": ["90de73e52a3d", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "32a7c0ae7918", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "38e35cd6299a", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused:repo-slug-matched", + "observation": { + "sender": ["90de73e52a3d", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "32a7c0ae7918", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "3bae2da7492a", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused-no-message:by-number", + "observation": { + "sender": ["870d10fe8de9"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "f3b516f62081" + }, + "state": "8aa944d2f7a1", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused-no-message:by-slug", + "observation": { + "sender": ["870d10fe8de9", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "f3b516f62081", + "by-slug": "731507dd2e23" + }, + "state": "b19c59c5ee88", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused-no-message:gitlab-path", + "observation": { + "sender": ["870d10fe8de9", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "f3b516f62081", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "38e35cd6299a", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused-no-message:repo-slug-matched", + "observation": { + "sender": ["870d10fe8de9", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "f3b516f62081", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "3bae2da7492a", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.method-not-found:by-number", + "observation": { + "sender": ["06c63d693b0e"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "b948e8307e81" + }, + "state": "8aa944d2f7a1", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.method-not-found:by-slug", + "observation": { + "sender": ["06c63d693b0e", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "b948e8307e81", + "by-slug": "731507dd2e23" + }, + "state": "b19c59c5ee88", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.method-not-found:gitlab-path", + "observation": { + "sender": ["06c63d693b0e", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "b948e8307e81", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "38e35cd6299a", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.method-not-found:repo-slug-matched", + "observation": { + "sender": ["06c63d693b0e", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "b948e8307e81", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "3bae2da7492a", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection:by-number", + "observation": { + "sender": ["1e7d56be018c"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "a947768bc0ed" + }, + "state": "8aa944d2f7a1", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection:by-slug", + "observation": { + "sender": ["1e7d56be018c", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "a947768bc0ed", + "by-slug": "731507dd2e23" + }, + "state": "b19c59c5ee88", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection:gitlab-path", + "observation": { + "sender": ["1e7d56be018c", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "a947768bc0ed", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "38e35cd6299a", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection:repo-slug-matched", + "observation": { + "sender": ["1e7d56be018c", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "a947768bc0ed", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "3bae2da7492a", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection-no-message:by-number", + "observation": { + "sender": ["8f8ff0f7d554"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "c7584e82c72f" + }, + "state": "8aa944d2f7a1", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection-no-message:by-slug", + "observation": { + "sender": ["8f8ff0f7d554", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "c7584e82c72f", + "by-slug": "731507dd2e23" + }, + "state": "b19c59c5ee88", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection-no-message:gitlab-path", + "observation": { + "sender": ["8f8ff0f7d554", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "c7584e82c72f", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "38e35cd6299a", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection-no-message:repo-slug-matched", + "observation": { + "sender": ["8f8ff0f7d554", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "c7584e82c72f", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "3bae2da7492a", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitembyownerrepo-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitembyownerrepo-1.json new file mode 100644 index 00000000000..f425da8f3fa --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-github.workitembyownerrepo-1.json @@ -0,0 +1,1513 @@ +{ + "operation": "tasks.paste-lookup", + "family": "tasks.paste-lookup", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "4c2560ac236a1cc1ef239b7c97a0436e115b19a6ad3ddd96b3b77970aa631ae3", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "043383809888": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "error": { + "message": "inner refused" + }, + "ok": false, + "repoId": "repo-1" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "09b235c17bb0": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "0e35851dfc19": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-2", + "ok": false + } + } + }, + "0e9d6525a582": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "11ab96fde6c9": { + "name": "gitlab.workItemByPath#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.workItemByPath\",\"params\":{\"repo\":\"id:repo-1\",\"host\":\"gitlab.com\",\"path\":\"group/project\",\"iid\":7,\"type\":\"issue\"}}" + }, + "1930e5b10aa4": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "2113a0cc7708": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "27ddfa6b2efa": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "error": { + "message": "inner refused" + }, + "ok": false, + "repoId": "repo-1" + }, + "cache": [] + }, + "32a7c0ae7918": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "outer refused", + "isRpcDeliveryUnknown": false + } + }, + "34d2c8648702": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-2", + "ok": false + } + } + }, + "36efe7e0f4f2": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "error": "refused", + "repoId": "repo-1" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "3b70826f7fe6": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true + } + } + }, + "3c4b264bef1c": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "$rpc": "null" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "46daeacd502c": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "refused", + "repoId": "repo-1" + } + }, + "49054e5c9fe8": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "4a3429622287": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "518d26b50905": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "65342779da15": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "number": 12, + "title": "twelve" + } + } + } + }, + "6ec2e8b6f903": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "$rpc": "null" + }, + "cache": [] + }, + "731507dd2e23": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + } + }, + "7445a582a9c8": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "owner": "owner", + "repo": "repo" + } + } + } + }, + "825e80908bc2": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "873ee3388e70": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "error": "inner refused", + "ok": false, + "repoId": "repo-1" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "90adb9377343": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "9221b9a7a4b0": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "92bb68fe4007": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "error": "inner refused", + "ok": false, + "repoId": "repo-1" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "9e9f15f7df58": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "inner refused", + "ok": false, + "repoId": "repo-1" + } + }, + "9fe9e3dcad5b": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-2", + "ok": false + } + } + }, + "a45a7dd68af6": { + "name": "github.repoSlug#1", + "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "a7f4472cdb70": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "message": "inner refused" + }, + "ok": false, + "repoId": "repo-1" + } + }, + "a947768bc0ed": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + }, + "aaf80675fc49": { + "name": "github.workItem#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItem\",\"params\":{\"repo\":\"id:repo-1\",\"number\":12}}" + }, + "ab24157c895e": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "error": "refused", + "repoId": "repo-1" + }, + "cache": [] + }, + "b948e8307e81": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Unknown method", + "isRpcDeliveryUnknown": false + } + }, + "bd533f6b0b40": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "bf5c299a7c14": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "$rpc": "null" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "c2fb4513d62f": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "error": "refused", + "repoId": "repo-1" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "c4a429577522": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "c7584e82c72f": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + }, + "d58cca0b1bf7": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "dffa1578b2eb": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "error": { + "message": "inner refused" + }, + "ok": false, + "repoId": "repo-1" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "e1f537905a65": { + "name": "github.workItemByOwnerRepo#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItemByOwnerRepo\",\"params\":{\"repo\":\"id:repo-1\",\"owner\":\"owner\",\"ownerRepo\":\"repo\",\"number\":12,\"type\":\"issue\"}}" + }, + "e29333b1693f": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "iid": 7, + "title": "seven" + } + } + } + }, + "e970eb27f5ca": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "ebc4e477d2ce": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "error": "inner refused", + "ok": false, + "repoId": "repo-1" + }, + "cache": [] + }, + "ee20a1dc39e7": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "null" + } + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + }, + "f9ea1f747023": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "number": 12, + "title": "twelve" + } + } + } + } + }, + "recording": { + "scenario": "matrix-tasks.paste-lookup-github.workitembyownerrepo-1", + "checkpoints": [ + { + "id": "tw-paste-lookup-resolved.prelude:by-number", + "observation": { + "sender": ["65342779da15"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "731507dd2e23" + }, + "state": "09b235c17bb0", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.normal:by-slug", + "observation": { + "sender": ["65342779da15", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23" + }, + "state": "e970eb27f5ca", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.normal:gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "4a3429622287", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.normal:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "2113a0cc7708", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-absent:by-slug", + "observation": { + "sender": ["65342779da15", "3b70826f7fe6"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "ee20a1dc39e7" + }, + "state": "6ec2e8b6f903", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-absent:gitlab-path", + "observation": { + "sender": ["65342779da15", "3b70826f7fe6", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "ee20a1dc39e7", + "gitlab-path": "bd533f6b0b40" + }, + "state": "3c4b264bef1c", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-absent:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "3b70826f7fe6", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "ee20a1dc39e7", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "bf5c299a7c14", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-null:by-slug", + "observation": { + "sender": ["65342779da15", "d58cca0b1bf7"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "ee20a1dc39e7" + }, + "state": "6ec2e8b6f903", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-null:gitlab-path", + "observation": { + "sender": ["65342779da15", "d58cca0b1bf7", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "ee20a1dc39e7", + "gitlab-path": "bd533f6b0b40" + }, + "state": "3c4b264bef1c", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-null:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "d58cca0b1bf7", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "ee20a1dc39e7", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "bf5c299a7c14", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-ok-missing:by-slug", + "observation": { + "sender": ["65342779da15", "c4a429577522"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "46daeacd502c" + }, + "state": "ab24157c895e", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-ok-missing:gitlab-path", + "observation": { + "sender": ["65342779da15", "c4a429577522", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "46daeacd502c", + "gitlab-path": "bd533f6b0b40" + }, + "state": "c2fb4513d62f", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-ok-missing:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "c4a429577522", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "46daeacd502c", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "36efe7e0f4f2", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-string-error:by-slug", + "observation": { + "sender": ["65342779da15", "90adb9377343"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "9e9f15f7df58" + }, + "state": "ebc4e477d2ce", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-string-error:gitlab-path", + "observation": { + "sender": ["65342779da15", "90adb9377343", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "9e9f15f7df58", + "gitlab-path": "bd533f6b0b40" + }, + "state": "92bb68fe4007", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-string-error:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "90adb9377343", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "9e9f15f7df58", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "873ee3388e70", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-object-error:by-slug", + "observation": { + "sender": ["65342779da15", "9221b9a7a4b0"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "a7f4472cdb70" + }, + "state": "27ddfa6b2efa", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-object-error:gitlab-path", + "observation": { + "sender": ["65342779da15", "9221b9a7a4b0", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "a7f4472cdb70", + "gitlab-path": "bd533f6b0b40" + }, + "state": "dffa1578b2eb", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-object-error:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "9221b9a7a4b0", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "a7f4472cdb70", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "043383809888", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused:by-slug", + "observation": { + "sender": ["65342779da15", "34d2c8648702"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "32a7c0ae7918" + }, + "state": "09b235c17bb0", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused:gitlab-path", + "observation": { + "sender": ["65342779da15", "34d2c8648702", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "32a7c0ae7918", + "gitlab-path": "bd533f6b0b40" + }, + "state": "49054e5c9fe8", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "34d2c8648702", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "32a7c0ae7918", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "1930e5b10aa4", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused-no-message:by-slug", + "observation": { + "sender": ["65342779da15", "9fe9e3dcad5b"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "f3b516f62081" + }, + "state": "09b235c17bb0", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused-no-message:gitlab-path", + "observation": { + "sender": ["65342779da15", "9fe9e3dcad5b", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "f3b516f62081", + "gitlab-path": "bd533f6b0b40" + }, + "state": "49054e5c9fe8", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused-no-message:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "9fe9e3dcad5b", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "f3b516f62081", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "1930e5b10aa4", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.method-not-found:by-slug", + "observation": { + "sender": ["65342779da15", "0e35851dfc19"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "b948e8307e81" + }, + "state": "09b235c17bb0", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.method-not-found:gitlab-path", + "observation": { + "sender": ["65342779da15", "0e35851dfc19", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "b948e8307e81", + "gitlab-path": "bd533f6b0b40" + }, + "state": "49054e5c9fe8", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.method-not-found:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "0e35851dfc19", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "b948e8307e81", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "1930e5b10aa4", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection:by-slug", + "observation": { + "sender": ["65342779da15", "518d26b50905"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "a947768bc0ed" + }, + "state": "09b235c17bb0", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection:gitlab-path", + "observation": { + "sender": ["65342779da15", "518d26b50905", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "a947768bc0ed", + "gitlab-path": "bd533f6b0b40" + }, + "state": "49054e5c9fe8", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "518d26b50905", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "a947768bc0ed", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "1930e5b10aa4", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection-no-message:by-slug", + "observation": { + "sender": ["65342779da15", "825e80908bc2"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "c7584e82c72f" + }, + "state": "09b235c17bb0", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection-no-message:gitlab-path", + "observation": { + "sender": ["65342779da15", "825e80908bc2", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "c7584e82c72f", + "gitlab-path": "bd533f6b0b40" + }, + "state": "49054e5c9fe8", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection-no-message:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "825e80908bc2", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "c7584e82c72f", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "1930e5b10aa4", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-gitlab.workitembypath-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-gitlab.workitembypath-1.json new file mode 100644 index 00000000000..5214024b62a --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.paste-lookup-gitlab.workitembypath-1.json @@ -0,0 +1,1319 @@ +{ + "operation": "tasks.paste-lookup", + "family": "tasks.paste-lookup", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "ab5511fa34181dc9de590df2fe57a0d061a261e7b204a6ef830c03bc53923d65", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "06c1311be9ff": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "$rpc": "null" + } + }, + "09b235c17bb0": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "0b3a62a33eb9": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "error": "refused", + "repoId": "repo-1" + } + }, + "0c4bd9fe5448": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "0e9d6525a582": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "11ab96fde6c9": { + "name": "gitlab.workItemByPath#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.workItemByPath\",\"params\":{\"repo\":\"id:repo-1\",\"host\":\"gitlab.com\",\"path\":\"group/project\",\"iid\":7,\"type\":\"issue\"}}" + }, + "2113a0cc7708": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "22a0e7139433": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "237ac027130f": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "error": "inner refused", + "ok": false, + "repoId": "repo-1" + } + }, + "2c926252e701": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "32a7c0ae7918": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "outer refused", + "isRpcDeliveryUnknown": false + } + }, + "46daeacd502c": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "refused", + "repoId": "repo-1" + } + }, + "4a3429622287": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "4ef10450d3fc": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-3", + "ok": false + } + } + }, + "5f9434462f8a": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true + } + } + }, + "65342779da15": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "number": 12, + "title": "twelve" + } + } + } + }, + "6945ba429114": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "error": "refused", + "repoId": "repo-1" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "70f924b6a03a": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "error": { + "message": "inner refused" + }, + "ok": false, + "repoId": "repo-1" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "731507dd2e23": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + } + }, + "737574c61e8d": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-3", + "ok": false + } + } + }, + "7445a582a9c8": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "owner": "owner", + "repo": "repo" + } + } + } + }, + "754e655d6508": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "error": { + "message": "inner refused" + }, + "ok": false, + "repoId": "repo-1" + } + }, + "7a02e1f7b185": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "9e9f15f7df58": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "inner refused", + "ok": false, + "repoId": "repo-1" + } + }, + "a1e6f2b40722": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "$rpc": "null" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "a346acfeb887": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "a45a7dd68af6": { + "name": "github.repoSlug#1", + "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "a7f4472cdb70": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "message": "inner refused" + }, + "ok": false, + "repoId": "repo-1" + } + }, + "a947768bc0ed": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + }, + "aaf80675fc49": { + "name": "github.workItem#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItem\",\"params\":{\"repo\":\"id:repo-1\",\"number\":12}}" + }, + "b948e8307e81": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Unknown method", + "isRpcDeliveryUnknown": false + } + }, + "bd533f6b0b40": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "c7584e82c72f": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + }, + "d1f460d3c414": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "error": "inner refused", + "ok": false, + "repoId": "repo-1" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "dfcabc236ad7": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "e1f537905a65": { + "name": "github.workItemByOwnerRepo#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItemByOwnerRepo\",\"params\":{\"repo\":\"id:repo-1\",\"owner\":\"owner\",\"ownerRepo\":\"repo\",\"number\":12,\"type\":\"issue\"}}" + }, + "e29333b1693f": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "iid": 7, + "title": "seven" + } + } + } + }, + "e970eb27f5ca": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "ee20a1dc39e7": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "null" + } + }, + "f0766555428a": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-3", + "ok": false + } + } + }, + "f215cf4a0ca3": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + }, + "f9ea1f747023": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "number": 12, + "title": "twelve" + } + } + } + } + }, + "recording": { + "scenario": "matrix-tasks.paste-lookup-gitlab.workitembypath-1", + "checkpoints": [ + { + "id": "tw-paste-lookup-resolved.prelude:by-number", + "observation": { + "sender": ["65342779da15"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "731507dd2e23" + }, + "state": "09b235c17bb0", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.prelude:by-slug", + "observation": { + "sender": ["65342779da15", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23" + }, + "state": "e970eb27f5ca", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.normal:gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "4a3429622287", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.normal:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "2113a0cc7708", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-absent:gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "5f9434462f8a"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "ee20a1dc39e7" + }, + "state": "06c1311be9ff", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-absent:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "5f9434462f8a", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "ee20a1dc39e7", + "repo-slug": "0e9d6525a582" + }, + "state": "a1e6f2b40722", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-null:gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "f215cf4a0ca3"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "ee20a1dc39e7" + }, + "state": "06c1311be9ff", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.result-null:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "f215cf4a0ca3", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "ee20a1dc39e7", + "repo-slug": "0e9d6525a582" + }, + "state": "a1e6f2b40722", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-ok-missing:gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "22a0e7139433"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "46daeacd502c" + }, + "state": "0b3a62a33eb9", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-ok-missing:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "22a0e7139433", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "46daeacd502c", + "repo-slug": "0e9d6525a582" + }, + "state": "6945ba429114", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-string-error:gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "0c4bd9fe5448"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "9e9f15f7df58" + }, + "state": "237ac027130f", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-string-error:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "0c4bd9fe5448", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "9e9f15f7df58", + "repo-slug": "0e9d6525a582" + }, + "state": "d1f460d3c414", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-object-error:gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "dfcabc236ad7"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "a7f4472cdb70" + }, + "state": "754e655d6508", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.inner-false-object-error:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "dfcabc236ad7", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "a7f4472cdb70", + "repo-slug": "0e9d6525a582" + }, + "state": "70f924b6a03a", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused:gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "4ef10450d3fc"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "32a7c0ae7918" + }, + "state": "e970eb27f5ca", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "4ef10450d3fc", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "32a7c0ae7918", + "repo-slug": "0e9d6525a582" + }, + "state": "7a02e1f7b185", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused-no-message:gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "f0766555428a"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "f3b516f62081" + }, + "state": "e970eb27f5ca", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.outer-refused-no-message:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "f0766555428a", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "f3b516f62081", + "repo-slug": "0e9d6525a582" + }, + "state": "7a02e1f7b185", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.method-not-found:gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "737574c61e8d"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "b948e8307e81" + }, + "state": "e970eb27f5ca", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.method-not-found:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "737574c61e8d", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "b948e8307e81", + "repo-slug": "0e9d6525a582" + }, + "state": "7a02e1f7b185", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection:gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "2c926252e701"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "a947768bc0ed" + }, + "state": "e970eb27f5ca", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "2c926252e701", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "a947768bc0ed", + "repo-slug": "0e9d6525a582" + }, + "state": "7a02e1f7b185", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection-no-message:gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "a346acfeb887"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "c7584e82c72f" + }, + "state": "e970eb27f5ca", + "effects": [] + } + }, + { + "id": "tw-paste-lookup-resolved.transport-rejection-no-message:repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "a346acfeb887", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "c7584e82c72f", + "repo-slug": "0e9d6525a582" + }, + "state": "7a02e1f7b185", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-github.listworkitems-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-github.listworkitems-1.json new file mode 100644 index 00000000000..4c21157e14c --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-github.listworkitems-1.json @@ -0,0 +1,1885 @@ +{ + "operation": "tasks.smart-source-search", + "family": "tasks.smart-source-search", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "ea5c32c4dbb67aae1ebaf809a28104d52d189e5153d9b28285f4d8a6d78753ea", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "05e9b743fb1d": { + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "13833f2512ec": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "13ebc07aa6fe": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-3" + } + ] + }, + "155f61ed496f": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot read properties of null (reading 'items')", + "isRpcDeliveryUnknown": false + } + }, + "253629bd0d20": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ] + }, + "25716369cd8f": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [] + }, + "25f88995b39a": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "refs": ["main", "release"] + } + } + } + }, + "26dc3b7c8299": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "id": "issue-3" + } + ] + }, + "2cfd107b9660": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "32a7c0ae7918": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "outer refused", + "isRpcDeliveryUnknown": false + } + }, + "36290ab254a4": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ] + }, + "37c4b6aa154e": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "3828d5880c35": { + "name": "gitlab.listWorkItems#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"state\":\"opened\",\"page\":1,\"perPage\":50,\"query\":\"bug\"}}" + }, + "41d2452d4ebe": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "42f4c910f308": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "44136fa355b3": {}, + "50263a3726f9": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-1", + "ok": false + } + } + }, + "518e8334f7d3": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-3" + } + ] + }, + "51a271295555": { + "github": [], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "5bce68072dc3": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "items": [ + { + "number": 1, + "title": "one" + } + ] + } + } + } + }, + "6107c951646f": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "items": [ + { + "id": "issue-1" + } + ] + } + } + } + }, + "61210ae02f8d": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "6e2d75e3bbd7": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "71764b0214a9": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "80cc566cdd55": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-1", + "ok": false + } + } + }, + "867ee0f6f5d8": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "96555ad1314a": { + "github": [] + }, + "a4ee5d16b4f6": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "id": "issue-1" + } + ] + }, + "a85937f48d97": { + "github": [], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "a92cd1dd05af": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-3" + } + ] + }, + "a947768bc0ed": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + }, + "b015aaf3a53a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ] + }, + "b8b02a30b6b8": { + "name": "repo.searchRefs#1", + "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"repo.searchRefs\",\"params\":{\"repo\":\"id:repo-1\",\"query\":\"bug\",\"limit\":20}}" + }, + "b948e8307e81": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Unknown method", + "isRpcDeliveryUnknown": false + } + }, + "c2bf4ae27078": { + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "c43e80126d82": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "c7584e82c72f": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + }, + "ce28e5229996": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + }, + "e97e5a589476": { + "name": "linear.listIssues#1", + "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"linear.listIssues\",\"params\":{\"filter\":\"assigned\",\"limit\":50}}" + }, + "ead829dd6d03": { + "name": "linear.searchIssues#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.searchIssues\",\"params\":{\"query\":\"bug\",\"limit\":50,\"workspaceId\":\"linear-workspace\"}}" + }, + "ee6fe4f97b01": { + "name": "github.listWorkItems#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"limit\":36,\"query\":\"bug\"}}" + }, + "ef416ca3ea2c": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "f32ad26605d0": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": { + "message": "missing", + "type": "not_found" + }, + "items": [ + { + "iid": 2, + "title": "two" + } + ] + } + } + } + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + }, + "f51f34589c7a": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot read properties of undefined (reading 'items')", + "isRpcDeliveryUnknown": false + } + }, + "f7877799c609": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "f8f245caedb5": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true + } + } + }, + "fe7f60b5d785": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-5", + "ok": true, + "result": [ + { + "id": "issue-3" + } + ] + } + } + } + }, + "recording": { + "scenario": "matrix-tasks.smart-source-search-github.listworkitems-1", + "checkpoints": [ + { + "id": "tw-smart-search-all-providers.normal:github-items", + "observation": { + "sender": ["5bce68072dc3"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "36290ab254a4" + }, + "state": "253629bd0d20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.normal:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.normal:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "41d2452d4ebe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.normal:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.normal:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:github-items", + "observation": { + "sender": ["f8f245caedb5"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "f51f34589c7a" + }, + "state": "44136fa355b3", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:gitlab-items", + "observation": { + "sender": ["f8f245caedb5", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "f51f34589c7a", + "gitlab": "6e2d75e3bbd7" + }, + "state": "c2bf4ae27078", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:linear-search", + "observation": { + "sender": ["f8f245caedb5", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "f51f34589c7a", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "05e9b743fb1d", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:branch-refs", + "observation": { + "sender": ["f8f245caedb5", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "f51f34589c7a", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "71764b0214a9", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:linear-assigned-listed", + "observation": { + "sender": [ + "f8f245caedb5", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "f51f34589c7a", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "13ebc07aa6fe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:github-items", + "observation": { + "sender": ["ef416ca3ea2c"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "155f61ed496f" + }, + "state": "44136fa355b3", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:gitlab-items", + "observation": { + "sender": ["ef416ca3ea2c", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "155f61ed496f", + "gitlab": "6e2d75e3bbd7" + }, + "state": "c2bf4ae27078", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:linear-search", + "observation": { + "sender": ["ef416ca3ea2c", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "155f61ed496f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "05e9b743fb1d", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:branch-refs", + "observation": { + "sender": ["ef416ca3ea2c", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "155f61ed496f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "71764b0214a9", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:linear-assigned-listed", + "observation": { + "sender": [ + "ef416ca3ea2c", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "155f61ed496f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "13ebc07aa6fe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:github-items", + "observation": { + "sender": ["f7877799c609"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "25716369cd8f" + }, + "state": "96555ad1314a", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:gitlab-items", + "observation": { + "sender": ["f7877799c609", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "25716369cd8f", + "gitlab": "6e2d75e3bbd7" + }, + "state": "51a271295555", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:linear-search", + "observation": { + "sender": ["f7877799c609", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "25716369cd8f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "a85937f48d97", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:branch-refs", + "observation": { + "sender": ["f7877799c609", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "25716369cd8f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "867ee0f6f5d8", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:linear-assigned-listed", + "observation": { + "sender": [ + "f7877799c609", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "25716369cd8f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "518e8334f7d3", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:github-items", + "observation": { + "sender": ["13833f2512ec"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "25716369cd8f" + }, + "state": "96555ad1314a", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:gitlab-items", + "observation": { + "sender": ["13833f2512ec", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "25716369cd8f", + "gitlab": "6e2d75e3bbd7" + }, + "state": "51a271295555", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:linear-search", + "observation": { + "sender": ["13833f2512ec", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "25716369cd8f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "a85937f48d97", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:branch-refs", + "observation": { + "sender": ["13833f2512ec", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "25716369cd8f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "867ee0f6f5d8", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:linear-assigned-listed", + "observation": { + "sender": [ + "13833f2512ec", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "25716369cd8f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "518e8334f7d3", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:github-items", + "observation": { + "sender": ["61210ae02f8d"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "25716369cd8f" + }, + "state": "96555ad1314a", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:gitlab-items", + "observation": { + "sender": ["61210ae02f8d", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "25716369cd8f", + "gitlab": "6e2d75e3bbd7" + }, + "state": "51a271295555", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:linear-search", + "observation": { + "sender": ["61210ae02f8d", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "25716369cd8f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "a85937f48d97", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:branch-refs", + "observation": { + "sender": ["61210ae02f8d", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "25716369cd8f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "867ee0f6f5d8", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:linear-assigned-listed", + "observation": { + "sender": [ + "61210ae02f8d", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "25716369cd8f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "518e8334f7d3", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:github-items", + "observation": { + "sender": ["50263a3726f9"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "32a7c0ae7918" + }, + "state": "44136fa355b3", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:gitlab-items", + "observation": { + "sender": ["50263a3726f9", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "32a7c0ae7918", + "gitlab": "6e2d75e3bbd7" + }, + "state": "c2bf4ae27078", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:linear-search", + "observation": { + "sender": ["50263a3726f9", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "32a7c0ae7918", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "05e9b743fb1d", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:branch-refs", + "observation": { + "sender": ["50263a3726f9", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "32a7c0ae7918", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "71764b0214a9", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:linear-assigned-listed", + "observation": { + "sender": [ + "50263a3726f9", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "32a7c0ae7918", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "13ebc07aa6fe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:github-items", + "observation": { + "sender": ["ce28e5229996"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "f3b516f62081" + }, + "state": "44136fa355b3", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:gitlab-items", + "observation": { + "sender": ["ce28e5229996", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "f3b516f62081", + "gitlab": "6e2d75e3bbd7" + }, + "state": "c2bf4ae27078", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:linear-search", + "observation": { + "sender": ["ce28e5229996", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "f3b516f62081", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "05e9b743fb1d", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:branch-refs", + "observation": { + "sender": ["ce28e5229996", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "f3b516f62081", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "71764b0214a9", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:linear-assigned-listed", + "observation": { + "sender": [ + "ce28e5229996", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "f3b516f62081", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "13ebc07aa6fe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:github-items", + "observation": { + "sender": ["80cc566cdd55"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "b948e8307e81" + }, + "state": "44136fa355b3", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:gitlab-items", + "observation": { + "sender": ["80cc566cdd55", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "b948e8307e81", + "gitlab": "6e2d75e3bbd7" + }, + "state": "c2bf4ae27078", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:linear-search", + "observation": { + "sender": ["80cc566cdd55", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "b948e8307e81", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "05e9b743fb1d", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:branch-refs", + "observation": { + "sender": ["80cc566cdd55", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "b948e8307e81", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "71764b0214a9", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:linear-assigned-listed", + "observation": { + "sender": [ + "80cc566cdd55", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "b948e8307e81", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "13ebc07aa6fe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:github-items", + "observation": { + "sender": ["37c4b6aa154e"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "a947768bc0ed" + }, + "state": "44136fa355b3", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:gitlab-items", + "observation": { + "sender": ["37c4b6aa154e", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "a947768bc0ed", + "gitlab": "6e2d75e3bbd7" + }, + "state": "c2bf4ae27078", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:linear-search", + "observation": { + "sender": ["37c4b6aa154e", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "a947768bc0ed", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "05e9b743fb1d", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:branch-refs", + "observation": { + "sender": ["37c4b6aa154e", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "a947768bc0ed", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "71764b0214a9", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:linear-assigned-listed", + "observation": { + "sender": [ + "37c4b6aa154e", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "a947768bc0ed", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "13ebc07aa6fe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:github-items", + "observation": { + "sender": ["42f4c910f308"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "c7584e82c72f" + }, + "state": "44136fa355b3", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:gitlab-items", + "observation": { + "sender": ["42f4c910f308", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "c7584e82c72f", + "gitlab": "6e2d75e3bbd7" + }, + "state": "c2bf4ae27078", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:linear-search", + "observation": { + "sender": ["42f4c910f308", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "c7584e82c72f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "05e9b743fb1d", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:branch-refs", + "observation": { + "sender": ["42f4c910f308", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "c7584e82c72f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "71764b0214a9", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:linear-assigned-listed", + "observation": { + "sender": [ + "42f4c910f308", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "c7584e82c72f", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "13ebc07aa6fe", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-gitlab.listworkitems-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-gitlab.listworkitems-1.json new file mode 100644 index 00000000000..93b17c0671d --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-gitlab.listworkitems-1.json @@ -0,0 +1,1772 @@ +{ + "operation": "tasks.smart-source-search", + "family": "tasks.smart-source-search", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "541a282829d3aa5d6b66eeba06e783368f397178ff0d2bdf3e87bccdc62b690f", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "24e67c350a20": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [] + }, + "253629bd0d20": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ] + }, + "25716369cd8f": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [] + }, + "25f88995b39a": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "refs": ["main", "release"] + } + } + } + }, + "26dc3b7c8299": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "id": "issue-3" + } + ] + }, + "2cfd107b9660": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "32a7c0ae7918": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "outer refused", + "isRpcDeliveryUnknown": false + } + }, + "36290ab254a4": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ] + }, + "3698dc9e21e5": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "3828d5880c35": { + "name": "gitlab.listWorkItems#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"state\":\"opened\",\"page\":1,\"perPage\":50,\"query\":\"bug\"}}" + }, + "41d2452d4ebe": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "5b5689593188": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-2", + "ok": false + } + } + }, + "5bce68072dc3": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "items": [ + { + "number": 1, + "title": "one" + } + ] + } + } + } + }, + "6107c951646f": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "items": [ + { + "id": "issue-1" + } + ] + } + } + } + }, + "67ba0246dbf8": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "6c647ccd3cff": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "6e2d75e3bbd7": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "6f4bd0fc6d8b": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "74bc6b65cdef": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [], + "linear": [ + { + "id": "issue-3" + } + ] + }, + "76fa023e535f": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "82f9caba201c": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "8eb709e28997": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "94d9f7a1e105": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "9f9af59ae576": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "a25ac3f73d46": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot read properties of null (reading 'error')", + "isRpcDeliveryUnknown": false + } + }, + "a4ee5d16b4f6": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "id": "issue-1" + } + ] + }, + "a92cd1dd05af": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-3" + } + ] + }, + "a947768bc0ed": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + }, + "b015aaf3a53a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ] + }, + "b236fc09fef7": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true + } + } + }, + "b8b02a30b6b8": { + "name": "repo.searchRefs#1", + "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"repo.searchRefs\",\"params\":{\"repo\":\"id:repo-1\",\"query\":\"bug\",\"limit\":20}}" + }, + "b948e8307e81": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Unknown method", + "isRpcDeliveryUnknown": false + } + }, + "be85b10635d4": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot read properties of undefined (reading 'error')", + "isRpcDeliveryUnknown": false + } + }, + "c43e80126d82": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "c7584e82c72f": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + }, + "e2325a86e69b": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-2", + "ok": false + } + } + }, + "e97e5a589476": { + "name": "linear.listIssues#1", + "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"linear.listIssues\",\"params\":{\"filter\":\"assigned\",\"limit\":50}}" + }, + "ead829dd6d03": { + "name": "linear.searchIssues#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.searchIssues\",\"params\":{\"query\":\"bug\",\"limit\":50,\"workspaceId\":\"linear-workspace\"}}" + }, + "ee6fe4f97b01": { + "name": "github.listWorkItems#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"limit\":36,\"query\":\"bug\"}}" + }, + "f01419051ddf": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "f0a975a83b87": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "linear": [ + { + "id": "issue-3" + } + ] + }, + "f32ad26605d0": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": { + "message": "missing", + "type": "not_found" + }, + "items": [ + { + "iid": 2, + "title": "two" + } + ] + } + } + } + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + }, + "fb884a9370b1": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-2", + "ok": false + } + } + }, + "fe7f60b5d785": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-5", + "ok": true, + "result": [ + { + "id": "issue-3" + } + ] + } + } + } + }, + "recording": { + "scenario": "matrix-tasks.smart-source-search-gitlab.listworkitems-1", + "checkpoints": [ + { + "id": "tw-smart-search-all-providers.prelude:github-items", + "observation": { + "sender": ["5bce68072dc3"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "36290ab254a4" + }, + "state": "253629bd0d20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.normal:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.normal:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "41d2452d4ebe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.normal:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.normal:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "b236fc09fef7"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "be85b10635d4" + }, + "state": "253629bd0d20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:linear-search", + "observation": { + "sender": ["5bce68072dc3", "b236fc09fef7", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "be85b10635d4", + "linear": "a4ee5d16b4f6" + }, + "state": "6f4bd0fc6d8b", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "b236fc09fef7", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "be85b10635d4", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "82f9caba201c", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "b236fc09fef7", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "be85b10635d4", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "f0a975a83b87", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "76fa023e535f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "a25ac3f73d46" + }, + "state": "253629bd0d20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:linear-search", + "observation": { + "sender": ["5bce68072dc3", "76fa023e535f", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "a25ac3f73d46", + "linear": "a4ee5d16b4f6" + }, + "state": "6f4bd0fc6d8b", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "76fa023e535f", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "a25ac3f73d46", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "82f9caba201c", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "76fa023e535f", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "a25ac3f73d46", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "f0a975a83b87", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "94d9f7a1e105"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "25716369cd8f" + }, + "state": "24e67c350a20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:linear-search", + "observation": { + "sender": ["5bce68072dc3", "94d9f7a1e105", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "25716369cd8f", + "linear": "a4ee5d16b4f6" + }, + "state": "6c647ccd3cff", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "94d9f7a1e105", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "25716369cd8f", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "9f9af59ae576", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "94d9f7a1e105", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "25716369cd8f", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "74bc6b65cdef", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "8eb709e28997"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "25716369cd8f" + }, + "state": "24e67c350a20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:linear-search", + "observation": { + "sender": ["5bce68072dc3", "8eb709e28997", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "25716369cd8f", + "linear": "a4ee5d16b4f6" + }, + "state": "6c647ccd3cff", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "8eb709e28997", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "25716369cd8f", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "9f9af59ae576", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "8eb709e28997", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "25716369cd8f", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "74bc6b65cdef", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "3698dc9e21e5"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "25716369cd8f" + }, + "state": "24e67c350a20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:linear-search", + "observation": { + "sender": ["5bce68072dc3", "3698dc9e21e5", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "25716369cd8f", + "linear": "a4ee5d16b4f6" + }, + "state": "6c647ccd3cff", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "3698dc9e21e5", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "25716369cd8f", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "9f9af59ae576", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "3698dc9e21e5", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "25716369cd8f", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "74bc6b65cdef", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "fb884a9370b1"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "32a7c0ae7918" + }, + "state": "253629bd0d20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:linear-search", + "observation": { + "sender": ["5bce68072dc3", "fb884a9370b1", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "32a7c0ae7918", + "linear": "a4ee5d16b4f6" + }, + "state": "6f4bd0fc6d8b", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "fb884a9370b1", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "32a7c0ae7918", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "82f9caba201c", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "fb884a9370b1", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "32a7c0ae7918", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "f0a975a83b87", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "5b5689593188"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "f3b516f62081" + }, + "state": "253629bd0d20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:linear-search", + "observation": { + "sender": ["5bce68072dc3", "5b5689593188", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "f3b516f62081", + "linear": "a4ee5d16b4f6" + }, + "state": "6f4bd0fc6d8b", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "5b5689593188", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "f3b516f62081", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "82f9caba201c", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "5b5689593188", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "f3b516f62081", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "f0a975a83b87", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "e2325a86e69b"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "b948e8307e81" + }, + "state": "253629bd0d20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:linear-search", + "observation": { + "sender": ["5bce68072dc3", "e2325a86e69b", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "b948e8307e81", + "linear": "a4ee5d16b4f6" + }, + "state": "6f4bd0fc6d8b", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "e2325a86e69b", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "b948e8307e81", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "82f9caba201c", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "e2325a86e69b", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "b948e8307e81", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "f0a975a83b87", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "67ba0246dbf8"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "a947768bc0ed" + }, + "state": "253629bd0d20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:linear-search", + "observation": { + "sender": ["5bce68072dc3", "67ba0246dbf8", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "a947768bc0ed", + "linear": "a4ee5d16b4f6" + }, + "state": "6f4bd0fc6d8b", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "67ba0246dbf8", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "a947768bc0ed", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "82f9caba201c", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "67ba0246dbf8", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "a947768bc0ed", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "f0a975a83b87", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "f01419051ddf"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "c7584e82c72f" + }, + "state": "253629bd0d20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f01419051ddf", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "c7584e82c72f", + "linear": "a4ee5d16b4f6" + }, + "state": "6f4bd0fc6d8b", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f01419051ddf", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "c7584e82c72f", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "82f9caba201c", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f01419051ddf", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "c7584e82c72f", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "f0a975a83b87", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.listissues-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.listissues-1.json new file mode 100644 index 00000000000..2979643ea9c --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.listissues-1.json @@ -0,0 +1,1199 @@ +{ + "operation": "tasks.smart-source-search", + "family": "tasks.smart-source-search", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "767044526344237daee0a3f981a10615fbb9ebc3f45c2f6f41f9b8b16d362082", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "090ea9e6ac63": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "253629bd0d20": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ] + }, + "25f88995b39a": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "refs": ["main", "release"] + } + } + } + }, + "26dc3b7c8299": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "id": "issue-3" + } + ] + }, + "2cfd107b9660": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "32a7c0ae7918": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "outer refused", + "isRpcDeliveryUnknown": false + } + }, + "36290ab254a4": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ] + }, + "3828d5880c35": { + "name": "gitlab.listWorkItems#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"state\":\"opened\",\"page\":1,\"perPage\":50,\"query\":\"bug\"}}" + }, + "3c5eceeb8463": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-5", + "ok": false + } + } + }, + "41d2452d4ebe": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "5bce68072dc3": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "items": [ + { + "number": 1, + "title": "one" + } + ] + } + } + } + }, + "6107c951646f": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "items": [ + { + "id": "issue-1" + } + ] + } + } + } + }, + "6e2d75e3bbd7": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "7a91e9a2c1bb": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-5", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "957cc0c5ead6": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Unexpected Linear tasks response", + "isRpcDeliveryUnknown": false + } + }, + "a4ee5d16b4f6": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "id": "issue-1" + } + ] + }, + "a92cd1dd05af": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-3" + } + ] + }, + "a947768bc0ed": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + }, + "adb630f7c310": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-5", + "ok": false + } + } + }, + "b015aaf3a53a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ] + }, + "b68d510a9e89": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-5", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "b8b02a30b6b8": { + "name": "repo.searchRefs#1", + "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"repo.searchRefs\",\"params\":{\"repo\":\"id:repo-1\",\"query\":\"bug\",\"limit\":20}}" + }, + "b948e8307e81": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Unknown method", + "isRpcDeliveryUnknown": false + } + }, + "c43e80126d82": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "c7584e82c72f": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + }, + "d7c2c3caeb26": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-5", + "ok": false + } + } + }, + "e97e5a589476": { + "name": "linear.listIssues#1", + "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"linear.listIssues\",\"params\":{\"filter\":\"assigned\",\"limit\":50}}" + }, + "ead829dd6d03": { + "name": "linear.searchIssues#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.searchIssues\",\"params\":{\"query\":\"bug\",\"limit\":50,\"workspaceId\":\"linear-workspace\"}}" + }, + "ec10770e2214": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-5", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "ee6fe4f97b01": { + "name": "github.listWorkItems#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"limit\":36,\"query\":\"bug\"}}" + }, + "f32ad26605d0": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": { + "message": "missing", + "type": "not_found" + }, + "items": [ + { + "iid": 2, + "title": "two" + } + ] + } + } + } + }, + "f3a7d3f5dc3c": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-5", + "ok": true + } + } + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + }, + "f64e4725150b": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "f7b4f4fa8d5a": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-5", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "fe7f60b5d785": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-5", + "ok": true, + "result": [ + { + "id": "issue-3" + } + ] + } + } + } + }, + "recording": { + "scenario": "matrix-tasks.smart-source-search-linear.listissues-1", + "checkpoints": [ + { + "id": "tw-smart-search-all-providers.prelude:github-items", + "observation": { + "sender": ["5bce68072dc3"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "36290ab254a4" + }, + "state": "253629bd0d20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.prelude:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.prelude:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "41d2452d4ebe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.prelude:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.normal:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "f3a7d3f5dc3c" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "957cc0c5ead6" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "7a91e9a2c1bb" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "957cc0c5ead6" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "ec10770e2214" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "957cc0c5ead6" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "f7b4f4fa8d5a" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "957cc0c5ead6" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "b68d510a9e89" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "957cc0c5ead6" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "3c5eceeb8463" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "32a7c0ae7918" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "adb630f7c310" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "f3b516f62081" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "d7c2c3caeb26" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "b948e8307e81" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "f64e4725150b" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "a947768bc0ed" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "090ea9e6ac63" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "c7584e82c72f" + }, + "state": "c43e80126d82", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.searchissues-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.searchissues-1.json new file mode 100644 index 00000000000..d45e0fb6df5 --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-linear.searchissues-1.json @@ -0,0 +1,1495 @@ +{ + "operation": "tasks.smart-source-search", + "family": "tasks.smart-source-search", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "40a8ea6a916d4266bd80148e40fd817bbe80cefa02465b88d37c42cebed44f22", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "0914e9c666b1": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "253629bd0d20": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ] + }, + "25f88995b39a": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "refs": ["main", "release"] + } + } + } + }, + "26dc3b7c8299": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "id": "issue-3" + } + ] + }, + "27fa02820da8": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "2cfd107b9660": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "32a7c0ae7918": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "outer refused", + "isRpcDeliveryUnknown": false + } + }, + "3351dd9fcc16": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-3", + "ok": false + } + } + }, + "36290ab254a4": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ] + }, + "3828d5880c35": { + "name": "gitlab.listWorkItems#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"state\":\"opened\",\"page\":1,\"perPage\":50,\"query\":\"bug\"}}" + }, + "41d2452d4ebe": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "5a41c0588421": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true + } + } + }, + "5bce68072dc3": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "items": [ + { + "number": 1, + "title": "one" + } + ] + } + } + } + }, + "6107c951646f": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "items": [ + { + "id": "issue-1" + } + ] + } + } + } + }, + "619f7466012f": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "6e2d75e3bbd7": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "78f8899bda05": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "957cc0c5ead6": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Unexpected Linear tasks response", + "isRpcDeliveryUnknown": false + } + }, + "99e5be0a1b11": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "a4ee5d16b4f6": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "id": "issue-1" + } + ] + }, + "a92cd1dd05af": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-3" + } + ] + }, + "a947768bc0ed": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + }, + "b015aaf3a53a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ] + }, + "b4185f815a19": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-3", + "ok": false + } + } + }, + "b8b02a30b6b8": { + "name": "repo.searchRefs#1", + "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"repo.searchRefs\",\"params\":{\"repo\":\"id:repo-1\",\"query\":\"bug\",\"limit\":20}}" + }, + "b948e8307e81": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Unknown method", + "isRpcDeliveryUnknown": false + } + }, + "c2b41e1dbaf8": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "c43e80126d82": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "c7584e82c72f": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + }, + "c770655d7a45": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "e97e5a589476": { + "name": "linear.listIssues#1", + "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"linear.listIssues\",\"params\":{\"filter\":\"assigned\",\"limit\":50}}" + }, + "ead829dd6d03": { + "name": "linear.searchIssues#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.searchIssues\",\"params\":{\"query\":\"bug\",\"limit\":50,\"workspaceId\":\"linear-workspace\"}}" + }, + "ee6fe4f97b01": { + "name": "github.listWorkItems#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"limit\":36,\"query\":\"bug\"}}" + }, + "f32ad26605d0": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": { + "message": "missing", + "type": "not_found" + }, + "items": [ + { + "iid": 2, + "title": "two" + } + ] + } + } + } + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + }, + "fb4807630e1d": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-3", + "ok": false + } + } + }, + "fe7f60b5d785": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-5", + "ok": true, + "result": [ + { + "id": "issue-3" + } + ] + } + } + } + }, + "recording": { + "scenario": "matrix-tasks.smart-source-search-linear.searchissues-1", + "checkpoints": [ + { + "id": "tw-smart-search-all-providers.prelude:github-items", + "observation": { + "sender": ["5bce68072dc3"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "36290ab254a4" + }, + "state": "253629bd0d20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.prelude:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.normal:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "41d2452d4ebe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.normal:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.normal:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "5a41c0588421"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "5a41c0588421", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6", + "branches": "b015aaf3a53a" + }, + "state": "c2b41e1dbaf8", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "5a41c0588421", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "78f8899bda05"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "78f8899bda05", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6", + "branches": "b015aaf3a53a" + }, + "state": "c2b41e1dbaf8", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "78f8899bda05", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "27fa02820da8"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "27fa02820da8", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6", + "branches": "b015aaf3a53a" + }, + "state": "c2b41e1dbaf8", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "27fa02820da8", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "c770655d7a45"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "c770655d7a45", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6", + "branches": "b015aaf3a53a" + }, + "state": "c2b41e1dbaf8", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "c770655d7a45", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "619f7466012f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "619f7466012f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6", + "branches": "b015aaf3a53a" + }, + "state": "c2b41e1dbaf8", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "619f7466012f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "957cc0c5ead6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "3351dd9fcc16"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "32a7c0ae7918" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "3351dd9fcc16", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "32a7c0ae7918", + "branches": "b015aaf3a53a" + }, + "state": "c2b41e1dbaf8", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "3351dd9fcc16", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "32a7c0ae7918", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "fb4807630e1d"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "f3b516f62081" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "fb4807630e1d", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "f3b516f62081", + "branches": "b015aaf3a53a" + }, + "state": "c2b41e1dbaf8", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "fb4807630e1d", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "f3b516f62081", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "b4185f815a19"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "b948e8307e81" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "b4185f815a19", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "b948e8307e81", + "branches": "b015aaf3a53a" + }, + "state": "c2b41e1dbaf8", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "b4185f815a19", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "b948e8307e81", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "99e5be0a1b11"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a947768bc0ed" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "99e5be0a1b11", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a947768bc0ed", + "branches": "b015aaf3a53a" + }, + "state": "c2b41e1dbaf8", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "99e5be0a1b11", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a947768bc0ed", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "0914e9c666b1"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "c7584e82c72f" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "0914e9c666b1", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "c7584e82c72f", + "branches": "b015aaf3a53a" + }, + "state": "c2b41e1dbaf8", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "0914e9c666b1", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "c7584e82c72f", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-repo.searchrefs-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-repo.searchrefs-1.json new file mode 100644 index 00000000000..b0629033f9b --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.smart-source-search-repo.searchrefs-1.json @@ -0,0 +1,1410 @@ +{ + "operation": "tasks.smart-source-search", + "family": "tasks.smart-source-search", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "aa06630cd902fd5dde5181bddd38f5478ae5b48044a3105b090728158aa9a621", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "071e0e8e68dc": { + "branches": [], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-3" + } + ] + }, + "253629bd0d20": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ] + }, + "25716369cd8f": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [] + }, + "25f88995b39a": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "refs": ["main", "release"] + } + } + } + }, + "26dc3b7c8299": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "id": "issue-3" + } + ] + }, + "2cfd107b9660": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "32a7c0ae7918": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "outer refused", + "isRpcDeliveryUnknown": false + } + }, + "36290ab254a4": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ] + }, + "3828d5880c35": { + "name": "gitlab.listWorkItems#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"state\":\"opened\",\"page\":1,\"perPage\":50,\"query\":\"bug\"}}" + }, + "3842f5bcd677": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "39576819ef3f": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "41d2452d4ebe": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "553cf244460a": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "59e25358865a": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-4", + "ok": false + } + } + }, + "5bce68072dc3": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "items": [ + { + "number": 1, + "title": "one" + } + ] + } + } + } + }, + "5d85e47efa46": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-4", + "ok": false + } + } + }, + "5ff512429b6c": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true + } + } + }, + "6107c951646f": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "items": [ + { + "id": "issue-1" + } + ] + } + } + } + }, + "6e2d75e3bbd7": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "a4263a13d324": { + "branches": [], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "a4ee5d16b4f6": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "id": "issue-1" + } + ] + }, + "a92cd1dd05af": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-3" + } + ] + }, + "a947768bc0ed": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + }, + "b015aaf3a53a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ] + }, + "b2d9361f1d3d": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "b721d1733537": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "b8b02a30b6b8": { + "name": "repo.searchRefs#1", + "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"repo.searchRefs\",\"params\":{\"repo\":\"id:repo-1\",\"query\":\"bug\",\"limit\":20}}" + }, + "b948e8307e81": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Unknown method", + "isRpcDeliveryUnknown": false + } + }, + "c30c54d734bc": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot read properties of undefined (reading 'refDetails')", + "isRpcDeliveryUnknown": false + } + }, + "c43e80126d82": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "c7584e82c72f": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + }, + "d1572a7d1ddb": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-3" + } + ] + }, + "d4061d056a75": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-4", + "ok": false + } + } + }, + "e6d2fd7367d3": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "e97e5a589476": { + "name": "linear.listIssues#1", + "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"linear.listIssues\",\"params\":{\"filter\":\"assigned\",\"limit\":50}}" + }, + "ead829dd6d03": { + "name": "linear.searchIssues#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.searchIssues\",\"params\":{\"query\":\"bug\",\"limit\":50,\"workspaceId\":\"linear-workspace\"}}" + }, + "ee6fe4f97b01": { + "name": "github.listWorkItems#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"limit\":36,\"query\":\"bug\"}}" + }, + "f32ad26605d0": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": { + "message": "missing", + "type": "not_found" + }, + "items": [ + { + "iid": 2, + "title": "two" + } + ] + } + } + } + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + }, + "f582af356003": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot read properties of null (reading 'refDetails')", + "isRpcDeliveryUnknown": false + } + }, + "fe7f60b5d785": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-5", + "ok": true, + "result": [ + { + "id": "issue-3" + } + ] + } + } + } + }, + "recording": { + "scenario": "matrix-tasks.smart-source-search-repo.searchrefs-1", + "checkpoints": [ + { + "id": "tw-smart-search-all-providers.prelude:github-items", + "observation": { + "sender": ["5bce68072dc3"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "36290ab254a4" + }, + "state": "253629bd0d20", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.prelude:gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.prelude:linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "41d2452d4ebe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.normal:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.normal:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "5ff512429b6c"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "c30c54d734bc" + }, + "state": "41d2452d4ebe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-absent:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "5ff512429b6c", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "c30c54d734bc", + "linear-assigned": "26dc3b7c8299" + }, + "state": "d1572a7d1ddb", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "553cf244460a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "f582af356003" + }, + "state": "41d2452d4ebe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.result-null:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "553cf244460a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "f582af356003", + "linear-assigned": "26dc3b7c8299" + }, + "state": "d1572a7d1ddb", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "b2d9361f1d3d"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "25716369cd8f" + }, + "state": "a4263a13d324", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-ok-missing:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "b2d9361f1d3d", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "25716369cd8f", + "linear-assigned": "26dc3b7c8299" + }, + "state": "071e0e8e68dc", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "b721d1733537"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "25716369cd8f" + }, + "state": "a4263a13d324", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-string-error:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "b721d1733537", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "25716369cd8f", + "linear-assigned": "26dc3b7c8299" + }, + "state": "071e0e8e68dc", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "3842f5bcd677"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "25716369cd8f" + }, + "state": "a4263a13d324", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.inner-false-object-error:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "3842f5bcd677", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "25716369cd8f", + "linear-assigned": "26dc3b7c8299" + }, + "state": "071e0e8e68dc", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "59e25358865a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "32a7c0ae7918" + }, + "state": "41d2452d4ebe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "59e25358865a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "32a7c0ae7918", + "linear-assigned": "26dc3b7c8299" + }, + "state": "d1572a7d1ddb", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "d4061d056a75"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "f3b516f62081" + }, + "state": "41d2452d4ebe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.outer-refused-no-message:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "d4061d056a75", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "f3b516f62081", + "linear-assigned": "26dc3b7c8299" + }, + "state": "d1572a7d1ddb", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "5d85e47efa46"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b948e8307e81" + }, + "state": "41d2452d4ebe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.method-not-found:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "5d85e47efa46", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b948e8307e81", + "linear-assigned": "26dc3b7c8299" + }, + "state": "d1572a7d1ddb", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "39576819ef3f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "a947768bc0ed" + }, + "state": "41d2452d4ebe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "39576819ef3f", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "a947768bc0ed", + "linear-assigned": "26dc3b7c8299" + }, + "state": "d1572a7d1ddb", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "e6d2fd7367d3"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "c7584e82c72f" + }, + "state": "41d2452d4ebe", + "effects": [] + } + }, + { + "id": "tw-smart-search-all-providers.transport-rejection-no-message:linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "e6d2fd7367d3", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "c7584e82c72f", + "linear-assigned": "26dc3b7c8299" + }, + "state": "d1572a7d1ddb", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.searchrefs-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.searchrefs-1.json new file mode 100644 index 00000000000..4840f31a2b0 --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.searchrefs-1.json @@ -0,0 +1,976 @@ +{ + "operation": "tasks.workspace-source", + "family": "tasks.workspace-source", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "9e91d46870cd69279cc7d8ebfd317ab8b13136ccff9662876c7601a3a83ecafe", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "0045016f4149": { + "branchError": "Cannot read properties of null (reading 'refDetails')", + "branches": [], + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "presetsLoaded": true + }, + "1d9a7d969446": { + "name": "workspaceSparsePresetsLoaded", + "value": true + }, + "273f4074a9b5": { + "name": "workspaceSparsePresetsLoaded", + "value": false + }, + "28f23529596e": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "main", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "2bd164983c10": { + "branchError": "outer refused", + "branches": [], + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "presetsLoaded": true + }, + "2e554aeab5d0": { + "branchError": "transport failure", + "branches": [], + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "presetsLoaded": true + }, + "35afa5cb107f": { + "name": "workspaceBaseBranchLoading", + "value": false + }, + "395368dea8ff": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "main", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "refs": ["main"] + } + } + } + }, + "46027e62015d": { + "name": "repo.searchRefs#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.searchRefs\",\"params\":{\"repo\":\"id:repo-1\",\"query\":\"main\",\"limit\":20}}" + }, + "46f2f1c9bc6a": { + "name": "workspaceBaseBranchError", + "value": "transport failure" + }, + "4856f62b3650": { + "name": "workspaceSparsePresets", + "value": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ] + }, + "4cedb91a2f7a": { + "name": "repo.sparsePresets#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.sparsePresets\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "52925a303ed6": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "main", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "5485811c08ca": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "main", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "57f06e6e349e": { + "branchError": "", + "branches": [], + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "presetsLoaded": true + }, + "58cb95babab2": { + "name": "workspaceBaseBranchLoading", + "value": true + }, + "5b0e628f442c": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "main", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "5f1c84e00d4f": { + "name": "workspaceBaseBranchResults", + "value": [] + }, + "6c344c5f4ac0": { + "name": "workspaceBaseBranchError", + "value": "" + }, + "7444e76d58f7": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "main", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-2", + "ok": false + } + } + }, + "8353b8e1a426": { + "name": "workspaceSparsePresetsLoading", + "value": true + }, + "846e910f6579": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "main", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true + } + } + }, + "8dbe7ea87a41": { + "name": "workspaceBaseBranchResults", + "value": [ + { + "localBranchName": "main", + "refName": "main" + } + ] + }, + "914268bb0636": { + "name": "workspaceBaseBranchError", + "value": "outer refused" + }, + "9357f7ea8445": { + "name": "workspaceSparsePresetId", + "value": { + "$rpc": "null" + } + }, + "94cafc85a34d": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "main", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "b78bcf7ca596": { + "branchError": "", + "branches": [ + { + "localBranchName": "main", + "refName": "main" + } + ], + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "presetsLoaded": true + }, + "bb1a94f8cb3f": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "main", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-2", + "ok": false + } + } + }, + "bd26306458d2": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "main", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-2", + "ok": false + } + } + }, + "bd93f3a9862f": { + "branchError": "Unknown method", + "branches": [], + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "presetsLoaded": true + }, + "c8d4d05367d6": { + "name": "repo.sparsePresets#1", + "args": [ + { + "name": "method", + "value": "repo.sparsePresets" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ] + } + } + } + }, + "cfc8af2a7169": { + "name": "workspaceSparsePresetsLoading", + "value": false + }, + "dba381378b08": { + "name": "workspaceSparsePresetsError", + "value": "" + }, + "e4bad139cb5f": { + "branchError": "Cannot read properties of undefined (reading 'refDetails')", + "branches": [], + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "presetsLoaded": true + }, + "e883c3f737f1": { + "name": "workspaceBaseBranchError", + "value": "Unknown method" + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "ec51e489da58": { + "name": "workspaceBaseBranchError", + "value": "Cannot read properties of null (reading 'refDetails')" + }, + "f6f9a9765c0c": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "main", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "fcca5f73b480": { + "name": "workspaceBaseBranchError", + "value": "Cannot read properties of undefined (reading 'refDetails')" + } + }, + "recording": { + "scenario": "matrix-tasks.workspace-source-repo.searchrefs-1", + "checkpoints": [ + { + "id": "tw-workspace-source-presets.prelude:presets-loaded", + "observation": { + "sender": ["c8d4d05367d6"], + "payloads": ["4cedb91a2f7a"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "57f06e6e349e", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169" + ] + } + }, + { + "id": "tw-workspace-source-presets.normal:branches-loaded", + "observation": { + "sender": ["c8d4d05367d6", "395368dea8ff"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "b78bcf7ca596", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "8dbe7ea87a41", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.result-absent:branches-loaded", + "observation": { + "sender": ["c8d4d05367d6", "846e910f6579"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "e4bad139cb5f", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "5f1c84e00d4f", + "fcca5f73b480", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.result-null:branches-loaded", + "observation": { + "sender": ["c8d4d05367d6", "28f23529596e"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "0045016f4149", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "5f1c84e00d4f", + "ec51e489da58", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.inner-ok-missing:branches-loaded", + "observation": { + "sender": ["c8d4d05367d6", "5485811c08ca"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "57f06e6e349e", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "5f1c84e00d4f", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.inner-false-string-error:branches-loaded", + "observation": { + "sender": ["c8d4d05367d6", "f6f9a9765c0c"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "57f06e6e349e", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "5f1c84e00d4f", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.inner-false-object-error:branches-loaded", + "observation": { + "sender": ["c8d4d05367d6", "94cafc85a34d"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "57f06e6e349e", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "5f1c84e00d4f", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.outer-refused:branches-loaded", + "observation": { + "sender": ["c8d4d05367d6", "bb1a94f8cb3f"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "2bd164983c10", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "5f1c84e00d4f", + "914268bb0636", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.outer-refused-no-message:branches-loaded", + "observation": { + "sender": ["c8d4d05367d6", "7444e76d58f7"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "57f06e6e349e", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "5f1c84e00d4f", + "6c344c5f4ac0", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.method-not-found:branches-loaded", + "observation": { + "sender": ["c8d4d05367d6", "bd26306458d2"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "bd93f3a9862f", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "5f1c84e00d4f", + "e883c3f737f1", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.transport-rejection:branches-loaded", + "observation": { + "sender": ["c8d4d05367d6", "5b0e628f442c"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "2e554aeab5d0", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "5f1c84e00d4f", + "46f2f1c9bc6a", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.transport-rejection-no-message:branches-loaded", + "observation": { + "sender": ["c8d4d05367d6", "52925a303ed6"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "57f06e6e349e", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "5f1c84e00d4f", + "6c344c5f4ac0", + "35afa5cb107f" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.sparsepresets-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.sparsepresets-1.json new file mode 100644 index 00000000000..6ef143268c6 --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-source-repo.sparsepresets-1.json @@ -0,0 +1,1265 @@ +{ + "operation": "tasks.workspace-source", + "family": "tasks.workspace-source", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "2d4a681bffbc5ff9d3040ea0d6bb2603ee940c3c497269d0b63caca564fb25e1", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "0e0e1c74c796": { + "branchError": "", + "branches": [], + "presets": [], + "presetsError": "transport failure", + "presetsLoaded": false + }, + "1d9a7d969446": { + "name": "workspaceSparsePresetsLoaded", + "value": true + }, + "2399e995a370": { + "name": "workspaceSparsePresets", + "value": [] + }, + "273f4074a9b5": { + "name": "workspaceSparsePresetsLoaded", + "value": false + }, + "2d69fe330484": { + "name": "repo.sparsePresets#1", + "args": [ + { + "name": "method", + "value": "repo.sparsePresets" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "35afa5cb107f": { + "name": "workspaceBaseBranchLoading", + "value": false + }, + "395368dea8ff": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "main", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "refs": ["main"] + } + } + } + }, + "3dcbacca6ef0": { + "name": "repo.sparsePresets#1", + "args": [ + { + "name": "method", + "value": "repo.sparsePresets" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "46027e62015d": { + "name": "repo.searchRefs#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.searchRefs\",\"params\":{\"repo\":\"id:repo-1\",\"query\":\"main\",\"limit\":20}}" + }, + "4856f62b3650": { + "name": "workspaceSparsePresets", + "value": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ] + }, + "4c7522c66d03": { + "name": "workspaceSparsePresetsError", + "value": "transport failure" + }, + "4cedb91a2f7a": { + "name": "repo.sparsePresets#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.sparsePresets\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "51396e45f193": { + "name": "workspaceSparsePresetsError", + "value": "Cannot read properties of undefined (reading 'presets')" + }, + "513bb01f2f25": { + "branchError": "", + "branches": [ + { + "localBranchName": "main", + "refName": "main" + } + ], + "presets": [], + "presetsError": "", + "presetsLoaded": true + }, + "57f06e6e349e": { + "branchError": "", + "branches": [], + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "presetsLoaded": true + }, + "58cb95babab2": { + "name": "workspaceBaseBranchLoading", + "value": true + }, + "5cc2ef1617e8": { + "name": "repo.sparsePresets#1", + "args": [ + { + "name": "method", + "value": "repo.sparsePresets" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-1", + "ok": false + } + } + }, + "5e895d7d4949": { + "branchError": "", + "branches": [ + { + "localBranchName": "main", + "refName": "main" + } + ], + "presets": [], + "presetsError": "transport failure", + "presetsLoaded": false + }, + "5f1c84e00d4f": { + "name": "workspaceBaseBranchResults", + "value": [] + }, + "62bc28c39ffc": { + "branchError": "", + "branches": [], + "presets": [], + "presetsError": "", + "presetsLoaded": false + }, + "6c344c5f4ac0": { + "name": "workspaceBaseBranchError", + "value": "" + }, + "83043f6bd49a": { + "name": "repo.sparsePresets#1", + "args": [ + { + "name": "method", + "value": "repo.sparsePresets" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-1", + "ok": false + } + } + }, + "8353b8e1a426": { + "name": "workspaceSparsePresetsLoading", + "value": true + }, + "841927d71fc6": { + "name": "workspaceSparsePresetsError", + "value": "outer refused" + }, + "844c1ccf1f9a": { + "branchError": "", + "branches": [ + { + "localBranchName": "main", + "refName": "main" + } + ], + "presets": [], + "presetsError": "Cannot read properties of undefined (reading 'presets')", + "presetsLoaded": false + }, + "8b4d034d6e9e": { + "name": "repo.sparsePresets#1", + "args": [ + { + "name": "method", + "value": "repo.sparsePresets" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "8dbe7ea87a41": { + "name": "workspaceBaseBranchResults", + "value": [ + { + "localBranchName": "main", + "refName": "main" + } + ] + }, + "90bd9a937fe0": { + "branchError": "", + "branches": [ + { + "localBranchName": "main", + "refName": "main" + } + ], + "presets": [], + "presetsError": "", + "presetsLoaded": false + }, + "9357f7ea8445": { + "name": "workspaceSparsePresetId", + "value": { + "$rpc": "null" + } + }, + "96f5a578e45b": { + "name": "repo.sparsePresets#1", + "args": [ + { + "name": "method", + "value": "repo.sparsePresets" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "981cb584cfe3": { + "name": "repo.sparsePresets#1", + "args": [ + { + "name": "method", + "value": "repo.sparsePresets" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true + } + } + }, + "982d70c476ea": { + "name": "repo.sparsePresets#1", + "args": [ + { + "name": "method", + "value": "repo.sparsePresets" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "a18f0cdbc6fe": { + "name": "repo.sparsePresets#1", + "args": [ + { + "name": "method", + "value": "repo.sparsePresets" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "aaaeee84b4d2": { + "name": "workspaceSparsePresetsError", + "value": "Cannot read properties of null (reading 'presets')" + }, + "b78bcf7ca596": { + "branchError": "", + "branches": [ + { + "localBranchName": "main", + "refName": "main" + } + ], + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "presetsLoaded": true + }, + "bf004df2bf3d": { + "branchError": "", + "branches": [ + { + "localBranchName": "main", + "refName": "main" + } + ], + "presets": [], + "presetsError": "Cannot read properties of null (reading 'presets')", + "presetsLoaded": false + }, + "c58cdfec29bd": { + "branchError": "", + "branches": [], + "presets": [], + "presetsError": "", + "presetsLoaded": true + }, + "c8d4d05367d6": { + "name": "repo.sparsePresets#1", + "args": [ + { + "name": "method", + "value": "repo.sparsePresets" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ] + } + } + } + }, + "c909c6a474d9": { + "branchError": "", + "branches": [], + "presets": [], + "presetsError": "Cannot read properties of undefined (reading 'presets')", + "presetsLoaded": false + }, + "c9379c8a3ba8": { + "branchError": "", + "branches": [], + "presets": [], + "presetsError": "outer refused", + "presetsLoaded": false + }, + "c9e6bb8f5e61": { + "branchError": "", + "branches": [], + "presets": [], + "presetsError": "Cannot read properties of null (reading 'presets')", + "presetsLoaded": false + }, + "ce4aab89eed0": { + "branchError": "", + "branches": [], + "presets": [], + "presetsError": "Unknown method", + "presetsLoaded": false + }, + "ce7d06abf495": { + "branchError": "", + "branches": [ + { + "localBranchName": "main", + "refName": "main" + } + ], + "presets": [], + "presetsError": "Unknown method", + "presetsLoaded": false + }, + "cfc8af2a7169": { + "name": "workspaceSparsePresetsLoading", + "value": false + }, + "d075e587b820": { + "branchError": "", + "branches": [ + { + "localBranchName": "main", + "refName": "main" + } + ], + "presets": [], + "presetsError": "outer refused", + "presetsLoaded": false + }, + "db27fad68ce2": { + "name": "repo.sparsePresets#1", + "args": [ + { + "name": "method", + "value": "repo.sparsePresets" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + }, + "dba381378b08": { + "name": "workspaceSparsePresetsError", + "value": "" + }, + "ea260eacb1db": { + "name": "workspaceSparsePresetsError", + "value": "Unknown method" + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + } + }, + "recording": { + "scenario": "matrix-tasks.workspace-source-repo.sparsepresets-1", + "checkpoints": [ + { + "id": "tw-workspace-source-presets.normal:presets-loaded", + "observation": { + "sender": ["c8d4d05367d6"], + "payloads": ["4cedb91a2f7a"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "57f06e6e349e", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169" + ] + } + }, + { + "id": "tw-workspace-source-presets.normal:branches-loaded", + "observation": { + "sender": ["c8d4d05367d6", "395368dea8ff"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "b78bcf7ca596", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "8dbe7ea87a41", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.result-absent:presets-loaded", + "observation": { + "sender": ["981cb584cfe3"], + "payloads": ["4cedb91a2f7a"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "c909c6a474d9", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "51396e45f193", + "cfc8af2a7169" + ] + } + }, + { + "id": "tw-workspace-source-presets.result-absent:branches-loaded", + "observation": { + "sender": ["981cb584cfe3", "395368dea8ff"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "844c1ccf1f9a", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "51396e45f193", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "8dbe7ea87a41", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.result-null:presets-loaded", + "observation": { + "sender": ["a18f0cdbc6fe"], + "payloads": ["4cedb91a2f7a"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "c9e6bb8f5e61", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "aaaeee84b4d2", + "cfc8af2a7169" + ] + } + }, + { + "id": "tw-workspace-source-presets.result-null:branches-loaded", + "observation": { + "sender": ["a18f0cdbc6fe", "395368dea8ff"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "bf004df2bf3d", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "aaaeee84b4d2", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "8dbe7ea87a41", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.inner-ok-missing:presets-loaded", + "observation": { + "sender": ["3dcbacca6ef0"], + "payloads": ["4cedb91a2f7a"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "c58cdfec29bd", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169" + ] + } + }, + { + "id": "tw-workspace-source-presets.inner-ok-missing:branches-loaded", + "observation": { + "sender": ["3dcbacca6ef0", "395368dea8ff"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "513bb01f2f25", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "8dbe7ea87a41", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.inner-false-string-error:presets-loaded", + "observation": { + "sender": ["982d70c476ea"], + "payloads": ["4cedb91a2f7a"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "c58cdfec29bd", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169" + ] + } + }, + { + "id": "tw-workspace-source-presets.inner-false-string-error:branches-loaded", + "observation": { + "sender": ["982d70c476ea", "395368dea8ff"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "513bb01f2f25", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "8dbe7ea87a41", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.inner-false-object-error:presets-loaded", + "observation": { + "sender": ["8b4d034d6e9e"], + "payloads": ["4cedb91a2f7a"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "c58cdfec29bd", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169" + ] + } + }, + { + "id": "tw-workspace-source-presets.inner-false-object-error:branches-loaded", + "observation": { + "sender": ["8b4d034d6e9e", "395368dea8ff"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "513bb01f2f25", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "8dbe7ea87a41", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.outer-refused:presets-loaded", + "observation": { + "sender": ["5cc2ef1617e8"], + "payloads": ["4cedb91a2f7a"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "c9379c8a3ba8", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "841927d71fc6", + "cfc8af2a7169" + ] + } + }, + { + "id": "tw-workspace-source-presets.outer-refused:branches-loaded", + "observation": { + "sender": ["5cc2ef1617e8", "395368dea8ff"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "d075e587b820", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "841927d71fc6", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "8dbe7ea87a41", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.outer-refused-no-message:presets-loaded", + "observation": { + "sender": ["db27fad68ce2"], + "payloads": ["4cedb91a2f7a"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "62bc28c39ffc", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "dba381378b08", + "cfc8af2a7169" + ] + } + }, + { + "id": "tw-workspace-source-presets.outer-refused-no-message:branches-loaded", + "observation": { + "sender": ["db27fad68ce2", "395368dea8ff"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "90bd9a937fe0", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "dba381378b08", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "8dbe7ea87a41", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.method-not-found:presets-loaded", + "observation": { + "sender": ["83043f6bd49a"], + "payloads": ["4cedb91a2f7a"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "ce4aab89eed0", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "ea260eacb1db", + "cfc8af2a7169" + ] + } + }, + { + "id": "tw-workspace-source-presets.method-not-found:branches-loaded", + "observation": { + "sender": ["83043f6bd49a", "395368dea8ff"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "ce7d06abf495", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "ea260eacb1db", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "8dbe7ea87a41", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.transport-rejection:presets-loaded", + "observation": { + "sender": ["96f5a578e45b"], + "payloads": ["4cedb91a2f7a"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "0e0e1c74c796", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "4c7522c66d03", + "cfc8af2a7169" + ] + } + }, + { + "id": "tw-workspace-source-presets.transport-rejection:branches-loaded", + "observation": { + "sender": ["96f5a578e45b", "395368dea8ff"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "5e895d7d4949", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "4c7522c66d03", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "8dbe7ea87a41", + "35afa5cb107f" + ] + } + }, + { + "id": "tw-workspace-source-presets.transport-rejection-no-message:presets-loaded", + "observation": { + "sender": ["2d69fe330484"], + "payloads": ["4cedb91a2f7a"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "62bc28c39ffc", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "dba381378b08", + "cfc8af2a7169" + ] + } + }, + { + "id": "tw-workspace-source-presets.transport-rejection-no-message:branches-loaded", + "observation": { + "sender": ["2d69fe330484", "395368dea8ff"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "90bd9a937fe0", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "dba381378b08", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "8dbe7ea87a41", + "35afa5cb107f" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-repo.savesparsepreset-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-repo.savesparsepreset-1.json new file mode 100644 index 00000000000..7ac2c78b995 --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-repo.savesparsepreset-1.json @@ -0,0 +1,940 @@ +{ + "operation": "tasks.workspace-sparse", + "family": "tasks.workspace-sparse", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "3d4637406e2d658b72f73153f0a5e176cb8b143593b72bce0cdf979bc6e4cbdd", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "1923ab7dba76": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-2", + "ok": false + } + } + }, + "1d9a7d969446": { + "name": "workspaceSparsePresetsLoaded", + "value": true + }, + "1f453ea83df7": { + "presets": [], + "presetsError": "transport failure", + "saving": false, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "23e798f4b47c": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "312ed3cbf468": { + "name": "workspaceSparsePresetId", + "value": "p1" + }, + "404305aa2e3a": { + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "saving": false, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "42bbd034563e": { + "name": "workspaceSparseDraft", + "value": { + "$rpc": "null" + } + }, + "4856f62b3650": { + "name": "workspaceSparsePresets", + "value": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ] + }, + "4c7522c66d03": { + "name": "workspaceSparsePresetsError", + "value": "transport failure" + }, + "4d66e995ff47": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Connection closed", + "isRpcDeliveryUnknown": true + } + } + }, + "4e1228f5e0a8": { + "name": "workspaceSparsePresetsError", + "value": "Cannot read properties of null (reading 'preset')" + }, + "5c44ff5f6877": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "preset": { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + } + } + } + }, + "74c1230400a6": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-2", + "ok": false + } + } + }, + "7993762437ad": { + "name": "workspaceSparsePresetsError", + "value": "Connection closed" + }, + "7fd0cde62993": { + "name": "workspaceSparseSaving", + "value": false + }, + "841927d71fc6": { + "name": "workspaceSparsePresetsError", + "value": "outer refused" + }, + "89aa7a3bd619": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "state": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + } + } + } + }, + "8e410711e308": { + "presets": [], + "presetsError": "Cannot read properties of undefined (reading 'preset')", + "saving": false, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "921f72d7827e": { + "name": "workspaceSshState", + "value": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "92b857799ffd": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "95295c6eaa8d": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true + } + } + }, + "990a149dc1be": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-2", + "ok": false + } + } + }, + "bcfc7df6e4f2": { + "presets": [], + "presetsError": "", + "saving": true, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "bd0266b23771": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "befb68fa6c76": { + "presets": [], + "presetsError": "Failed to save sparse preset.", + "saving": false, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "c33fee0d8294": { + "presets": [], + "presetsError": "Unknown method", + "saving": false, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "c5a3f70f9b02": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "cea9d7e8986e": { + "name": "workspaceSparseSaving", + "value": true + }, + "d14de7ce4d84": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "d74bc3778ca8": { + "presets": [], + "presetsError": "outer refused", + "saving": false, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "da3a01640280": { + "name": "workspaceSparsePresetsError", + "value": "Failed to save sparse preset." + }, + "dba381378b08": { + "name": "workspaceSparsePresetsError", + "value": "" + }, + "dd63325a7802": { + "name": "workspaceSparsePresetsError", + "value": "Cannot read properties of undefined (reading 'preset')" + }, + "e52233a9ff71": { + "presets": [], + "presetsError": "Cannot read properties of null (reading 'preset')", + "saving": false, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "ea260eacb1db": { + "name": "workspaceSparsePresetsError", + "value": "Unknown method" + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "ee3a941d5e9c": { + "presets": [], + "presetsError": "", + "saving": false, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "f4d4ba362712": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "f9dfbe0c0ea7": { + "name": "ssh.getState#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.getState\",\"params\":{\"targetId\":\"ssh-1\"}}" + }, + "fd758406cc2c": { + "name": "repo.saveSparsePreset#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.saveSparsePreset\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"docs\",\"directories\":[\"docs\"]}}" + } + }, + "recording": { + "scenario": "matrix-tasks.workspace-sparse-repo.savesparsepreset-1", + "checkpoints": [ + { + "id": "tw-workspace-sparse-saved.prelude:ssh-state-read", + "observation": { + "sender": ["89aa7a3bd619"], + "payloads": ["f9dfbe0c0ea7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "ee3a941d5e9c", + "effects": ["921f72d7827e"] + } + }, + { + "id": "tw-workspace-sparse-saved.prelude:cleanup", + "observation": { + "sender": ["89aa7a3bd619", "4d66e995ff47"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "bcfc7df6e4f2", + "effects": [ + "921f72d7827e", + "cea9d7e8986e", + "dba381378b08", + "7993762437ad", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.normal:preset-saved", + "observation": { + "sender": ["89aa7a3bd619", "5c44ff5f6877"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "404305aa2e3a", + "effects": [ + "921f72d7827e", + "cea9d7e8986e", + "dba381378b08", + "4856f62b3650", + "1d9a7d969446", + "312ed3cbf468", + "42bbd034563e", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.result-absent:preset-saved", + "observation": { + "sender": ["89aa7a3bd619", "95295c6eaa8d"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "8e410711e308", + "effects": [ + "921f72d7827e", + "cea9d7e8986e", + "dba381378b08", + "dd63325a7802", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.result-null:preset-saved", + "observation": { + "sender": ["89aa7a3bd619", "d14de7ce4d84"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "e52233a9ff71", + "effects": [ + "921f72d7827e", + "cea9d7e8986e", + "dba381378b08", + "4e1228f5e0a8", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.inner-ok-missing:preset-saved", + "observation": { + "sender": ["89aa7a3bd619", "92b857799ffd"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "befb68fa6c76", + "effects": [ + "921f72d7827e", + "cea9d7e8986e", + "dba381378b08", + "da3a01640280", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.inner-false-string-error:preset-saved", + "observation": { + "sender": ["89aa7a3bd619", "bd0266b23771"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "befb68fa6c76", + "effects": [ + "921f72d7827e", + "cea9d7e8986e", + "dba381378b08", + "da3a01640280", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.inner-false-object-error:preset-saved", + "observation": { + "sender": ["89aa7a3bd619", "c5a3f70f9b02"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "befb68fa6c76", + "effects": [ + "921f72d7827e", + "cea9d7e8986e", + "dba381378b08", + "da3a01640280", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.outer-refused:preset-saved", + "observation": { + "sender": ["89aa7a3bd619", "1923ab7dba76"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "d74bc3778ca8", + "effects": [ + "921f72d7827e", + "cea9d7e8986e", + "dba381378b08", + "841927d71fc6", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.outer-refused-no-message:preset-saved", + "observation": { + "sender": ["89aa7a3bd619", "990a149dc1be"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "ee3a941d5e9c", + "effects": [ + "921f72d7827e", + "cea9d7e8986e", + "dba381378b08", + "dba381378b08", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.method-not-found:preset-saved", + "observation": { + "sender": ["89aa7a3bd619", "74c1230400a6"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "c33fee0d8294", + "effects": [ + "921f72d7827e", + "cea9d7e8986e", + "dba381378b08", + "ea260eacb1db", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.transport-rejection:preset-saved", + "observation": { + "sender": ["89aa7a3bd619", "f4d4ba362712"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "1f453ea83df7", + "effects": [ + "921f72d7827e", + "cea9d7e8986e", + "dba381378b08", + "4c7522c66d03", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.transport-rejection-no-message:preset-saved", + "observation": { + "sender": ["89aa7a3bd619", "23e798f4b47c"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "ee3a941d5e9c", + "effects": [ + "921f72d7827e", + "cea9d7e8986e", + "dba381378b08", + "dba381378b08", + "7fd0cde62993" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-ssh.getstate-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-ssh.getstate-1.json new file mode 100644 index 00000000000..aad4c7d9fe7 --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-sparse-ssh.getstate-1.json @@ -0,0 +1,1164 @@ +{ + "operation": "tasks.workspace-sparse", + "family": "tasks.workspace-sparse", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "3453024581230908d1e0e9335f5310e7b4ae03faf50d93654b9ff28c464fb95f", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "0a16839c6f87": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "0eabd872f405": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "14db652edf02": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true + } + } + }, + "1703db1e81e4": { + "name": "workspaceSshState", + "value": { + "error": "Cannot read properties of undefined (reading 'state')", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "1d9a7d969446": { + "name": "workspaceSparsePresetsLoaded", + "value": true + }, + "25352a4de532": { + "name": "workspaceSshState", + "value": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "disconnected", + "targetId": "ssh-1" + } + }, + "2d910059043a": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "312ed3cbf468": { + "name": "workspaceSparsePresetId", + "value": "p1" + }, + "404305aa2e3a": { + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "saving": false, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "42bbd034563e": { + "name": "workspaceSparseDraft", + "value": { + "$rpc": "null" + } + }, + "44ca8518769a": { + "presets": [], + "presetsError": "", + "saving": false, + "ssh": { + "error": "Cannot read properties of undefined (reading 'state')", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "4856f62b3650": { + "name": "workspaceSparsePresets", + "value": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ] + }, + "57be9babbecd": { + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "saving": false, + "ssh": { + "error": "Unknown method", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "5c44ff5f6877": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "preset": { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + } + } + } + }, + "68ca812c8120": { + "presets": [], + "presetsError": "", + "saving": false, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "disconnected", + "targetId": "ssh-1" + } + }, + "6daeb33f37f8": { + "presets": [], + "presetsError": "", + "saving": false, + "ssh": { + "error": "transport failure", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "7a26c9dceb4c": { + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "saving": false, + "ssh": { + "error": "Cannot read properties of undefined (reading 'state')", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "7e5ba73897a1": { + "presets": [], + "presetsError": "", + "saving": false, + "ssh": { + "error": "Unknown method", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "7fd0cde62993": { + "name": "workspaceSparseSaving", + "value": false + }, + "80431b2fc9cd": { + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "saving": false, + "ssh": { + "error": "Cannot read properties of null (reading 'state')", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "813df5a46a4a": { + "presets": [], + "presetsError": "", + "saving": false, + "ssh": { + "error": "", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "81af687a998a": { + "presets": [], + "presetsError": "", + "saving": false, + "ssh": { + "error": "Cannot read properties of null (reading 'state')", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "86cc01b1e541": { + "name": "workspaceSshState", + "value": { + "error": "", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "89aa7a3bd619": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "state": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + } + } + } + }, + "9164e806ca12": { + "name": "workspaceSshState", + "value": { + "error": "Cannot read properties of null (reading 'state')", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "921f72d7827e": { + "name": "workspaceSshState", + "value": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "9367b086d487": { + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "saving": false, + "ssh": { + "error": "outer refused", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "93dfd351c771": { + "name": "workspaceSshState", + "value": { + "error": "outer refused", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "a16210531185": { + "presets": [], + "presetsError": "", + "saving": false, + "ssh": { + "error": "outer refused", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "a209f2c7160e": { + "name": "workspaceSshState", + "value": { + "error": "Unknown method", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "b09dd4915f43": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "b705ba88a562": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-1", + "ok": false + } + } + }, + "b7fa4557dcfa": { + "name": "workspaceSshState", + "value": { + "error": "transport failure", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "cd050477e049": { + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "saving": false, + "ssh": { + "error": "", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "cea9d7e8986e": { + "name": "workspaceSparseSaving", + "value": true + }, + "d0fad8f739ca": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-1", + "ok": false + } + } + }, + "dba381378b08": { + "name": "workspaceSparsePresetsError", + "value": "" + }, + "e18278fce524": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "ee3a941d5e9c": { + "presets": [], + "presetsError": "", + "saving": false, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "ef27a7ecb258": { + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "saving": false, + "ssh": { + "error": "transport failure", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "f36f17f8d448": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "f7885da6b9c0": { + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "saving": false, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "disconnected", + "targetId": "ssh-1" + } + }, + "f9dfbe0c0ea7": { + "name": "ssh.getState#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.getState\",\"params\":{\"targetId\":\"ssh-1\"}}" + }, + "fd758406cc2c": { + "name": "repo.saveSparsePreset#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.saveSparsePreset\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"docs\",\"directories\":[\"docs\"]}}" + }, + "ff6c3161dcc7": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + } + }, + "recording": { + "scenario": "matrix-tasks.workspace-sparse-ssh.getstate-1", + "checkpoints": [ + { + "id": "tw-workspace-sparse-saved.normal:ssh-state-read", + "observation": { + "sender": ["89aa7a3bd619"], + "payloads": ["f9dfbe0c0ea7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "ee3a941d5e9c", + "effects": ["921f72d7827e"] + } + }, + { + "id": "tw-workspace-sparse-saved.normal:preset-saved", + "observation": { + "sender": ["89aa7a3bd619", "5c44ff5f6877"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "404305aa2e3a", + "effects": [ + "921f72d7827e", + "cea9d7e8986e", + "dba381378b08", + "4856f62b3650", + "1d9a7d969446", + "312ed3cbf468", + "42bbd034563e", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.result-absent:ssh-state-read", + "observation": { + "sender": ["14db652edf02"], + "payloads": ["f9dfbe0c0ea7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "44ca8518769a", + "effects": ["1703db1e81e4"] + } + }, + { + "id": "tw-workspace-sparse-saved.result-absent:preset-saved", + "observation": { + "sender": ["14db652edf02", "5c44ff5f6877"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "7a26c9dceb4c", + "effects": [ + "1703db1e81e4", + "cea9d7e8986e", + "dba381378b08", + "4856f62b3650", + "1d9a7d969446", + "312ed3cbf468", + "42bbd034563e", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.result-null:ssh-state-read", + "observation": { + "sender": ["0eabd872f405"], + "payloads": ["f9dfbe0c0ea7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "81af687a998a", + "effects": ["9164e806ca12"] + } + }, + { + "id": "tw-workspace-sparse-saved.result-null:preset-saved", + "observation": { + "sender": ["0eabd872f405", "5c44ff5f6877"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "80431b2fc9cd", + "effects": [ + "9164e806ca12", + "cea9d7e8986e", + "dba381378b08", + "4856f62b3650", + "1d9a7d969446", + "312ed3cbf468", + "42bbd034563e", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.inner-ok-missing:ssh-state-read", + "observation": { + "sender": ["0a16839c6f87"], + "payloads": ["f9dfbe0c0ea7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "68ca812c8120", + "effects": ["25352a4de532"] + } + }, + { + "id": "tw-workspace-sparse-saved.inner-ok-missing:preset-saved", + "observation": { + "sender": ["0a16839c6f87", "5c44ff5f6877"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "f7885da6b9c0", + "effects": [ + "25352a4de532", + "cea9d7e8986e", + "dba381378b08", + "4856f62b3650", + "1d9a7d969446", + "312ed3cbf468", + "42bbd034563e", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.inner-false-string-error:ssh-state-read", + "observation": { + "sender": ["b09dd4915f43"], + "payloads": ["f9dfbe0c0ea7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "68ca812c8120", + "effects": ["25352a4de532"] + } + }, + { + "id": "tw-workspace-sparse-saved.inner-false-string-error:preset-saved", + "observation": { + "sender": ["b09dd4915f43", "5c44ff5f6877"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "f7885da6b9c0", + "effects": [ + "25352a4de532", + "cea9d7e8986e", + "dba381378b08", + "4856f62b3650", + "1d9a7d969446", + "312ed3cbf468", + "42bbd034563e", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.inner-false-object-error:ssh-state-read", + "observation": { + "sender": ["e18278fce524"], + "payloads": ["f9dfbe0c0ea7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "68ca812c8120", + "effects": ["25352a4de532"] + } + }, + { + "id": "tw-workspace-sparse-saved.inner-false-object-error:preset-saved", + "observation": { + "sender": ["e18278fce524", "5c44ff5f6877"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "f7885da6b9c0", + "effects": [ + "25352a4de532", + "cea9d7e8986e", + "dba381378b08", + "4856f62b3650", + "1d9a7d969446", + "312ed3cbf468", + "42bbd034563e", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.outer-refused:ssh-state-read", + "observation": { + "sender": ["d0fad8f739ca"], + "payloads": ["f9dfbe0c0ea7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "a16210531185", + "effects": ["93dfd351c771"] + } + }, + { + "id": "tw-workspace-sparse-saved.outer-refused:preset-saved", + "observation": { + "sender": ["d0fad8f739ca", "5c44ff5f6877"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "9367b086d487", + "effects": [ + "93dfd351c771", + "cea9d7e8986e", + "dba381378b08", + "4856f62b3650", + "1d9a7d969446", + "312ed3cbf468", + "42bbd034563e", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.outer-refused-no-message:ssh-state-read", + "observation": { + "sender": ["ff6c3161dcc7"], + "payloads": ["f9dfbe0c0ea7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "813df5a46a4a", + "effects": ["86cc01b1e541"] + } + }, + { + "id": "tw-workspace-sparse-saved.outer-refused-no-message:preset-saved", + "observation": { + "sender": ["ff6c3161dcc7", "5c44ff5f6877"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "cd050477e049", + "effects": [ + "86cc01b1e541", + "cea9d7e8986e", + "dba381378b08", + "4856f62b3650", + "1d9a7d969446", + "312ed3cbf468", + "42bbd034563e", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.method-not-found:ssh-state-read", + "observation": { + "sender": ["b705ba88a562"], + "payloads": ["f9dfbe0c0ea7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "7e5ba73897a1", + "effects": ["a209f2c7160e"] + } + }, + { + "id": "tw-workspace-sparse-saved.method-not-found:preset-saved", + "observation": { + "sender": ["b705ba88a562", "5c44ff5f6877"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "57be9babbecd", + "effects": [ + "a209f2c7160e", + "cea9d7e8986e", + "dba381378b08", + "4856f62b3650", + "1d9a7d969446", + "312ed3cbf468", + "42bbd034563e", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.transport-rejection:ssh-state-read", + "observation": { + "sender": ["2d910059043a"], + "payloads": ["f9dfbe0c0ea7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "6daeb33f37f8", + "effects": ["b7fa4557dcfa"] + } + }, + { + "id": "tw-workspace-sparse-saved.transport-rejection:preset-saved", + "observation": { + "sender": ["2d910059043a", "5c44ff5f6877"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "ef27a7ecb258", + "effects": [ + "b7fa4557dcfa", + "cea9d7e8986e", + "dba381378b08", + "4856f62b3650", + "1d9a7d969446", + "312ed3cbf468", + "42bbd034563e", + "7fd0cde62993" + ] + } + }, + { + "id": "tw-workspace-sparse-saved.transport-rejection-no-message:ssh-state-read", + "observation": { + "sender": ["f36f17f8d448"], + "payloads": ["f9dfbe0c0ea7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "813df5a46a4a", + "effects": ["86cc01b1e541"] + } + }, + { + "id": "tw-workspace-sparse-saved.transport-rejection-no-message:preset-saved", + "observation": { + "sender": ["f36f17f8d448", "5c44ff5f6877"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "cd050477e049", + "effects": [ + "86cc01b1e541", + "cea9d7e8986e", + "dba381378b08", + "4856f62b3650", + "1d9a7d969446", + "312ed3cbf468", + "42bbd034563e", + "7fd0cde62993" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-local-preflight.detectagents-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-local-preflight.detectagents-1.json new file mode 100644 index 00000000000..9ae9fe3d7d8 --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-local-preflight.detectagents-1.json @@ -0,0 +1,566 @@ +{ + "operation": "tasks.workspace-ssh-local", + "family": "tasks.workspace-ssh-local", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "28f7ba289c188bfc121ef7b969133711189e887fbfc7b37c8a5401ea7f30b56a", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "00d70c40c34c": { + "name": "preflight.detectAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectAgents" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "0846bea730cf": { + "name": "preflight.detectAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectAgents" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "1317fc33bdbe": { + "name": "preflight.detectAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectAgents" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "163b91b6fe9c": { + "name": "preflight.detectAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectAgents" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + }, + "327b46fb8bef": { + "name": "preflight.detectAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectAgents" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "41b0d115f434": { + "name": "workspaceDetectedAgentIds", + "value": { + "$rpc": "null" + } + }, + "6e5fcf24648d": { + "name": "preflight.detectAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectAgents" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true + } + } + }, + "70d128c20ae4": { + "name": "preflight.detectAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectAgents" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "71225024ccf5": { + "agent": "claude", + "connecting": false, + "detected": [], + "setup": "unresolved", + "ssh": { + "$rpc": "null" + } + }, + "7400f4eebe66": { + "agent": "claude", + "connecting": false, + "detected": ["codex", "claude"], + "setup": "unresolved", + "ssh": { + "$rpc": "null" + } + }, + "87d7d24a30d2": { + "name": "preflight.detectAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectAgents" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-1", + "ok": false + } + } + }, + "9f152ed6e897": { + "name": "workspaceDetectedAgentIds", + "value": [] + }, + "cb93b17470e8": { + "name": "preflight.detectAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectAgents" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": ["codex", "claude"] + } + } + }, + "cbb858a786ac": { + "name": "workspaceDetectedAgentIds", + "value": ["codex", "claude"] + }, + "cf32edc950ac": { + "name": "preflight.detectAgents#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectAgents\"}" + }, + "ea709e13f0f0": { + "name": "workspaceAgentOverridden", + "value": false + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "ed6189938d78": { + "name": "workspaceAgent", + "value": "claude" + }, + "fb640b2bca4c": { + "name": "preflight.detectAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectAgents" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-1", + "ok": false + } + } + }, + "fbb9eef78275": { + "name": "preflight.detectAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectAgents" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + } + }, + "recording": { + "scenario": "matrix-tasks.workspace-ssh-local-preflight.detectagents-1", + "checkpoints": [ + { + "id": "tw-workspace-ssh-local-agents.normal:local-agents-detected", + "observation": { + "sender": ["cb93b17470e8"], + "payloads": ["cf32edc950ac"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "7400f4eebe66", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "cbb858a786ac"] + } + }, + { + "id": "tw-workspace-ssh-local-agents.result-absent:local-agents-detected", + "observation": { + "sender": ["6e5fcf24648d"], + "payloads": ["cf32edc950ac"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-local-agents.result-null:local-agents-detected", + "observation": { + "sender": ["1317fc33bdbe"], + "payloads": ["cf32edc950ac"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-local-agents.inner-ok-missing:local-agents-detected", + "observation": { + "sender": ["327b46fb8bef"], + "payloads": ["cf32edc950ac"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-local-agents.inner-false-string-error:local-agents-detected", + "observation": { + "sender": ["0846bea730cf"], + "payloads": ["cf32edc950ac"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-local-agents.inner-false-object-error:local-agents-detected", + "observation": { + "sender": ["00d70c40c34c"], + "payloads": ["cf32edc950ac"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-local-agents.outer-refused:local-agents-detected", + "observation": { + "sender": ["fb640b2bca4c"], + "payloads": ["cf32edc950ac"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-local-agents.outer-refused-no-message:local-agents-detected", + "observation": { + "sender": ["163b91b6fe9c"], + "payloads": ["cf32edc950ac"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-local-agents.method-not-found:local-agents-detected", + "observation": { + "sender": ["87d7d24a30d2"], + "payloads": ["cf32edc950ac"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-local-agents.transport-rejection:local-agents-detected", + "observation": { + "sender": ["fbb9eef78275"], + "payloads": ["cf32edc950ac"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-local-agents.transport-rejection-no-message:local-agents-detected", + "observation": { + "sender": ["70d128c20ae4"], + "payloads": ["cf32edc950ac"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-preflight.detectremoteagents-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-preflight.detectremoteagents-1.json new file mode 100644 index 00000000000..ea84ad9ce8a --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-preflight.detectremoteagents-1.json @@ -0,0 +1,1268 @@ +{ + "operation": "tasks.workspace-ssh", + "family": "tasks.workspace-ssh", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "35771ab92d0d4ff44a1dd6e5f1e5d3137570a2e013bddea5ca77ecac7989ed53", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "02a3532637b4": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "07d4c9b0eaf2": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "0ba2cee4b538": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + } + }, + "162a699815c1": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "1739575ac53e": { + "name": "workspaceSshConnecting", + "value": true + }, + "17e35b25d15d": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": ["codex"] + } + } + }, + "18e6a3ac6471": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "$rpc": "null" + } + }, + "19b6093097ff": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + }, + "227c671c491b": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "3571f351281f": { + "name": "workspaceDetectedAgentIds", + "value": ["codex"] + }, + "37921d9fdeb7": { + "name": "preflight.detectRemoteAgents#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}" + }, + "41b0d115f434": { + "name": "workspaceDetectedAgentIds", + "value": { + "$rpc": "null" + } + }, + "43ead075ce12": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + }, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "43fd3e2f4b53": { + "name": "workspaceSshConnecting", + "value": false + }, + "71225024ccf5": { + "agent": "claude", + "connecting": false, + "detected": [], + "setup": "unresolved", + "ssh": { + "$rpc": "null" + } + }, + "71d817ffdd81": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "state": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + } + } + } + }, + "7a1b524f17d0": { + "agent": "claude", + "connecting": false, + "detected": [], + "setup": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + }, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "7c9498659f58": { + "name": "ssh.connect#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.connect\",\"params\":{\"targetId\":\"ssh-1\"}}" + }, + "80a4af19f556": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "hooks": { + "scripts": { + "setup": " pnpm install " + } + }, + "setupRunPolicy": "ask", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + } + } + } + }, + "860046b4ce30": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-1", + "ok": false + } + } + }, + "90dce4861972": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true + } + } + }, + "921f72d7827e": { + "name": "workspaceSshState", + "value": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "95dee1165f95": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "9f0676ba0d67": { + "agent": "claude", + "connecting": false, + "detected": [], + "setup": "unresolved", + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "9f152ed6e897": { + "name": "workspaceDetectedAgentIds", + "value": [] + }, + "a1f755a38636": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "c5eeac27af29": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-1", + "ok": false + } + } + }, + "ea709e13f0f0": { + "name": "workspaceAgentOverridden", + "value": false + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "ed6189938d78": { + "name": "workspaceAgent", + "value": "claude" + }, + "f0a9f62da106": { + "name": "repo.hooks#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"repo.hooks\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "fbfdbb919268": { + "name": "workspaceSshState", + "value": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connecting", + "targetId": "ssh-1" + } + }, + "fd04a7852302": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + } + }, + "recording": { + "scenario": "matrix-tasks.workspace-ssh-preflight.detectremoteagents-1", + "checkpoints": [ + { + "id": "tw-workspace-ssh-connected.normal:agents-detected", + "observation": { + "sender": ["17e35b25d15d"], + "payloads": ["37921d9fdeb7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "18e6a3ac6471", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "3571f351281f"] + } + }, + { + "id": "tw-workspace-ssh-connected.normal:connected", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "a1f755a38636", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.normal:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "43ead075ce12", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.result-absent:agents-detected", + "observation": { + "sender": ["90dce4861972"], + "payloads": ["37921d9fdeb7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-connected.result-absent:connected", + "observation": { + "sender": ["90dce4861972", "71d817ffdd81"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "9f0676ba0d67", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.result-absent:setup-prompted", + "observation": { + "sender": ["90dce4861972", "71d817ffdd81", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "7a1b524f17d0", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.result-null:agents-detected", + "observation": { + "sender": ["02a3532637b4"], + "payloads": ["37921d9fdeb7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-connected.result-null:connected", + "observation": { + "sender": ["02a3532637b4", "71d817ffdd81"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "9f0676ba0d67", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.result-null:setup-prompted", + "observation": { + "sender": ["02a3532637b4", "71d817ffdd81", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "7a1b524f17d0", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-ok-missing:agents-detected", + "observation": { + "sender": ["227c671c491b"], + "payloads": ["37921d9fdeb7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-ok-missing:connected", + "observation": { + "sender": ["227c671c491b", "71d817ffdd81"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "9f0676ba0d67", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-ok-missing:setup-prompted", + "observation": { + "sender": ["227c671c491b", "71d817ffdd81", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "7a1b524f17d0", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-false-string-error:agents-detected", + "observation": { + "sender": ["fd04a7852302"], + "payloads": ["37921d9fdeb7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-false-string-error:connected", + "observation": { + "sender": ["fd04a7852302", "71d817ffdd81"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "9f0676ba0d67", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-false-string-error:setup-prompted", + "observation": { + "sender": ["fd04a7852302", "71d817ffdd81", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "7a1b524f17d0", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-false-object-error:agents-detected", + "observation": { + "sender": ["162a699815c1"], + "payloads": ["37921d9fdeb7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-false-object-error:connected", + "observation": { + "sender": ["162a699815c1", "71d817ffdd81"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "9f0676ba0d67", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-false-object-error:setup-prompted", + "observation": { + "sender": ["162a699815c1", "71d817ffdd81", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "7a1b524f17d0", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.outer-refused:agents-detected", + "observation": { + "sender": ["c5eeac27af29"], + "payloads": ["37921d9fdeb7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-connected.outer-refused:connected", + "observation": { + "sender": ["c5eeac27af29", "71d817ffdd81"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "9f0676ba0d67", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.outer-refused:setup-prompted", + "observation": { + "sender": ["c5eeac27af29", "71d817ffdd81", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "7a1b524f17d0", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.outer-refused-no-message:agents-detected", + "observation": { + "sender": ["19b6093097ff"], + "payloads": ["37921d9fdeb7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-connected.outer-refused-no-message:connected", + "observation": { + "sender": ["19b6093097ff", "71d817ffdd81"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "9f0676ba0d67", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.outer-refused-no-message:setup-prompted", + "observation": { + "sender": ["19b6093097ff", "71d817ffdd81", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "7a1b524f17d0", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.method-not-found:agents-detected", + "observation": { + "sender": ["860046b4ce30"], + "payloads": ["37921d9fdeb7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-connected.method-not-found:connected", + "observation": { + "sender": ["860046b4ce30", "71d817ffdd81"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "9f0676ba0d67", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.method-not-found:setup-prompted", + "observation": { + "sender": ["860046b4ce30", "71d817ffdd81", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "7a1b524f17d0", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.transport-rejection:agents-detected", + "observation": { + "sender": ["07d4c9b0eaf2"], + "payloads": ["37921d9fdeb7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-connected.transport-rejection:connected", + "observation": { + "sender": ["07d4c9b0eaf2", "71d817ffdd81"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "9f0676ba0d67", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.transport-rejection:setup-prompted", + "observation": { + "sender": ["07d4c9b0eaf2", "71d817ffdd81", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "7a1b524f17d0", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.transport-rejection-no-message:agents-detected", + "observation": { + "sender": ["95dee1165f95"], + "payloads": ["37921d9fdeb7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "71225024ccf5", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "9f152ed6e897"] + } + }, + { + "id": "tw-workspace-ssh-connected.transport-rejection-no-message:connected", + "observation": { + "sender": ["95dee1165f95", "71d817ffdd81"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "9f0676ba0d67", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.transport-rejection-no-message:setup-prompted", + "observation": { + "sender": ["95dee1165f95", "71d817ffdd81", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "7a1b524f17d0", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-repo.hooks-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-repo.hooks-1.json new file mode 100644 index 00000000000..70861e8c3e5 --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-repo.hooks-1.json @@ -0,0 +1,975 @@ +{ + "operation": "tasks.workspace-ssh", + "family": "tasks.workspace-ssh", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "39451d3c811068754f91ac243fe1208f4ce742df53261314345d8209ba761e94", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "02800add9d11": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "0ba2cee4b538": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + } + }, + "1712c415bebf": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "decision": "inherit", + "kind": "decision" + } + }, + "1739575ac53e": { + "name": "workspaceSshConnecting", + "value": true + }, + "17e35b25d15d": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": ["codex"] + } + } + }, + "18e6a3ac6471": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "$rpc": "null" + } + }, + "1fcb0efb54e8": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-3", + "ok": false + } + } + }, + "32a7c0ae7918": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "outer refused", + "isRpcDeliveryUnknown": false + } + }, + "33cfd55c1890": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "3571f351281f": { + "name": "workspaceDetectedAgentIds", + "value": ["codex"] + }, + "37921d9fdeb7": { + "name": "preflight.detectRemoteAgents#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}" + }, + "41b0d115f434": { + "name": "workspaceDetectedAgentIds", + "value": { + "$rpc": "null" + } + }, + "43ead075ce12": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + }, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "43fd3e2f4b53": { + "name": "workspaceSshConnecting", + "value": false + }, + "5278c299d57a": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "6139c7d2716a": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot read properties of null (reading 'hooks')", + "isRpcDeliveryUnknown": false + } + }, + "70a84db3f870": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-3", + "ok": false + } + } + }, + "71d817ffdd81": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "state": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + } + } + } + }, + "7c7a826833e0": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-3", + "ok": false + } + } + }, + "7c9498659f58": { + "name": "ssh.connect#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.connect\",\"params\":{\"targetId\":\"ssh-1\"}}" + }, + "7e1d82e5b5ed": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": { + "decision": "inherit", + "kind": "decision" + }, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "80a4af19f556": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "hooks": { + "scripts": { + "setup": " pnpm install " + } + }, + "setupRunPolicy": "ask", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + } + } + } + }, + "8c3bb432df5b": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "921f72d7827e": { + "name": "workspaceSshState", + "value": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "941b6aeb0d6f": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "a1f755a38636": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "a947768bc0ed": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + }, + "b948e8307e81": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Unknown method", + "isRpcDeliveryUnknown": false + } + }, + "c7584e82c72f": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + }, + "ea709e13f0f0": { + "name": "workspaceAgentOverridden", + "value": false + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "ed6189938d78": { + "name": "workspaceAgent", + "value": "claude" + }, + "f0a9f62da106": { + "name": "repo.hooks#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"repo.hooks\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "f21c4f69fe5a": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot read properties of undefined (reading 'hooks')", + "isRpcDeliveryUnknown": false + } + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + }, + "f7b1983b91e9": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true + } + } + }, + "fbfdbb919268": { + "name": "workspaceSshState", + "value": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connecting", + "targetId": "ssh-1" + } + }, + "ff43290f6836": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + } + }, + "recording": { + "scenario": "matrix-tasks.workspace-ssh-repo.hooks-1", + "checkpoints": [ + { + "id": "tw-workspace-ssh-connected.prelude:agents-detected", + "observation": { + "sender": ["17e35b25d15d"], + "payloads": ["37921d9fdeb7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "18e6a3ac6471", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "3571f351281f"] + } + }, + { + "id": "tw-workspace-ssh-connected.prelude:connected", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "a1f755a38636", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.normal:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "43ead075ce12", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.result-absent:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81", "f7b1983b91e9"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "f21c4f69fe5a" + }, + "state": "a1f755a38636", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.result-null:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81", "ff43290f6836"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "6139c7d2716a" + }, + "state": "a1f755a38636", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-ok-missing:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81", "5278c299d57a"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "1712c415bebf" + }, + "state": "7e1d82e5b5ed", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-false-string-error:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81", "02800add9d11"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "1712c415bebf" + }, + "state": "7e1d82e5b5ed", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-false-object-error:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81", "8c3bb432df5b"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "1712c415bebf" + }, + "state": "7e1d82e5b5ed", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.outer-refused:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81", "7c7a826833e0"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "32a7c0ae7918" + }, + "state": "a1f755a38636", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.outer-refused-no-message:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81", "1fcb0efb54e8"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "f3b516f62081" + }, + "state": "a1f755a38636", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.method-not-found:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81", "70a84db3f870"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "b948e8307e81" + }, + "state": "a1f755a38636", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.transport-rejection:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81", "941b6aeb0d6f"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "a947768bc0ed" + }, + "state": "a1f755a38636", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.transport-rejection-no-message:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81", "33cfd55c1890"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "c7584e82c72f" + }, + "state": "a1f755a38636", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-ssh.connect-1.json b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-ssh.connect-1.json new file mode 100644 index 00000000000..3cfc59c03b2 --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-tasks.workspace-ssh-ssh.connect-1.json @@ -0,0 +1,1421 @@ +{ + "operation": "tasks.workspace-ssh", + "family": "tasks.workspace-ssh", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "5cc1773d06d49d2616da72f2790753322edda6d67e12b5e41116971d34787391", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "09c18a29abf3": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "0ba2cee4b538": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + } + }, + "11181309201b": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "1703db1e81e4": { + "name": "workspaceSshState", + "value": { + "error": "Cannot read properties of undefined (reading 'state')", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "1739575ac53e": { + "name": "workspaceSshConnecting", + "value": true + }, + "17e35b25d15d": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": ["codex"] + } + } + }, + "18e6a3ac6471": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "$rpc": "null" + } + }, + "3571f351281f": { + "name": "workspaceDetectedAgentIds", + "value": ["codex"] + }, + "37921d9fdeb7": { + "name": "preflight.detectRemoteAgents#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}" + }, + "41b0d115f434": { + "name": "workspaceDetectedAgentIds", + "value": { + "$rpc": "null" + } + }, + "42fb94e15a80": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + }, + "ssh": { + "error": "transport failure", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "43ead075ce12": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + }, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "43fd3e2f4b53": { + "name": "workspaceSshConnecting", + "value": false + }, + "4a24b4b276fa": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + }, + "ssh": { + "error": "outer refused", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "4ca864d39d04": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "error": "outer refused", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "50b0f369719b": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true + } + } + }, + "5313715e0fbb": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "error": "", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "654de1224bc2": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Connection closed", + "isRpcDeliveryUnknown": true + } + } + }, + "671db70f932a": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "6d2db0d7fee0": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "error": "transport failure", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "71d817ffdd81": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "state": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + } + } + } + }, + "7c9498659f58": { + "name": "ssh.connect#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.connect\",\"params\":{\"targetId\":\"ssh-1\"}}" + }, + "80a4af19f556": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "hooks": { + "scripts": { + "setup": " pnpm install " + } + }, + "setupRunPolicy": "ask", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + } + } + } + }, + "86cc01b1e541": { + "name": "workspaceSshState", + "value": { + "error": "", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "8a5755fd3ffa": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-2", + "ok": false + } + } + }, + "8dc4620dc1de": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "error": "Unknown method", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "9164e806ca12": { + "name": "workspaceSshState", + "value": { + "error": "Cannot read properties of null (reading 'state')", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "921f72d7827e": { + "name": "workspaceSshState", + "value": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "93dfd351c771": { + "name": "workspaceSshState", + "value": { + "error": "outer refused", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "9eb40e943577": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + }, + "ssh": { + "error": "Unknown method", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "a1f755a38636": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "a209f2c7160e": { + "name": "workspaceSshState", + "value": { + "error": "Unknown method", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "aa15b77aca73": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + }, + "ssh": { + "error": "", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "aad86573b0be": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-2", + "ok": false + } + } + }, + "b7fa4557dcfa": { + "name": "workspaceSshState", + "value": { + "error": "transport failure", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "c5608f9dd27c": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "c81e3c5c4429": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "cabfead2f0ff": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "error": "Cannot read properties of null (reading 'state')", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "ce4a98c7ed2f": { + "name": "workspaceSshState", + "value": { + "error": "Connection closed", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "ce5554d7557b": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + }, + "ssh": { + "error": "Cannot read properties of undefined (reading 'state')", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "d86f0ed68c40": { + "agent": "claude", + "connecting": true, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connecting", + "targetId": "ssh-1" + } + }, + "e17430747d93": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + }, + "ssh": { + "error": "Cannot read properties of null (reading 'state')", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "e29464ad65fd": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-2", + "ok": false + } + } + }, + "e62fd21eb764": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "ea709e13f0f0": { + "name": "workspaceAgentOverridden", + "value": false + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "ed6189938d78": { + "name": "workspaceAgent", + "value": "claude" + }, + "f066aa754e25": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "error": "Cannot read properties of undefined (reading 'state')", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "f0a9f62da106": { + "name": "repo.hooks#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"repo.hooks\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "fbfdbb919268": { + "name": "workspaceSshState", + "value": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connecting", + "targetId": "ssh-1" + } + } + }, + "recording": { + "scenario": "matrix-tasks.workspace-ssh-ssh.connect-1", + "checkpoints": [ + { + "id": "tw-workspace-ssh-connected.prelude:agents-detected", + "observation": { + "sender": ["17e35b25d15d"], + "payloads": ["37921d9fdeb7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "18e6a3ac6471", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "3571f351281f"] + } + }, + { + "id": "tw-workspace-ssh-connected.prelude:cleanup", + "observation": { + "sender": ["17e35b25d15d", "654de1224bc2"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "d86f0ed68c40", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "ce4a98c7ed2f", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.normal:connected", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "a1f755a38636", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.normal:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "43ead075ce12", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.result-absent:connected", + "observation": { + "sender": ["17e35b25d15d", "50b0f369719b"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "f066aa754e25", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "1703db1e81e4", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.result-absent:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "50b0f369719b", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "ce5554d7557b", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "1703db1e81e4", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.result-null:connected", + "observation": { + "sender": ["17e35b25d15d", "09c18a29abf3"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "cabfead2f0ff", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "9164e806ca12", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.result-null:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "09c18a29abf3", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "e17430747d93", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "9164e806ca12", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-ok-missing:connected", + "observation": { + "sender": ["17e35b25d15d", "11181309201b"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "a1f755a38636", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-ok-missing:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "11181309201b", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "43ead075ce12", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-false-string-error:connected", + "observation": { + "sender": ["17e35b25d15d", "c81e3c5c4429"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "a1f755a38636", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-false-string-error:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "c81e3c5c4429", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "43ead075ce12", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-false-object-error:connected", + "observation": { + "sender": ["17e35b25d15d", "e62fd21eb764"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "a1f755a38636", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.inner-false-object-error:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "e62fd21eb764", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "43ead075ce12", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.outer-refused:connected", + "observation": { + "sender": ["17e35b25d15d", "e29464ad65fd"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "4ca864d39d04", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "93dfd351c771", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.outer-refused:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "e29464ad65fd", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "4a24b4b276fa", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "93dfd351c771", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.outer-refused-no-message:connected", + "observation": { + "sender": ["17e35b25d15d", "aad86573b0be"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "5313715e0fbb", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "86cc01b1e541", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.outer-refused-no-message:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "aad86573b0be", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "aa15b77aca73", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "86cc01b1e541", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.method-not-found:connected", + "observation": { + "sender": ["17e35b25d15d", "8a5755fd3ffa"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "8dc4620dc1de", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "a209f2c7160e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.method-not-found:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "8a5755fd3ffa", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "9eb40e943577", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "a209f2c7160e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.transport-rejection:connected", + "observation": { + "sender": ["17e35b25d15d", "c5608f9dd27c"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "6d2db0d7fee0", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "b7fa4557dcfa", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.transport-rejection:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "c5608f9dd27c", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "42fb94e15a80", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "b7fa4557dcfa", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.transport-rejection-no-message:connected", + "observation": { + "sender": ["17e35b25d15d", "671db70f932a"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "5313715e0fbb", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "86cc01b1e541", + "43fd3e2f4b53" + ] + } + }, + { + "id": "tw-workspace-ssh-connected.transport-rejection-no-message:setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "671db70f932a", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "aa15b77aca73", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "86cc01b1e541", + "43fd3e2f4b53" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.create-retry-worktree.create-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.create-retry-worktree.create-1.json new file mode 100644 index 00000000000..6368fb4cf12 --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-worktree.create-retry-worktree.create-1.json @@ -0,0 +1,652 @@ +{ + "operation": "tasks.worktree-create-retry", + "family": "worktree.create-retry", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "e93a36ef900de27e1a566cdb2389ba4f900a330eadbb476b9bfb1ef05707b352", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "0938d32a2ec2": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "12ace8a26229": { + "outcome": { + "error": "outer refused" + } + }, + "151fd59f40cd": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-1", + "ok": false + } + } + }, + "199931225ca2": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot read properties of undefined (reading 'displayName')", + "isRpcDeliveryUnknown": false + } + }, + "240b0b1c72b2": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "" + } + }, + "2588fd63a157": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot read properties of undefined (reading 'worktree')", + "isRpcDeliveryUnknown": false + } + }, + "292579caa07d": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "2e78a1dad2ea": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "3f946ad0279c": { + "outcome": "uncreated" + }, + "43a221c63628": { + "name": "worktree.create#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.create\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"kestrel\",\"clientMutationId\":\"mutation-1\"}}" + }, + "489c189aebca": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "worktree": { + "displayName": "kestrel", + "id": "repo-1::/w" + } + } + } + } + }, + "6bf7db287168": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "7665e4eb5ce2": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "outer refused" + } + }, + "7d651cae8837": { + "outcome": { + "error": "" + } + }, + "7fbbbeb1902c": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "Unknown method" + } + }, + "8cf7217b02de": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "96a4c62e654d": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "a947768bc0ed": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + }, + "b32227fdb10b": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "name": "kestrel", + "worktreeId": "repo-1::/w" + } + }, + "b5447f4dd931": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot read properties of null (reading 'worktree')", + "isRpcDeliveryUnknown": false + } + }, + "b6ebedadd49b": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + }, + "c26dcf914d04": { + "outcome": { + "error": "Unknown method" + } + }, + "c7584e82c72f": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + }, + "c8b7b7e4da75": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-1", + "ok": false + } + } + }, + "cf574d8c995b": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true + } + } + }, + "df162b95f465": { + "outcome": { + "name": "kestrel", + "worktreeId": "repo-1::/w" + } + } + }, + "recording": { + "scenario": "matrix-worktree.create-retry-worktree.create-1", + "checkpoints": [ + { + "id": "tw-create-retry-created.normal:created", + "observation": { + "sender": ["489c189aebca"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "b32227fdb10b" + }, + "state": "df162b95f465", + "effects": [] + } + }, + { + "id": "tw-create-retry-created.result-absent:created", + "observation": { + "sender": ["cf574d8c995b"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "2588fd63a157" + }, + "state": "3f946ad0279c", + "effects": [] + } + }, + { + "id": "tw-create-retry-created.result-null:created", + "observation": { + "sender": ["0938d32a2ec2"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "b5447f4dd931" + }, + "state": "3f946ad0279c", + "effects": [] + } + }, + { + "id": "tw-create-retry-created.inner-ok-missing:created", + "observation": { + "sender": ["6bf7db287168"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "199931225ca2" + }, + "state": "3f946ad0279c", + "effects": [] + } + }, + { + "id": "tw-create-retry-created.inner-false-string-error:created", + "observation": { + "sender": ["96a4c62e654d"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "199931225ca2" + }, + "state": "3f946ad0279c", + "effects": [] + } + }, + { + "id": "tw-create-retry-created.inner-false-object-error:created", + "observation": { + "sender": ["2e78a1dad2ea"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "199931225ca2" + }, + "state": "3f946ad0279c", + "effects": [] + } + }, + { + "id": "tw-create-retry-created.outer-refused:created", + "observation": { + "sender": ["c8b7b7e4da75"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "7665e4eb5ce2" + }, + "state": "12ace8a26229", + "effects": [] + } + }, + { + "id": "tw-create-retry-created.outer-refused-no-message:created", + "observation": { + "sender": ["b6ebedadd49b"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "240b0b1c72b2" + }, + "state": "7d651cae8837", + "effects": [] + } + }, + { + "id": "tw-create-retry-created.method-not-found:created", + "observation": { + "sender": ["151fd59f40cd"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "7fbbbeb1902c" + }, + "state": "c26dcf914d04", + "effects": [] + } + }, + { + "id": "tw-create-retry-created.transport-rejection:created", + "observation": { + "sender": ["292579caa07d"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "a947768bc0ed" + }, + "state": "3f946ad0279c", + "effects": [] + } + }, + { + "id": "tw-create-retry-created.transport-rejection-no-message:created", + "observation": { + "sender": ["8cf7217b02de"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "c7584e82c72f" + }, + "state": "3f946ad0279c", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolvemrbase-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolvemrbase-1.json new file mode 100644 index 00000000000..39cec3ffb81 --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolvemrbase-1.json @@ -0,0 +1,738 @@ +{ + "operation": "tasks.composer-hosted-base", + "family": "worktree.hosted-base", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "a84f8a5acfd428eb77b5c02a3de0fa8b780c666db31bbe574ecf76cdf84adeb2", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "08ecbab921e6": { + "name": "worktree.resolveMrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolveMrBase" + }, + { + "name": "params", + "value": { + "mrIid": 7, + "repo": "id:repo-1", + "sourceBranch": "feature" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "0e24d2a37a0d": { + "name": "worktree.resolvePrBase#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.resolvePrBase\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"headRefName\":\"feature\"}}" + }, + "156f5e61efd3": { + "name": "worktree.resolveMrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolveMrBase" + }, + { + "name": "params", + "value": { + "mrIid": 7, + "repo": "id:repo-1", + "sourceBranch": "feature" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "17ae65496a72": { + "name": "worktree.resolveMrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolveMrBase" + }, + { + "name": "params", + "value": { + "mrIid": 7, + "repo": "id:repo-1", + "sourceBranch": "feature" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-2", + "ok": false + } + } + }, + "201cea1f9864": { + "name": "worktree.resolveMrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolveMrBase" + }, + { + "name": "params", + "value": { + "mrIid": 7, + "repo": "id:repo-1", + "sourceBranch": "feature" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-2", + "ok": false + } + } + }, + "22f024eeb07c": { + "name": "worktree.resolveMrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolveMrBase" + }, + { + "name": "params", + "value": { + "mrIid": 7, + "repo": "id:repo-1", + "sourceBranch": "feature" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "236529aa012d": { + "mrBase": "unresolved", + "prBase": { + "baseBranch": "main", + "compareBaseRef": "origin/main" + } + }, + "2aaea8ee523e": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "refused", + "isRpcDeliveryUnknown": false + } + }, + "2c7f810cc819": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "[object Object]", + "isRpcDeliveryUnknown": false + } + }, + "32a7c0ae7918": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "outer refused", + "isRpcDeliveryUnknown": false + } + }, + "336e99424dd0": { + "name": "worktree.resolveMrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolveMrBase" + }, + { + "name": "params", + "value": { + "mrIid": 7, + "repo": "id:repo-1", + "sourceBranch": "feature" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "382c27f806f2": { + "name": "worktree.resolveMrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolveMrBase" + }, + { + "name": "params", + "value": { + "mrIid": 7, + "repo": "id:repo-1", + "sourceBranch": "feature" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-2", + "ok": false + } + } + }, + "3cca8119f144": { + "mrBase": { + "baseBranch": "develop" + }, + "prBase": { + "baseBranch": "main", + "compareBaseRef": "origin/main" + } + }, + "4febe923ceea": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "headRefName": "feature", + "prNumber": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "baseBranch": "main", + "compareBaseRef": "origin/main" + } + } + } + }, + "5428de0f5130": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "baseBranch": "main", + "compareBaseRef": "origin/main" + } + }, + "69afcaf1cb72": { + "name": "worktree.resolveMrBase#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.resolveMrBase\",\"params\":{\"repo\":\"id:repo-1\",\"mrIid\":7,\"sourceBranch\":\"feature\"}}" + }, + "7214459608bf": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot use 'in' operator to search for 'error' in null", + "isRpcDeliveryUnknown": false + } + }, + "93bb7cfeae89": { + "name": "worktree.resolveMrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolveMrBase" + }, + { + "name": "params", + "value": { + "mrIid": 7, + "repo": "id:repo-1", + "sourceBranch": "feature" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true + } + } + }, + "96b186d42430": { + "name": "worktree.resolveMrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolveMrBase" + }, + { + "name": "params", + "value": { + "mrIid": 7, + "repo": "id:repo-1", + "sourceBranch": "feature" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "a947768bc0ed": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + }, + "aad8e7ddeea2": { + "name": "worktree.resolveMrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolveMrBase" + }, + { + "name": "params", + "value": { + "mrIid": 7, + "repo": "id:repo-1", + "sourceBranch": "feature" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "baseBranch": "develop" + } + } + } + }, + "ae5862eb7a20": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot use 'in' operator to search for 'error' in undefined", + "isRpcDeliveryUnknown": false + } + }, + "b948e8307e81": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Unknown method", + "isRpcDeliveryUnknown": false + } + }, + "bd721565327b": { + "name": "worktree.resolveMrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolveMrBase" + }, + { + "name": "params", + "value": { + "mrIid": 7, + "repo": "id:repo-1", + "sourceBranch": "feature" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "c7584e82c72f": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + }, + "d05b2d417b9c": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "inner refused", + "isRpcDeliveryUnknown": false + } + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + }, + "fd552ecb03da": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "baseBranch": "develop" + } + } + }, + "recording": { + "scenario": "matrix-worktree.hosted-base-worktree.resolvemrbase-1", + "checkpoints": [ + { + "id": "tw-hosted-base-resolved.prelude:pr-base-resolved", + "observation": { + "sender": ["4febe923ceea"], + "payloads": ["0e24d2a37a0d"], + "settlements": { + "pr": "5428de0f5130" + }, + "state": "236529aa012d", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.normal:mr-base-resolved", + "observation": { + "sender": ["4febe923ceea", "aad8e7ddeea2"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "5428de0f5130", + "mr": "fd552ecb03da" + }, + "state": "3cca8119f144", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.result-absent:mr-base-resolved", + "observation": { + "sender": ["4febe923ceea", "93bb7cfeae89"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "5428de0f5130", + "mr": "ae5862eb7a20" + }, + "state": "236529aa012d", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.result-null:mr-base-resolved", + "observation": { + "sender": ["4febe923ceea", "336e99424dd0"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "5428de0f5130", + "mr": "7214459608bf" + }, + "state": "236529aa012d", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.inner-ok-missing:mr-base-resolved", + "observation": { + "sender": ["4febe923ceea", "08ecbab921e6"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "5428de0f5130", + "mr": "2aaea8ee523e" + }, + "state": "236529aa012d", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.inner-false-string-error:mr-base-resolved", + "observation": { + "sender": ["4febe923ceea", "96b186d42430"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "5428de0f5130", + "mr": "d05b2d417b9c" + }, + "state": "236529aa012d", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.inner-false-object-error:mr-base-resolved", + "observation": { + "sender": ["4febe923ceea", "156f5e61efd3"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "5428de0f5130", + "mr": "2c7f810cc819" + }, + "state": "236529aa012d", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.outer-refused:mr-base-resolved", + "observation": { + "sender": ["4febe923ceea", "201cea1f9864"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "5428de0f5130", + "mr": "32a7c0ae7918" + }, + "state": "236529aa012d", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.outer-refused-no-message:mr-base-resolved", + "observation": { + "sender": ["4febe923ceea", "382c27f806f2"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "5428de0f5130", + "mr": "f3b516f62081" + }, + "state": "236529aa012d", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.method-not-found:mr-base-resolved", + "observation": { + "sender": ["4febe923ceea", "17ae65496a72"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "5428de0f5130", + "mr": "b948e8307e81" + }, + "state": "236529aa012d", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.transport-rejection:mr-base-resolved", + "observation": { + "sender": ["4febe923ceea", "bd721565327b"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "5428de0f5130", + "mr": "a947768bc0ed" + }, + "state": "236529aa012d", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.transport-rejection-no-message:mr-base-resolved", + "observation": { + "sender": ["4febe923ceea", "22f024eeb07c"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "5428de0f5130", + "mr": "c7584e82c72f" + }, + "state": "236529aa012d", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolveprbase-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolveprbase-1.json new file mode 100644 index 00000000000..ad114ee98a3 --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-worktree.hosted-base-worktree.resolveprbase-1.json @@ -0,0 +1,868 @@ +{ + "operation": "tasks.composer-hosted-base", + "family": "worktree.hosted-base", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "45783a7cbb44b04dbbd6bfd6735799bb4c75e503f43f1821cf8640d11f7464ad", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "0ace0141301c": { + "mrBase": { + "baseBranch": "develop" + }, + "prBase": "unresolved" + }, + "0e24d2a37a0d": { + "name": "worktree.resolvePrBase#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.resolvePrBase\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"headRefName\":\"feature\"}}" + }, + "236529aa012d": { + "mrBase": "unresolved", + "prBase": { + "baseBranch": "main", + "compareBaseRef": "origin/main" + } + }, + "28b232b6369b": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "headRefName": "feature", + "prNumber": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-1", + "ok": false + } + } + }, + "2aaea8ee523e": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "refused", + "isRpcDeliveryUnknown": false + } + }, + "2c7f810cc819": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "[object Object]", + "isRpcDeliveryUnknown": false + } + }, + "32a7c0ae7918": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "outer refused", + "isRpcDeliveryUnknown": false + } + }, + "388eebbe7dca": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "headRefName": "feature", + "prNumber": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "3cca8119f144": { + "mrBase": { + "baseBranch": "develop" + }, + "prBase": { + "baseBranch": "main", + "compareBaseRef": "origin/main" + } + }, + "4febe923ceea": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "headRefName": "feature", + "prNumber": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "baseBranch": "main", + "compareBaseRef": "origin/main" + } + } + } + }, + "5428de0f5130": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "baseBranch": "main", + "compareBaseRef": "origin/main" + } + }, + "5ce5558cd2f1": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "headRefName": "feature", + "prNumber": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "60f898896e1a": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "headRefName": "feature", + "prNumber": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true + } + } + }, + "62d33be71d4d": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "headRefName": "feature", + "prNumber": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "658dfb6d27f2": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "headRefName": "feature", + "prNumber": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "69afcaf1cb72": { + "name": "worktree.resolveMrBase#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.resolveMrBase\",\"params\":{\"repo\":\"id:repo-1\",\"mrIid\":7,\"sourceBranch\":\"feature\"}}" + }, + "7214459608bf": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot use 'in' operator to search for 'error' in null", + "isRpcDeliveryUnknown": false + } + }, + "a947768bc0ed": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + }, + "aad8e7ddeea2": { + "name": "worktree.resolveMrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolveMrBase" + }, + { + "name": "params", + "value": { + "mrIid": 7, + "repo": "id:repo-1", + "sourceBranch": "feature" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "baseBranch": "develop" + } + } + } + }, + "ae5862eb7a20": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "TypeError", + "message": "Cannot use 'in' operator to search for 'error' in undefined", + "isRpcDeliveryUnknown": false + } + }, + "b948e8307e81": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Unknown method", + "isRpcDeliveryUnknown": false + } + }, + "c57e06c96492": { + "mrBase": "unresolved", + "prBase": "unresolved" + }, + "c7584e82c72f": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + }, + "d05b2d417b9c": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "inner refused", + "isRpcDeliveryUnknown": false + } + }, + "d778e31ef5f7": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "headRefName": "feature", + "prNumber": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "e3d0229e3cdb": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "headRefName": "feature", + "prNumber": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + }, + "f19c03489128": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "headRefName": "feature", + "prNumber": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-1", + "ok": false + } + } + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + }, + "f4bbce06e9b6": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "headRefName": "feature", + "prNumber": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "fd552ecb03da": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "baseBranch": "develop" + } + } + }, + "recording": { + "scenario": "matrix-worktree.hosted-base-worktree.resolveprbase-1", + "checkpoints": [ + { + "id": "tw-hosted-base-resolved.normal:pr-base-resolved", + "observation": { + "sender": ["4febe923ceea"], + "payloads": ["0e24d2a37a0d"], + "settlements": { + "pr": "5428de0f5130" + }, + "state": "236529aa012d", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.normal:mr-base-resolved", + "observation": { + "sender": ["4febe923ceea", "aad8e7ddeea2"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "5428de0f5130", + "mr": "fd552ecb03da" + }, + "state": "3cca8119f144", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.result-absent:pr-base-resolved", + "observation": { + "sender": ["60f898896e1a"], + "payloads": ["0e24d2a37a0d"], + "settlements": { + "pr": "ae5862eb7a20" + }, + "state": "c57e06c96492", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.result-absent:mr-base-resolved", + "observation": { + "sender": ["60f898896e1a", "aad8e7ddeea2"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "ae5862eb7a20", + "mr": "fd552ecb03da" + }, + "state": "0ace0141301c", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.result-null:pr-base-resolved", + "observation": { + "sender": ["f4bbce06e9b6"], + "payloads": ["0e24d2a37a0d"], + "settlements": { + "pr": "7214459608bf" + }, + "state": "c57e06c96492", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.result-null:mr-base-resolved", + "observation": { + "sender": ["f4bbce06e9b6", "aad8e7ddeea2"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "7214459608bf", + "mr": "fd552ecb03da" + }, + "state": "0ace0141301c", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.inner-ok-missing:pr-base-resolved", + "observation": { + "sender": ["658dfb6d27f2"], + "payloads": ["0e24d2a37a0d"], + "settlements": { + "pr": "2aaea8ee523e" + }, + "state": "c57e06c96492", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.inner-ok-missing:mr-base-resolved", + "observation": { + "sender": ["658dfb6d27f2", "aad8e7ddeea2"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "2aaea8ee523e", + "mr": "fd552ecb03da" + }, + "state": "0ace0141301c", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.inner-false-string-error:pr-base-resolved", + "observation": { + "sender": ["62d33be71d4d"], + "payloads": ["0e24d2a37a0d"], + "settlements": { + "pr": "d05b2d417b9c" + }, + "state": "c57e06c96492", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.inner-false-string-error:mr-base-resolved", + "observation": { + "sender": ["62d33be71d4d", "aad8e7ddeea2"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "d05b2d417b9c", + "mr": "fd552ecb03da" + }, + "state": "0ace0141301c", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.inner-false-object-error:pr-base-resolved", + "observation": { + "sender": ["5ce5558cd2f1"], + "payloads": ["0e24d2a37a0d"], + "settlements": { + "pr": "2c7f810cc819" + }, + "state": "c57e06c96492", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.inner-false-object-error:mr-base-resolved", + "observation": { + "sender": ["5ce5558cd2f1", "aad8e7ddeea2"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "2c7f810cc819", + "mr": "fd552ecb03da" + }, + "state": "0ace0141301c", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.outer-refused:pr-base-resolved", + "observation": { + "sender": ["f19c03489128"], + "payloads": ["0e24d2a37a0d"], + "settlements": { + "pr": "32a7c0ae7918" + }, + "state": "c57e06c96492", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.outer-refused:mr-base-resolved", + "observation": { + "sender": ["f19c03489128", "aad8e7ddeea2"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "32a7c0ae7918", + "mr": "fd552ecb03da" + }, + "state": "0ace0141301c", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.outer-refused-no-message:pr-base-resolved", + "observation": { + "sender": ["e3d0229e3cdb"], + "payloads": ["0e24d2a37a0d"], + "settlements": { + "pr": "f3b516f62081" + }, + "state": "c57e06c96492", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.outer-refused-no-message:mr-base-resolved", + "observation": { + "sender": ["e3d0229e3cdb", "aad8e7ddeea2"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "f3b516f62081", + "mr": "fd552ecb03da" + }, + "state": "0ace0141301c", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.method-not-found:pr-base-resolved", + "observation": { + "sender": ["28b232b6369b"], + "payloads": ["0e24d2a37a0d"], + "settlements": { + "pr": "b948e8307e81" + }, + "state": "c57e06c96492", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.method-not-found:mr-base-resolved", + "observation": { + "sender": ["28b232b6369b", "aad8e7ddeea2"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "b948e8307e81", + "mr": "fd552ecb03da" + }, + "state": "0ace0141301c", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.transport-rejection:pr-base-resolved", + "observation": { + "sender": ["d778e31ef5f7"], + "payloads": ["0e24d2a37a0d"], + "settlements": { + "pr": "a947768bc0ed" + }, + "state": "c57e06c96492", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.transport-rejection:mr-base-resolved", + "observation": { + "sender": ["d778e31ef5f7", "aad8e7ddeea2"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "a947768bc0ed", + "mr": "fd552ecb03da" + }, + "state": "0ace0141301c", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.transport-rejection-no-message:pr-base-resolved", + "observation": { + "sender": ["388eebbe7dca"], + "payloads": ["0e24d2a37a0d"], + "settlements": { + "pr": "c7584e82c72f" + }, + "state": "c57e06c96492", + "effects": [] + } + }, + { + "id": "tw-hosted-base-resolved.transport-rejection-no-message:mr-base-resolved", + "observation": { + "sender": ["388eebbe7dca", "aad8e7ddeea2"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "c7584e82c72f", + "mr": "fd552ecb03da" + }, + "state": "0ace0141301c", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json index 8ab2bcc788a..b67232b5be4 100644 --- a/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json +++ b/mobile/rpc-foundation/goldens/matrix-worktree.review-link-worktree.set-1.json @@ -3,9 +3,9 @@ "family": "worktree.review-link", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "2fc093ec505bfac04a4ff0adab991baeba985253486dbe9e3ec9884b8d5f0920", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.runtime-capabilities-status.get-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.runtime-capabilities-status.get-1.json new file mode 100644 index 00000000000..3f93f9c546d --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-worktree.runtime-capabilities-status.get-1.json @@ -0,0 +1,570 @@ +{ + "operation": "tasks.worktree-capabilities", + "family": "worktree.runtime-capabilities", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "f70c6b1753377b5a502bf7d1e69dc95617f24c42137471320eb393567efbe735", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "16cd464bf664": { + "name": "status.get#1", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-1", + "ok": false + } + } + }, + "1e5b32902af7": { + "name": "status.get#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" + }, + "2698c9770ad3": { + "name": "status.get#1", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "4451bb95a76e": { + "name": "status.get#1", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "5242fad3532f": { + "name": "status.get#1", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "capabilities": ["mobile.tasks.v1", "worktree.create-idempotency.v1"], + "platform": "linux", + "worktreeCreateIdempotency": { + "dedupeTtlMs": 45000 + } + } + } + } + }, + "62aaf19f0b16": { + "capabilities": { + "hostPlatform": { + "$rpc": "null" + }, + "tasksSupported": true, + "worktreeCreateIdempotency": { + "dedupeTtlMs": 45000 + } + } + }, + "7d3dd7f9381b": { + "name": "status.get#1", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true + } + } + }, + "86f7fa8089fe": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "hostPlatform": { + "$rpc": "null" + }, + "tasksSupported": false, + "worktreeCreateIdempotency": false + } + }, + "88200d49083c": { + "name": "status.get#1", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "89236e432861": { + "name": "status.get#1", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "944bf432f199": { + "name": "status.get#1", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "9cdf3c107e7b": { + "name": "status.get#1", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + }, + "b33d34bddc4e": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "hostPlatform": { + "$rpc": "null" + }, + "tasksSupported": true, + "worktreeCreateIdempotency": { + "dedupeTtlMs": 45000 + } + } + }, + "c71b2f8a6993": { + "name": "status.get#1", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-1", + "ok": false + } + } + }, + "de87f6266897": { + "name": "status.get#1", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "f80e92134eb1": { + "capabilities": { + "hostPlatform": { + "$rpc": "null" + }, + "tasksSupported": false, + "worktreeCreateIdempotency": false + } + } + }, + "recording": { + "scenario": "matrix-worktree.runtime-capabilities-status.get-1", + "checkpoints": [ + { + "id": "tw-capabilities-advertised.normal:probed", + "observation": { + "sender": ["5242fad3532f"], + "payloads": ["1e5b32902af7"], + "settlements": { + "probe": "b33d34bddc4e" + }, + "state": "62aaf19f0b16", + "effects": [] + } + }, + { + "id": "tw-capabilities-advertised.result-absent:probed", + "observation": { + "sender": ["7d3dd7f9381b"], + "payloads": ["1e5b32902af7"], + "settlements": { + "probe": "86f7fa8089fe" + }, + "state": "f80e92134eb1", + "effects": [] + } + }, + { + "id": "tw-capabilities-advertised.result-null:probed", + "observation": { + "sender": ["88200d49083c"], + "payloads": ["1e5b32902af7"], + "settlements": { + "probe": "86f7fa8089fe" + }, + "state": "f80e92134eb1", + "effects": [] + } + }, + { + "id": "tw-capabilities-advertised.inner-ok-missing:probed", + "observation": { + "sender": ["4451bb95a76e"], + "payloads": ["1e5b32902af7"], + "settlements": { + "probe": "86f7fa8089fe" + }, + "state": "f80e92134eb1", + "effects": [] + } + }, + { + "id": "tw-capabilities-advertised.inner-false-string-error:probed", + "observation": { + "sender": ["944bf432f199"], + "payloads": ["1e5b32902af7"], + "settlements": { + "probe": "86f7fa8089fe" + }, + "state": "f80e92134eb1", + "effects": [] + } + }, + { + "id": "tw-capabilities-advertised.inner-false-object-error:probed", + "observation": { + "sender": ["89236e432861"], + "payloads": ["1e5b32902af7"], + "settlements": { + "probe": "86f7fa8089fe" + }, + "state": "f80e92134eb1", + "effects": [] + } + }, + { + "id": "tw-capabilities-advertised.outer-refused:probed", + "observation": { + "sender": ["16cd464bf664"], + "payloads": ["1e5b32902af7"], + "settlements": { + "probe": "86f7fa8089fe" + }, + "state": "f80e92134eb1", + "effects": [] + } + }, + { + "id": "tw-capabilities-advertised.outer-refused-no-message:probed", + "observation": { + "sender": ["9cdf3c107e7b"], + "payloads": ["1e5b32902af7"], + "settlements": { + "probe": "86f7fa8089fe" + }, + "state": "f80e92134eb1", + "effects": [] + } + }, + { + "id": "tw-capabilities-advertised.method-not-found:probed", + "observation": { + "sender": ["c71b2f8a6993"], + "payloads": ["1e5b32902af7"], + "settlements": { + "probe": "86f7fa8089fe" + }, + "state": "f80e92134eb1", + "effects": [] + } + }, + { + "id": "tw-capabilities-advertised.transport-rejection:probed", + "observation": { + "sender": ["de87f6266897"], + "payloads": ["1e5b32902af7"], + "settlements": { + "probe": "86f7fa8089fe" + }, + "state": "f80e92134eb1", + "effects": [] + } + }, + { + "id": "tw-capabilities-advertised.transport-rejection-no-message:probed", + "observation": { + "sender": ["2698c9770ad3"], + "payloads": ["1e5b32902af7"], + "settlements": { + "probe": "86f7fa8089fe" + }, + "state": "f80e92134eb1", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/matrix-worktree.setup-hook-trust-ui.set-1.json b/mobile/rpc-foundation/goldens/matrix-worktree.setup-hook-trust-ui.set-1.json new file mode 100644 index 00000000000..51dc69ecef9 --- /dev/null +++ b/mobile/rpc-foundation/goldens/matrix-worktree.setup-hook-trust-ui.set-1.json @@ -0,0 +1,673 @@ +{ + "operation": "tasks.setup-hook-trust", + "family": "worktree.setup-hook-trust", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "8487fd14ed779708415b264e2b80b26b0d5094e379a04f4f32c2cd75ec469182", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "0f68ccbfb8e9": { + "name": "ui.set#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"ui.set\",\"params\":{\"trustedOrcaHooks\":{\"repo-1\":{\"setup\":{\"contentHash\":\"hash-1\",\"approvedAt\":1767225600000}}}}}" + }, + "229c35d1a4ba": { + "trust": "unapproved" + }, + "255cdc090b8a": { + "name": "ui.set#1", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-1", + "ok": false + } + } + }, + "2905cce95e1c": { + "name": "ui.set#1", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": { + "message": "inner refused" + }, + "ok": false + } + } + } + }, + "29fc0c5de3b0": { + "name": "ui.set#1", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + } + }, + "32a7c0ae7918": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "outer refused", + "isRpcDeliveryUnknown": false + } + }, + "32af950a57cc": { + "name": "ui.set#1", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + }, + "6f009f61d89f": { + "name": "ui.set#1", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "ok": true + } + } + } + }, + "9deb505f7915": { + "name": "ui.set#1", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "a406b068aeca": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + }, + "a947768bc0ed": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "transport failure", + "isRpcDeliveryUnknown": true + } + }, + "abd752b10f76": { + "name": "ui.set#1", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + } + }, + "ac7d2d4aa85c": { + "name": "ui.set#1", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "refused" + } + } + } + }, + "b2aa9ff12623": { + "trust": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + }, + "b948e8307e81": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Unknown method", + "isRpcDeliveryUnknown": false + } + }, + "c7584e82c72f": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": true + } + }, + "d1113bd291a2": { + "name": "ui.set#1", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "inner refused", + "ok": false + } + } + } + }, + "e3e6506e1ed0": { + "name": "ui.set#1", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "refused", + "message": "outer refused" + }, + "id": "frame-1", + "ok": false + } + } + }, + "e9c010ad58d3": { + "name": "ui.set#1", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true + } + } + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + } + }, + "recording": { + "scenario": "matrix-worktree.setup-hook-trust-ui.set-1", + "checkpoints": [ + { + "id": "tw-setup-hook-trust-approved.normal:approved", + "observation": { + "sender": ["6f009f61d89f"], + "payloads": ["0f68ccbfb8e9"], + "settlements": { + "approve": "a406b068aeca" + }, + "state": "b2aa9ff12623", + "effects": [] + } + }, + { + "id": "tw-setup-hook-trust-approved.result-absent:approved", + "observation": { + "sender": ["e9c010ad58d3"], + "payloads": ["0f68ccbfb8e9"], + "settlements": { + "approve": "a406b068aeca" + }, + "state": "b2aa9ff12623", + "effects": [] + } + }, + { + "id": "tw-setup-hook-trust-approved.result-null:approved", + "observation": { + "sender": ["9deb505f7915"], + "payloads": ["0f68ccbfb8e9"], + "settlements": { + "approve": "a406b068aeca" + }, + "state": "b2aa9ff12623", + "effects": [] + } + }, + { + "id": "tw-setup-hook-trust-approved.inner-ok-missing:approved", + "observation": { + "sender": ["ac7d2d4aa85c"], + "payloads": ["0f68ccbfb8e9"], + "settlements": { + "approve": "a406b068aeca" + }, + "state": "b2aa9ff12623", + "effects": [] + } + }, + { + "id": "tw-setup-hook-trust-approved.inner-false-string-error:approved", + "observation": { + "sender": ["d1113bd291a2"], + "payloads": ["0f68ccbfb8e9"], + "settlements": { + "approve": "a406b068aeca" + }, + "state": "b2aa9ff12623", + "effects": [] + } + }, + { + "id": "tw-setup-hook-trust-approved.inner-false-object-error:approved", + "observation": { + "sender": ["2905cce95e1c"], + "payloads": ["0f68ccbfb8e9"], + "settlements": { + "approve": "a406b068aeca" + }, + "state": "b2aa9ff12623", + "effects": [] + } + }, + { + "id": "tw-setup-hook-trust-approved.outer-refused:approved", + "observation": { + "sender": ["e3e6506e1ed0"], + "payloads": ["0f68ccbfb8e9"], + "settlements": { + "approve": "32a7c0ae7918" + }, + "state": "229c35d1a4ba", + "effects": [] + } + }, + { + "id": "tw-setup-hook-trust-approved.outer-refused-no-message:approved", + "observation": { + "sender": ["32af950a57cc"], + "payloads": ["0f68ccbfb8e9"], + "settlements": { + "approve": "f3b516f62081" + }, + "state": "229c35d1a4ba", + "effects": [] + } + }, + { + "id": "tw-setup-hook-trust-approved.method-not-found:approved", + "observation": { + "sender": ["255cdc090b8a"], + "payloads": ["0f68ccbfb8e9"], + "settlements": { + "approve": "b948e8307e81" + }, + "state": "229c35d1a4ba", + "effects": [] + } + }, + { + "id": "tw-setup-hook-trust-approved.transport-rejection:approved", + "observation": { + "sender": ["29fc0c5de3b0"], + "payloads": ["0f68ccbfb8e9"], + "settlements": { + "approve": "a947768bc0ed" + }, + "state": "229c35d1a4ba", + "effects": [] + } + }, + { + "id": "tw-setup-hook-trust-approved.transport-rejection-no-message:approved", + "observation": { + "sender": ["abd752b10f76"], + "payloads": ["0f68ccbfb8e9"], + "settlements": { + "approve": "c7584e82c72f" + }, + "state": "229c35d1a4ba", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json b/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json index 5d21ce568a0..84448b023a8 100644 --- a/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json +++ b/mobile/rpc-foundation/goldens/probe-new-tab-both-refused.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "819fa73c7700b4d526da91c37558a6498008d745d1debcc26e6bb757550ebf99", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json b/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json index 68a52959edf..4a8275e7f2c 100644 --- a/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json +++ b/mobile/rpc-foundation/goldens/probe-new-tab-null-sibling-refused.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "500396d72abd2f73d11ef066bca3f88798c8cbdaef09fa7c1c8d1fbaf0b3b85a", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json b/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json index 5a74ca74542..4302f0e7730 100644 --- a/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json +++ b/mobile/rpc-foundation/goldens/probe-new-tab-refused-sibling-rejects.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "daf68df8840ea6872521d823cc17e1e5de3f3a74a8855465fcf40cc276e9c2ce", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json b/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json index 441f1284661..454f9e80ae4 100644 --- a/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json +++ b/mobile/rpc-foundation/goldens/probe-new-tab-rejects-sibling-refused.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "61e36caf6b3bb01c3ad0db282b7f0fbc0f300d40184f9cf3d7e4e3a3194a4f2a", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-default.json b/mobile/rpc-foundation/goldens/sc-base-ref-default.json index efc8a33b474..ebfc023c308 100644 --- a/mobile/rpc-foundation/goldens/sc-base-ref-default.json +++ b/mobile/rpc-foundation/goldens/sc-base-ref-default.json @@ -3,9 +3,9 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "374129def6baa0e06b808c067831820966638d79d7a782e96c1f2f891cc9dc86", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json b/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json index 8b451a3c47b..a8691ccbd5a 100644 --- a/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json +++ b/mobile/rpc-foundation/goldens/sc-base-ref-repo-fallback.json @@ -3,9 +3,9 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "97a8b8f5b9a7c7467745666becee07f5dfc57fb283d4e80dcbe7941509177598", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json b/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json index 6f61749a0ff..16a2202e4b1 100644 --- a/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json +++ b/mobile/rpc-foundation/goldens/sc-base-ref-unavailable.json @@ -3,9 +3,9 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "25a4762d735dfb4979e6ef31b9fdb380941a824a54b45b3d08ddb2cde25c2eb7", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json b/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json index e134ff8d55d..ad01210efd2 100644 --- a/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json +++ b/mobile/rpc-foundation/goldens/sc-base-ref-worktree-hit.json @@ -3,9 +3,9 @@ "family": "git.base-ref-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "f3b193f93f6c9de41d11e706ecbd99648eb2ed41ccb7c66cdb80c934e780ed7c", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json b/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json index 5efc0525535..b6666d9ec9c 100644 --- a/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json +++ b/mobile/rpc-foundation/goldens/sc-commit-message-cancel-rejected.json @@ -3,9 +3,9 @@ "family": "git.commit-message-ai", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "013db25622b180a8333bb1ef27c22a5b1f8e04148201201e5cc3413a10640781", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json b/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json index 84768ce1373..d70e7682eca 100644 --- a/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json +++ b/mobile/rpc-foundation/goldens/sc-commit-message-canceled.json @@ -3,9 +3,9 @@ "family": "git.commit-message-ai", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "15bf6c17f4b524dfbf5373b2eeed61ee2e659421cf8b6e3cff6c0378c7692cc1", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-commit-message-generated.json b/mobile/rpc-foundation/goldens/sc-commit-message-generated.json index a8abfe60296..31319ebc375 100644 --- a/mobile/rpc-foundation/goldens/sc-commit-message-generated.json +++ b/mobile/rpc-foundation/goldens/sc-commit-message-generated.json @@ -3,9 +3,9 @@ "family": "git.commit-message-ai", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "540f05d84d1cbffd566af933c547838c75500bb5d708e8558c21fe8131d724e3", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-create-existing-review.json b/mobile/rpc-foundation/goldens/sc-create-existing-review.json index e51f2ee4e8b..181f8a1b23d 100644 --- a/mobile/rpc-foundation/goldens/sc-create-existing-review.json +++ b/mobile/rpc-foundation/goldens/sc-create-existing-review.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "7d6099248aa6a2ef19f2e169ff917af794649d9d64d139aa9ffeea6a41355ddc", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json b/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json index 91ac688ebcb..f05449a2b3b 100644 --- a/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json +++ b/mobile/rpc-foundation/goldens/sc-create-intent-stage-commit-push-create.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-intent", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "447f9b3d697dbfe21cb7fb6e12d1bf5fa94b023b7e1697bdc2dc82ce7072183f", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json b/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json index 818cf613211..a5778ad675a 100644 --- a/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json +++ b/mobile/rpc-foundation/goldens/sc-create-link-failure-is-non-fatal.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "2deb0435ef63a3e0102e28f2f3f331039486d193d1e1ffdfb53ad86d3ff039f0", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json b/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json index 32d59893c05..d21d3a1a61f 100644 --- a/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json +++ b/mobile/rpc-foundation/goldens/sc-create-pushes-then-creates.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "0f86b3e6059c48cd327c55df2452a9bc6ea85584ffbeacafad496f600c20e06f", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json b/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json index d810ad5a8c5..d59ebbd5baf 100644 --- a/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json +++ b/mobile/rpc-foundation/goldens/sc-create-refused-empty-message.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "5008e69a8e396b1deccd98712d92650a630f971cd76a02862a461afb8617b8a4", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json b/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json index 337f070d679..bdcca8a6bc5 100644 --- a/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json +++ b/mobile/rpc-foundation/goldens/sc-create-rejected-empty-message.json @@ -3,9 +3,9 @@ "family": "hostedReview.create-chain", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "ea71081982a101d0f8624707b59c99de9981e9b1d1bafa25c66d575e3f876ff4", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json b/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json index 5de6a24a2af..391a867ba41 100644 --- a/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json +++ b/mobile/rpc-foundation/goldens/sc-eligibility-fetched.json @@ -3,9 +3,9 @@ "family": "hostedReview.eligibility", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "f6a1595073abe11b33973e8865900a1d849f44221961da5c12ea13aa696f6490", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-history-loaded.json b/mobile/rpc-foundation/goldens/sc-history-loaded.json index 848a5c1acdc..1b56488029a 100644 --- a/mobile/rpc-foundation/goldens/sc-history-loaded.json +++ b/mobile/rpc-foundation/goldens/sc-history-loaded.json @@ -3,9 +3,9 @@ "family": "git.history-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "83f61085a91458bad529905ecc6fe240c598cddfe44a56dd497b8aed9fb8a7e5", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json b/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json index c1a63194a95..f06f0924835 100644 --- a/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json +++ b/mobile/rpc-foundation/goldens/sc-pr-link-hosted-review.json @@ -3,9 +3,9 @@ "family": "worktree.review-link", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "42b0304b2fdce08b7ff52ec979dd9f199f368e5e4ef0b5370acc417909b592b3", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-pr-link-read.json b/mobile/rpc-foundation/goldens/sc-pr-link-read.json index 908b8db23be..9a66cde21df 100644 --- a/mobile/rpc-foundation/goldens/sc-pr-link-read.json +++ b/mobile/rpc-foundation/goldens/sc-pr-link-read.json @@ -3,9 +3,9 @@ "family": "worktree.review-link", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "4520bd54a55eabfe6ec64a4b2f824f095f98b2fffd1bf22fe4f9ec7f63cbfa3f", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-pr-link-set.json b/mobile/rpc-foundation/goldens/sc-pr-link-set.json index b161e5d105f..a21493d5720 100644 --- a/mobile/rpc-foundation/goldens/sc-pr-link-set.json +++ b/mobile/rpc-foundation/goldens/sc-pr-link-set.json @@ -3,9 +3,9 @@ "family": "worktree.review-link", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "b65bad4f8c0ae0b686f6c3db93bd43ffa072ae426f978f1a86ad8008fb24fa24", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json index 695d5f054b1..0d760a946e1 100644 --- a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json +++ b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-refusal.json @@ -3,9 +3,9 @@ "family": "hostedReview.eligibility", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "9de96287a4dfa6cf5c9a8b683cc696fdc2cd387f86f231e22ee3f100a2e778e3", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json index 2c6c73ee674..5d49f9b9773 100644 --- a/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json +++ b/mobile/rpc-foundation/goldens/sc-prefill-unavailable-on-rejection.json @@ -3,9 +3,9 @@ "family": "hostedReview.eligibility", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "adbdfcc3895cc04d830900de518e689c9e63f6f75569127e1fde24488658e8a0", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json b/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json index d1358b6562e..bff1bf885a6 100644 --- a/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json +++ b/mobile/rpc-foundation/goldens/sc-prerequisite-force-with-lease.json @@ -3,9 +3,9 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "ec2847b4af357d8564d8e0a9a1072713c1afd7ff86ba69e9c83c056a6841ee39", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json b/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json index dfb64a312d6..7d369247287 100644 --- a/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json +++ b/mobile/rpc-foundation/goldens/sc-prerequisite-publish.json @@ -3,9 +3,9 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "6cf6ebd20adc4cc76a12d3424863ee9db2b24f36593664a1f4e0e05de9a53d39", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-push.json b/mobile/rpc-foundation/goldens/sc-prerequisite-push.json index ed73ee99553..e656c95ac90 100644 --- a/mobile/rpc-foundation/goldens/sc-prerequisite-push.json +++ b/mobile/rpc-foundation/goldens/sc-prerequisite-push.json @@ -3,9 +3,9 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "e6e8197a541cd73e5811a1f28b0dbfc414a4d34c1ae6929fc1bbae1213820674", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json b/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json index 1684dea4b6c..79a72c580a3 100644 --- a/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json +++ b/mobile/rpc-foundation/goldens/sc-prerequisite-skipped.json @@ -3,9 +3,9 @@ "family": "git.remote-prerequisite", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "523d1ee21e3871a4dffc32f48d2e28c31ecea48cbf3f842acffc8355be06b14b", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json b/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json index 16850663572..b838e980702 100644 --- a/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json +++ b/mobile/rpc-foundation/goldens/sc-reveal-first-poll.json @@ -3,9 +3,9 @@ "family": "session.tab-reveal", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "00b26cb279b0a934df98d93ba98a4a0c79e302c7690c582e778dc0156ab4f235", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-reveal-timeout.json b/mobile/rpc-foundation/goldens/sc-reveal-timeout.json index 0ef7c028dea..b7f54a2ead1 100644 --- a/mobile/rpc-foundation/goldens/sc-reveal-timeout.json +++ b/mobile/rpc-foundation/goldens/sc-reveal-timeout.json @@ -3,9 +3,9 @@ "family": "session.tab-reveal", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "fcd61f1ef46c42889827a87876239534b851c425f8ef7a9405ea95b8d07d2363", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json b/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json index 8fbaaf8af5d..7eac89525b2 100644 --- a/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json +++ b/mobile/rpc-foundation/goldens/sc-review-commit-inner-failure.json @@ -3,9 +3,9 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "db1fb2a584cd806028b9be861283a63aa4836c83f61558f3d518ddbb7a59498d", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json b/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json index f739f278bf4..9e6b8323541 100644 --- a/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json +++ b/mobile/rpc-foundation/goldens/sc-review-commit-refused-empty-message.json @@ -3,9 +3,9 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "dba1676583dc832ef059285a6bd4c3eefe6be0230e42100cb9d7a125755d136b", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json b/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json index 2f5b022f361..e7d9722de05 100644 --- a/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json +++ b/mobile/rpc-foundation/goldens/sc-review-commit-rejected.json @@ -3,9 +3,9 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "de079de9cc21bfb40da6e1431273b10c3e2a5b5402b91b2b8a85c8d7ac41bc97", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-review-commit.json b/mobile/rpc-foundation/goldens/sc-review-commit.json index c3092244e76..c4c3f82463c 100644 --- a/mobile/rpc-foundation/goldens/sc-review-commit.json +++ b/mobile/rpc-foundation/goldens/sc-review-commit.json @@ -3,9 +3,9 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "a29d518b2d075e8e4811404e0fcbf8948fbfe53a3aefbf0948cb2f2e622e8cbb", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json b/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json index 0c03aa7a953..2bbfe9a168d 100644 --- a/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json +++ b/mobile/rpc-foundation/goldens/sc-review-status-entries-not-array.json @@ -3,9 +3,9 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "37ba7780ca9525ab313c0a9c781ce5bb26344e63af9272c32ae889621f383b2b", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/sc-review-status-normalized.json b/mobile/rpc-foundation/goldens/sc-review-status-normalized.json index 27735b6ec4f..c29943be50c 100644 --- a/mobile/rpc-foundation/goldens/sc-review-status-normalized.json +++ b/mobile/rpc-foundation/goldens/sc-review-status-normalized.json @@ -3,9 +3,9 @@ "family": "git.review-preparation", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "93193acd57d6f00abc8e6c22ec3a8f1ca6ce7c5808d906d0aa7c11e41dab4635", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/schedules-b3.json b/mobile/rpc-foundation/goldens/schedules-b3.json index 8744ce77f9d..220b4ee8813 100644 --- a/mobile/rpc-foundation/goldens/schedules-b3.json +++ b/mobile/rpc-foundation/goldens/schedules-b3.json @@ -3,9 +3,9 @@ "family": "linear-detail-barrier", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "b59fb599dd3a5fbc79bb8602dcec4b1c51a392c662efab7efc8324fc718ce8de", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json index ea6b3307985..5196a2f12ae 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-home-providers-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "fbd311a377672a9335521c30734880eea1b04bab0aff367854c1deebcf66b105", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json b/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json index 5fade18c847..6a5c107d83e 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-new-tab-ssh.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "2726d71130f623e3ad02c168c13269979ca6f84703bf1c5aaf36bd4432dfb516", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json index b211647b7ad..cc21cab7281 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-repo-metadata-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "664eba1468e229f9ac2dced262e7ad896ead01688dff4c570f397c3f8594efd7", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json index 6ba9db9e317..8c7eafde756 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-resume-metadata-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "7bfba3fae1dc33acf40e8a955bbfccf28580b3daee3270dec6a15e6cefd45a84", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json index 46ae74ee9a7..0aae40845dd 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-task-hydration-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "02e3ca10296704b5478185e9d3dc0136596a2ee57580d7f9268672568dab4cd4", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json b/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json index 1d576fb6c54..9f3f14035d7 100644 --- a/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json +++ b/mobile/rpc-foundation/goldens/schedules-settings-workspace-context-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "eb980fc027ca0200212ba6ad3bf9a1ab3460936a7bb4b04353a9462eecd287a1", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json index 339e6c67c53..7da556a808a 100644 --- a/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "4b4b4a8d1acaaec1c8dde0233dc49a696ffe53466578477efcbcdb7263dbd617", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json index 47ff0ace506..711d1e294f9 100644 --- a/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json +++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-refresh-refused.json @@ -3,9 +3,9 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "cac4980465661fba372e187699741123a4edeb9270125a0a1cad7bbb6a6adebd", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json index f0ea7524e05..1662fe79f25 100644 --- a/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json +++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-refused.json @@ -3,9 +3,9 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "f8ebd2348373b2b39c167735e0c418dfe868511fb5306ecba90cb6f2a905b95e", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json b/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json index eb7b6d59568..85a8bc0de4b 100644 --- a/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-bot-overrides-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.bot-overrides", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "f7e63144421a689f05cc50ad87ec901a9eaeb3163165656887be12a5f2753005", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-home-coalesced.json b/mobile/rpc-foundation/goldens/settings-home-coalesced.json index f75d79cd560..3edbbc93f40 100644 --- a/mobile/rpc-foundation/goldens/settings-home-coalesced.json +++ b/mobile/rpc-foundation/goldens/settings-home-coalesced.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "d8d6f738ee11d84d6e9e546624f4babcb42476432f6bddbc74e8519d9ca18370", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json b/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json index b46ae96ec3e..f198b0ace0a 100644 --- a/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-home-providers-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "a32b2fc99e830c58460e6f7c857aed0048738a55501e508eb236604680b9c235", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json index 873318de0fc..35edc70f458 100644 --- a/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-home-providers-refuse-after-data.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "78c48025c4af6cc0f1f136448c0ede9f76b7485d7b33b1356d11dec017bd9053", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-refused.json b/mobile/rpc-foundation/goldens/settings-home-providers-refused.json index c0eed18e92b..5cbb59b2775 100644 --- a/mobile/rpc-foundation/goldens/settings-home-providers-refused.json +++ b/mobile/rpc-foundation/goldens/settings-home-providers-refused.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "c22f33a0ed28622d4d53ae31e934056f87d2c10e8dc4475831ae1ee5fd3a9b8b", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json b/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json index b01cf2c4ea4..25d6642a6e0 100644 --- a/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-home-providers-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.home-providers", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "4f16b43dddfb9257828342b0297317868df24b03fd98a89c66f5cd1897829d73", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-new-tab-refused.json b/mobile/rpc-foundation/goldens/settings-new-tab-refused.json index 635d3093dd9..f7e57aaf56e 100644 --- a/mobile/rpc-foundation/goldens/settings-new-tab-refused.json +++ b/mobile/rpc-foundation/goldens/settings-new-tab-refused.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "b6fb40be3bb92d7d9f1a79d99dee077cf95097077917679dc99702f912241fa4", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json b/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json index af4bbc7873a..3e3729245bf 100644 --- a/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json +++ b/mobile/rpc-foundation/goldens/settings-new-tab-ssh.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "31f8a348322551738b14207b3477bae492d48d45c5d51be4d97ffaca2fe2b6e1", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json b/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json index 53721dfee13..0f79d30fa41 100644 --- a/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-new-tab-transport-error.json @@ -3,9 +3,9 @@ "family": "settings-agent-read", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "1347663aba0ada1eee8e88fac306757dc0d29fe21f0d062ac2d3968a30a2f214", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json b/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json index 1dcccf8c919..b7bfa5ab580 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json +++ b/mobile/rpc-foundation/goldens/settings-repo-cache-expiry.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "adebd553e2648278d719a1d7299cb36683fce714682a1ab7b49d4c9027eea34e", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json index 1a996c52104..1dcaccdec53 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "b45eba2007e8e2668f524cd7503b8a711eba67816c9c35af5c3725a1afe32d8d", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json index 06c148924b8..27bd3159e29 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-refuse-after-data.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "b1c0b957b828c32e7ec388ec6668273fe84bbe5d11d8286b9a246fa92395a26e", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json index cc4100645ad..20475c72af4 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-refused.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "867b6905c8a533ddd1c7c8174bf4aadd5fd725cc72bdddbcb2ea8af26e219078", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json index 4b6030d3e80..b889cc0db12 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-single-host.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "d8a00a72849f1ed254c3b35ebcc330dd1bb15b189f006bd1517853a19e53de6c", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json b/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json index ed46e819bda..e3f86b71eb6 100644 --- a/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-repo-metadata-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.repo-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "741db13a84dbcec2e97e80605d742e69558954657c72f8450f3f8bc177dd01b6", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json index 40c1299216d..3d29c1d46ea 100644 --- a/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "7a8d0a5305aafea56733c229989b6e825fe9b8a681f48f6cef405350304520b6", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json index c2134a9da51..6330d39ab1d 100644 --- a/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-refuse-after-data.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "a11756ecaf7c2d3955b9512aa7479ca55d810341f1492f472985abb538e140e8", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json index 06fcf005535..1899a1fc06d 100644 --- a/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json +++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-refused.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "def0640be601a8013f9537f161b60d8c14ac9551931e5ee4d4cc2acd3c2baf2a", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json b/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json index 27398aa2494..00ee88aa448 100644 --- a/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-resume-metadata-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.resume-metadata", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "17c31d0c2b7ae5322fd59bafcfa1d2779ae9eff841e12c0cf16b27e454b49f13", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json b/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json index 0487f1b4564..01f7a6dedaf 100644 --- a/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-task-hydration-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "c08cce5d1f71761dbf504863b736e5546abb42b9ff4ab8ced65c7c42e3d66c0e", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json index 73654e37ced..fb613fe5bdc 100644 --- a/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-task-hydration-refuse-after-data.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "b23c3076081901c89e8a8fb8d20028e03f030db040c9cd793b6f2c7cd49d8f25", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json b/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json index c22817884ae..9d12b5ec505 100644 --- a/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json +++ b/mobile/rpc-foundation/goldens/settings-task-hydration-refused.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "a510ff7505cddbd6dad3c7e5a2dcde206a5dab1940901511d72c97aca576a6f1", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json b/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json index 38b2cd42359..643f2b34501 100644 --- a/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-task-hydration-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.task-hydration", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "d4a2fef3aefb78bdb4aed94fda982124f24a3af3832227654d324735f44aaeeb", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-create-linear.json b/mobile/rpc-foundation/goldens/settings-task-workspace-create-linear.json new file mode 100644 index 00000000000..6b528d49409 --- /dev/null +++ b/mobile/rpc-foundation/goldens/settings-task-workspace-create-linear.json @@ -0,0 +1,241 @@ +{ + "operation": "settings.task-workspace-create", + "family": "settings.task-workspace-create", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "662c3e04e31bce5757f09f91e3e3739fb9d57767b7443be4dc936705b64b1432", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "067cef118d9f": { + "name": "runtimeTaskSettings", + "value": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "090c88478661": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "pending", + "startedAt": 0 + } + }, + "0f72e7ee78c9": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "createdWithAgent": "claude", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "name": "orc-1", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://linear.app/orca/issue/ORC-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "worktree": { + "displayName": "ORC-1 Recorded issue", + "id": "wt-1" + } + } + } + } + }, + "180125f5d1a6": { + "name": "workspaceCreateDraft", + "value": { + "$rpc": "null" + } + }, + "2473f12c7cdd": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + } + } + } + }, + "33e3b949d4c5": { + "creating": { + "$rpc": "null" + }, + "error": "", + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "6eb4e79ad99a": { + "name": "setupPrompt", + "value": { + "$rpc": "null" + } + }, + "730f92993963": { + "name": "creatingKey", + "value": "linear:1" + }, + "7abdfe20af50": { + "creating": "linear:1", + "error": "", + "settings": { + "disabledTuiAgents": ["claude"] + } + }, + "7ddcb1852b39": { + "name": "settings.get#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" + }, + "7ee99993a895": { + "name": "navigation", + "value": "/h/host-1/session/wt-1?name=ORC-1+Recorded+issue&created=1" + }, + "82cd71d524c8": { + "name": "error", + "value": "" + }, + "9270aeb7d9c6": { + "status": "pending", + "startedAt": 0 + }, + "ac9996319e05": { + "name": "actionItem", + "value": { + "$rpc": "null" + } + }, + "baa74a0ec378": { + "name": "worktree.create#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.create\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"orc-1\",\"displayName\":\"ORC-1 Recorded issue\",\"displayNameKind\":\"generated\",\"linkedLinearIssue\":\"ORC-1\",\"setupDecision\":\"inherit\",\"activate\":true,\"startupDraft\":\"https://linear.app/orca/issue/ORC-1\",\"createdWithAgent\":\"claude\"}}" + }, + "c9cb32059b8d": { + "name": "creatingKey", + "value": { + "$rpc": "null" + } + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + } + }, + "recording": { + "scenario": "settings-task-workspace-create-linear", + "checkpoints": [ + { + "id": "settings-pending", + "observation": { + "sender": ["090c88478661"], + "payloads": ["7ddcb1852b39"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "9270aeb7d9c6" + }, + "state": "7abdfe20af50", + "effects": ["730f92993963", "82cd71d524c8"] + } + }, + { + "id": "created", + "observation": { + "sender": ["2473f12c7cdd", "0f72e7ee78c9"], + "payloads": ["7ddcb1852b39", "baa74a0ec378"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "33e3b949d4c5", + "effects": [ + "730f92993963", + "82cd71d524c8", + "067cef118d9f", + "ac9996319e05", + "180125f5d1a6", + "6eb4e79ad99a", + "7ee99993a895", + "c9cb32059b8d" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-create-pr-start-point.json b/mobile/rpc-foundation/goldens/settings-task-workspace-create-pr-start-point.json new file mode 100644 index 00000000000..ebdfc322c9a --- /dev/null +++ b/mobile/rpc-foundation/goldens/settings-task-workspace-create-pr-start-point.json @@ -0,0 +1,335 @@ +{ + "operation": "settings.task-workspace-create", + "family": "settings.task-workspace-create", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "8ae9e1dbb32d404eac9e01f71dacf1c37497030220a8e988c0093bb7ed2d159b", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "067cef118d9f": { + "name": "runtimeTaskSettings", + "value": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "090c88478661": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "pending", + "startedAt": 0 + } + }, + "180125f5d1a6": { + "name": "workspaceCreateDraft", + "value": { + "$rpc": "null" + } + }, + "2473f12c7cdd": { + "name": "settings.get#1", + "args": [ + { + "name": "method", + "value": "settings.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + } + } + } + }, + "33e3b949d4c5": { + "creating": { + "$rpc": "null" + }, + "error": "", + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "3dc266b1bda1": { + "creating": "github:7", + "error": "", + "settings": { + "defaultTuiAgent": "codex", + "disabledTuiAgents": [] + } + }, + "52051fd3214e": { + "creating": "github:7", + "error": "", + "settings": { + "disabledTuiAgents": ["claude"] + } + }, + "6eb4e79ad99a": { + "name": "setupPrompt", + "value": { + "$rpc": "null" + } + }, + "7ddcb1852b39": { + "name": "settings.get#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}" + }, + "82cd71d524c8": { + "name": "error", + "value": "" + }, + "9270aeb7d9c6": { + "status": "pending", + "startedAt": 0 + }, + "9e9f36142bbd": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "baseBranch": "main", + "createdWithAgent": "claude", + "displayName": "Recorded pull request", + "displayNameKind": "generated", + "linkedPR": 7, + "name": "pr-7", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://github.com/o/r/pull/7" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "warning": "shallow clone", + "worktree": { + "id": "wt-2" + } + } + } + } + }, + "a49b109c46d4": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "activate": true, + "baseBranch": "main", + "createdWithAgent": "claude", + "displayName": "Recorded pull request", + "displayNameKind": "generated", + "linkedPR": 7, + "name": "pr-7", + "repo": "id:repo-1", + "setupDecision": "inherit", + "startupDraft": "https://github.com/o/r/pull/7" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "pending", + "startedAt": 0 + } + }, + "ac9996319e05": { + "name": "actionItem", + "value": { + "$rpc": "null" + } + }, + "b66f6d1958b9": { + "name": "worktree.create#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.create\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"pr-7\",\"displayName\":\"Recorded pull request\",\"displayNameKind\":\"generated\",\"setupDecision\":\"inherit\",\"activate\":true,\"startupDraft\":\"https://github.com/o/r/pull/7\",\"createdWithAgent\":\"claude\",\"baseBranch\":\"main\",\"linkedPR\":7}}" + }, + "be0ebed89b2b": { + "name": "navigation", + "value": "/h/host-1/session/wt-2?name=Recorded+pull+request&created=1&warning=shallow+clone" + }, + "c9cb32059b8d": { + "name": "creatingKey", + "value": { + "$rpc": "null" + } + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "ecc2acd4d70d": { + "name": "worktree.resolvePrBase#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.resolvePrBase\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":7}}" + }, + "ecefc28694cb": { + "name": "creatingKey", + "value": "github:7" + }, + "f9e183f427ee": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "prNumber": 7, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "baseBranch": "main" + } + } + } + } + }, + "recording": { + "scenario": "settings-task-workspace-create-pr-start-point", + "checkpoints": [ + { + "id": "settings-pending", + "observation": { + "sender": ["090c88478661"], + "payloads": ["7ddcb1852b39"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "9270aeb7d9c6" + }, + "state": "52051fd3214e", + "effects": ["ecefc28694cb", "82cd71d524c8"] + } + }, + { + "id": "pr-base-resolved", + "observation": { + "sender": ["2473f12c7cdd", "f9e183f427ee", "a49b109c46d4"], + "payloads": ["7ddcb1852b39", "ecc2acd4d70d", "b66f6d1958b9"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "9270aeb7d9c6" + }, + "state": "3dc266b1bda1", + "effects": ["ecefc28694cb", "82cd71d524c8", "067cef118d9f"] + } + }, + { + "id": "created-from-pr-base", + "observation": { + "sender": ["2473f12c7cdd", "f9e183f427ee", "9e9f36142bbd"], + "payloads": ["7ddcb1852b39", "ecc2acd4d70d", "b66f6d1958b9"], + "settlements": { + "mount": "eb79a9b3682a", + "submit": "eb79a9b3682a" + }, + "state": "33e3b949d4c5", + "effects": [ + "ecefc28694cb", + "82cd71d524c8", + "067cef118d9f", + "ac9996319e05", + "180125f5d1a6", + "6eb4e79ad99a", + "be0ebed89b2b", + "c9cb32059b8d" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json b/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json index cc7121f4087..b5f33c9b894 100644 --- a/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-task-workspace-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.task-workspace", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "5c4c890e4c71e80fa8847a5e29700fc9df3ac3bd634bad6289db37522fadd621", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json b/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json index 809b521ec44..4801e2a0d73 100644 --- a/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json +++ b/mobile/rpc-foundation/goldens/settings-task-workspace-refused.json @@ -3,9 +3,9 @@ "family": "settings.task-workspace", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "a699a0a5b128fa422dab0c7557b5aa18599b2d23fa6685cdcc02e17edf328af1", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json b/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json index e21150ea4cd..98854fc1c5d 100644 --- a/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-task-workspace-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.task-workspace", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "a5e812cd508826b3f01ec3798c621ab4303de6536a364113f01a4770dd197bb5", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-task-write.json b/mobile/rpc-foundation/goldens/settings-task-write.json index 000079c0ef8..db1240222c2 100644 --- a/mobile/rpc-foundation/goldens/settings-task-write.json +++ b/mobile/rpc-foundation/goldens/settings-task-write.json @@ -3,9 +3,9 @@ "family": "settings-best-effort", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "bbcdefe16b07068a81f3c46ae60df01ccb0fbe5a7c1eade3f584f6f0130c23fe", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json b/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json index 8d7523fc0ec..dae8f376485 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-context-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "287f94e469548f28c9d5591ff6ffb916fa22caa18776b091542b75704c9e1fee", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json b/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json index 7636c928522..9999437344d 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-context-refuse-after-data.json @@ -3,9 +3,9 @@ "family": "settings.workspace-context", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "76793a56e7b9e596d8c42e9a5a1c47337db32d7437bec2e41d6e7253943f3fd8", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json b/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json index 998f1287287..a8dc6c01abb 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-context-refused.json @@ -3,9 +3,9 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "ad19fc24973b49ee7d14bc31460a7e4af5d207db6a2375b52b5a0aa878e09205", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json b/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json index 5c97bea5c98..e8b23a18e38 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-context-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.workspace-context", "namedDeltas": ["new-workspace-runtime-context-null-results-degrade-to-absent"], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "a2c80c9cdbb631f3a8fa648dfbb9e691418467d6ead8fe769d72e7e1d8b552b4", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json b/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json index ed74d84b1c7..6e0ec7222de 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-submit-fulfilled.json @@ -3,9 +3,9 @@ "family": "settings.workspace-submit", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "b10ff86086c134284cb0446e8857cd4b55f5ff2bd0507388ec659a95f25e2a19", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json b/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json index 4b691635314..098936d586b 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-submit-refused.json @@ -3,9 +3,9 @@ "family": "settings.workspace-submit", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "373ea3743dac4e0845df01d5c8f75c909563b8c517f3858293a478234dc9ca5c", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json b/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json index a16a6b6b3c4..38b79386d3e 100644 --- a/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json +++ b/mobile/rpc-foundation/goldens/settings-workspace-submit-transport-error.json @@ -3,9 +3,9 @@ "family": "settings.workspace-submit", "namedDeltas": [], "runnerVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", - "recorderSha256": "58a461dbc99f5ce803aaec650e72eaa2934fccd405e56b77932286f05742ec6b", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", "scenarioSha256": "dfbacbd6392ae8e8199550952fe917e7c01182349df6c99a06eb0682cfd9175c", "platform": "darwin", "scenarioVersion": 1, diff --git a/mobile/rpc-foundation/goldens/tw-capabilities-advertised.json b/mobile/rpc-foundation/goldens/tw-capabilities-advertised.json new file mode 100644 index 00000000000..8ee2df59655 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-capabilities-advertised.json @@ -0,0 +1,99 @@ +{ + "operation": "tasks.worktree-capabilities", + "family": "worktree.runtime-capabilities", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "9d79bcfd6957d11d5ce8c3296f1038a3cfab81eedad7f990b44071104dfd0f91", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "1e5b32902af7": { + "name": "status.get#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" + }, + "5242fad3532f": { + "name": "status.get#1", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "capabilities": ["mobile.tasks.v1", "worktree.create-idempotency.v1"], + "platform": "linux", + "worktreeCreateIdempotency": { + "dedupeTtlMs": 45000 + } + } + } + } + }, + "62aaf19f0b16": { + "capabilities": { + "hostPlatform": { + "$rpc": "null" + }, + "tasksSupported": true, + "worktreeCreateIdempotency": { + "dedupeTtlMs": 45000 + } + } + }, + "b33d34bddc4e": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "hostPlatform": { + "$rpc": "null" + }, + "tasksSupported": true, + "worktreeCreateIdempotency": { + "dedupeTtlMs": 45000 + } + } + } + }, + "recording": { + "scenario": "tw-capabilities-advertised", + "checkpoints": [ + { + "id": "probed", + "observation": { + "sender": ["5242fad3532f"], + "payloads": ["1e5b32902af7"], + "settlements": { + "probe": "b33d34bddc4e" + }, + "state": "62aaf19f0b16", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-capabilities-cutover-retried.json b/mobile/rpc-foundation/goldens/tw-capabilities-cutover-retried.json new file mode 100644 index 00000000000..d5e2b80de00 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-capabilities-cutover-retried.json @@ -0,0 +1,185 @@ +{ + "operation": "tasks.worktree-capabilities", + "family": "worktree.runtime-capabilities", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "fb9c0e4b7c34f9bd1bd355b606c6ba75a7583cff3788000b7ed013612f5574fe", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "1e5b32902af7": { + "name": "status.get#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" + }, + "32354557bece": { + "capabilities": "unprobed" + }, + "4e6e53404f59": { + "capabilities": { + "hostPlatform": { + "$rpc": "null" + }, + "tasksSupported": true, + "worktreeCreateIdempotency": false + } + }, + "9270aeb7d9c6": { + "status": "pending", + "startedAt": 0 + }, + "a8bcef1e95ed": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "hostPlatform": { + "$rpc": "null" + }, + "tasksSupported": true, + "worktreeCreateIdempotency": false + } + }, + "ae9ff6b74ec1": { + "name": "status.get#2", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "capabilities": ["mobile.tasks.v1"] + } + } + } + }, + "c0c86e67c300": { + "name": "status.get#2", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" + }, + "c9c0513fdcb9": { + "name": "status.get#2", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "pending", + "startedAt": 0 + } + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "edf54746317d": { + "name": "status.get#1", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "LogicalClientCutoverError", + "message": "RPC interrupted by connection migration", + "isRpcDeliveryUnknown": true, + "cause": { + "category": "Error", + "message": "Connection closed", + "isRpcDeliveryUnknown": true + } + } + } + } + }, + "recording": { + "scenario": "tw-capabilities-cutover-retried", + "checkpoints": [ + { + "id": "reprobing-after-cutover", + "observation": { + "sender": ["edf54746317d", "c9c0513fdcb9"], + "payloads": ["1e5b32902af7", "c0c86e67c300"], + "settlements": { + "probe": "9270aeb7d9c6", + "migrate": "eb79a9b3682a" + }, + "state": "32354557bece", + "effects": [] + } + }, + { + "id": "probed-on-replacement", + "observation": { + "sender": ["edf54746317d", "ae9ff6b74ec1"], + "payloads": ["1e5b32902af7", "c0c86e67c300"], + "settlements": { + "probe": "a8bcef1e95ed", + "migrate": "eb79a9b3682a" + }, + "state": "4e6e53404f59", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-capabilities-legacy-idempotency.json b/mobile/rpc-foundation/goldens/tw-capabilities-legacy-idempotency.json new file mode 100644 index 00000000000..a761daaf96d --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-capabilities-legacy-idempotency.json @@ -0,0 +1,95 @@ +{ + "operation": "tasks.worktree-capabilities", + "family": "worktree.runtime-capabilities", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "d73fed49e0a7e3e054d5c2fa75780f98bf78b6fa7e02f1ccb2fdc49465cf2fe5", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "03f6a4ac937a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "hostPlatform": { + "$rpc": "null" + }, + "tasksSupported": false, + "worktreeCreateIdempotency": { + "dedupeTtlMs": 60000 + } + } + }, + "1e5b32902af7": { + "name": "status.get#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}" + }, + "3b0c9705ec9a": { + "capabilities": { + "hostPlatform": { + "$rpc": "null" + }, + "tasksSupported": false, + "worktreeCreateIdempotency": { + "dedupeTtlMs": 60000 + } + } + }, + "488c988b5918": { + "name": "status.get#1", + "args": [ + { + "name": "method", + "value": "status.get" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "capabilities": ["worktree.create-idempotency.v1"] + } + } + } + } + }, + "recording": { + "scenario": "tw-capabilities-legacy-idempotency", + "checkpoints": [ + { + "id": "legacy-host-window", + "observation": { + "sender": ["488c988b5918"], + "payloads": ["1e5b32902af7"], + "settlements": { + "probe": "03f6a4ac937a" + }, + "state": "3b0c9705ec9a", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-after-drop.json b/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-after-drop.json new file mode 100644 index 00000000000..37bb5937cf6 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-after-drop.json @@ -0,0 +1,109 @@ +{ + "operation": "tasks.worktree-create-retry", + "family": "worktree.create-retry", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "a99bb80a5826af1df8d74114fcc5654aa42c9208747b512cea9bd5ca65b64ccb", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "3b42c7d5a39b": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Connection lost", + "isRpcDeliveryUnknown": true + } + } + }, + "3f946ad0279c": { + "outcome": "uncreated" + }, + "43a221c63628": { + "name": "worktree.create#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.create\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"kestrel\",\"clientMutationId\":\"mutation-1\"}}" + }, + "9270aeb7d9c6": { + "status": "pending", + "startedAt": 0 + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "f0d75436c3f2": { + "status": "rejected", + "startedAt": 0, + "settledAt": 20000, + "error": { + "category": "Error", + "message": "Connection lost", + "isRpcDeliveryUnknown": true + } + } + }, + "recording": { + "scenario": "tw-create-retry-ambiguous-after-drop", + "checkpoints": [ + { + "id": "waiting-for-reconnect", + "observation": { + "sender": ["3b42c7d5a39b"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "9270aeb7d9c6", + "drop": "eb79a9b3682a" + }, + "state": "3f946ad0279c", + "effects": [] + } + }, + { + "id": "replay-window-abandoned", + "observation": { + "sender": ["3b42c7d5a39b"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "f0d75436c3f2", + "drop": "eb79a9b3682a" + }, + "state": "3f946ad0279c", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-while-connected.json b/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-while-connected.json new file mode 100644 index 00000000000..c684e951815 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-while-connected.json @@ -0,0 +1,83 @@ +{ + "operation": "tasks.worktree-create-retry", + "family": "worktree.create-retry", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "3cda09e4a4ad4092f5f9a48b7c9715a99a51eb3bc4bed00f7054537a9e21cea9", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "3f946ad0279c": { + "outcome": "uncreated" + }, + "43a221c63628": { + "name": "worktree.create#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.create\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"kestrel\",\"clientMutationId\":\"mutation-1\"}}" + }, + "4b9d2713abf2": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Request timed out", + "isRpcDeliveryUnknown": true + } + }, + "50eee544463d": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Request timed out", + "isRpcDeliveryUnknown": true + } + } + } + }, + "recording": { + "scenario": "tw-create-retry-ambiguous-while-connected", + "checkpoints": [ + { + "id": "unknown-not-failed", + "observation": { + "sender": ["50eee544463d"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "4b9d2713abf2" + }, + "state": "3f946ad0279c", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-without-idempotency.json b/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-without-idempotency.json new file mode 100644 index 00000000000..ab56121335a --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-create-retry-ambiguous-without-idempotency.json @@ -0,0 +1,82 @@ +{ + "operation": "tasks.worktree-create-retry", + "family": "worktree.create-retry", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "61097c13b262a4454510936fa9c9554a07865b610f18407f1b67bdd74476df08", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "3f946ad0279c": { + "outcome": "uncreated" + }, + "6d0209806267": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Connection lost", + "isRpcDeliveryUnknown": true + } + }, + "99d539e63c12": { + "name": "worktree.create#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.create\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"kestrel\"}}" + }, + "a179866627c5": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Connection lost", + "isRpcDeliveryUnknown": true + } + } + } + }, + "recording": { + "scenario": "tw-create-retry-ambiguous-without-idempotency", + "checkpoints": [ + { + "id": "unstamped-create-is-not-replayed", + "observation": { + "sender": ["a179866627c5"], + "payloads": ["99d539e63c12"], + "settlements": { + "create": "6d0209806267" + }, + "state": "3f946ad0279c", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-created.json b/mobile/rpc-foundation/goldens/tw-create-retry-created.json new file mode 100644 index 00000000000..a217bd898bc --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-create-retry-created.json @@ -0,0 +1,90 @@ +{ + "operation": "tasks.worktree-create-retry", + "family": "worktree.create-retry", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "0278216fee698c00118bb0e73a7fe755dc59c3b8e2b0459153edae64f155774c", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "43a221c63628": { + "name": "worktree.create#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.create\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"kestrel\",\"clientMutationId\":\"mutation-1\"}}" + }, + "489c189aebca": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "worktree": { + "displayName": "kestrel", + "id": "repo-1::/w" + } + } + } + } + }, + "b32227fdb10b": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "name": "kestrel", + "worktreeId": "repo-1::/w" + } + }, + "df162b95f465": { + "outcome": { + "name": "kestrel", + "worktreeId": "repo-1::/w" + } + } + }, + "recording": { + "scenario": "tw-create-retry-created", + "checkpoints": [ + { + "id": "created", + "observation": { + "sender": ["489c189aebca"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "b32227fdb10b" + }, + "state": "df162b95f465", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-name-collision.json b/mobile/rpc-foundation/goldens/tw-create-retry-name-collision.json new file mode 100644 index 00000000000..89512856323 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-create-retry-name-collision.json @@ -0,0 +1,176 @@ +{ + "operation": "tasks.worktree-create-retry", + "family": "worktree.create-retry", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "6cb658dadc9e146c4f36c6ce643451e72300b8cdda19cc684ffa9fb2b0822c0a", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "2b7c07c2d2af": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "conflict", + "message": "Branch \"kestrel\" already exists." + }, + "id": "frame-1", + "ok": false + } + } + }, + "3f946ad0279c": { + "outcome": "uncreated" + }, + "3fa75e508233": { + "name": "worktree.create#2", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.create\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"kestrel-2\",\"clientMutationId\":\"mutation-2\"}}" + }, + "43a221c63628": { + "name": "worktree.create#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.create\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"kestrel\",\"clientMutationId\":\"mutation-1\"}}" + }, + "9270aeb7d9c6": { + "status": "pending", + "startedAt": 0 + }, + "96ffe866d064": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "name": "kestrel-2", + "worktreeId": "repo-1::/w2" + } + }, + "c277d86477c3": { + "name": "worktree.create#2", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-2", + "name": "kestrel-2", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "pending", + "startedAt": 0 + } + }, + "d0c9ecd48c97": { + "name": "worktree.create#2", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-2", + "name": "kestrel-2", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "worktree": { + "displayName": "kestrel-2", + "id": "repo-1::/w2" + } + } + } + } + }, + "db70004d62eb": { + "outcome": { + "name": "kestrel-2", + "worktreeId": "repo-1::/w2" + } + } + }, + "recording": { + "scenario": "tw-create-retry-name-collision", + "checkpoints": [ + { + "id": "retrying", + "observation": { + "sender": ["2b7c07c2d2af", "c277d86477c3"], + "payloads": ["43a221c63628", "3fa75e508233"], + "settlements": { + "create": "9270aeb7d9c6" + }, + "state": "3f946ad0279c", + "effects": [] + } + }, + { + "id": "created-suffixed", + "observation": { + "sender": ["2b7c07c2d2af", "d0c9ecd48c97"], + "payloads": ["43a221c63628", "3fa75e508233"], + "settlements": { + "create": "96ffe866d064" + }, + "state": "db70004d62eb", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-unretryable-refusal.json b/mobile/rpc-foundation/goldens/tw-create-retry-unretryable-refusal.json new file mode 100644 index 00000000000..ed6e4c5b69d --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-create-retry-unretryable-refusal.json @@ -0,0 +1,86 @@ +{ + "operation": "tasks.worktree-create-retry", + "family": "worktree.create-retry", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "16abe9e1a8d4cff17b3ea29d40277ae30a3d555a4a9efa08b2745c3a85b02740", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "240b0b1c72b2": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": "" + } + }, + "43a221c63628": { + "name": "worktree.create#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.create\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"kestrel\",\"clientMutationId\":\"mutation-1\"}}" + }, + "43e8315bc2fe": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "internal", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + }, + "7d651cae8837": { + "outcome": { + "error": "" + } + } + }, + "recording": { + "scenario": "tw-create-retry-unretryable-refusal", + "checkpoints": [ + { + "id": "refused-empty-message", + "observation": { + "sender": ["43e8315bc2fe"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "240b0b1c72b2" + }, + "state": "7d651cae8837", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-create-retry-warning-kept.json b/mobile/rpc-foundation/goldens/tw-create-retry-warning-kept.json new file mode 100644 index 00000000000..bccc6cbc9c0 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-create-retry-warning-kept.json @@ -0,0 +1,92 @@ +{ + "operation": "tasks.worktree-create-retry", + "family": "worktree.create-retry", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "f469b2b7d61e7fc500fa97b5548f5a3732b0dbcdb405412a514a609f786dfbb5", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "43a221c63628": { + "name": "worktree.create#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.create\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"kestrel\",\"clientMutationId\":\"mutation-1\"}}" + }, + "6ad759c47a41": { + "name": "worktree.create#1", + "args": [ + { + "name": "method", + "value": "worktree.create" + }, + { + "name": "params", + "value": { + "clientMutationId": "mutation-1", + "name": "kestrel", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 600000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "warning": " startup terminal failed ", + "worktree": { + "id": "repo-1::/w" + } + } + } + } + }, + "97555d579c32": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "name": "kestrel", + "warning": "startup terminal failed", + "worktreeId": "repo-1::/w" + } + }, + "f800fc04633e": { + "outcome": { + "name": "kestrel", + "warning": "startup terminal failed", + "worktreeId": "repo-1::/w" + } + } + }, + "recording": { + "scenario": "tw-create-retry-warning-kept", + "checkpoints": [ + { + "id": "created-with-warning", + "observation": { + "sender": ["6ad759c47a41"], + "payloads": ["43a221c63628"], + "settlements": { + "create": "97555d579c32" + }, + "state": "f800fc04633e", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-hosted-base-resolved.json b/mobile/rpc-foundation/goldens/tw-hosted-base-resolved.json new file mode 100644 index 00000000000..dc96fe98d76 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-hosted-base-resolved.json @@ -0,0 +1,158 @@ +{ + "operation": "tasks.composer-hosted-base", + "family": "worktree.hosted-base", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "b3734c24f8a083d3efcdd995ea6a57e608d3d3ae3bbbd514db19dcf69448fa48", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "0e24d2a37a0d": { + "name": "worktree.resolvePrBase#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.resolvePrBase\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"headRefName\":\"feature\"}}" + }, + "236529aa012d": { + "mrBase": "unresolved", + "prBase": { + "baseBranch": "main", + "compareBaseRef": "origin/main" + } + }, + "3cca8119f144": { + "mrBase": { + "baseBranch": "develop" + }, + "prBase": { + "baseBranch": "main", + "compareBaseRef": "origin/main" + } + }, + "4febe923ceea": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "headRefName": "feature", + "prNumber": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "baseBranch": "main", + "compareBaseRef": "origin/main" + } + } + } + }, + "5428de0f5130": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "baseBranch": "main", + "compareBaseRef": "origin/main" + } + }, + "69afcaf1cb72": { + "name": "worktree.resolveMrBase#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.resolveMrBase\",\"params\":{\"repo\":\"id:repo-1\",\"mrIid\":7,\"sourceBranch\":\"feature\"}}" + }, + "aad8e7ddeea2": { + "name": "worktree.resolveMrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolveMrBase" + }, + { + "name": "params", + "value": { + "mrIid": 7, + "repo": "id:repo-1", + "sourceBranch": "feature" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "baseBranch": "develop" + } + } + } + }, + "fd552ecb03da": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "baseBranch": "develop" + } + } + }, + "recording": { + "scenario": "tw-hosted-base-resolved", + "checkpoints": [ + { + "id": "pr-base-resolved", + "observation": { + "sender": ["4febe923ceea"], + "payloads": ["0e24d2a37a0d"], + "settlements": { + "pr": "5428de0f5130" + }, + "state": "236529aa012d", + "effects": [] + } + }, + { + "id": "mr-base-resolved", + "observation": { + "sender": ["4febe923ceea", "aad8e7ddeea2"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "5428de0f5130", + "mr": "fd552ecb03da" + }, + "state": "3cca8119f144", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-hosted-base-soft-error.json b/mobile/rpc-foundation/goldens/tw-hosted-base-soft-error.json new file mode 100644 index 00000000000..4801966ea3f --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-hosted-base-soft-error.json @@ -0,0 +1,148 @@ +{ + "operation": "tasks.composer-hosted-base", + "family": "worktree.hosted-base", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "451e74a430d2549976fa360a0e43e76a8d855b1470b8e313797019770ceca4cb", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "0e24d2a37a0d": { + "name": "worktree.resolvePrBase#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.resolvePrBase\",\"params\":{\"repo\":\"id:repo-1\",\"prNumber\":12,\"headRefName\":\"feature\"}}" + }, + "69afcaf1cb72": { + "name": "worktree.resolveMrBase#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.resolveMrBase\",\"params\":{\"repo\":\"id:repo-1\",\"mrIid\":7,\"sourceBranch\":\"feature\"}}" + }, + "723a115a3810": { + "name": "worktree.resolveMrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolveMrBase" + }, + { + "name": "params", + "value": { + "mrIid": 7, + "repo": "id:repo-1", + "sourceBranch": "feature" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": "" + } + } + } + }, + "ae0c82b12f2a": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "pull request not found", + "isRpcDeliveryUnknown": false + } + }, + "c57e06c96492": { + "mrBase": "unresolved", + "prBase": "unresolved" + }, + "eb01c2306db5": { + "name": "worktree.resolvePrBase#1", + "args": [ + { + "name": "method", + "value": "worktree.resolvePrBase" + }, + { + "name": "params", + "value": { + "headRefName": "feature", + "prNumber": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": "pull request not found" + } + } + } + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + } + }, + "recording": { + "scenario": "tw-hosted-base-soft-error", + "checkpoints": [ + { + "id": "in-band-error", + "observation": { + "sender": ["eb01c2306db5"], + "payloads": ["0e24d2a37a0d"], + "settlements": { + "pr": "ae0c82b12f2a" + }, + "state": "c57e06c96492", + "effects": [] + } + }, + { + "id": "in-band-empty-error", + "observation": { + "sender": ["eb01c2306db5", "723a115a3810"], + "payloads": ["0e24d2a37a0d", "69afcaf1cb72"], + "settlements": { + "pr": "ae0c82b12f2a", + "mr": "f3b516f62081" + }, + "state": "c57e06c96492", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-paste-lookup-resolved.json b/mobile/rpc-foundation/goldens/tw-paste-lookup-resolved.json new file mode 100644 index 00000000000..4f3ca9bd3e4 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-paste-lookup-resolved.json @@ -0,0 +1,340 @@ +{ + "operation": "tasks.paste-lookup", + "family": "tasks.paste-lookup", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "1fb1cdc8a2544e25547175760143a61355900a3ed4b87e08a1fa0dd2409e317d", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "09b235c17bb0": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "0e9d6525a582": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "11ab96fde6c9": { + "name": "gitlab.workItemByPath#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.workItemByPath\",\"params\":{\"repo\":\"id:repo-1\",\"host\":\"gitlab.com\",\"path\":\"group/project\",\"iid\":7,\"type\":\"issue\"}}" + }, + "2113a0cc7708": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [ + [ + "repo-1", + { + "owner": "owner", + "repo": "repo" + } + ] + ], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + }, + "repo-slug": { + "displayName": "Repo", + "id": "repo-1", + "slug": { + "$rpc": "null" + } + } + }, + "4a3429622287": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [], + "gitlab-path": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "65342779da15": { + "name": "github.workItem#1", + "args": [ + { + "name": "method", + "value": "github.workItem" + }, + { + "name": "params", + "value": { + "number": 12, + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "number": 12, + "title": "twelve" + } + } + } + }, + "731507dd2e23": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + } + }, + "7445a582a9c8": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "owner": "owner", + "repo": "repo" + } + } + } + }, + "a45a7dd68af6": { + "name": "github.repoSlug#1", + "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "aaf80675fc49": { + "name": "github.workItem#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItem\",\"params\":{\"repo\":\"id:repo-1\",\"number\":12}}" + }, + "bd533f6b0b40": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "iid": 7, + "repoId": "repo-1", + "title": "seven" + } + }, + "e1f537905a65": { + "name": "github.workItemByOwnerRepo#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.workItemByOwnerRepo\",\"params\":{\"repo\":\"id:repo-1\",\"owner\":\"owner\",\"ownerRepo\":\"repo\",\"number\":12,\"type\":\"issue\"}}" + }, + "e29333b1693f": { + "name": "gitlab.workItemByPath#1", + "args": [ + { + "name": "method", + "value": "gitlab.workItemByPath" + }, + { + "name": "params", + "value": { + "host": "gitlab.com", + "iid": 7, + "path": "group/project", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "iid": 7, + "title": "seven" + } + } + } + }, + "e970eb27f5ca": { + "by-number": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "by-slug": { + "number": 12, + "repoId": "repo-1", + "title": "twelve" + }, + "cache": [] + }, + "f9ea1f747023": { + "name": "github.workItemByOwnerRepo#1", + "args": [ + { + "name": "method", + "value": "github.workItemByOwnerRepo" + }, + { + "name": "params", + "value": { + "number": 12, + "owner": "owner", + "ownerRepo": "repo", + "repo": "id:repo-1", + "type": "issue" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "number": 12, + "title": "twelve" + } + } + } + } + }, + "recording": { + "scenario": "tw-paste-lookup-resolved", + "checkpoints": [ + { + "id": "by-number", + "observation": { + "sender": ["65342779da15"], + "payloads": ["aaf80675fc49"], + "settlements": { + "by-number": "731507dd2e23" + }, + "state": "09b235c17bb0", + "effects": [] + } + }, + { + "id": "by-slug", + "observation": { + "sender": ["65342779da15", "f9ea1f747023"], + "payloads": ["aaf80675fc49", "e1f537905a65"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23" + }, + "state": "e970eb27f5ca", + "effects": [] + } + }, + { + "id": "gitlab-path", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "e29333b1693f"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40" + }, + "state": "4a3429622287", + "effects": [] + } + }, + { + "id": "repo-slug-matched", + "observation": { + "sender": ["65342779da15", "f9ea1f747023", "e29333b1693f", "7445a582a9c8"], + "payloads": ["aaf80675fc49", "e1f537905a65", "11ab96fde6c9", "a45a7dd68af6"], + "settlements": { + "by-number": "731507dd2e23", + "by-slug": "731507dd2e23", + "gitlab-path": "bd533f6b0b40", + "repo-slug": "0e9d6525a582" + }, + "state": "2113a0cc7708", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-refused.json b/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-refused.json new file mode 100644 index 00000000000..d4518e0002d --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-refused.json @@ -0,0 +1,135 @@ +{ + "operation": "tasks.paste-lookup", + "family": "tasks.paste-lookup", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "e9d85c576adf93063a8f56d49d28869c402cad38122732b46b8ec021d25db5e3", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "0b81b65669e6": { + "name": "github.repoSlug#2", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-2" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "$rpc": "null" + } + } + } + }, + "2d9e475c68c7": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "forbidden", + "message": "no access" + }, + "id": "frame-1", + "ok": false + } + } + }, + "35f3e39a1c50": { + "cache": [ + [ + "repo-1", + { + "$rpc": "null" + } + ], + [ + "repo-2", + { + "$rpc": "null" + } + ] + ], + "repo-slug": { + "$rpc": "null" + } + }, + "5f7cab1e0f03": { + "name": "github.repoSlug#2", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-2\"}}" + }, + "6530ef4dbd15": { + "name": "github.repoSlug#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "ee20a1dc39e7": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "null" + } + } + }, + "recording": { + "scenario": "tw-paste-lookup-slug-refused", + "checkpoints": [ + { + "id": "refusal-is-per-repo", + "observation": { + "sender": ["2d9e475c68c7", "0b81b65669e6"], + "payloads": ["6530ef4dbd15", "5f7cab1e0f03"], + "settlements": { + "repo-slug": "ee20a1dc39e7" + }, + "state": "35f3e39a1c50", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-unsupported.json b/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-unsupported.json new file mode 100644 index 00000000000..63595fb6223 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-paste-lookup-slug-unsupported.json @@ -0,0 +1,133 @@ +{ + "operation": "tasks.paste-lookup", + "family": "tasks.paste-lookup", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "14509b4c1cc3beb00cc329b6bae46913f59b3938f76c0bd3bf3e374f34fb680d", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "0f35c09b3d1e": { + "name": "github.repoSlug#1", + "args": [ + { + "name": "method", + "value": "github.repoSlug" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "method_not_found", + "message": "Unknown method" + }, + "id": "frame-1", + "ok": false + } + } + }, + "176039835400": { + "cache": [ + [ + "repo-1", + { + "$rpc": "null" + } + ], + [ + "repo-2", + { + "$rpc": "null" + } + ] + ], + "repo-slug": { + "$rpc": "null" + }, + "repo-slug-again": { + "$rpc": "null" + } + }, + "35f3e39a1c50": { + "cache": [ + [ + "repo-1", + { + "$rpc": "null" + } + ], + [ + "repo-2", + { + "$rpc": "null" + } + ] + ], + "repo-slug": { + "$rpc": "null" + } + }, + "6530ef4dbd15": { + "name": "github.repoSlug#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.repoSlug\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "ee20a1dc39e7": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "null" + } + } + }, + "recording": { + "scenario": "tw-paste-lookup-slug-unsupported", + "checkpoints": [ + { + "id": "host-wide-probe-cached", + "observation": { + "sender": ["0f35c09b3d1e"], + "payloads": ["6530ef4dbd15"], + "settlements": { + "repo-slug": "ee20a1dc39e7" + }, + "state": "35f3e39a1c50", + "effects": [] + } + }, + { + "id": "no-second-probe", + "observation": { + "sender": ["0f35c09b3d1e"], + "payloads": ["6530ef4dbd15"], + "settlements": { + "repo-slug": "ee20a1dc39e7", + "repo-slug-again": "ee20a1dc39e7" + }, + "state": "176039835400", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-setup-hook-trust-always.json b/mobile/rpc-foundation/goldens/tw-setup-hook-trust-always.json new file mode 100644 index 00000000000..6197696ed6d --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-setup-hook-trust-always.json @@ -0,0 +1,90 @@ +{ + "operation": "tasks.setup-hook-trust", + "family": "worktree.setup-hook-trust", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "0d2e3f48aadf45abbf6927b72ed5fef4caa8e3eb2efd1046339a3fbfab6f9f18", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "229c35d1a4ba": { + "trust": "unapproved" + }, + "2fde86b1acca": { + "name": "ui.set#1", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "trustedOrcaHooks": { + "repo-1": { + "all": { + "approvedAt": 1767225600000 + } + } + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "forbidden", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + }, + "341f646a48a2": { + "name": "ui.set#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"ui.set\",\"params\":{\"trustedOrcaHooks\":{\"repo-1\":{\"all\":{\"approvedAt\":1767225600000}}}}}" + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + } + }, + "recording": { + "scenario": "tw-setup-hook-trust-always", + "checkpoints": [ + { + "id": "refused-empty-message", + "observation": { + "sender": ["2fde86b1acca"], + "payloads": ["341f646a48a2"], + "settlements": { + "approve": "f3b516f62081" + }, + "state": "229c35d1a4ba", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-setup-hook-trust-approved.json b/mobile/rpc-foundation/goldens/tw-setup-hook-trust-approved.json new file mode 100644 index 00000000000..6c27989310b --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-setup-hook-trust-approved.json @@ -0,0 +1,100 @@ +{ + "operation": "tasks.setup-hook-trust", + "family": "worktree.setup-hook-trust", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "f54f5c6dbbe7dbcf8e85e9bd36b27ca9bea7de65d5e35dabace49b3fc766a403", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "0f68ccbfb8e9": { + "name": "ui.set#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"ui.set\",\"params\":{\"trustedOrcaHooks\":{\"repo-1\":{\"setup\":{\"contentHash\":\"hash-1\",\"approvedAt\":1767225600000}}}}}" + }, + "6f009f61d89f": { + "name": "ui.set#1", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "ok": true + } + } + } + }, + "a406b068aeca": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + }, + "b2aa9ff12623": { + "trust": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + } + }, + "recording": { + "scenario": "tw-setup-hook-trust-approved", + "checkpoints": [ + { + "id": "approved", + "observation": { + "sender": ["6f009f61d89f"], + "payloads": ["0f68ccbfb8e9"], + "settlements": { + "approve": "a406b068aeca" + }, + "state": "b2aa9ff12623", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-smart-search-all-providers.json b/mobile/rpc-foundation/goldens/tw-smart-search-all-providers.json new file mode 100644 index 00000000000..c8b2709e36e --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-smart-search-all-providers.json @@ -0,0 +1,489 @@ +{ + "operation": "tasks.smart-source-search", + "family": "tasks.smart-source-search", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "283849e17fb47ad5f9c128cef37a18e869a132357b332b40bec955292db2af3f", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "253629bd0d20": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ] + }, + "25f88995b39a": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-4", + "ok": true, + "result": { + "refs": ["main", "release"] + } + } + } + }, + "26dc3b7c8299": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "id": "issue-3" + } + ] + }, + "2cfd107b9660": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "36290ab254a4": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ] + }, + "3828d5880c35": { + "name": "gitlab.listWorkItems#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"state\":\"opened\",\"page\":1,\"perPage\":50,\"query\":\"bug\"}}" + }, + "41d2452d4ebe": { + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "5bce68072dc3": { + "name": "github.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "github.listWorkItems" + }, + { + "name": "params", + "value": { + "limit": 36, + "query": "bug", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "items": [ + { + "number": 1, + "title": "one" + } + ] + } + } + } + }, + "6107c951646f": { + "name": "linear.searchIssues#1", + "args": [ + { + "name": "method", + "value": "linear.searchIssues" + }, + { + "name": "params", + "value": { + "limit": 50, + "query": "bug", + "workspaceId": "linear-workspace" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "items": [ + { + "id": "issue-1" + } + ] + } + } + } + }, + "6e2d75e3bbd7": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ] + }, + "a4ee5d16b4f6": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "id": "issue-1" + } + ] + }, + "a92cd1dd05af": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-3" + } + ] + }, + "b015aaf3a53a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ] + }, + "b8b02a30b6b8": { + "name": "repo.searchRefs#1", + "json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"repo.searchRefs\",\"params\":{\"repo\":\"id:repo-1\",\"query\":\"bug\",\"limit\":20}}" + }, + "c43e80126d82": { + "branches": [ + { + "localBranchName": "main", + "refName": "main" + }, + { + "localBranchName": "release", + "refName": "release" + } + ], + "github": [ + { + "number": 1, + "repoId": "repo-1", + "title": "one" + } + ], + "gitlab": [ + { + "iid": 2, + "repoId": "repo-1", + "title": "two" + } + ], + "linear": [ + { + "id": "issue-1" + } + ] + }, + "e97e5a589476": { + "name": "linear.listIssues#1", + "json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"linear.listIssues\",\"params\":{\"filter\":\"assigned\",\"limit\":50}}" + }, + "ead829dd6d03": { + "name": "linear.searchIssues#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.searchIssues\",\"params\":{\"query\":\"bug\",\"limit\":50,\"workspaceId\":\"linear-workspace\"}}" + }, + "ee6fe4f97b01": { + "name": "github.listWorkItems#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"limit\":36,\"query\":\"bug\"}}" + }, + "f32ad26605d0": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "error": { + "message": "missing", + "type": "not_found" + }, + "items": [ + { + "iid": 2, + "title": "two" + } + ] + } + } + } + }, + "fe7f60b5d785": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-5", + "ok": true, + "result": [ + { + "id": "issue-3" + } + ] + } + } + } + }, + "recording": { + "scenario": "tw-smart-search-all-providers", + "checkpoints": [ + { + "id": "github-items", + "observation": { + "sender": ["5bce68072dc3"], + "payloads": ["ee6fe4f97b01"], + "settlements": { + "github": "36290ab254a4" + }, + "state": "253629bd0d20", + "effects": [] + } + }, + { + "id": "gitlab-items", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0"], + "payloads": ["ee6fe4f97b01", "3828d5880c35"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7" + }, + "state": "2cfd107b9660", + "effects": [] + } + }, + { + "id": "linear-search", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6" + }, + "state": "41d2452d4ebe", + "effects": [] + } + }, + { + "id": "branch-refs", + "observation": { + "sender": ["5bce68072dc3", "f32ad26605d0", "6107c951646f", "25f88995b39a"], + "payloads": ["ee6fe4f97b01", "3828d5880c35", "ead829dd6d03", "b8b02a30b6b8"], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a" + }, + "state": "c43e80126d82", + "effects": [] + } + }, + { + "id": "linear-assigned-listed", + "observation": { + "sender": [ + "5bce68072dc3", + "f32ad26605d0", + "6107c951646f", + "25f88995b39a", + "fe7f60b5d785" + ], + "payloads": [ + "ee6fe4f97b01", + "3828d5880c35", + "ead829dd6d03", + "b8b02a30b6b8", + "e97e5a589476" + ], + "settlements": { + "github": "36290ab254a4", + "gitlab": "6e2d75e3bbd7", + "linear": "a4ee5d16b4f6", + "branches": "b015aaf3a53a", + "linear-assigned": "26dc3b7c8299" + }, + "state": "a92cd1dd05af", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-smart-search-gitlab-provider-error.json b/mobile/rpc-foundation/goldens/tw-smart-search-gitlab-provider-error.json new file mode 100644 index 00000000000..a7112240524 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-smart-search-gitlab-provider-error.json @@ -0,0 +1,165 @@ +{ + "operation": "tasks.smart-source-search", + "family": "tasks.smart-source-search", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "4537bf83f7a030521eec549adf4490da5be183471d5a9f9e58b71815b29481ff", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "44136fa355b3": {}, + "46027e62015d": { + "name": "repo.searchRefs#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.searchRefs\",\"params\":{\"repo\":\"id:repo-1\",\"query\":\"main\",\"limit\":20}}" + }, + "51e012c25ebf": { + "branches": [ + { + "localBranchName": "main", + "refName": "origin/main" + } + ] + }, + "522d9e5c292e": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "main", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "refDetails": [ + { + "localBranchName": "main", + "refName": "origin/main" + } + ] + } + } + } + }, + "791f6fc629fc": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "localBranchName": "main", + "refName": "origin/main" + } + ] + }, + "86057be07bd0": { + "name": "gitlab.listWorkItems#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"gitlab.listWorkItems\",\"params\":{\"repo\":\"id:repo-1\",\"state\":\"opened\",\"page\":1,\"perPage\":50,\"query\":\"bug\"}}" + }, + "97c2301d5d8c": { + "name": "gitlab.listWorkItems#1", + "args": [ + { + "name": "method", + "value": "gitlab.listWorkItems" + }, + { + "name": "params", + "value": { + "page": 1, + "perPage": 50, + "query": "bug", + "repo": "id:repo-1", + "state": "opened" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "error": { + "message": "rate limited", + "type": "quota" + }, + "items": [] + } + } + } + }, + "bf7ab976b200": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "rate limited", + "isRpcDeliveryUnknown": false + } + } + }, + "recording": { + "scenario": "tw-smart-search-gitlab-provider-error", + "checkpoints": [ + { + "id": "in-band-provider-error", + "observation": { + "sender": ["97c2301d5d8c"], + "payloads": ["86057be07bd0"], + "settlements": { + "gitlab": "bf7ab976b200" + }, + "state": "44136fa355b3", + "effects": [] + } + }, + { + "id": "branch-ref-details", + "observation": { + "sender": ["97c2301d5d8c", "522d9e5c292e"], + "payloads": ["86057be07bd0", "46027e62015d"], + "settlements": { + "gitlab": "bf7ab976b200", + "branches": "791f6fc629fc" + }, + "state": "51e012c25ebf", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-smart-search-linear-listed.json b/mobile/rpc-foundation/goldens/tw-smart-search-linear-listed.json new file mode 100644 index 00000000000..00a74986bbe --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-smart-search-linear-listed.json @@ -0,0 +1,93 @@ +{ + "operation": "tasks.smart-source-search", + "family": "tasks.smart-source-search", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "34ab4edb621856980c8678629bd809c100d27dcd0747db5abbf4508c7231b7e5", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "4e3aac46030e": { + "name": "linear.listIssues#1", + "args": [ + { + "name": "method", + "value": "linear.listIssues" + }, + { + "name": "params", + "value": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$rpc": "undefined" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": [ + { + "id": "issue-2" + } + ] + } + } + }, + "a95bdb94e589": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": [ + { + "id": "issue-2" + } + ] + }, + "b107467b4d7c": { + "name": "linear.listIssues#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"linear.listIssues\",\"params\":{\"filter\":\"assigned\",\"limit\":50}}" + }, + "f2b981b0b281": { + "linear": [ + { + "id": "issue-2" + } + ] + } + }, + "recording": { + "scenario": "tw-smart-search-linear-listed", + "checkpoints": [ + { + "id": "linear-assigned", + "observation": { + "sender": ["4e3aac46030e"], + "payloads": ["b107467b4d7c"], + "settlements": { + "linear": "a95bdb94e589" + }, + "state": "f2b981b0b281", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-task-preferences-resume-write.json b/mobile/rpc-foundation/goldens/tw-task-preferences-resume-write.json new file mode 100644 index 00000000000..131cccfa495 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-task-preferences-resume-write.json @@ -0,0 +1,154 @@ +{ + "operation": "settings.task-preferences", + "family": "settings-best-effort", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "31bfa49f888b0eb3f72873bf4a3af26129e78c23126e8fc8fe45b952caa60904", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "43a97b36b849": { + "name": "ui.set#2", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ui.set\",\"params\":{\"trustedOrcaHooks\":{\"repo-1\":{\"setup\":{\"contentHash\":\"hash-1\",\"approvedAt\":1767225600000}}}}}" + }, + "8214f29cee6d": { + "name": "ui.set#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"ui.set\",\"params\":{\"taskResumeState\":{\"githubItemsPreset\":\"issues\"}}}" + }, + "a569eb8ebbdd": { + "name": "ui.set#1", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "taskResumeState": { + "githubItemsPreset": "issues" + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "forbidden", + "message": "no access" + }, + "id": "frame-1", + "ok": false + } + } + }, + "ae0c8e22f430": { + "preset": "all" + }, + "bea815de84ac": { + "name": "ui.set#2", + "args": [ + { + "name": "method", + "value": "ui.set" + }, + { + "name": "params", + "value": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "approvedAt": 1767225600000, + "contentHash": "hash-1" + } + } + } + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "forbidden", + "message": "" + }, + "id": "frame-2", + "ok": false + } + } + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "f3b516f62081": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "", + "isRpcDeliveryUnknown": false + } + } + }, + "recording": { + "scenario": "tw-task-preferences-resume-write", + "checkpoints": [ + { + "id": "best-effort-resume-write", + "observation": { + "sender": ["a569eb8ebbdd"], + "payloads": ["8214f29cee6d"], + "settlements": { + "mount": "eb79a9b3682a", + "resume": "eb79a9b3682a" + }, + "state": "ae0c8e22f430", + "effects": [] + } + }, + { + "id": "awaited-trust-write-refused", + "observation": { + "sender": ["a569eb8ebbdd", "bea815de84ac"], + "payloads": ["8214f29cee6d", "43a97b36b849"], + "settlements": { + "mount": "eb79a9b3682a", + "resume": "eb79a9b3682a", + "trust": "f3b516f62081" + }, + "state": "ae0c8e22f430", + "effects": [] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-source-presets-refused.json b/mobile/rpc-foundation/goldens/tw-workspace-source-presets-refused.json new file mode 100644 index 00000000000..be5d800dfa5 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-workspace-source-presets-refused.json @@ -0,0 +1,136 @@ +{ + "operation": "tasks.workspace-source", + "family": "tasks.workspace-source", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "2cd1e8972f226572744dad7da82afffbdf0452a121c1cd8c3334d5c3fde5d57c", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "2399e995a370": { + "name": "workspaceSparsePresets", + "value": [] + }, + "273f4074a9b5": { + "name": "workspaceSparsePresetsLoaded", + "value": false + }, + "35afa5cb107f": { + "name": "workspaceBaseBranchLoading", + "value": false + }, + "4cedb91a2f7a": { + "name": "repo.sparsePresets#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.sparsePresets\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "5bad21b1e042": { + "name": "repo.sparsePresets#1", + "args": [ + { + "name": "method", + "value": "repo.sparsePresets" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "forbidden", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + }, + "5f1c84e00d4f": { + "name": "workspaceBaseBranchResults", + "value": [] + }, + "62bc28c39ffc": { + "branchError": "", + "branches": [], + "presets": [], + "presetsError": "", + "presetsLoaded": false + }, + "6c344c5f4ac0": { + "name": "workspaceBaseBranchError", + "value": "" + }, + "8353b8e1a426": { + "name": "workspaceSparsePresetsLoading", + "value": true + }, + "9357f7ea8445": { + "name": "workspaceSparsePresetId", + "value": { + "$rpc": "null" + } + }, + "cfc8af2a7169": { + "name": "workspaceSparsePresetsLoading", + "value": false + }, + "dba381378b08": { + "name": "workspaceSparsePresetsError", + "value": "" + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + } + }, + "recording": { + "scenario": "tw-workspace-source-presets-refused", + "checkpoints": [ + { + "id": "presets-refused-empty-message", + "observation": { + "sender": ["5bad21b1e042"], + "payloads": ["4cedb91a2f7a"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "62bc28c39ffc", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "2399e995a370", + "273f4074a9b5", + "9357f7ea8445", + "dba381378b08", + "cfc8af2a7169" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-source-presets.json b/mobile/rpc-foundation/goldens/tw-workspace-source-presets.json new file mode 100644 index 00000000000..c740ccb382e --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-workspace-source-presets.json @@ -0,0 +1,254 @@ +{ + "operation": "tasks.workspace-source", + "family": "tasks.workspace-source", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "046dd3a125a3c9abcf5a0dd122818939b516adb91cbda2554b3409d4bb3a7980", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "1d9a7d969446": { + "name": "workspaceSparsePresetsLoaded", + "value": true + }, + "273f4074a9b5": { + "name": "workspaceSparsePresetsLoaded", + "value": false + }, + "35afa5cb107f": { + "name": "workspaceBaseBranchLoading", + "value": false + }, + "395368dea8ff": { + "name": "repo.searchRefs#1", + "args": [ + { + "name": "method", + "value": "repo.searchRefs" + }, + { + "name": "params", + "value": { + "limit": 20, + "query": "main", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 30000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "refs": ["main"] + } + } + } + }, + "46027e62015d": { + "name": "repo.searchRefs#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.searchRefs\",\"params\":{\"repo\":\"id:repo-1\",\"query\":\"main\",\"limit\":20}}" + }, + "4856f62b3650": { + "name": "workspaceSparsePresets", + "value": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ] + }, + "4cedb91a2f7a": { + "name": "repo.sparsePresets#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.sparsePresets\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "57f06e6e349e": { + "branchError": "", + "branches": [], + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "presetsLoaded": true + }, + "58cb95babab2": { + "name": "workspaceBaseBranchLoading", + "value": true + }, + "5f1c84e00d4f": { + "name": "workspaceBaseBranchResults", + "value": [] + }, + "6c344c5f4ac0": { + "name": "workspaceBaseBranchError", + "value": "" + }, + "8353b8e1a426": { + "name": "workspaceSparsePresetsLoading", + "value": true + }, + "8dbe7ea87a41": { + "name": "workspaceBaseBranchResults", + "value": [ + { + "localBranchName": "main", + "refName": "main" + } + ] + }, + "9357f7ea8445": { + "name": "workspaceSparsePresetId", + "value": { + "$rpc": "null" + } + }, + "b78bcf7ca596": { + "branchError": "", + "branches": [ + { + "localBranchName": "main", + "refName": "main" + } + ], + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "presetsLoaded": true + }, + "c8d4d05367d6": { + "name": "repo.sparsePresets#1", + "args": [ + { + "name": "method", + "value": "repo.sparsePresets" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ] + } + } + } + }, + "cfc8af2a7169": { + "name": "workspaceSparsePresetsLoading", + "value": false + }, + "dba381378b08": { + "name": "workspaceSparsePresetsError", + "value": "" + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + } + }, + "recording": { + "scenario": "tw-workspace-source-presets", + "checkpoints": [ + { + "id": "presets-loaded", + "observation": { + "sender": ["c8d4d05367d6"], + "payloads": ["4cedb91a2f7a"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "57f06e6e349e", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169" + ] + } + }, + { + "id": "branches-loaded", + "observation": { + "sender": ["c8d4d05367d6", "395368dea8ff"], + "payloads": ["4cedb91a2f7a", "46027e62015d"], + "settlements": { + "mount": "eb79a9b3682a", + "branch-query": "eb79a9b3682a" + }, + "state": "b78bcf7ca596", + "effects": [ + "8353b8e1a426", + "273f4074a9b5", + "dba381378b08", + "5f1c84e00d4f", + "35afa5cb107f", + "6c344c5f4ac0", + "4856f62b3650", + "1d9a7d969446", + "9357f7ea8445", + "cfc8af2a7169", + "58cb95babab2", + "6c344c5f4ac0", + "8dbe7ea87a41", + "35afa5cb107f" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-sparse-missing-preset.json b/mobile/rpc-foundation/goldens/tw-workspace-sparse-missing-preset.json new file mode 100644 index 00000000000..f6f7cb190d4 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-workspace-sparse-missing-preset.json @@ -0,0 +1,159 @@ +{ + "operation": "tasks.workspace-sparse", + "family": "tasks.workspace-sparse", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "865a659012dd882fd6073813585e2911a1d6252404fbf5a5e273f062b89fc91d", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "193c0bc3cf2a": { + "presets": [], + "presetsError": "Failed to save sparse preset.", + "saving": false, + "ssh": { + "error": "", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "7fd0cde62993": { + "name": "workspaceSparseSaving", + "value": false + }, + "86cc01b1e541": { + "name": "workspaceSshState", + "value": { + "error": "", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "a6bf06ff84e0": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": {} + } + } + }, + "cea9d7e8986e": { + "name": "workspaceSparseSaving", + "value": true + }, + "da3a01640280": { + "name": "workspaceSparsePresetsError", + "value": "Failed to save sparse preset." + }, + "dba381378b08": { + "name": "workspaceSparsePresetsError", + "value": "" + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "f22d3216eb8d": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "forbidden", + "message": "" + }, + "id": "frame-1", + "ok": false + } + } + }, + "f9dfbe0c0ea7": { + "name": "ssh.getState#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.getState\",\"params\":{\"targetId\":\"ssh-1\"}}" + }, + "fd758406cc2c": { + "name": "repo.saveSparsePreset#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.saveSparsePreset\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"docs\",\"directories\":[\"docs\"]}}" + } + }, + "recording": { + "scenario": "tw-workspace-sparse-missing-preset", + "checkpoints": [ + { + "id": "saved-without-preset", + "observation": { + "sender": ["f22d3216eb8d", "a6bf06ff84e0"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "193c0bc3cf2a", + "effects": [ + "86cc01b1e541", + "cea9d7e8986e", + "dba381378b08", + "da3a01640280", + "7fd0cde62993" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-sparse-saved.json b/mobile/rpc-foundation/goldens/tw-workspace-sparse-saved.json new file mode 100644 index 00000000000..a2d609dc7b5 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-workspace-sparse-saved.json @@ -0,0 +1,229 @@ +{ + "operation": "tasks.workspace-sparse", + "family": "tasks.workspace-sparse", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "124f664e339bfd83a1d892e1cd953a78fdf0dc4b20c4272356d24079c72a3e04", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "1d9a7d969446": { + "name": "workspaceSparsePresetsLoaded", + "value": true + }, + "312ed3cbf468": { + "name": "workspaceSparsePresetId", + "value": "p1" + }, + "404305aa2e3a": { + "presets": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ], + "presetsError": "", + "saving": false, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "42bbd034563e": { + "name": "workspaceSparseDraft", + "value": { + "$rpc": "null" + } + }, + "4856f62b3650": { + "name": "workspaceSparsePresets", + "value": [ + { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + ] + }, + "5c44ff5f6877": { + "name": "repo.saveSparsePreset#1", + "args": [ + { + "name": "method", + "value": "repo.saveSparsePreset" + }, + { + "name": "params", + "value": { + "directories": ["docs"], + "name": "docs", + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "preset": { + "directories": ["docs"], + "id": "p1", + "name": "docs" + } + } + } + } + }, + "7fd0cde62993": { + "name": "workspaceSparseSaving", + "value": false + }, + "89aa7a3bd619": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": { + "state": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + } + } + } + }, + "921f72d7827e": { + "name": "workspaceSshState", + "value": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "cea9d7e8986e": { + "name": "workspaceSparseSaving", + "value": true + }, + "dba381378b08": { + "name": "workspaceSparsePresetsError", + "value": "" + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "ee3a941d5e9c": { + "presets": [], + "presetsError": "", + "saving": false, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "f9dfbe0c0ea7": { + "name": "ssh.getState#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.getState\",\"params\":{\"targetId\":\"ssh-1\"}}" + }, + "fd758406cc2c": { + "name": "repo.saveSparsePreset#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"repo.saveSparsePreset\",\"params\":{\"repo\":\"id:repo-1\",\"name\":\"docs\",\"directories\":[\"docs\"]}}" + } + }, + "recording": { + "scenario": "tw-workspace-sparse-saved", + "checkpoints": [ + { + "id": "ssh-state-read", + "observation": { + "sender": ["89aa7a3bd619"], + "payloads": ["f9dfbe0c0ea7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "ee3a941d5e9c", + "effects": ["921f72d7827e"] + } + }, + { + "id": "preset-saved", + "observation": { + "sender": ["89aa7a3bd619", "5c44ff5f6877"], + "payloads": ["f9dfbe0c0ea7", "fd758406cc2c"], + "settlements": { + "mount": "eb79a9b3682a", + "save": "eb79a9b3682a" + }, + "state": "404305aa2e3a", + "effects": [ + "921f72d7827e", + "cea9d7e8986e", + "dba381378b08", + "4856f62b3650", + "1d9a7d969446", + "312ed3cbf468", + "42bbd034563e", + "7fd0cde62993" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-ssh-connect-refused.json b/mobile/rpc-foundation/goldens/tw-workspace-ssh-connect-refused.json new file mode 100644 index 00000000000..0ae438cc3a3 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-workspace-ssh-connect-refused.json @@ -0,0 +1,277 @@ +{ + "operation": "tasks.workspace-ssh", + "family": "tasks.workspace-ssh", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "dd25391fdd3dc864ae493f72d013e789884a21e9c71522edc79323bc2b6c7f76", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "12826f529c2a": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "ssh_failed", + "message": "" + }, + "id": "frame-2", + "ok": false + } + } + }, + "1739575ac53e": { + "name": "workspaceSshConnecting", + "value": true + }, + "27b09a2898b9": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Connection lost", + "isRpcDeliveryUnknown": true + } + } + }, + "2d313c57ddf7": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "decision": "skip", + "kind": "decision", + "setupTrust": { + "$rpc": "undefined" + } + } + }, + "37921d9fdeb7": { + "name": "preflight.detectRemoteAgents#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}" + }, + "41b0d115f434": { + "name": "workspaceDetectedAgentIds", + "value": { + "$rpc": "null" + } + }, + "43fd3e2f4b53": { + "name": "workspaceSshConnecting", + "value": false + }, + "55904d40a00f": { + "agent": "claude", + "connecting": false, + "detected": [], + "setup": { + "decision": "skip", + "kind": "decision", + "setupTrust": { + "$rpc": "undefined" + } + }, + "ssh": { + "error": "", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "7c9498659f58": { + "name": "ssh.connect#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.connect\",\"params\":{\"targetId\":\"ssh-1\"}}" + }, + "8509334ad6ae": { + "agent": "claude", + "connecting": false, + "detected": [], + "setup": "unresolved", + "ssh": { + "error": "", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "86cc01b1e541": { + "name": "workspaceSshState", + "value": { + "error": "", + "reconnectAttempt": 0, + "status": "error", + "targetId": "ssh-1" + } + }, + "9f152ed6e897": { + "name": "workspaceDetectedAgentIds", + "value": [] + }, + "b302d21e1567": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "hooks": { + "scripts": { + "setup": "pnpm i" + } + }, + "setupRunPolicy": "never" + } + } + } + }, + "ea709e13f0f0": { + "name": "workspaceAgentOverridden", + "value": false + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "ed6189938d78": { + "name": "workspaceAgent", + "value": "claude" + }, + "f0a9f62da106": { + "name": "repo.hooks#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"repo.hooks\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "fbfdbb919268": { + "name": "workspaceSshState", + "value": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connecting", + "targetId": "ssh-1" + } + } + }, + "recording": { + "scenario": "tw-workspace-ssh-connect-refused", + "checkpoints": [ + { + "id": "connect-refused-empty-message", + "observation": { + "sender": ["27b09a2898b9", "12826f529c2a"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "8509334ad6ae", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "86cc01b1e541", + "43fd3e2f4b53" + ] + } + }, + { + "id": "setup-skipped", + "observation": { + "sender": ["27b09a2898b9", "12826f529c2a", "b302d21e1567"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "2d313c57ddf7" + }, + "state": "55904d40a00f", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "1739575ac53e", + "fbfdbb919268", + "86cc01b1e541", + "43fd3e2f4b53" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-ssh-connected.json b/mobile/rpc-foundation/goldens/tw-workspace-ssh-connected.json new file mode 100644 index 00000000000..6f042aac899 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-workspace-ssh-connected.json @@ -0,0 +1,319 @@ +{ + "operation": "tasks.workspace-ssh", + "family": "tasks.workspace-ssh", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "495f51d9c2f7f3d71f53a53e88786b8d1f767a5bf66b8655c28222d2909a964c", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "0ba2cee4b538": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + } + }, + "1739575ac53e": { + "name": "workspaceSshConnecting", + "value": true + }, + "17e35b25d15d": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": ["codex"] + } + } + }, + "18e6a3ac6471": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "$rpc": "null" + } + }, + "3571f351281f": { + "name": "workspaceDetectedAgentIds", + "value": ["codex"] + }, + "37921d9fdeb7": { + "name": "preflight.detectRemoteAgents#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}" + }, + "41b0d115f434": { + "name": "workspaceDetectedAgentIds", + "value": { + "$rpc": "null" + } + }, + "43ead075ce12": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": { + "command": "pnpm install", + "kind": "prompt", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + }, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "43fd3e2f4b53": { + "name": "workspaceSshConnecting", + "value": false + }, + "71d817ffdd81": { + "name": "ssh.connect#1", + "args": [ + { + "name": "method", + "value": "ssh.connect" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "timeoutMs": 120000 + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "state": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + } + } + } + }, + "7c9498659f58": { + "name": "ssh.connect#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.connect\",\"params\":{\"targetId\":\"ssh-1\"}}" + }, + "80a4af19f556": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "hooks": { + "scripts": { + "setup": " pnpm install " + } + }, + "setupRunPolicy": "ask", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + }, + "source": "repo" + } + } + } + }, + "921f72d7827e": { + "name": "workspaceSshState", + "value": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "a1f755a38636": { + "agent": "claude", + "connecting": false, + "detected": ["codex"], + "setup": "unresolved", + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connected", + "targetId": "ssh-1" + } + }, + "ea709e13f0f0": { + "name": "workspaceAgentOverridden", + "value": false + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "ed6189938d78": { + "name": "workspaceAgent", + "value": "claude" + }, + "f0a9f62da106": { + "name": "repo.hooks#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"repo.hooks\",\"params\":{\"repo\":\"id:repo-1\"}}" + }, + "fbfdbb919268": { + "name": "workspaceSshState", + "value": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "connecting", + "targetId": "ssh-1" + } + } + }, + "recording": { + "scenario": "tw-workspace-ssh-connected", + "checkpoints": [ + { + "id": "agents-detected", + "observation": { + "sender": ["17e35b25d15d"], + "payloads": ["37921d9fdeb7"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "18e6a3ac6471", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "3571f351281f"] + } + }, + { + "id": "connected", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81"], + "payloads": ["37921d9fdeb7", "7c9498659f58"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a" + }, + "state": "a1f755a38636", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + }, + { + "id": "setup-prompted", + "observation": { + "sender": ["17e35b25d15d", "71d817ffdd81", "80a4af19f556"], + "payloads": ["37921d9fdeb7", "7c9498659f58", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "connect": "eb79a9b3682a", + "setup": "0ba2cee4b538" + }, + "state": "43ead075ce12", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "3571f351281f", + "1739575ac53e", + "fbfdbb919268", + "921f72d7827e", + "43fd3e2f4b53" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-ssh-local-agents.json b/mobile/rpc-foundation/goldens/tw-workspace-ssh-local-agents.json new file mode 100644 index 00000000000..7a345df3eb3 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-workspace-ssh-local-agents.json @@ -0,0 +1,103 @@ +{ + "operation": "tasks.workspace-ssh-local", + "family": "tasks.workspace-ssh-local", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "af0623c2d106d2ed18ef9149d4990539f9ed82146ae091a872a3e1d792efeffe", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "41b0d115f434": { + "name": "workspaceDetectedAgentIds", + "value": { + "$rpc": "null" + } + }, + "7400f4eebe66": { + "agent": "claude", + "connecting": false, + "detected": ["codex", "claude"], + "setup": "unresolved", + "ssh": { + "$rpc": "null" + } + }, + "cb93b17470e8": { + "name": "preflight.detectAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectAgents" + }, + { + "name": "params", + "value": { + "$rpc": "absent" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-1", + "ok": true, + "result": ["codex", "claude"] + } + } + }, + "cbb858a786ac": { + "name": "workspaceDetectedAgentIds", + "value": ["codex", "claude"] + }, + "cf32edc950ac": { + "name": "preflight.detectAgents#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectAgents\"}" + }, + "ea709e13f0f0": { + "name": "workspaceAgentOverridden", + "value": false + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "ed6189938d78": { + "name": "workspaceAgent", + "value": "claude" + } + }, + "recording": { + "scenario": "tw-workspace-ssh-local-agents", + "checkpoints": [ + { + "id": "local-agents-detected", + "observation": { + "sender": ["cb93b17470e8"], + "payloads": ["cf32edc950ac"], + "settlements": { + "mount": "eb79a9b3682a" + }, + "state": "7400f4eebe66", + "effects": ["ed6189938d78", "ea709e13f0f0", "41b0d115f434", "cbb858a786ac"] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/goldens/tw-workspace-ssh-not-ready.json b/mobile/rpc-foundation/goldens/tw-workspace-ssh-not-ready.json new file mode 100644 index 00000000000..0cd6feff928 --- /dev/null +++ b/mobile/rpc-foundation/goldens/tw-workspace-ssh-not-ready.json @@ -0,0 +1,268 @@ +{ + "operation": "tasks.workspace-ssh", + "family": "tasks.workspace-ssh", + "namedDeltas": [], + "runnerVersion": 1, + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", + "lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571", + "recorderSha256": "5ec2faffa944097d2916e2e9e2259b9d0c68e364c5f865bafd8a9600faedbdc7", + "scenarioSha256": "3aa23f15da8fe9972e47c767db454b41750ca353ab10797082fde4514ffe9da0", + "platform": "darwin", + "scenarioVersion": 1, + "projectionVersion": 2, + "goldenFormatVersion": 4, + "values": { + "0adf11d42d1a": { + "name": "ssh.getState#1", + "json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.getState\",\"params\":{\"targetId\":\"ssh-1\"}}" + }, + "0f1cf505ed63": { + "status": "rejected", + "startedAt": 0, + "settledAt": 0, + "error": { + "category": "Error", + "message": "Connect Repo before creating a workspace.", + "isRpcDeliveryUnknown": false + } + }, + "15d9dbcfd2ce": { + "name": "repo.hooks#1", + "args": [ + { + "name": "method", + "value": "repo.hooks" + }, + { + "name": "params", + "value": { + "repo": "id:repo-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-3", + "ok": true, + "result": { + "hooks": { + "scripts": {} + } + } + } + } + }, + "1712c415bebf": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "decision": "inherit", + "kind": "decision" + } + }, + "25352a4de532": { + "name": "workspaceSshState", + "value": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "disconnected", + "targetId": "ssh-1" + } + }, + "28be8cfc5f01": { + "name": "preflight.detectRemoteAgents#1", + "args": [ + { + "name": "method", + "value": "preflight.detectRemoteAgents" + }, + { + "name": "params", + "value": { + "connectionId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "error": { + "code": "forbidden", + "message": "no access" + }, + "id": "frame-1", + "ok": false + } + } + }, + "37921d9fdeb7": { + "name": "preflight.detectRemoteAgents#1", + "json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}" + }, + "41b0d115f434": { + "name": "workspaceDetectedAgentIds", + "value": { + "$rpc": "null" + } + }, + "8ecc31aa9892": { + "name": "ssh.getState#1", + "args": [ + { + "name": "method", + "value": "ssh.getState" + }, + { + "name": "params", + "value": { + "targetId": "ssh-1" + } + }, + { + "name": "options", + "value": { + "$rpc": "absent" + } + } + ], + "settlement": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "id": "frame-2", + "ok": true, + "result": { + "state": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "disconnected", + "targetId": "ssh-1" + } + } + } + } + }, + "9a9cd2877569": { + "agent": "claude", + "connecting": false, + "detected": [], + "setup": { + "decision": "inherit", + "kind": "decision" + }, + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "disconnected", + "targetId": "ssh-1" + } + }, + "9f152ed6e897": { + "name": "workspaceDetectedAgentIds", + "value": [] + }, + "d3698fc526a8": { + "agent": "claude", + "connecting": false, + "detected": [], + "setup": "unresolved", + "ssh": { + "error": { + "$rpc": "null" + }, + "reconnectAttempt": 0, + "status": "disconnected", + "targetId": "ssh-1" + } + }, + "ea709e13f0f0": { + "name": "workspaceAgentOverridden", + "value": false + }, + "eb79a9b3682a": { + "status": "fulfilled", + "startedAt": 0, + "settledAt": 0, + "value": { + "$rpc": "undefined" + } + }, + "ed6189938d78": { + "name": "workspaceAgent", + "value": "claude" + }, + "f0a9f62da106": { + "name": "repo.hooks#1", + "json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"repo.hooks\",\"params\":{\"repo\":\"id:repo-1\"}}" + } + }, + "recording": { + "scenario": "tw-workspace-ssh-not-ready", + "checkpoints": [ + { + "id": "ensure-rejected", + "observation": { + "sender": ["28be8cfc5f01", "8ecc31aa9892"], + "payloads": ["37921d9fdeb7", "0adf11d42d1a"], + "settlements": { + "mount": "eb79a9b3682a", + "ensure": "0f1cf505ed63" + }, + "state": "d3698fc526a8", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "25352a4de532" + ] + } + }, + { + "id": "no-setup-script", + "observation": { + "sender": ["28be8cfc5f01", "8ecc31aa9892", "15d9dbcfd2ce"], + "payloads": ["37921d9fdeb7", "0adf11d42d1a", "f0a9f62da106"], + "settlements": { + "mount": "eb79a9b3682a", + "ensure": "0f1cf505ed63", + "setup": "1712c415bebf" + }, + "state": "9a9cd2877569", + "effects": [ + "ed6189938d78", + "ea709e13f0f0", + "41b0d115f434", + "9f152ed6e897", + "25352a4de532" + ] + } + } + ] + } +} diff --git a/mobile/rpc-foundation/pilot-scenarios.json b/mobile/rpc-foundation/pilot-scenarios.json index 01652ad047a..1692faeaac4 100644 --- a/mobile/rpc-foundation/pilot-scenarios.json +++ b/mobile/rpc-foundation/pilot-scenarios.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "baseline": "e53f1557e1b5a6e26e85cfca390b34f7f8a7d26c", + "baseline": "50e752fc66a84638b0a8c1f4bdbbd5fdc708c3e9", "scenarios": [ { "id": "b1", @@ -1830,6 +1830,173 @@ } ] }, + { + "id": "settings-task-workspace-create-linear", + "operation": "settings.task-workspace-create", + "version": 1, + "family": "settings.task-workspace-create", + "sites": ["mobile/src/tasks/use-mobile-tasks-workspace-create-actions.tsx"], + "schedules": [], + "steps": [ + { + "action": "mount", + "id": "mount" + }, + { + "action": "submit", + "id": "submit", + "args": { + "item": { + "key": "linear:1", + "provider": "linear", + "title": "Recorded issue", + "source": { + "identifier": "ORC-1", + "title": "Recorded issue", + "url": "https://linear.app/orca/issue/ORC-1" + } + } + } + }, + { + "checkpoint": "settings-pending" + }, + { + "complete": "settings.get#1", + "params": { + "$undefined": true + }, + "reply": { + "ok": true, + "result": { + "settings": { + "disabledTuiAgents": [], + "defaultTuiAgent": "codex" + } + } + } + }, + { + "complete": "worktree.create#1", + "params": { + "repo": "id:repo-1", + "name": "orc-1", + "displayName": "ORC-1 Recorded issue", + "displayNameKind": "generated", + "linkedLinearIssue": "ORC-1", + "setupDecision": "inherit", + "activate": true, + "startupDraft": "https://linear.app/orca/issue/ORC-1", + "createdWithAgent": "claude" + }, + "reply": { + "ok": true, + "result": { + "worktree": { + "id": "wt-1", + "displayName": "ORC-1 Recorded issue" + } + } + } + }, + { + "checkpoint": "created" + } + ] + }, + { + "id": "settings-task-workspace-create-pr-start-point", + "operation": "settings.task-workspace-create", + "version": 1, + "family": "settings.task-workspace-create", + "sites": ["mobile/src/tasks/use-mobile-tasks-workspace-create-actions.tsx"], + "schedules": [], + "steps": [ + { + "action": "mount", + "id": "mount" + }, + { + "action": "submit", + "id": "submit", + "args": { + "item": { + "key": "github:7", + "provider": "github", + "title": "Recorded pull request", + "source": { + "type": "pr", + "repoId": "repo-1", + "number": 7, + "title": "Recorded pull request", + "url": "https://github.com/o/r/pull/7" + } + } + } + }, + { + "checkpoint": "settings-pending" + }, + { + "complete": "settings.get#1", + "params": { + "$undefined": true + }, + "reply": { + "ok": true, + "result": { + "settings": { + "disabledTuiAgents": [], + "defaultTuiAgent": "codex" + } + } + } + }, + { + "complete": "worktree.resolvePrBase#1", + "params": { + "repo": "id:repo-1", + "prNumber": 7 + }, + "reply": { + "ok": true, + "result": { + "baseBranch": "main" + } + } + }, + { + "checkpoint": "pr-base-resolved" + }, + { + "complete": "worktree.create#1", + "params": { + "repo": "id:repo-1", + "name": "pr-7", + "displayName": "Recorded pull request", + "displayNameKind": "generated", + "setupDecision": "inherit", + "activate": true, + "startupDraft": "https://github.com/o/r/pull/7", + "createdWithAgent": "claude", + "baseBranch": "main", + "linkedPR": 7 + }, + "reply": { + "ok": true, + "result": { + "worktree": { + "id": "wt-2" + }, + "warning": "shallow clone" + } + } + }, + { + "checkpoint": "created-from-pr-base" + } + ] + }, { "id": "settings-new-tab-refused", "operation": "settings.new-tab-agents", @@ -5137,6 +5304,1455 @@ "checkpoint": "settled" } ] + }, + { + "id": "tw-create-retry-created", + "operation": "tasks.worktree-create-retry", + "version": 1, + "family": "worktree.create-retry", + "sites": ["mobile/src/tasks/worktree-create-retry.ts"], + "schedules": [], + "steps": [ + { + "action": "create", + "id": "create" + }, + { + "complete": "worktree.create#1", + "params": { + "repo": "id:repo-1", + "name": "kestrel", + "clientMutationId": "mutation-1" + }, + "reply": { + "ok": true, + "result": { + "worktree": { + "id": "repo-1::/w", + "displayName": "kestrel" + } + } + } + }, + { + "checkpoint": "created" + } + ] + }, + { + "id": "tw-create-retry-warning-kept", + "operation": "tasks.worktree-create-retry", + "version": 1, + "family": "worktree.create-retry", + "sites": ["mobile/src/tasks/worktree-create-retry.ts"], + "schedules": [], + "steps": [ + { + "action": "create", + "id": "create" + }, + { + "complete": "worktree.create#1", + "params": { + "repo": "id:repo-1", + "name": "kestrel", + "clientMutationId": "mutation-1" + }, + "reply": { + "ok": true, + "result": { + "worktree": { + "id": "repo-1::/w" + }, + "warning": " startup terminal failed " + } + } + }, + { + "checkpoint": "created-with-warning" + } + ] + }, + { + "id": "tw-create-retry-name-collision", + "operation": "tasks.worktree-create-retry", + "version": 1, + "family": "worktree.create-retry", + "sites": ["mobile/src/tasks/worktree-create-retry.ts"], + "schedules": [], + "steps": [ + { + "action": "create", + "id": "create" + }, + { + "complete": "worktree.create#1", + "params": { + "repo": "id:repo-1", + "name": "kestrel", + "clientMutationId": "mutation-1" + }, + "reply": { + "ok": false, + "error": { + "code": "conflict", + "message": "Branch \"kestrel\" already exists." + } + } + }, + { + "checkpoint": "retrying" + }, + { + "complete": "worktree.create#2", + "params": { + "repo": "id:repo-1", + "name": "kestrel-2", + "clientMutationId": "mutation-2" + }, + "reply": { + "ok": true, + "result": { + "worktree": { + "id": "repo-1::/w2", + "displayName": "kestrel-2" + } + } + } + }, + { + "checkpoint": "created-suffixed" + } + ] + }, + { + "id": "tw-create-retry-unretryable-refusal", + "operation": "tasks.worktree-create-retry", + "version": 1, + "family": "worktree.create-retry", + "sites": ["mobile/src/tasks/worktree-create-retry.ts"], + "schedules": [], + "steps": [ + { + "action": "create", + "id": "create" + }, + { + "complete": "worktree.create#1", + "params": { + "repo": "id:repo-1", + "name": "kestrel", + "clientMutationId": "mutation-1" + }, + "reply": { + "ok": false, + "error": { + "code": "internal", + "message": "" + } + } + }, + { + "checkpoint": "refused-empty-message" + } + ] + }, + { + "id": "tw-create-retry-ambiguous-while-connected", + "operation": "tasks.worktree-create-retry", + "version": 1, + "family": "worktree.create-retry", + "sites": ["mobile/src/tasks/worktree-create-retry.ts"], + "schedules": [], + "steps": [ + { + "action": "create", + "id": "create" + }, + { + "complete": "worktree.create#1", + "params": { + "repo": "id:repo-1", + "name": "kestrel", + "clientMutationId": "mutation-1" + }, + "reject": { + "message": "Request timed out", + "deliveryUnknown": true + } + }, + { + "checkpoint": "unknown-not-failed" + } + ] + }, + { + "id": "tw-create-retry-ambiguous-after-drop", + "operation": "tasks.worktree-create-retry", + "version": 1, + "family": "worktree.create-retry", + "sites": ["mobile/src/tasks/worktree-create-retry.ts"], + "schedules": [], + "steps": [ + { + "action": "create", + "id": "create" + }, + { + "action": "disconnect", + "id": "drop" + }, + { + "checkpoint": "waiting-for-reconnect" + }, + { + "advance": 20000 + }, + { + "checkpoint": "replay-window-abandoned" + } + ] + }, + { + "id": "tw-create-retry-ambiguous-without-idempotency", + "operation": "tasks.worktree-create-retry", + "version": 1, + "family": "worktree.create-retry", + "sites": ["mobile/src/tasks/worktree-create-retry.ts"], + "schedules": [], + "steps": [ + { + "action": "create", + "id": "create", + "args": { + "idempotency": false + } + }, + { + "complete": "worktree.create#1", + "params": { + "repo": "id:repo-1", + "name": "kestrel" + }, + "reject": { + "message": "Connection lost", + "deliveryUnknown": true + } + }, + { + "checkpoint": "unstamped-create-is-not-replayed" + } + ] + }, + { + "id": "tw-capabilities-advertised", + "operation": "tasks.worktree-capabilities", + "version": 1, + "family": "worktree.runtime-capabilities", + "sites": ["mobile/src/tasks/worktree-create-capability.ts"], + "schedules": [], + "steps": [ + { + "action": "probe", + "id": "probe" + }, + { + "complete": "status.get#1", + "params": { + "$undefined": true + }, + "reply": { + "ok": true, + "result": { + "capabilities": ["mobile.tasks.v1", "worktree.create-idempotency.v1"], + "worktreeCreateIdempotency": { + "dedupeTtlMs": 45000 + }, + "platform": "linux" + } + } + }, + { + "checkpoint": "probed" + } + ] + }, + { + "id": "tw-capabilities-legacy-idempotency", + "operation": "tasks.worktree-capabilities", + "version": 1, + "family": "worktree.runtime-capabilities", + "sites": ["mobile/src/tasks/worktree-create-capability.ts"], + "schedules": [], + "steps": [ + { + "action": "probe", + "id": "probe" + }, + { + "complete": "status.get#1", + "params": { + "$undefined": true + }, + "reply": { + "ok": true, + "result": { + "capabilities": ["worktree.create-idempotency.v1"] + } + } + }, + { + "checkpoint": "legacy-host-window" + } + ] + }, + { + "id": "tw-capabilities-cutover-retried", + "operation": "tasks.worktree-capabilities", + "version": 1, + "family": "worktree.runtime-capabilities", + "sites": ["mobile/src/tasks/worktree-create-capability.ts"], + "schedules": [], + "steps": [ + { + "action": "probe", + "id": "probe" + }, + { + "action": "cutover", + "id": "migrate" + }, + { + "bind": "status-after-cutover", + "request": "status.get#2", + "params": { + "$undefined": true + } + }, + { + "checkpoint": "reprobing-after-cutover" + }, + { + "complete": "status-after-cutover", + "params": { + "$undefined": true + }, + "reply": { + "ok": true, + "result": { + "capabilities": ["mobile.tasks.v1"] + } + } + }, + { + "checkpoint": "probed-on-replacement" + } + ] + }, + { + "id": "tw-hosted-base-resolved", + "operation": "tasks.composer-hosted-base", + "version": 1, + "family": "worktree.hosted-base", + "sites": ["mobile/src/tasks/composer-source-base-resolve.ts"], + "schedules": [], + "steps": [ + { + "action": "pr-base", + "id": "pr" + }, + { + "complete": "worktree.resolvePrBase#1", + "params": { + "repo": "id:repo-1", + "prNumber": 12, + "headRefName": "feature" + }, + "reply": { + "ok": true, + "result": { + "baseBranch": "main", + "compareBaseRef": "origin/main" + } + } + }, + { + "checkpoint": "pr-base-resolved" + }, + { + "action": "mr-base", + "id": "mr" + }, + { + "complete": "worktree.resolveMrBase#1", + "params": { + "repo": "id:repo-1", + "mrIid": 7, + "sourceBranch": "feature" + }, + "reply": { + "ok": true, + "result": { + "baseBranch": "develop" + } + } + }, + { + "checkpoint": "mr-base-resolved" + } + ] + }, + { + "id": "tw-hosted-base-soft-error", + "operation": "tasks.composer-hosted-base", + "version": 1, + "family": "worktree.hosted-base", + "sites": ["mobile/src/tasks/composer-source-base-resolve.ts"], + "schedules": [], + "steps": [ + { + "action": "pr-base", + "id": "pr" + }, + { + "complete": "worktree.resolvePrBase#1", + "params": { + "repo": "id:repo-1", + "prNumber": 12, + "headRefName": "feature" + }, + "reply": { + "ok": true, + "result": { + "error": "pull request not found" + } + } + }, + { + "checkpoint": "in-band-error" + }, + { + "action": "mr-base", + "id": "mr" + }, + { + "complete": "worktree.resolveMrBase#1", + "params": { + "repo": "id:repo-1", + "mrIid": 7, + "sourceBranch": "feature" + }, + "reply": { + "ok": true, + "result": { + "error": "" + } + } + }, + { + "checkpoint": "in-band-empty-error" + } + ] + }, + { + "id": "tw-setup-hook-trust-approved", + "operation": "tasks.setup-hook-trust", + "version": 1, + "family": "worktree.setup-hook-trust", + "sites": ["mobile/src/tasks/setup-hook-trust.ts"], + "schedules": [], + "steps": [ + { + "action": "approve", + "id": "approve" + }, + { + "complete": "ui.set#1", + "params": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "contentHash": "hash-1", + "approvedAt": 1767225600000 + } + } + } + }, + "reply": { + "ok": true, + "result": { + "ok": true + } + } + }, + { + "checkpoint": "approved" + } + ] + }, + { + "id": "tw-setup-hook-trust-always", + "operation": "tasks.setup-hook-trust", + "version": 1, + "family": "worktree.setup-hook-trust", + "sites": ["mobile/src/tasks/setup-hook-trust.ts"], + "schedules": [], + "steps": [ + { + "action": "approve", + "id": "approve", + "args": { + "always": true + } + }, + { + "complete": "ui.set#1", + "params": { + "trustedOrcaHooks": { + "repo-1": { + "all": { + "approvedAt": 1767225600000 + } + } + } + }, + "reply": { + "ok": false, + "error": { + "code": "forbidden", + "message": "" + } + } + }, + { + "checkpoint": "refused-empty-message" + } + ] + }, + { + "id": "tw-smart-search-all-providers", + "operation": "tasks.smart-source-search", + "version": 1, + "family": "tasks.smart-source-search", + "sites": ["mobile/src/tasks/smart-source-search-requests.ts"], + "schedules": [], + "steps": [ + { + "action": "github", + "id": "github" + }, + { + "complete": "github.listWorkItems#1", + "params": { + "repo": "id:repo-1", + "limit": 36, + "query": "bug" + }, + "reply": { + "ok": true, + "result": { + "items": [ + { + "number": 1, + "title": "one" + } + ] + } + } + }, + { + "checkpoint": "github-items" + }, + { + "action": "gitlab", + "id": "gitlab" + }, + { + "complete": "gitlab.listWorkItems#1", + "params": { + "repo": "id:repo-1", + "state": "opened", + "page": 1, + "perPage": 50, + "query": "bug" + }, + "reply": { + "ok": true, + "result": { + "items": [ + { + "iid": 2, + "title": "two" + } + ], + "error": { + "type": "not_found", + "message": "missing" + } + } + } + }, + { + "checkpoint": "gitlab-items" + }, + { + "action": "linear", + "id": "linear" + }, + { + "complete": "linear.searchIssues#1", + "params": { + "query": "bug", + "limit": 50, + "workspaceId": "linear-workspace" + }, + "reply": { + "ok": true, + "result": { + "items": [ + { + "id": "issue-1" + } + ] + } + } + }, + { + "checkpoint": "linear-search" + }, + { + "action": "branches", + "id": "branches" + }, + { + "complete": "repo.searchRefs#1", + "params": { + "repo": "id:repo-1", + "query": "bug", + "limit": 20 + }, + "reply": { + "ok": true, + "result": { + "refs": ["main", "release"] + } + } + }, + { + "checkpoint": "branch-refs" + }, + { + "action": "linear", + "id": "linear-assigned", + "args": { + "query": " ", + "workspace": null + } + }, + { + "complete": "linear.listIssues#1", + "params": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$undefined": true + } + }, + "reply": { + "ok": true, + "result": [ + { + "id": "issue-3" + } + ] + } + }, + { + "checkpoint": "linear-assigned-listed" + } + ] + }, + { + "id": "tw-smart-search-linear-listed", + "operation": "tasks.smart-source-search", + "version": 1, + "family": "tasks.smart-source-search", + "sites": ["mobile/src/tasks/smart-source-search-requests.ts"], + "schedules": [], + "steps": [ + { + "action": "linear", + "id": "linear", + "args": { + "query": " ", + "workspace": null + } + }, + { + "complete": "linear.listIssues#1", + "params": { + "filter": "assigned", + "limit": 50, + "workspaceId": { + "$undefined": true + } + }, + "reply": { + "ok": true, + "result": [ + { + "id": "issue-2" + } + ] + } + }, + { + "checkpoint": "linear-assigned" + } + ] + }, + { + "id": "tw-smart-search-gitlab-provider-error", + "operation": "tasks.smart-source-search", + "version": 1, + "family": "tasks.smart-source-search", + "sites": ["mobile/src/tasks/smart-source-search-requests.ts"], + "schedules": [], + "steps": [ + { + "action": "gitlab", + "id": "gitlab" + }, + { + "complete": "gitlab.listWorkItems#1", + "params": { + "repo": "id:repo-1", + "state": "opened", + "page": 1, + "perPage": 50, + "query": "bug" + }, + "reply": { + "ok": true, + "result": { + "items": [], + "error": { + "type": "quota", + "message": "rate limited" + } + } + } + }, + { + "checkpoint": "in-band-provider-error" + }, + { + "action": "branches", + "id": "branches", + "args": { + "query": " main " + } + }, + { + "complete": "repo.searchRefs#1", + "params": { + "repo": "id:repo-1", + "query": "main", + "limit": 20 + }, + "reply": { + "ok": true, + "result": { + "refDetails": [ + { + "refName": "origin/main", + "localBranchName": "main" + } + ] + } + } + }, + { + "checkpoint": "branch-ref-details" + } + ] + }, + { + "id": "tw-paste-lookup-resolved", + "operation": "tasks.paste-lookup", + "version": 1, + "family": "tasks.paste-lookup", + "sites": ["mobile/src/tasks/smart-source-paste-intent.ts"], + "schedules": [], + "steps": [ + { + "action": "by-number", + "id": "by-number" + }, + { + "complete": "github.workItem#1", + "params": { + "repo": "id:repo-1", + "number": 12 + }, + "reply": { + "ok": true, + "result": { + "number": 12, + "title": "twelve" + } + } + }, + { + "checkpoint": "by-number" + }, + { + "action": "by-slug", + "id": "by-slug" + }, + { + "complete": "github.workItemByOwnerRepo#1", + "params": { + "repo": "id:repo-1", + "owner": "owner", + "ownerRepo": "repo", + "number": 12, + "type": "issue" + }, + "reply": { + "ok": true, + "result": { + "number": 12, + "title": "twelve" + } + } + }, + { + "checkpoint": "by-slug" + }, + { + "action": "gitlab-path", + "id": "gitlab-path" + }, + { + "complete": "gitlab.workItemByPath#1", + "params": { + "repo": "id:repo-1", + "host": "gitlab.com", + "path": "group/project", + "iid": 7, + "type": "issue" + }, + "reply": { + "ok": true, + "result": { + "iid": 7, + "title": "seven" + } + } + }, + { + "checkpoint": "gitlab-path" + }, + { + "action": "repo-slug", + "id": "repo-slug" + }, + { + "complete": "github.repoSlug#1", + "params": { + "repo": "id:repo-1" + }, + "reply": { + "ok": true, + "result": { + "owner": "owner", + "repo": "repo" + } + } + }, + { + "checkpoint": "repo-slug-matched" + } + ] + }, + { + "id": "tw-paste-lookup-slug-unsupported", + "operation": "tasks.paste-lookup", + "version": 1, + "family": "tasks.paste-lookup", + "sites": ["mobile/src/tasks/smart-source-paste-intent.ts"], + "schedules": [], + "steps": [ + { + "action": "repo-slug", + "id": "repo-slug" + }, + { + "complete": "github.repoSlug#1", + "params": { + "repo": "id:repo-1" + }, + "reply": { + "ok": false, + "error": { + "code": "method_not_found", + "message": "Unknown method" + } + } + }, + { + "checkpoint": "host-wide-probe-cached" + }, + { + "action": "repo-slug-again", + "id": "repo-slug-again" + }, + { + "checkpoint": "no-second-probe" + } + ] + }, + { + "id": "tw-paste-lookup-slug-refused", + "operation": "tasks.paste-lookup", + "version": 1, + "family": "tasks.paste-lookup", + "sites": ["mobile/src/tasks/smart-source-paste-intent.ts"], + "schedules": [], + "steps": [ + { + "action": "repo-slug", + "id": "repo-slug" + }, + { + "complete": "github.repoSlug#1", + "params": { + "repo": "id:repo-1" + }, + "reply": { + "ok": false, + "error": { + "code": "forbidden", + "message": "no access" + } + } + }, + { + "complete": "github.repoSlug#2", + "params": { + "repo": "id:repo-2" + }, + "reply": { + "ok": true, + "result": null + } + }, + { + "checkpoint": "refusal-is-per-repo" + } + ] + }, + { + "id": "tw-workspace-source-presets", + "operation": "tasks.workspace-source", + "version": 1, + "family": "tasks.workspace-source", + "sites": ["mobile/src/tasks/use-mobile-tasks-workspace-source-effects.tsx"], + "schedules": [], + "steps": [ + { + "action": "mount", + "id": "mount" + }, + { + "complete": "repo.sparsePresets#1", + "params": { + "repo": "id:repo-1" + }, + "reply": { + "ok": true, + "result": { + "presets": [ + { + "id": "p1", + "name": "docs", + "directories": ["docs"] + } + ] + } + } + }, + { + "checkpoint": "presets-loaded" + }, + { + "action": "branch-query", + "id": "branch-query" + }, + { + "complete": "repo.searchRefs#1", + "params": { + "repo": "id:repo-1", + "query": "main", + "limit": 20 + }, + "reply": { + "ok": true, + "result": { + "refs": ["main"] + } + } + }, + { + "checkpoint": "branches-loaded" + } + ] + }, + { + "id": "tw-workspace-source-presets-refused", + "operation": "tasks.workspace-source", + "version": 1, + "family": "tasks.workspace-source", + "sites": ["mobile/src/tasks/use-mobile-tasks-workspace-source-effects.tsx"], + "schedules": [], + "steps": [ + { + "action": "mount", + "id": "mount" + }, + { + "complete": "repo.sparsePresets#1", + "params": { + "repo": "id:repo-1" + }, + "reply": { + "ok": false, + "error": { + "code": "forbidden", + "message": "" + } + } + }, + { + "checkpoint": "presets-refused-empty-message" + } + ] + }, + { + "id": "tw-workspace-sparse-saved", + "operation": "tasks.workspace-sparse", + "version": 1, + "family": "tasks.workspace-sparse", + "sites": ["mobile/src/tasks/use-mobile-tasks-workspace-sparse-actions.tsx"], + "schedules": [], + "steps": [ + { + "action": "mount", + "id": "mount" + }, + { + "complete": "ssh.getState#1", + "params": { + "targetId": "ssh-1" + }, + "reply": { + "ok": true, + "result": { + "state": { + "targetId": "ssh-1", + "status": "connected", + "error": null, + "reconnectAttempt": 0 + } + } + } + }, + { + "checkpoint": "ssh-state-read" + }, + { + "action": "save-preset", + "id": "save" + }, + { + "complete": "repo.saveSparsePreset#1", + "params": { + "repo": "id:repo-1", + "name": "docs", + "directories": ["docs"] + }, + "reply": { + "ok": true, + "result": { + "preset": { + "id": "p1", + "name": "docs", + "directories": ["docs"] + } + } + } + }, + { + "checkpoint": "preset-saved" + } + ] + }, + { + "id": "tw-workspace-sparse-missing-preset", + "operation": "tasks.workspace-sparse", + "version": 1, + "family": "tasks.workspace-sparse", + "sites": ["mobile/src/tasks/use-mobile-tasks-workspace-sparse-actions.tsx"], + "schedules": [], + "steps": [ + { + "action": "mount", + "id": "mount" + }, + { + "complete": "ssh.getState#1", + "params": { + "targetId": "ssh-1" + }, + "reply": { + "ok": false, + "error": { + "code": "forbidden", + "message": "" + } + } + }, + { + "action": "save-preset", + "id": "save" + }, + { + "complete": "repo.saveSparsePreset#1", + "params": { + "repo": "id:repo-1", + "name": "docs", + "directories": ["docs"] + }, + "reply": { + "ok": true, + "result": {} + } + }, + { + "checkpoint": "saved-without-preset" + } + ] + }, + { + "id": "tw-workspace-ssh-connected", + "operation": "tasks.workspace-ssh", + "version": 1, + "family": "tasks.workspace-ssh", + "sites": ["mobile/src/tasks/use-mobile-tasks-workspace-ssh-state.tsx"], + "schedules": [], + "steps": [ + { + "action": "mount", + "id": "mount" + }, + { + "complete": "preflight.detectRemoteAgents#1", + "params": { + "connectionId": "ssh-1" + }, + "reply": { + "ok": true, + "result": ["codex"] + } + }, + { + "checkpoint": "agents-detected" + }, + { + "action": "connect", + "id": "connect" + }, + { + "complete": "ssh.connect#1", + "params": { + "targetId": "ssh-1" + }, + "reply": { + "ok": true, + "result": { + "state": { + "targetId": "ssh-1", + "status": "connected", + "error": null, + "reconnectAttempt": 0 + } + } + } + }, + { + "checkpoint": "connected" + }, + { + "action": "resolve-setup", + "id": "setup" + }, + { + "complete": "repo.hooks#1", + "params": { + "repo": "id:repo-1" + }, + "reply": { + "ok": true, + "result": { + "hooks": { + "scripts": { + "setup": " pnpm install " + } + }, + "setupRunPolicy": "ask", + "source": "repo", + "setupTrust": { + "contentHash": "hash-1", + "scriptContent": "pnpm install" + } + } + } + }, + { + "checkpoint": "setup-prompted" + } + ] + }, + { + "id": "tw-workspace-ssh-not-ready", + "operation": "tasks.workspace-ssh", + "version": 1, + "family": "tasks.workspace-ssh", + "sites": ["mobile/src/tasks/use-mobile-tasks-workspace-ssh-state.tsx"], + "schedules": [], + "steps": [ + { + "action": "mount", + "id": "mount" + }, + { + "complete": "preflight.detectRemoteAgents#1", + "params": { + "connectionId": "ssh-1" + }, + "reply": { + "ok": false, + "error": { + "code": "forbidden", + "message": "no access" + } + } + }, + { + "action": "ensure-ready", + "id": "ensure" + }, + { + "complete": "ssh.getState#1", + "params": { + "targetId": "ssh-1" + }, + "reply": { + "ok": true, + "result": { + "state": { + "targetId": "ssh-1", + "status": "disconnected", + "error": null, + "reconnectAttempt": 0 + } + } + } + }, + { + "checkpoint": "ensure-rejected" + }, + { + "action": "resolve-setup", + "id": "setup" + }, + { + "complete": "repo.hooks#1", + "params": { + "repo": "id:repo-1" + }, + "reply": { + "ok": true, + "result": { + "hooks": { + "scripts": {} + } + } + } + }, + { + "checkpoint": "no-setup-script" + } + ] + }, + { + "id": "tw-workspace-ssh-connect-refused", + "operation": "tasks.workspace-ssh", + "version": 1, + "family": "tasks.workspace-ssh", + "sites": ["mobile/src/tasks/use-mobile-tasks-workspace-ssh-state.tsx"], + "schedules": [], + "steps": [ + { + "action": "mount", + "id": "mount" + }, + { + "complete": "preflight.detectRemoteAgents#1", + "params": { + "connectionId": "ssh-1" + }, + "reject": { + "message": "Connection lost", + "deliveryUnknown": true + } + }, + { + "action": "connect", + "id": "connect" + }, + { + "complete": "ssh.connect#1", + "params": { + "targetId": "ssh-1" + }, + "reply": { + "ok": false, + "error": { + "code": "ssh_failed", + "message": "" + } + } + }, + { + "checkpoint": "connect-refused-empty-message" + }, + { + "action": "resolve-setup", + "id": "setup" + }, + { + "complete": "repo.hooks#1", + "params": { + "repo": "id:repo-1" + }, + "reply": { + "ok": true, + "result": { + "hooks": { + "scripts": { + "setup": "pnpm i" + } + }, + "setupRunPolicy": "never" + } + } + }, + { + "checkpoint": "setup-skipped" + } + ] + }, + { + "id": "tw-workspace-ssh-local-agents", + "operation": "tasks.workspace-ssh-local", + "version": 1, + "family": "tasks.workspace-ssh-local", + "sites": ["mobile/src/tasks/use-mobile-tasks-workspace-ssh-state.tsx"], + "schedules": [], + "steps": [ + { + "action": "mount", + "id": "mount" + }, + { + "complete": "preflight.detectAgents#1", + "params": { + "$undefined": true + }, + "reply": { + "ok": true, + "result": ["codex", "claude"] + } + }, + { + "checkpoint": "local-agents-detected" + } + ] + }, + { + "id": "tw-task-preferences-resume-write", + "operation": "settings.task-preferences", + "version": 1, + "family": "settings-best-effort", + "sites": ["mobile/src/tasks/use-mobile-tasks-client-settings-actions.tsx"], + "schedules": [], + "steps": [ + { + "action": "mount", + "id": "mount" + }, + { + "action": "resume", + "id": "resume" + }, + { + "complete": "ui.set#1", + "params": { + "taskResumeState": { + "githubItemsPreset": "issues" + } + }, + "reply": { + "ok": false, + "error": { + "code": "forbidden", + "message": "no access" + } + } + }, + { + "checkpoint": "best-effort-resume-write" + }, + { + "action": "trust", + "id": "trust" + }, + { + "complete": "ui.set#2", + "params": { + "trustedOrcaHooks": { + "repo-1": { + "setup": { + "contentHash": "hash-1", + "approvedAt": 1767225600000 + } + } + } + }, + "reply": { + "ok": false, + "error": { + "code": "forbidden", + "message": "" + } + } + }, + { + "checkpoint": "awaited-trust-write-refused" + } + ] } ] } diff --git a/mobile/src/source-control/mobile-git-read-operations.ts b/mobile/src/source-control/mobile-git-read-operations.ts index e611abe982c..3b815f3eb5b 100644 --- a/mobile/src/source-control/mobile-git-read-operations.ts +++ b/mobile/src/source-control/mobile-git-read-operations.ts @@ -1,6 +1,9 @@ import { bindDeferredRpcOperation, defineRpcOperation } from '../transport/rpc-operation' import type { RpcCompatibleReader } from '../transport/rpc-operation-contract' -import { rpcPayloadMember, rpcUncheckedPayloadReader } from '../transport/rpc-reader-payload' +import { + rpcUncheckedMemberReader, + rpcUncheckedPayloadReader +} from '../transport/rpc-reader-payload' import { readMobileGitStatusResult } from '../session/mobile-diff-review-rpc' import type { MobileGitStatusResult } from './mobile-git-status' @@ -58,27 +61,18 @@ export const gitHistoryRead = bindDeferredRpcOperation( }) ) -const commitCompareEntriesReader: RpcCompatibleReader< - unknown, - 'commit-compare-entries', - unknown -> = (raw) => ({ - compatible: true, - variant: 'commit-compare-entries', - // Keeps the property-read exception the expanded-commit list already relies on: a null result - // throws inside the load, which is what leaves an already-loaded file list alone. - value: rpcPayloadMember(raw, 'entries'), - salvage: { droppedPaths: [], droppedCount: 0 } -}) - -/** A refused compare leaves the row's file list untouched, so refusal is a skip, not a throw. */ +/** + * A refused compare leaves the row's file list untouched, so refusal is a skip, not a throw. The + * member read keeps the property-read exception a null result throws, which is what leaves an + * already-loaded file list alone. + */ export const gitCommitCompareRead = bindDeferredRpcOperation( defineRpcOperation({ name: 'git.commit-compare-entries-or-skip', method: 'git.commitCompare', acceptance: 'success-result-or-skip', barrier: 'after-caller-barrier', - read: commitCompareEntriesReader + read: rpcUncheckedMemberReader('commit-compare-entries', 'entries') }) ) diff --git a/mobile/src/tasks/blank-workspace-create.ts b/mobile/src/tasks/blank-workspace-create.ts index 3c38ac37447..ea3c827c3b9 100644 --- a/mobile/src/tasks/blank-workspace-create.ts +++ b/mobile/src/tasks/blank-workspace-create.ts @@ -4,6 +4,7 @@ import { createWorktreeWithNameRetry, type WorktreeCreateResult } from './worktr import type { WorktreeCreateIdempotencyProbe } from './worktree-create-idempotency-policy' import { agentLaunchCreateFields, + type WorkspaceCreateParams, type WorkspaceCreateSetupDecision } from './workspace-create-params' @@ -28,7 +29,7 @@ export async function createBlankWorkspace(args: { nameWasGenerated: args.nameWasGenerated, worktreeCreateIdempotency: args.worktreeCreateIdempotency, buildParams: (name) => { - const params: Record = { + const params: WorkspaceCreateParams = { repo: `id:${args.repoId}`, setupDecision: args.setupDecision, name, diff --git a/mobile/src/tasks/composer-source-base-resolve.ts b/mobile/src/tasks/composer-source-base-resolve.ts index 423c3b05294..40419993970 100644 --- a/mobile/src/tasks/composer-source-base-resolve.ts +++ b/mobile/src/tasks/composer-source-base-resolve.ts @@ -1,6 +1,6 @@ import type { RpcClient } from '../transport/rpc-client' -import type { RpcSuccess } from '../transport/types' import type { GitHubPrStartPoint } from '../../../src/shared/worktree/types' +import { worktreeMrBaseResolve, worktreePrBaseResolve } from './mobile-workspace-create-operations' // The resolved start point for a linked PR/MR: the base branch to create from // plus the optional review-compare ref, push target, and exact branch name. @@ -23,8 +23,8 @@ export async function resolveComposerPrBase(args: { isCrossRepository?: boolean }): Promise { const { client, repoId, prNumber, headRefName, baseRefName, isCrossRepository } = args - const response = await client.sendRequest( - 'worktree.resolvePrBase', + const reply = await worktreePrBaseResolve.request( + client, { repo: `id:${repoId}`, prNumber, @@ -34,10 +34,8 @@ export async function resolveComposerPrBase(args: { }, { timeoutMs: 30_000 } ) - if (!response.ok) { - throw new Error(response.error.message) - } - const result = (response as RpcSuccess).result as GitHubPrStartPoint | { error: string } + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const result = worktreePrBaseResolve.interpret(reply) as GitHubPrStartPoint | { error: string } if ('error' in result) { throw new Error(result.error) } @@ -54,8 +52,8 @@ export async function resolveComposerMrBase(args: { isCrossRepository?: boolean }): Promise { const { client, repoId, mrIid, sourceBranch, targetBranch, isCrossRepository } = args - const response = await client.sendRequest( - 'worktree.resolveMrBase', + const reply = await worktreeMrBaseResolve.request( + client, { repo: `id:${repoId}`, mrIid, @@ -65,10 +63,8 @@ export async function resolveComposerMrBase(args: { }, { timeoutMs: 30_000 } ) - if (!response.ok) { - throw new Error(response.error.message) - } - const result = (response as RpcSuccess).result as HostedBaseResult + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const result = worktreeMrBaseResolve.interpret(reply) as HostedBaseResult if ('error' in result) { throw new Error(result.error) } diff --git a/mobile/src/tasks/mobile-task-runtime-operations.ts b/mobile/src/tasks/mobile-task-runtime-operations.ts new file mode 100644 index 00000000000..c69651af666 --- /dev/null +++ b/mobile/src/tasks/mobile-task-runtime-operations.ts @@ -0,0 +1,87 @@ +import { bindDeferredRpcOperation, defineRpcOperation } from '../transport/rpc-operation' +import { + rpcUncheckedMemberReader, + rpcUncheckedPayloadReader +} from '../transport/rpc-reader-payload' + +// What the Tasks screen reads once per host to hydrate, and the preferences it writes back. + +/** + * status.get read for task hydration, the first of two policies on this method. A refused status + * stops hydration with the host's own message; the create-time probe in + * mobile-workspace-create-operations.ts degrades instead. One reader serves both. + */ +export const taskRuntimeStatusRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'status.task-runtime', + method: 'status.get', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('runtime-status') + }) +) + +/** + * Persisted UI state, read at the hydration barrier alongside preflight and Linear status. A + * refused read leaves the screen on its defaults rather than failing hydration, so it is a skip. + */ +export const taskUiStateRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'ui.task-state-or-skip', + method: 'ui.get', + acceptance: 'success-result-or-skip', + barrier: 'after-caller-barrier', + read: rpcUncheckedMemberReader('ui-state-member', 'ui') + }) +) + +/** Whether `glab` is installed, which gates the GitLab provider. Advisory, so refusal skips. */ +export const taskPreflightRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'preflight.task-tooling-or-skip', + method: 'preflight.check', + acceptance: 'success-result-or-skip', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('task-preflight') + }) +) + +/** Whether Linear is connected. Also advisory: an unanswered probe means "not connected". */ +export const taskLinearStatusRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'linear.task-status-or-skip', + method: 'linear.status', + acceptance: 'success-result-or-skip', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('linear-status') + }) +) + +/** + * Writing persisted UI state. Two of its three call sites await it and surface the host's refusal + * message; the third is fire-and-forget and never interprets the reply, so no acceptance applies + * there. The payload is unread either way. + */ +export const taskUiStateWrite = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'ui.set-task-state', + method: 'ui.set', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('ui-state-written') + }) +) + +/** + * Writing a host setting from the Tasks screen. Every call site is best-effort — the in-memory + * picker already reflects the change — so a refusal is a skip, and none of them reads the payload. + */ +export const taskSettingsWrite = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'settings.update-task-preference-or-skip', + method: 'settings.update', + acceptance: 'success-result-or-skip', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('setting-written') + }) +) diff --git a/mobile/src/tasks/mobile-task-source-search-operations.ts b/mobile/src/tasks/mobile-task-source-search-operations.ts new file mode 100644 index 00000000000..7460c42bfad --- /dev/null +++ b/mobile/src/tasks/mobile-task-source-search-operations.ts @@ -0,0 +1,100 @@ +import { bindDeferredRpcOperation, defineRpcOperation } from '../transport/rpc-operation' +import type { RpcCompatibleReader } from '../transport/rpc-operation-contract' +import { rpcReadUnchecked, rpcUncheckedPayloadReader } from '../transport/rpc-reader-payload' +import { extractLinearIssueReadItems } from './linear-mobile-issue-read' + +// The Smart workspace-source picker's provider reads: per-repo search, and the single-item lookups +// a pasted link or number resolves to. Provider-specific fallbacks stay at their own call sites. + +export const githubWorkItemSearchRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'github.work-item-search', + method: 'github.listWorkItems', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('github-work-items') + }) +) + +/** GitLab answers in-band too: an accepted reply can carry a provider `error` the caller raises. */ +export const gitlabWorkItemSearchRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'gitlab.work-item-search', + method: 'gitlab.listWorkItems', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('gitlab-work-items') + }) +) + +// Linear replies either as a bare array or as an `{ items }` envelope, and the picker has always +// accepted both through this projection. Two operations share it because the empty-query path asks +// a different method, not because the two answers differ. +const linearIssueReader: RpcCompatibleReader = (raw) => + rpcReadUnchecked('linear-issues', extractLinearIssueReadItems(raw)) + +export const linearIssueSearchRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'linear.issue-search', + method: 'linear.searchIssues', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: linearIssueReader + }) +) + +export const linearAssignedIssueListRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'linear.assigned-issue-list', + method: 'linear.listIssues', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: linearIssueReader + }) +) + +/** + * A repo's owner/repo slug, asked per repo so a pasted cross-repo URL can be matched without + * assuming github.com syntax. A refusal means "this repo cannot answer", which the caller caches + * as no slug rather than failing the paste — so refusal is a skip. The caller still reads the + * refusal code directly, because `method_not_found` is host-wide and retires the whole probe. + */ +export const githubRepoSlugRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'github.repo-slug-or-skip', + method: 'github.repoSlug', + acceptance: 'success-result-or-skip', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('repo-slug') + }) +) + +export const githubWorkItemByNumberRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'github.work-item-by-number', + method: 'github.workItem', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('github-work-item') + }) +) + +export const githubWorkItemBySlugRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'github.work-item-by-owner-repo', + method: 'github.workItemByOwnerRepo', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('github-work-item') + }) +) + +export const gitlabWorkItemByPathRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'gitlab.work-item-by-path', + method: 'gitlab.workItemByPath', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('gitlab-work-item') + }) +) diff --git a/mobile/src/tasks/mobile-tasks-refactor-parity.test.ts b/mobile/src/tasks/mobile-tasks-refactor-parity.test.ts index 111b119db8e..dcd84ba1656 100644 --- a/mobile/src/tasks/mobile-tasks-refactor-parity.test.ts +++ b/mobile/src/tasks/mobile-tasks-refactor-parity.test.ts @@ -16,12 +16,17 @@ const hash = (parts: string[] | string): string => .update(Array.isArray(parts) ? parts.join('\n') : parts) .digest('hex') -// Bound settings requests change source signatures; their behavior is covered by settings-read-operations.test.ts. -const SETTINGS_RPC_SCREEN_HOOKS = 'fb2d873e06001fbae7cee78d079b3df9dc2eedb56ab2f03c7ffb431bc8666191' +// Bound workspace-creation requests change source signatures the same way bound settings requests +// did: the method string and the envelope read leave the screen and an operation name arrives. The +// behaviour they used to pin is pinned by the recordings in mobile/rpc-foundation/goldens instead, +// which did not move. Statement, declaration, render and style counts are unchanged; `semantics` +// loses exactly the 22 `rpc:` signatures and 22 method literals the migration deleted. +const WORKSPACE_RPC_SCREEN_HOOKS = + '26ed5700089a9de13ea984274eb10ddea62f72b28135992514e3c16ef8e47e30' const PRE_REFACTOR_DIFF_HOOKS = '93c7189b32bed8456cc51814fffa8ce80cf62011ef968a9d53ddec2b9686f58f' -const SETTINGS_RPC_STATEMENTS = '1c99d6382f74c37c0ff896dfa634fb503c9fe8062e2280328d0b82f79f658fdb' +const WORKSPACE_RPC_STATEMENTS = 'c25179660e089fd602b06e8c235e5f92d62e63d6d4add4c33ff89a4b5f9493cc' const MAIN_REBASED_DECLARATIONS = '6ad0397123e59fc1047a14049c86ff31d81723673a7a7f5c41677471aec58415' -const SETTINGS_RPC_SEMANTICS = '2431b1c07dfe9a9c94f5d3f4e91415ed99bd9e1bce3794f8bd5f094a29134d77' +const WORKSPACE_RPC_SEMANTICS = '7a00e700fe7293df9b5b68470185197c56a27007d89038a183153b29326113c0' const PRE_REFACTOR_STYLES = '1db6af69c791d9963928541ad5310942fcbda6d984b422c90b6eb92b6816579a' const PRE_REFACTOR_RENDER_TREE = '2111145136b1e4fbca150d4792d735a90e992488e9934cfc1a8b8f3be981f39f' @@ -29,7 +34,7 @@ describe('Mobile Tasks refactor parity', () => { it('preserves recursively flattened hook and dependency order', () => { const screenHooks = readFlattenedMobileTasksHookSignatures('MobileTasksScreen') expect(screenHooks).toHaveLength(350) - expect(hash(screenHooks)).toBe(SETTINGS_RPC_SCREEN_HOOKS) + expect(hash(screenHooks)).toBe(WORKSPACE_RPC_SCREEN_HOOKS) const diffHooks = readFlattenedMobileTasksHookSignatures('GitHubPrFileDiff') expect(diffHooks).toHaveLength(3) @@ -39,7 +44,7 @@ describe('Mobile Tasks refactor parity', () => { it('preserves every screen statement in execution order', () => { const statements = readFlattenedMobileTasksCoreStatements() expect(statements).toHaveLength(417) - expect(hash(statements)).toBe(SETTINGS_RPC_STATEMENTS) + expect(hash(statements)).toBe(WORKSPACE_RPC_STATEMENTS) }) it('preserves every moved top-level declaration', () => { @@ -50,8 +55,8 @@ describe('Mobile Tasks refactor parity', () => { it('preserves RPC calls, runtime strings, and JSX host signatures', () => { const semantics = readMobileTasksSemanticSource() - expect(semantics.split('\n')).toHaveLength(3_496) - expect(hash(semantics)).toBe(SETTINGS_RPC_SEMANTICS) + expect(semantics.split('\n')).toHaveLength(3_452) + expect(hash(semantics)).toBe(WORKSPACE_RPC_SEMANTICS) }) it('preserves render expressions and event handlers in tree order', () => { diff --git a/mobile/src/tasks/mobile-workspace-create-operations.ts b/mobile/src/tasks/mobile-workspace-create-operations.ts new file mode 100644 index 00000000000..55cad2f373f --- /dev/null +++ b/mobile/src/tasks/mobile-workspace-create-operations.ts @@ -0,0 +1,64 @@ +import { bindDeferredRpcOperation, defineRpcOperation } from '../transport/rpc-operation' +import { rpcUncheckedPayloadReader } from '../transport/rpc-reader-payload' + +// Creating a workspace from a task. Every reply here is one the call site only re-typed, so the +// readers are unchecked: moving a shape check in would be a validation change, not a migration. + +/** + * worktree.create. A lost reply is *unknown*, never failed — `worktree-create-retry.ts` replays on + * the same clientMutationId — so this operation never interprets a transport rejection: `request` + * hands back the transport promise itself and the delivery-unknown mark reaches the retry loop on + * the original rejection object. + */ +export const worktreeCreateRun = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'worktree.create', + method: 'worktree.create', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('created-worktree') + }) +) + +/** + * The start point for a workspace created from a linked pull request. Refusal throws the host's + * message; an accepted reply can still carry a soft `{ error }` the caller raises itself. + */ +export const worktreePrBaseResolve = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'worktree.resolve-pr-base', + method: 'worktree.resolvePrBase', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('pr-start-point') + }) +) + +/** The GitLab merge-request equivalent; same acceptance, same soft-error convention. */ +export const worktreeMrBaseResolve = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'worktree.resolve-mr-base', + method: 'worktree.resolveMrBase', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('mr-start-point') + }) +) + +/** + * status.get read for create-time capabilities, the second of two policies on this method. + * + * Both policies named because the two callers disagree about what a refused status means: the + * Tasks screen cannot hydrate without it and surfaces the host's message (`taskRuntimeStatusRead`), + * while create-time capability probing degrades to "no capabilities" and creates anyway, so here a + * refusal is a skip. One reader serves both — the payload is unchecked in each. + */ +export const worktreeCreateCapabilityRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'status.create-capabilities-or-skip', + method: 'status.get', + acceptance: 'success-result-or-skip', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('runtime-status') + }) +) diff --git a/mobile/src/tasks/mobile-workspace-source-operations.ts b/mobile/src/tasks/mobile-workspace-source-operations.ts new file mode 100644 index 00000000000..3126682c9a1 --- /dev/null +++ b/mobile/src/tasks/mobile-workspace-source-operations.ts @@ -0,0 +1,101 @@ +import { bindDeferredRpcOperation, defineRpcOperation } from '../transport/rpc-operation' +import { + rpcUncheckedMemberReader, + rpcUncheckedPayloadReader +} from '../transport/rpc-reader-payload' + +// The repo and SSH reads the workspace-create drawer runs: connection state, agent detection, +// repo-owned setup hooks, sparse presets and base-branch search. + +const sshConnectionStateReader = rpcUncheckedMemberReader('ssh-connection-state', 'state') + +/** Connecting an SSH repo before create. The reply's only read field is `state`. */ +export const sshRepoConnectRun = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'ssh.connect-repo', + method: 'ssh.connect', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: sshConnectionStateReader + }) +) + +/** The same field, read by the drawer's state effect and by the pre-create readiness check. */ +export const sshRepoStateRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'ssh.repo-state', + method: 'ssh.getState', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: sshConnectionStateReader + }) +) + +// Agent detection is advisory: a refused or failed probe leaves the drawer with an empty set and +// the runtime still validates availability before spawning, so refusal is a skip. +export const remoteAgentDetectionRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'preflight.detect-remote-agents-or-skip', + method: 'preflight.detectRemoteAgents', + acceptance: 'success-result-or-skip', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('detected-agent-ids') + }) +) + +/** The local host's agents, for a repo with no SSH connection. */ +export const localAgentDetectionRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'preflight.detect-agents-or-skip', + method: 'preflight.detectAgents', + acceptance: 'success-result-or-skip', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('detected-agent-ids') + }) +) + +/** The repo's orca.yaml hooks, which decide whether create must ask before running setup. */ +export const repoSetupHooksRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'repo.setup-hooks', + method: 'repo.hooks', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('repo-hooks') + }) +) + +export const repoSparsePresetListRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'repo.sparse-preset-list', + method: 'repo.sparsePresets', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: rpcUncheckedMemberReader('sparse-presets', 'presets') + }) +) + +export const repoSparsePresetSaveRun = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'repo.save-sparse-preset', + method: 'repo.saveSparsePreset', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: rpcUncheckedMemberReader('saved-sparse-preset', 'preset') + }) +) + +/** + * Base-branch search. The payload is unchecked: both callers — the drawer's picker effect and the + * Smart source picker — spell their own `refDetails ?? refs.map(...)` fallback, and reproducing + * that in the reader would need a type assertion the operation fence rightly bans. + */ +export const repoBaseRefSearchRead = bindDeferredRpcOperation( + defineRpcOperation({ + name: 'repo.base-ref-search', + method: 'repo.searchRefs', + acceptance: 'require-result-or-throw-message', + barrier: 'after-caller-barrier', + read: rpcUncheckedPayloadReader('base-ref-search') + }) +) diff --git a/mobile/src/tasks/setup-hook-trust.ts b/mobile/src/tasks/setup-hook-trust.ts index 72381393989..e6cb492e617 100644 --- a/mobile/src/tasks/setup-hook-trust.ts +++ b/mobile/src/tasks/setup-hook-trust.ts @@ -1,5 +1,6 @@ import type { PersistedTrustedOrcaHooks } from '../../../src/shared/orca-yaml-hook-types' import type { RpcClient } from '../transport/rpc-client' +import { taskUiStateWrite } from './mobile-task-runtime-operations' export type SetupHookTrust = { contentHash: string @@ -45,10 +46,9 @@ export async function persistSetupHookTrustApproval(args: { alwaysTrust: boolean }): Promise { const next = trustedOrcaHooksWithSetupApproval(args) - const response = await args.client.sendRequest('ui.set', { trustedOrcaHooks: next }) - if (!response.ok) { - throw new Error(response.error.message) - } + taskUiStateWrite.interpret( + await taskUiStateWrite.request(args.client, { trustedOrcaHooks: next }) + ) return next } diff --git a/mobile/src/tasks/smart-source-paste-intent.ts b/mobile/src/tasks/smart-source-paste-intent.ts index 21afd4157de..87715eab039 100644 --- a/mobile/src/tasks/smart-source-paste-intent.ts +++ b/mobile/src/tasks/smart-source-paste-intent.ts @@ -9,7 +9,13 @@ import { import { parseGitLabIssueOrMRLink } from '../../../src/shared/new-workspace/gitlab-links' import { isSmartWorkspaceSourceQueryWithinLimit } from '../../../src/shared/new-workspace/smart-workspace-source-results' import type { RpcClient } from '../transport/rpc-client' -import type { RpcSuccess } from '../transport/types' +import { isMethodNotFoundRefusal } from '../transport/rpc-acceptance-policies' +import { + githubRepoSlugRead, + githubWorkItemByNumberRead, + githubWorkItemBySlugRead, + gitlabWorkItemByPathRead +} from './mobile-task-source-search-operations' import { githubRepoIdentityKey } from '../../../src/shared/github/repository-identity-key' // A repo the picker can switch to for a cross-repo GitHub paste. Slug is derived @@ -108,14 +114,18 @@ export async function findRepoMatchingSlugForPaste( let resolved = cache.get(repo.id) if (!cache.has(repo.id)) { try { - const response = await client.sendRequest('github.repoSlug', { repo: `id:${repo.id}` }) - if (!response.ok && response.error.code === 'method_not_found') { + const reply = await githubRepoSlugRead.request(client, { repo: `id:${repo.id}` }) + // Why the raw refusal: a missing method retires the probe host-wide, and the acceptance + // policy reports only that the reply was refused, not with which code. + if (isMethodNotFoundRefusal(reply)) { // Why: RPC availability is host-wide; avoid repeating an unsupported // probe for every repo or on the next paste attempt. repos.forEach((candidate) => cache.set(candidate.id, null)) return null } - resolved = response.ok ? ((response as RpcSuccess).result as RepoSlug | null) : null + const slug = githubRepoSlugRead.interpret(reply) + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + resolved = slug.accepted ? (slug.value as RepoSlug | null) : null } catch { resolved = null } @@ -133,11 +143,12 @@ export async function lookupGitHubItemByNumber( repoId: string, number: number ): Promise { - const response = await client.sendRequest('github.workItem', { repo: `id:${repoId}`, number }) - if (!response.ok) { - throw new Error(response.error.message) - } - const item = (response as RpcSuccess).result as GitHubWorkItem | null + const reply = await githubWorkItemByNumberRead.request(client, { + repo: `id:${repoId}`, + number + }) + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const item = githubWorkItemByNumberRead.interpret(reply) as GitHubWorkItem | null return item ? { ...item, repoId } : null } @@ -148,7 +159,7 @@ export async function lookupGitHubItemByOwnerRepo( number: number, type: 'issue' | 'pr' ): Promise { - const response = await client.sendRequest('github.workItemByOwnerRepo', { + const reply = await githubWorkItemBySlugRead.request(client, { repo: `id:${repoId}`, owner: slug.owner, ownerRepo: slug.repo, @@ -156,10 +167,8 @@ export async function lookupGitHubItemByOwnerRepo( number, type }) - if (!response.ok) { - throw new Error(response.error.message) - } - const item = (response as RpcSuccess).result as GitHubWorkItem | null + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const item = githubWorkItemBySlugRead.interpret(reply) as GitHubWorkItem | null return item ? { ...item, repoId } : null } @@ -168,16 +177,14 @@ export async function lookupGitLabItemByPath( repoId: string, link: NonNullable> ): Promise { - const response = await client.sendRequest('gitlab.workItemByPath', { + const reply = await gitlabWorkItemByPathRead.request(client, { repo: `id:${repoId}`, host: link.slug.host, path: link.slug.path, iid: link.number, type: link.type }) - if (!response.ok) { - throw new Error(response.error.message) - } - const item = (response as RpcSuccess).result as GitLabWorkItem | null + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const item = gitlabWorkItemByPathRead.interpret(reply) as GitLabWorkItem | null return item ? { ...item, repoId } : null } diff --git a/mobile/src/tasks/smart-source-search-requests.ts b/mobile/src/tasks/smart-source-search-requests.ts index 876e2ef1a20..432e6f1c6bc 100644 --- a/mobile/src/tasks/smart-source-search-requests.ts +++ b/mobile/src/tasks/smart-source-search-requests.ts @@ -3,8 +3,13 @@ import type { GitLabWorkItem } from '../../../src/shared/gitlab-types' import type { LinearIssue } from '../../../src/shared/linear/issue-types' import type { BaseRefSearchResult } from '../../../src/shared/repo-types' import type { RpcClient } from '../transport/rpc-client' -import type { RpcSuccess } from '../transport/types' -import { extractLinearIssueReadItems } from './linear-mobile-issue-read' +import { repoBaseRefSearchRead } from './mobile-workspace-source-operations' +import { + githubWorkItemSearchRead, + gitlabWorkItemSearchRead, + linearAssignedIssueListRead, + linearIssueSearchRead +} from './mobile-task-source-search-operations' import { PER_REPO_FETCH_LIMIT } from './mobile-work-items' import type { MrStateFilter } from './mobile-composer-source-types' @@ -26,15 +31,13 @@ export async function searchGitHubItems( repoId: string, query: string ): Promise { - const response = await client.sendRequest('github.listWorkItems', { + const reply = await githubWorkItemSearchRead.request(client, { repo: `id:${repoId}`, limit: PER_REPO_FETCH_LIMIT, query: scopeGitHubQuery(query) }) - if (!response.ok) { - throw new Error(response.error.message) - } - const envelope = (response as RpcSuccess).result as { items: GitHubWorkItem[] } + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const envelope = githubWorkItemSearchRead.interpret(reply) as { items: GitHubWorkItem[] } // Stamp repoId so the shared row builder + create flow can attribute each item // to the searched repo (the runtime omits it, like the desktop fetcher). return (envelope.items ?? []).map((item) => ({ ...item, repoId })) @@ -46,17 +49,15 @@ export async function searchGitLabItems( query: string, state: MrStateFilter ): Promise { - const response = await client.sendRequest('gitlab.listWorkItems', { + const reply = await gitlabWorkItemSearchRead.request(client, { repo: `id:${repoId}`, state, page: 1, perPage: GITLAB_PER_PAGE, query: query.trim() || undefined }) - if (!response.ok) { - throw new Error(response.error.message) - } - const envelope = (response as RpcSuccess).result as { + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const envelope = gitlabWorkItemSearchRead.interpret(reply) as { items: GitLabWorkItem[] error?: { type?: string; message: string } } @@ -72,25 +73,27 @@ export async function searchLinearIssues( linearWorkspaceId: string | null | undefined ): Promise { const trimmed = query.trim() - const response = trimmed - ? await client.sendRequest('linear.searchIssues', { - query: trimmed, - limit: LINEAR_LIMIT, - workspaceId: linearWorkspaceId ?? undefined - }) - : await client.sendRequest('linear.listIssues', { - // Empty query lists the viewer's assigned issues, matching desktop's - // Smart picker default (SmartWorkspaceNameField uses listLinearIssues('assigned')). - filter: 'assigned', - limit: LINEAR_LIMIT, - workspaceId: linearWorkspaceId ?? undefined - }) - if (!response.ok) { - throw new Error(response.error.message) - } - // extractLinearIssueReadItems yields the mobile issue-read shape; the fields the - // row builder/create flow read (id/identifier/title/url/state/team) are a subset. - return extractLinearIssueReadItems((response as RpcSuccess).result) as unknown as LinearIssue[] + // The reader yields the mobile issue-read shape; the fields the row builder/create flow read + // (id/identifier/title/url/state/team) are a subset. + const issues = trimmed + ? linearIssueSearchRead.interpret( + await linearIssueSearchRead.request(client, { + query: trimmed, + limit: LINEAR_LIMIT, + workspaceId: linearWorkspaceId ?? undefined + }) + ) + : linearAssignedIssueListRead.interpret( + await linearAssignedIssueListRead.request(client, { + // Empty query lists the viewer's assigned issues, matching desktop's + // Smart picker default (SmartWorkspaceNameField uses listLinearIssues('assigned')). + filter: 'assigned', + limit: LINEAR_LIMIT, + workspaceId: linearWorkspaceId ?? undefined + }) + ) + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + return issues as LinearIssue[] } export async function searchBranches( @@ -98,15 +101,13 @@ export async function searchBranches( repoId: string, query: string ): Promise { - const response = await client.sendRequest( - 'repo.searchRefs', + const reply = await repoBaseRefSearchRead.request( + client, { repo: `id:${repoId}`, query: query.trim(), limit: BRANCH_LIMIT }, { timeoutMs: 30_000 } ) - if (!response.ok) { - throw new Error(response.error.message) - } - const result = (response as RpcSuccess).result as { + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const result = repoBaseRefSearchRead.interpret(reply) as { refDetails?: BaseRefSearchResult[] refs?: string[] } diff --git a/mobile/src/tasks/source-workspace-create.ts b/mobile/src/tasks/source-workspace-create.ts index 6e666005ac3..30dd16f89fb 100644 --- a/mobile/src/tasks/source-workspace-create.ts +++ b/mobile/src/tasks/source-workspace-create.ts @@ -9,6 +9,7 @@ import type { WorkspaceAgentChoice } from './workspace-agent-selection' import { agentLaunchCreateFields, buildTaskWorkspaceCreateParams, + type WorkspaceCreateParams, type WorkspaceCreateSetupDecision, type WorkspaceCreateTaskItem } from './workspace-create-params' @@ -167,7 +168,7 @@ async function createBranchWorkspace(args: { const createdWithAgentId = agent.choice === 'blank' ? undefined : agent.choice const comment = note?.trim() const manualDisplayName = nameIsAutoManaged === true ? undefined : workspaceName?.trim() - const applyCommon = (params: Record): Record => { + const applyCommon = (params: WorkspaceCreateParams): WorkspaceCreateParams => { Object.assign(params, agentLaunchCreateFields(createdWithAgentId)) if (comment) { params.comment = comment @@ -213,7 +214,7 @@ async function createBranchWorkspace(args: { baseName, worktreeCreateIdempotency: args.worktreeCreateIdempotency, buildParams: (candidate) => { - const params: Record = { + const params: WorkspaceCreateParams = { repo: `id:${targetRepoId}`, name: candidate, setupDecision, @@ -263,7 +264,7 @@ async function createNewBranchWorkspace(args: { baseName: selection.branchName, worktreeCreateIdempotency: args.worktreeCreateIdempotency, buildParams: (candidate) => { - const params: Record = { + const params: WorkspaceCreateParams = { repo: `id:${targetRepoId}`, name: candidate, setupDecision, diff --git a/mobile/src/tasks/use-mobile-tasks-client-settings-actions.tsx b/mobile/src/tasks/use-mobile-tasks-client-settings-actions.tsx index fe048e7a5b7..ade7b46cb8f 100644 --- a/mobile/src/tasks/use-mobile-tasks-client-settings-actions.tsx +++ b/mobile/src/tasks/use-mobile-tasks-client-settings-actions.tsx @@ -7,12 +7,8 @@ import { useLayoutEffect, useState } from './mobile-tasks-dependencies' -import { - type GitHubPreset, - type RepoSummary, - type TaskResumeState, - isSuccess -} from './mobile-tasks-legacy-foundation' +import type { GitHubPreset, RepoSummary, TaskResumeState } from './mobile-tasks-legacy-foundation' +import { taskSettingsWrite, taskUiStateWrite } from './mobile-task-runtime-operations' export function useMobileTasksClientSettingsActions(model: ProjectRepositoryResolutionModel) { const { @@ -106,7 +102,7 @@ export function useMobileTasksClientSettingsActions(model: ProjectRepositoryReso } const next = { ...taskResumeRef.current, ...updates } taskResumeRef.current = next - void client.sendRequest('ui.set', { taskResumeState: next }).catch(() => { + void taskUiStateWrite.request(client, { taskResumeState: next }).catch(() => { // Best-effort: desktop treats task resume as a convenience preference. }) }, @@ -143,7 +139,7 @@ export function useMobileTasksClientSettingsActions(model: ProjectRepositoryReso if (!client || !taskUiReady) { return } - void client.sendRequest('settings.update', { defaultTaskSource: nextProvider }).catch(() => { + void taskSettingsWrite.request(client, { defaultTaskSource: nextProvider }).catch(() => { // Best-effort: a failed settings write should not block switching views. }) }, @@ -158,11 +154,9 @@ export function useMobileTasksClientSettingsActions(model: ProjectRepositoryReso const nextSelection = selection.size === 0 || selection.size === allRepos.length ? null : [...selection] defaultRepoSelectionRef.current = nextSelection - void client - .sendRequest('settings.update', { defaultRepoSelection: nextSelection }) - .catch(() => { - // Best-effort: the in-memory repo picker already reflects the change. - }) + void taskSettingsWrite.request(client, { defaultRepoSelection: nextSelection }).catch(() => { + // Best-effort: the in-memory repo picker already reflects the change. + }) }, [client, taskUiReady] ) @@ -173,7 +167,7 @@ export function useMobileTasksClientSettingsActions(model: ProjectRepositoryReso if (!client || !taskUiReady) { return } - void client.sendRequest('settings.update', { defaultTaskViewPreset: preset }).catch(() => { + void taskSettingsWrite.request(client, { defaultTaskViewPreset: preset }).catch(() => { // Best-effort: the current session still uses the selected preset. }) }, @@ -186,7 +180,7 @@ export function useMobileTasksClientSettingsActions(model: ProjectRepositoryReso if (!client || !taskUiReady) { return } - void client.sendRequest('settings.update', { githubProjects: nextSettings }).catch(() => { + void taskSettingsWrite.request(client, { githubProjects: nextSettings }).catch(() => { // Best-effort: project selection can still work for the current session. }) }, @@ -204,10 +198,7 @@ export function useMobileTasksClientSettingsActions(model: ProjectRepositoryReso contentHash, alwaysTrust }) - const response = await client.sendRequest('ui.set', { trustedOrcaHooks: next }) - if (!isSuccess(response)) { - throw new Error(response.error.message) - } + taskUiStateWrite.interpret(await taskUiStateWrite.request(client, { trustedOrcaHooks: next })) setTrustedOrcaHooks(next) }, [client, trustedOrcaHooks] diff --git a/mobile/src/tasks/use-mobile-tasks-runtime-hydration.tsx b/mobile/src/tasks/use-mobile-tasks-runtime-hydration.tsx index 1ededc361bc..2372ea272c9 100644 --- a/mobile/src/tasks/use-mobile-tasks-runtime-hydration.tsx +++ b/mobile/src/tasks/use-mobile-tasks-runtime-hydration.tsx @@ -1,5 +1,11 @@ import { settingsRead } from '../transport/settings-read-operations' import type { ClientSettingsActionsModel } from './use-mobile-tasks-client-settings-actions' +import { + taskLinearStatusRead, + taskPreflightRead, + taskRuntimeStatusRead, + taskUiStateRead +} from './mobile-task-runtime-operations' import { MOBILE_TASKS_CAPABILITY, type PersistedTrustedOrcaHooks, @@ -18,7 +24,6 @@ import { type TaskRuntimeStatus, getTaskPresetQuery, githubKindFromQuery, - isSuccess, isTaskProvider, normalizeGitHubPreset, normalizeLinearFilter, @@ -192,14 +197,14 @@ export function useMobileTasksRuntimeHydration(model: ClientSettingsActionsModel resetWorkspaceCreateState() const hydrateTaskState = async (): Promise => { - const statusResponse = await client.sendRequest('status.get') + const statusReply = await taskRuntimeStatusRead.request(client) if (stale) { return } - if (!isSuccess(statusResponse)) { - throw new Error(statusResponse.error.message) - } - const status = statusResponse.result as TaskRuntimeStatus + // The guard stays between the request and the interpretation: a screen that has moved on + // must not raise a refusal it no longer owns. + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const status = taskRuntimeStatusRead.interpret(statusReply) as TaskRuntimeStatus if (!status.capabilities?.includes(MOBILE_TASKS_CAPABILITY)) { // Why: Tasks is additive RPC surface, so old desktop builds can still // pair but must not receive the newer task-specific method calls. @@ -249,13 +254,15 @@ export function useMobileTasksRuntimeHydration(model: ClientSettingsActionsModel } setTasksSupportState({ kind: 'supported', client }) setError('') - const [settingsResponse, uiResponse, preflightResponse, linearStatusResponse] = - await Promise.all([ - settingsRead.request(client), - client.sendRequest('ui.get'), - client.sendRequest('preflight.check'), - client.sendRequest('linear.status') - ]) + // Why raw requests in the group and not startRpcOperation: main's Promise.all rejects as soon + // as one leg rejects, and interpreting at an all-settled barrier would instead wait for the + // slowest peer and let a later policy surface a different error. + const [settingsResponse, uiReply, preflightReply, linearStatusReply] = await Promise.all([ + settingsRead.request(client), + taskUiStateRead.request(client), + taskPreflightRead.request(client), + taskLinearStatusRead.request(client) + ]) if (stale) { return } @@ -266,26 +273,30 @@ export function useMobileTasksRuntimeHydration(model: ClientSettingsActionsModel ((settingsResult.value ?? {}) as RuntimeTaskSettings) : {} setRuntimeTaskSettings(settings) - const uiState = isSuccess(uiResponse) - ? ( - uiResponse.result as { - ui?: { + const uiRead = taskUiStateRead.interpret(uiReply) + const uiState = uiRead.accepted + ? // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + (uiRead.value as + | { taskResumeState?: TaskResumeState trustedOrcaHooks?: PersistedTrustedOrcaHooks } - } - ).ui + | undefined) : null setTrustedOrcaHooks(uiState?.trustedOrcaHooks ?? {}) const resume = uiState?.taskResumeState ?? {} taskResumeRef.current = resume setGithubProjectHiddenFieldIdsByView(resume.githubProjectHiddenFieldIdsByView ?? {}) - const preflight = isSuccess(preflightResponse) - ? (preflightResponse.result as { glab?: { installed?: boolean } }) + const preflightRead = taskPreflightRead.interpret(preflightReply) + const preflight = preflightRead.accepted + ? // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + (preflightRead.value as { glab?: { installed?: boolean } }) : null - const linearStatus = isSuccess(linearStatusResponse) - ? (linearStatusResponse.result as LinearStatusResponse) + const linearRead = taskLinearStatusRead.interpret(linearStatusReply) + const linearStatus = linearRead.accepted + ? // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + (linearRead.value as LinearStatusResponse) : null const preferredProviders = normalizeVisibleTaskProviders(settings.visibleTaskProviders) const linearIsConnected = linearStatus?.connected === true diff --git a/mobile/src/tasks/use-mobile-tasks-workspace-create-actions.tsx b/mobile/src/tasks/use-mobile-tasks-workspace-create-actions.tsx index 5befaddaebd..0cfaa2e3d42 100644 --- a/mobile/src/tasks/use-mobile-tasks-workspace-create-actions.tsx +++ b/mobile/src/tasks/use-mobile-tasks-workspace-create-actions.tsx @@ -11,13 +11,18 @@ import { useCallback, wasSetupHookPreviouslyApproved } from './mobile-tasks-dependencies' -import { - type ActionableTaskItem, - type GitPushTarget, - type RuntimeTaskSettings, - type SetupDecision, - isSuccess +import type { + ActionableTaskItem, + GitPushTarget, + RuntimeTaskSettings, + SetupDecision } from './mobile-tasks-legacy-foundation' +import type { WorkspaceCreateParams } from './workspace-create-params' +import { + worktreeCreateRun, + worktreeMrBaseResolve, + worktreePrBaseResolve +} from './mobile-workspace-create-operations' export function useMobileTasksWorkspaceCreateActions(model: WorkspaceSshStateModel) { const { @@ -154,7 +159,7 @@ export function useMobileTasksWorkspaceCreateActions(model: WorkspaceSshStateMod const trimmedWorkspaceName = workspaceNameOverride?.trim() ?? '' const nameIsAutoManaged = !trimmedWorkspaceName || trimmedWorkspaceName === workspaceLastAutoName - let params: Record + let params: WorkspaceCreateParams if (item.provider === 'github') { const source = item.source let prStartPoint: { baseBranch: string; pushTarget?: GitPushTarget } | undefined @@ -164,8 +169,8 @@ export function useMobileTasksWorkspaceCreateActions(model: WorkspaceSshStateMod baseBranchOverride }) ) { - const response = await client.sendRequest( - 'worktree.resolvePrBase', + const reply = await worktreePrBaseResolve.request( + client, { repo: `id:${source.repoId}`, prNumber: source.number, @@ -176,10 +181,8 @@ export function useMobileTasksWorkspaceCreateActions(model: WorkspaceSshStateMod }, { timeoutMs: 30_000 } ) - if (!isSuccess(response)) { - throw new Error(response.error.message) - } - const result = response.result as + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const result = worktreePrBaseResolve.interpret(reply) as | { baseBranch: string; pushTarget?: GitPushTarget } | { error: string } if ('error' in result) { @@ -209,8 +212,8 @@ export function useMobileTasksWorkspaceCreateActions(model: WorkspaceSshStateMod baseBranchOverride }) ) { - const response = await client.sendRequest( - 'worktree.resolveMrBase', + const reply = await worktreeMrBaseResolve.request( + client, { repo: `id:${source.repoId}`, mrIid: source.number, @@ -221,10 +224,8 @@ export function useMobileTasksWorkspaceCreateActions(model: WorkspaceSshStateMod }, { timeoutMs: 30_000 } ) - if (!isSuccess(response)) { - throw new Error(response.error.message) - } - const result = response.result as + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const result = worktreeMrBaseResolve.interpret(reply) as | { baseBranch: string; pushTarget?: GitPushTarget } | { error: string } if ('error' in result) { @@ -259,13 +260,11 @@ export function useMobileTasksWorkspaceCreateActions(model: WorkspaceSshStateMod nameIsAutoManaged }) } - const response = await client.sendRequest('worktree.create', params, { + const createReply = await worktreeCreateRun.request(client, params, { timeoutMs: WORKTREE_CREATE_TIMEOUT_MS }) - if (!isSuccess(response)) { - throw new Error(response.error.message) - } - const result = response.result as { + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const result = worktreeCreateRun.interpret(createReply) as { worktree: { id: string; displayName?: string } warning?: string } diff --git a/mobile/src/tasks/use-mobile-tasks-workspace-source-effects.tsx b/mobile/src/tasks/use-mobile-tasks-workspace-source-effects.tsx index 93d0d45de09..ea780216170 100644 --- a/mobile/src/tasks/use-mobile-tasks-workspace-source-effects.tsx +++ b/mobile/src/tasks/use-mobile-tasks-workspace-source-effects.tsx @@ -1,6 +1,9 @@ import type { WorkspaceCreateProjectionModel } from './use-mobile-tasks-workspace-create-projection' import { type BaseRefSearchResult, type SparsePreset, useEffect } from './mobile-tasks-dependencies' -import { isSuccess } from './mobile-tasks-legacy-foundation' +import { + repoBaseRefSearchRead, + repoSparsePresetListRead +} from './mobile-workspace-source-operations' export function useMobileTasksWorkspaceSourceEffects(model: WorkspaceCreateProjectionModel) { const { @@ -45,16 +48,15 @@ export function useMobileTasksWorkspaceSourceEffects(model: WorkspaceCreateProje setWorkspaceSparsePresetsLoading(true) setWorkspaceSparsePresetsLoaded(false) setWorkspaceSparsePresetsError('') - void client - .sendRequest('repo.sparsePresets', { repo: `id:${workspaceCreateTargetRepo.id}` }) - .then((response) => { + void repoSparsePresetListRead + .request(client, { repo: `id:${workspaceCreateTargetRepo.id}` }) + .then((reply) => { if (stale) { return } - if (!isSuccess(response)) { - throw new Error(response.error.message) - } - const presets = (response.result as { presets?: SparsePreset[] }).presets ?? [] + const presets = + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + (repoSparsePresetListRead.interpret(reply) as SparsePreset[] | undefined) ?? [] setWorkspaceSparsePresets(presets) setWorkspaceSparsePresetsLoaded(true) setWorkspaceSparsePresetId((current) => @@ -112,20 +114,18 @@ export function useMobileTasksWorkspaceSourceEffects(model: WorkspaceCreateProje let stale = false setWorkspaceBaseBranchLoading(true) setWorkspaceBaseBranchError('') - void client - .sendRequest( - 'repo.searchRefs', + void repoBaseRefSearchRead + .request( + client, { repo: `id:${workspaceCreateTargetRepo.id}`, query, limit: 20 }, { timeoutMs: 30_000 } ) - .then((response) => { + .then((reply) => { if (stale) { return } - if (!isSuccess(response)) { - throw new Error(response.error.message) - } - const result = response.result as { + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const result = repoBaseRefSearchRead.interpret(reply) as { refDetails?: BaseRefSearchResult[] refs?: string[] } diff --git a/mobile/src/tasks/use-mobile-tasks-workspace-sparse-actions.tsx b/mobile/src/tasks/use-mobile-tasks-workspace-sparse-actions.tsx index d2b9551032f..ef2ecabd4fe 100644 --- a/mobile/src/tasks/use-mobile-tasks-workspace-sparse-actions.tsx +++ b/mobile/src/tasks/use-mobile-tasks-workspace-sparse-actions.tsx @@ -5,7 +5,8 @@ import { useCallback, useEffect } from './mobile-tasks-dependencies' -import { isSuccess, sortSparsePresetsByName } from './mobile-tasks-legacy-foundation' +import { sortSparsePresetsByName } from './mobile-tasks-legacy-foundation' +import { repoSparsePresetSaveRun, sshRepoStateRead } from './mobile-workspace-source-operations' export function useMobileTasksWorkspaceSparseActions(model: WorkspaceSourceEffectsModel) { const { @@ -82,16 +83,14 @@ export function useMobileTasksWorkspaceSparseActions(model: WorkspaceSourceEffec setWorkspaceSparseSaving(true) setWorkspaceSparsePresetsError('') try { - const response = await client.sendRequest('repo.saveSparsePreset', { + const reply = await repoSparsePresetSaveRun.request(client, { repo: `id:${workspaceCreateTargetRepo.id}`, ...(workspaceSparseDraft.presetId ? { id: workspaceSparseDraft.presetId } : {}), name: workspaceSparseDraftName, directories: workspaceSparseDraftParsed.directories }) - if (!isSuccess(response)) { - throw new Error(response.error.message) - } - const saved = (response.result as { preset?: SparsePreset }).preset + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const saved = repoSparsePresetSaveRun.interpret(reply) as SparsePreset | undefined if (!saved) { throw new Error('Failed to save sparse preset.') } @@ -130,16 +129,15 @@ export function useMobileTasksWorkspaceSparseActions(model: WorkspaceSourceEffec } let stale = false - void client - .sendRequest('ssh.getState', { targetId: workspaceCreateTargetConnectionId }) - .then((response) => { + void sshRepoStateRead + .request(client, { targetId: workspaceCreateTargetConnectionId }) + .then((reply) => { if (stale) { return } - if (!isSuccess(response)) { - throw new Error(response.error.message) - } - const state = (response.result as { state?: SshConnectionState | null }).state ?? null + const state = + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + (sshRepoStateRead.interpret(reply) as SshConnectionState | null | undefined) ?? null setWorkspaceSshState( state ?? { targetId: workspaceCreateTargetConnectionId, diff --git a/mobile/src/tasks/use-mobile-tasks-workspace-ssh-state.tsx b/mobile/src/tasks/use-mobile-tasks-workspace-ssh-state.tsx index d1a408aed22..5e0966ca9ba 100644 --- a/mobile/src/tasks/use-mobile-tasks-workspace-ssh-state.tsx +++ b/mobile/src/tasks/use-mobile-tasks-workspace-ssh-state.tsx @@ -8,12 +8,18 @@ import { useEffect, useMemo } from './mobile-tasks-dependencies' -import { - type RepoHooksResponse, - type RepoSummary, - type SetupDecision, - isSuccess +import type { + RepoHooksResponse, + RepoSummary, + SetupDecision } from './mobile-tasks-legacy-foundation' +import { + localAgentDetectionRead, + remoteAgentDetectionRead, + repoSetupHooksRead, + sshRepoConnectRun, + sshRepoStateRead +} from './mobile-workspace-source-operations' export function useMobileTasksWorkspaceSshState(model: WorkspaceSparseActionsModel) { const { @@ -47,15 +53,13 @@ export function useMobileTasksWorkspaceSshState(model: WorkspaceSparseActionsMod reconnectAttempt: 0 }) try { - const response = await client.sendRequest( - 'ssh.connect', + const reply = await sshRepoConnectRun.request( + client, { targetId: workspaceCreateTargetConnectionId }, { timeoutMs: 120_000 } ) - if (!isSuccess(response)) { - throw new Error(response.error.message) - } - const state = (response.result as { state?: SshConnectionState | null }).state + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const state = sshRepoConnectRun.interpret(reply) as SshConnectionState | null | undefined setWorkspaceSshState( state ?? { targetId: workspaceCreateTargetConnectionId, @@ -87,11 +91,10 @@ export function useMobileTasksWorkspaceSshState(model: WorkspaceSparseActionsMod ) { return } - const response = await client.sendRequest('ssh.getState', { targetId: repo.connectionId }) - if (!isSuccess(response)) { - throw new Error(response.error.message) - } - const state = (response.result as { state?: SshConnectionState | null }).state ?? null + const reply = await sshRepoStateRead.request(client, { targetId: repo.connectionId }) + const state = + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + (sshRepoStateRead.interpret(reply) as SshConnectionState | null | undefined) ?? null if (state) { setWorkspaceSshState(state) } @@ -115,18 +118,23 @@ export function useMobileTasksWorkspaceSshState(model: WorkspaceSparseActionsMod } let stale = false setWorkspaceDetectedAgentIds(null) - const request = workspaceCreateTargetRepo.connectionId - ? client.sendRequest('preflight.detectRemoteAgents', { - connectionId: workspaceCreateTargetRepo.connectionId - }) - : client.sendRequest('preflight.detectAgents') - void request - .then((response) => { + const detection = workspaceCreateTargetRepo.connectionId + ? { + operation: remoteAgentDetectionRead, + reply: remoteAgentDetectionRead.request(client, { + connectionId: workspaceCreateTargetRepo.connectionId + }) + } + : { operation: localAgentDetectionRead, reply: localAgentDetectionRead.request(client) } + void detection.reply + .then((reply) => { if (stale) { return } + const detected = detection.operation.interpret(reply) setWorkspaceDetectedAgentIds( - isSuccess(response) ? new Set(response.result as string[]) : new Set() + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + detected.accepted ? new Set(detected.value as string[]) : new Set() ) }) .catch(() => { @@ -190,11 +198,9 @@ export function useMobileTasksWorkspaceSshState(model: WorkspaceSparseActionsMod if (!client || !tasksSupported) { return { kind: 'decision', decision: override ?? 'inherit' } } - const response = await client.sendRequest('repo.hooks', { repo: `id:${repo.id}` }) - if (!isSuccess(response)) { - throw new Error(response.error.message) - } - const result = response.result as RepoHooksResponse + const reply = await repoSetupHooksRead.request(client, { repo: `id:${repo.id}` }) + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const result = repoSetupHooksRead.interpret(reply) as RepoHooksResponse const setupCommand = result.hooks?.scripts?.setup?.trim() const setupTrust = normalizeSetupHookTrust(result.setupTrust) ?? undefined if (!setupCommand) { diff --git a/mobile/src/tasks/workspace-create-params.ts b/mobile/src/tasks/workspace-create-params.ts index 218c4fe37b0..5f5adbecf5f 100644 --- a/mobile/src/tasks/workspace-create-params.ts +++ b/mobile/src/tasks/workspace-create-params.ts @@ -4,6 +4,7 @@ import type { SetupDecision } from '../../../src/shared/worktree/create-types' import type { GitPushTarget } from '../../../src/shared/worktree/types' +import type { RpcSendParams } from '../transport/rpc-params-contract' import { getWorkspaceSourceName } from '../../../src/shared/new-workspace/workspace-source' import { resolveMobileWorkspaceCreateName } from './mobile-workspace-name' import type { WorkspaceAgentChoice } from './workspace-agent-selection' @@ -55,7 +56,8 @@ export type WorkspaceCreateTaskItem = | WorkspaceCreateGitLabItem | WorkspaceCreateLinearItem -export type WorkspaceCreateParams = Record +/** The outgoing worktree.create params, so the builder and the operation agree by type. */ +export type WorkspaceCreateParams = RpcSendParams<'worktree.create'> /** * `worktree.create` fields for launching the picked agent in a fresh session. diff --git a/mobile/src/tasks/worktree-create-capability.ts b/mobile/src/tasks/worktree-create-capability.ts index c4ca8170312..63a67dda2e8 100644 --- a/mobile/src/tasks/worktree-create-capability.ts +++ b/mobile/src/tasks/worktree-create-capability.ts @@ -1,8 +1,8 @@ import { useCallback, useEffect, useRef, useState } from 'react' import type { RpcClient } from '../transport/rpc-client' import { isLogicalClientCutoverError } from '../transport/stable-logical-rpc-client' -import type { RpcSuccess } from '../transport/types' import { readMobileRuntimeHostPlatform } from '../transport/mobile-runtime-host-platform' +import { worktreeCreateCapabilityRead } from './mobile-workspace-create-operations' import { MOBILE_TASKS_CAPABILITY } from './mobile-tasks-capability' import { WORKTREE_CREATE_DEDUPE_TTL_LEGACY_HOST_MS, @@ -36,11 +36,14 @@ export async function readNewWorktreeRuntimeCapabilities( ): Promise { for (let migrationRetry = 0; ; migrationRetry += 1) { try { - const response = await client.sendRequest('status.get') - if (!response.ok) { + const status = worktreeCreateCapabilityRead.interpret( + await worktreeCreateCapabilityRead.request(client) + ) + if (!status.accepted) { return UNSUPPORTED_CAPABILITIES } - const result = (response as RpcSuccess).result as { + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const result = status.value as { capabilities?: string[] worktreeCreateIdempotency?: unknown } diff --git a/mobile/src/tasks/worktree-create-retry.test.ts b/mobile/src/tasks/worktree-create-retry.test.ts index 1611ed74c19..b61ab20c30e 100644 --- a/mobile/src/tasks/worktree-create-retry.test.ts +++ b/mobile/src/tasks/worktree-create-retry.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it, vi } from 'vitest' import type { RpcClient } from '../transport/rpc-client' -import { markRpcDeliveryUnknown } from '../transport/rpc-delivery-ambiguity' +import { isRpcDeliveryUnknown, markRpcDeliveryUnknown } from '../transport/rpc-delivery-ambiguity' import { LogicalClientCutoverError } from '../transport/stable-logical-rpc-client' import type { ConnectionState } from '../transport/types' import { @@ -789,6 +789,49 @@ describe('createWorktreeWithNameRetry', () => { expect(attempts).toHaveLength(1) }) + // The delivery-unknown mark is a WeakSet keyed on the rejection object, so the create must reach + // the caller as the very object the transport rejected with. `worktreeCreateRun.request` returns + // the transport promise itself for exactly this reason; an operation that wrapped, re-threw or + // re-created the error would turn "the host may have built it" into "it failed". + it('rethrows the transport rejection object itself, mark and all', async () => { + const attempts: Attempt[] = [] + const connection = connectionController() + const marked = markRpcDeliveryUnknown(new Error('Connection lost')) + const client = scriptedClient([{ throws: marked }], attempts, connection) + // Idempotency off, so the resilient sender rethrows on the first ambiguity instead of replaying + // and the object under test is the one the transport produced, not a later attempt's. + const caught = await createWorktreeWithNameRetry({ + client, + baseName: 'kestrel', + buildParams: (name) => ({ repo: 'id:r', name }), + worktreeCreateIdempotency: false + }).then( + () => null, + (error: unknown) => error + ) + expect(caught).toBe(marked) + expect(isRpcDeliveryUnknown(caught)).toBe(true) + }) + + // The other direction: a definite failure must not acquire a mark on the way out, or a create the + // host never received would be replayed as a reconciliation and build a second worktree. + it('does not mark a rejection the transport left unmarked', async () => { + const attempts: Attempt[] = [] + const unmarked = new Error('Socket closed before send') + const client = scriptedClient([{ throws: unmarked }], attempts, connectionController()) + const caught = await createWorktreeWithNameRetry({ + client, + baseName: 'kestrel', + buildParams: (name) => ({ repo: 'id:r', name }), + worktreeCreateIdempotency: IDEMPOTENT_CREATE_SUPPORT + }).then( + () => null, + (error: unknown) => error + ) + expect(caught).toBe(unmarked) + expect(isRpcDeliveryUnknown(caught)).toBe(false) + }) + it('keeps the replay window strictly inside the host dedupe TTL', () => { // The window is measured from a lower bound on when the host could have resolved, so // it has to leave the record room for the replay to still be in flight. Widening it diff --git a/mobile/src/tasks/worktree-create-retry.ts b/mobile/src/tasks/worktree-create-retry.ts index b0f8f618773..fae847367d0 100644 --- a/mobile/src/tasks/worktree-create-retry.ts +++ b/mobile/src/tasks/worktree-create-retry.ts @@ -1,6 +1,7 @@ import type { RpcClient } from '../transport/rpc-client' -import type { RpcResponse, RpcSuccess } from '../transport/types' +import type { RpcResponse } from '../transport/types' import { isRpcDeliveryUnknown } from '../transport/rpc-delivery-ambiguity' +import { worktreeCreateRun } from './mobile-workspace-create-operations' import { waitForRpcClientReconnected } from '../transport/rpc-client-reconnect-wait' import { isLogicalClientCutoverError } from '../transport/stable-logical-rpc-client' import { @@ -10,6 +11,7 @@ import { isRetryableWorktreeCreateConflict } from '../../../src/shared/new-workspace/worktree-create-retry-policy' import { WORKTREE_CREATE_TIMEOUT_MS } from './workspace-create-timeout' +import type { WorkspaceCreateParams } from './workspace-create-params' import { getWorktreeCreateReplayWindowMs, type WorktreeCreateIdempotencyProbe, @@ -49,7 +51,7 @@ export type CreateWorktreeWithNameRetryArgs = { client: RpcClient baseName: string nameWasGenerated?: boolean - buildParams: (name: string) => Record + buildParams: (name: string) => WorkspaceCreateParams worktreeCreateIdempotency: WorktreeCreateIdempotencyProbe maxAttempts?: number // Injected in tests; production mints a fresh idempotency key per candidate. @@ -83,8 +85,11 @@ export async function createWorktreeWithNameRetry( ? { ...candidateParams, clientMutationId: mintMutationId() } : candidateParams const response = await sendWorktreeCreateResilient(client, params, worktreeCreateIdempotency) + // Why the raw refusal: the retry decision below is `isRetryableWorktreeCreateConflict` over the + // host's message, and no acceptance policy carries a refusal message through without throwing. if (response.ok) { - const result = (response as RpcSuccess).result as { + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: Preserve the established response shape at this boundary. + const result = worktreeCreateRun.interpret(response) as { worktree: { id: string; displayName?: string } warning?: string } @@ -116,7 +121,7 @@ export async function createWorktreeWithNameRetry( // is returned to the caller untouched. async function sendWorktreeCreateResilient( client: RpcClient, - params: Record, + params: WorkspaceCreateParams, worktreeCreateIdempotency: WorktreeCreateIdempotencySupport | false ): Promise { let migrationRetry = 0 @@ -125,7 +130,9 @@ async function sendWorktreeCreateResilient( let replayDeadlineAt: number | null = null for (;;) { try { - return await client.sendRequest('worktree.create', params, { + // `request` is the transport promise itself, so a delivery-unknown rejection reaches the + // catch below as the object the transport marked — the WeakSet cannot see through a wrapper. + return await worktreeCreateRun.request(client, params, { timeoutMs: WORKTREE_CREATE_TIMEOUT_MS }) } catch (error) { diff --git a/mobile/src/test-support/rpc-recording/operation-module-loader.ts b/mobile/src/test-support/rpc-recording/operation-module-loader.ts index 03c31a4f707..aade578406a 100644 --- a/mobile/src/test-support/rpc-recording/operation-module-loader.ts +++ b/mobile/src/test-support/rpc-recording/operation-module-loader.ts @@ -4,13 +4,20 @@ import { dirname, resolve } from 'node:path' import * as React from 'react' import ts from 'typescript' import { OPERATION_EXPOSURES, OPERATION_MUTATIONS, type Mutation } from './operation-mutations' +import * as deliveryAmbiguity from '../../transport/rpc-delivery-ambiguity' export type { Mutation } export type OperationModule = Record unknown> +// Why shared rather than evaluated: the delivery-unknown mark is a WeakSet keyed on the rejection +// object, so a second copy of the module has a second, empty registry and every marked rejection +// reads as a definite failure inside the mounted operation. Same reason React is shared. +const SHARED_MODULE = 'mobile/src/transport/rpc-delivery-ambiguity.ts' + // Only mounting boundaries are substituted; every operation and projection is loaded from source. export function operationModuleLoader(root: string, mutation?: Mutation) { const cache = new Map() + const sharedModulePath = resolve(root, SHARED_MODULE) let mutationCount = 0 function pathFor(base: string): string { const file = ['', '.ts', '.tsx', '/index.ts'] @@ -25,6 +32,9 @@ export function operationModuleLoader(root: string, mutation?: Mutation) { if (name === 'react') { return React } + if (name.startsWith('.') && pathFor(resolve(dirname(base), name)) === sharedModulePath) { + return deliveryAmbiguity + } if (!name.startsWith('.')) { return new Proxy( {}, diff --git a/mobile/src/test-support/rpc-recording/operation-mutations.ts b/mobile/src/test-support/rpc-recording/operation-mutations.ts index cd760f0004f..e543a14e398 100644 --- a/mobile/src/test-support/rpc-recording/operation-mutations.ts +++ b/mobile/src/test-support/rpc-recording/operation-mutations.ts @@ -70,22 +70,19 @@ export const OPERATION_MUTATIONS = { before: '((settingsResult.value ?? {}) as RuntimeTaskSettings)', after: '((settingsResponse.result ?? {}) as RuntimeTaskSettings)' }, - // Applies the preset only after the write settles, dropping the optimistic update. + // Moves the optimistic preset write behind the guard that only an unusable client takes, so the + // preset the screen shows never follows the tap. Anchored above the send so the step-4 migration + // of this file does not move it; the projection it proves load-bearing is the same one. 'task-preferences-optimistic': { file: 'use-mobile-tasks-client-settings-actions.tsx', before: ` setDefaultGitHubPreset(preset) if (!client || !taskUiReady) { return - } - void client.sendRequest('settings.update', { defaultTaskViewPreset: preset }).catch(() => {`, + }`, after: ` if (!client || !taskUiReady) { setDefaultGitHubPreset(preset) return - } - void client - .sendRequest('settings.update', { defaultTaskViewPreset: preset }) - .then(() => setDefaultGitHubPreset(preset)) - .catch(() => {` + }` }, // Publishes the settings envelope as the refreshed workspace runtime settings. 'workspace-submit-envelope': { diff --git a/mobile/src/test-support/rpc-recording/pilot-mount-adapters.ts b/mobile/src/test-support/rpc-recording/pilot-mount-adapters.ts index a1dd2b61174..dad00135eb7 100644 --- a/mobile/src/test-support/rpc-recording/pilot-mount-adapters.ts +++ b/mobile/src/test-support/rpc-recording/pilot-mount-adapters.ts @@ -2,6 +2,8 @@ import { observableModel } from './observable-model' import { hostedReviewMountAdapters } from './hosted-review-mount-adapters' import { settingsMountAdapters } from './settings-mount-adapters' import { sourceControlMountAdapters } from './source-control-mount-adapters' +import { taskWorkspaceHookMountAdapters } from './task-workspace-hook-mount-adapters' +import { taskWorkspaceSenderMountAdapters } from './task-workspace-sender-mount-adapters' import { workspaceSettingsMounts } from './workspace-settings-mounts' import type { MountAdapter } from './recording-scenario' import { hookMount, performHookAction } from './hook-mount' @@ -16,6 +18,8 @@ export function pilotMountAdapters( ...settingsMountAdapters(modules), ...workspaceSettingsMounts(modules), ...sourceControlMountAdapters(modules), + ...taskWorkspaceSenderMountAdapters(modules), + ...taskWorkspaceHookMountAdapters(modules), ...hostedReviewMountAdapters(modules), 'workspace.file-inventory': ({ client }) => { const useSearch = modules.load< @@ -220,6 +224,12 @@ export function pilotMountAdapters( args.preset as Parameters[0] ) } + if (name === 'resume') { + return actions.persistTaskResumeState({ githubItemsPreset: 'issues' }) + } + if (name === 'trust') { + return actions.persistSetupHookTrust('repo-1', 'hash-1', false) + } throw new Error(`Unknown preferences action: ${name}`) }, state: () => ({ preset: model.defaultGitHubPreset }), diff --git a/mobile/src/test-support/rpc-recording/task-workspace-hook-mount-adapters.ts b/mobile/src/test-support/rpc-recording/task-workspace-hook-mount-adapters.ts new file mode 100644 index 00000000000..6b51300f843 --- /dev/null +++ b/mobile/src/test-support/rpc-recording/task-workspace-hook-mount-adapters.ts @@ -0,0 +1,193 @@ +import type { MountAdapter } from './recording-scenario' +import { hookMount, performHookAction } from './hook-mount' +import { observableModel, projectObservable } from './observable-model' +import type { operationModuleLoader } from './operation-module-loader' + +const REPO = 'repo-1' + +/** + * The workspace-create drawer's three model-chained hooks, mounted the way the settings adapters + * mount theirs: a fixture model supplying only the members the hook destructures, with every setter + * recorded as an effect. + */ +export function taskWorkspaceHookMountAdapters( + modules: ReturnType +): Record { + // The drawer's SSH hook. `connectionId` picks the arm the detection effect takes: a repo on + // an SSH connection detects remote agents, one without it detects local agents. + function sshStateAdapter(connectionId: string | undefined): MountAdapter { + return (context) => { + const useSsh = modules.load< + typeof import('../../tasks/use-mobile-tasks-workspace-ssh-state') + >('mobile/src/tasks/use-mobile-tasks-workspace-ssh-state.tsx').useMobileTasksWorkspaceSshState + const repo = { id: REPO, displayName: 'Repo', connectionId } + const model = observableModel(context, { + client: context.client, + tasksSupported: true, + runtimeTaskSettings: { disabledTuiAgents: [] }, + workspaceAgent: null, + workspaceAgentOverridden: false, + workspaceCreateDraft: { key: 'linear:1' }, + workspaceCreateRequiresSshConnection: false, + workspaceCreateSshStatus: connectionId ? 'connected' : 'idle', + workspaceCreateTargetConnectionId: connectionId, + workspaceCreateTargetRepo: repo, + workspaceDetectedAgentIds: null, + workspaceSshState: null, + workspaceSshConnecting: false + }) + let actions: ReturnType + const hook = hookMount(() => { + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the recorder supplies only the members the hook reads. + actions = useSsh(model as unknown as Parameters[0]) + }) + let setup: unknown = 'unresolved' + return { + action(name) { + if (name === 'mount') { + return hook.mount() + } + if (name === 'connect') { + return performHookAction(() => actions.connectWorkspaceSshRepo()) + } + if (name === 'ensure-ready') { + return actions.ensureWorkspaceSshReady( + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the hook reads only id, displayName and connectionId. + repo as Parameters[0] + ) + } + if (name === 'resolve-setup') { + return actions + .resolveCreateSetupDecision( + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: as above. + repo as Parameters[0] + ) + .then((value: unknown) => { + setup = value + return value + }) + } + throw new Error(`Unknown workspace ssh action: ${name}`) + }, + state: () => + projectObservable({ + ssh: model.workspaceSshState, + connecting: model.workspaceSshConnecting, + detected: model.workspaceDetectedAgentIds, + agent: model.workspaceAgent, + setup + }), + dispose: hook.unmount + } + } + } + + return { + 'tasks.workspace-source': (context) => { + const useEffects = modules.load< + typeof import('../../tasks/use-mobile-tasks-workspace-source-effects') + >( + 'mobile/src/tasks/use-mobile-tasks-workspace-source-effects.tsx' + ).useMobileTasksWorkspaceSourceEffects + const model = observableModel(context, { + client: context.client, + tasksSupported: true, + workspaceCreateDraft: { key: 'linear:1' }, + workspaceCreateTargetRepo: { id: REPO, displayName: 'Repo' }, + workspaceSparseReloadKey: 0, + workspaceBaseBranchQuery: '', + showWorkspaceBaseBranchPicker: false, + workspaceSparsePresets: [], + workspaceSparsePresetsLoaded: false, + workspaceSparsePresetsLoading: false, + workspaceSparsePresetsError: '', + workspaceSparsePresetId: null, + workspaceSparseDraft: null, + workspaceBaseBranchResults: [], + workspaceBaseBranchLoading: false, + workspaceBaseBranchError: '' + }) + const hook = hookMount(() => { + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the recorder supplies only the members the hook reads. + useEffects(model as unknown as Parameters[0]) + }) + return { + action(name, args) { + if (name === 'mount') { + return hook.mount() + } + if (name === 'branch-query') { + model.showWorkspaceBaseBranchPicker = true + model.workspaceBaseBranchQuery = String(args.query ?? 'main') + return hook.update() + } + throw new Error(`Unknown workspace source action: ${name}`) + }, + state: () => + projectObservable({ + presets: model.workspaceSparsePresets, + presetsLoaded: model.workspaceSparsePresetsLoaded, + presetsError: model.workspaceSparsePresetsError, + branches: model.workspaceBaseBranchResults, + branchError: model.workspaceBaseBranchError + }), + dispose: hook.unmount + } + }, + 'tasks.workspace-sparse': (context) => { + const useSparse = modules.load< + typeof import('../../tasks/use-mobile-tasks-workspace-sparse-actions') + >( + 'mobile/src/tasks/use-mobile-tasks-workspace-sparse-actions.tsx' + ).useMobileTasksWorkspaceSparseActions + const model = observableModel(context, { + client: context.client, + tasksSupported: true, + canSaveWorkspaceSparseDraft: true, + workspaceCreateDraft: { key: 'linear:1' }, + workspaceCreateTargetConnectionId: 'ssh-1', + workspaceCreateTargetRepo: { id: REPO, displayName: 'Repo' }, + workspaceSparseCheckoutAvailable: true, + workspaceSparseDraft: { mode: 'new', name: 'docs', directoriesText: 'docs' }, + workspaceSparseDraftName: 'docs', + workspaceSparseDraftParsed: { directories: ['docs'] }, + workspaceSparsePresetId: null, + workspaceSparsePresets: [], + workspaceSparsePresetsLoaded: false, + workspaceSparsePresetsLoading: false, + workspaceSparsePresetsError: '', + workspaceSparseSaving: false, + workspaceSshState: null, + workspaceSshConnecting: false, + showWorkspaceSparsePicker: false + }) + let actions: ReturnType + const hook = hookMount(() => { + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the recorder supplies only the members the hook reads. + actions = useSparse(model as unknown as Parameters[0]) + }) + return { + action(name) { + if (name === 'mount') { + return hook.mount() + } + if (name === 'save-preset') { + return performHookAction(() => actions.saveWorkspaceSparsePreset()) + } + throw new Error(`Unknown workspace sparse action: ${name}`) + }, + state: () => + projectObservable({ + presets: model.workspaceSparsePresets, + presetsError: model.workspaceSparsePresetsError, + saving: model.workspaceSparseSaving, + ssh: model.workspaceSshState + }), + dispose: hook.unmount + } + }, + 'tasks.workspace-ssh': sshStateAdapter('ssh-1'), + // The local arm: no connectionId, so the effect calls preflight.detectAgents. + 'tasks.workspace-ssh-local': sshStateAdapter(undefined) + } +} diff --git a/mobile/src/test-support/rpc-recording/task-workspace-sender-mount-adapters.ts b/mobile/src/test-support/rpc-recording/task-workspace-sender-mount-adapters.ts new file mode 100644 index 00000000000..1cfa3911358 --- /dev/null +++ b/mobile/src/test-support/rpc-recording/task-workspace-sender-mount-adapters.ts @@ -0,0 +1,180 @@ +import type { MountAdapter } from './recording-scenario' +import type { operationModuleLoader } from './operation-module-loader' + +const REPO = 'repo-1' +const REPO_SELECTOR = `id:${REPO}` + +/** + * The task workspace-creation senders that are exported async functions taking a client: create and + * its retry loop, the create-time capability probe, hosted-base resolution, the setup-hook trust + * write and the Smart source picker's provider reads. No React host is needed, so the recorded + * state is the function's own answer. + */ +export function taskWorkspaceSenderMountAdapters( + modules: ReturnType +): Record { + return { + 'tasks.worktree-create-retry': ({ client }) => { + const create = modules.load( + 'mobile/src/tasks/worktree-create-retry.ts' + ).createWorktreeWithNameRetry + let outcome: unknown = 'uncreated' + let minted = 0 + return { + action: (_name, args) => + create({ + client, + baseName: String(args.name ?? 'kestrel'), + buildParams: (candidate: string) => ({ repo: REPO_SELECTOR, name: candidate }), + // A resolved probe, because the create path awaits it before the first send. + worktreeCreateIdempotency: Promise.resolve( + args.idempotency === false ? false : { dedupeTtlMs: 60_000 } + ), + ...(args.maxAttempts === undefined ? {} : { maxAttempts: Number(args.maxAttempts) }), + mintMutationId: () => `mutation-${++minted}` + }).then((value: unknown) => { + outcome = value + return value + }), + state: () => ({ outcome }), + dispose: () => {} + } + }, + 'tasks.worktree-capabilities': ({ client }) => { + const read = modules.load( + 'mobile/src/tasks/worktree-create-capability.ts' + ).readNewWorktreeRuntimeCapabilities + let capabilities: unknown = 'unprobed' + return { + action: () => + read(client).then((value: unknown) => { + capabilities = value + return value + }), + state: () => ({ capabilities }), + dispose: () => {} + } + }, + 'tasks.composer-hosted-base': ({ client }) => { + const resolve = modules.load( + 'mobile/src/tasks/composer-source-base-resolve.ts' + ) + let prBase: unknown = 'unresolved' + let mrBase: unknown = 'unresolved' + return { + action(name) { + if (name === 'mr-base') { + return resolve + .resolveComposerMrBase({ client, repoId: REPO, mrIid: 7, sourceBranch: 'feature' }) + .then((value: unknown) => { + mrBase = value + return value + }) + } + return resolve + .resolveComposerPrBase({ client, repoId: REPO, prNumber: 12, headRefName: 'feature' }) + .then((value: unknown) => { + prBase = value + return value + }) + }, + state: () => ({ prBase, mrBase }), + dispose: () => {} + } + }, + 'tasks.setup-hook-trust': ({ client }) => { + const persist = modules.load( + 'mobile/src/tasks/setup-hook-trust.ts' + ).persistSetupHookTrustApproval + let trust: unknown = 'unapproved' + return { + action: (_name, args) => + persist({ + client, + trust: {}, + repoId: REPO, + contentHash: 'hash-1', + alwaysTrust: args.always === true + }).then((value: unknown) => { + trust = value + return value + }), + state: () => ({ trust }), + dispose: () => {} + } + }, + 'tasks.smart-source-search': ({ client }) => { + const search = modules.load( + 'mobile/src/tasks/smart-source-search-requests.ts' + ) + const results: Record = {} + return { + action(name, args) { + const query = String(args.query ?? 'bug') + const request = + name === 'gitlab' + ? search.searchGitLabItems(client, REPO, query, 'opened') + : name === 'linear' + ? search.searchLinearIssues( + client, + query, + args.workspace === null ? null : String(args.workspace ?? 'linear-workspace') + ) + : name === 'branches' + ? search.searchBranches(client, REPO, query) + : search.searchGitHubItems(client, REPO, query) + return request.then((value: unknown) => { + results[name] = value + return value + }) + }, + state: () => ({ ...results }), + dispose: () => {} + } + }, + 'tasks.paste-lookup': ({ client }) => { + const paste = modules.load( + 'mobile/src/tasks/smart-source-paste-intent.ts' + ) + const slugCache = new Map() + const repos = [ + { id: REPO, displayName: 'Repo', slug: null }, + { id: 'repo-2', displayName: 'Other', slug: null } + ] + const results: Record = {} + return { + action(name) { + const request = + name === 'by-number' + ? paste.lookupGitHubItemByNumber(client, REPO, 12) + : name === 'by-slug' + ? paste.lookupGitHubItemByOwnerRepo( + client, + REPO, + { owner: 'owner', repo: 'repo' }, + 12, + 'issue' + ) + : name === 'gitlab-path' + ? paste.lookupGitLabItemByPath(client, REPO, { + slug: { host: 'gitlab.com', path: 'group/project' }, + number: 7, + type: 'issue' + }) + : paste.findRepoMatchingSlugForPaste( + client, + repos, + { owner: 'owner', repo: 'repo' }, + slugCache + ) + return request.then((value: unknown) => { + results[name] = value + return value + }) + }, + state: () => ({ ...results, cache: [...slugCache] }), + dispose: () => {} + } + } + } +} diff --git a/mobile/src/test-support/rpc-recording/workspace-settings-mounts.ts b/mobile/src/test-support/rpc-recording/workspace-settings-mounts.ts index d37c3d40935..730a75736cf 100644 --- a/mobile/src/test-support/rpc-recording/workspace-settings-mounts.ts +++ b/mobile/src/test-support/rpc-recording/workspace-settings-mounts.ts @@ -6,6 +6,75 @@ import { operationModuleLoader } from './operation-module-loader' export function workspaceSettingsMounts( modules: ReturnType ): Record { + // `settings.task-workspace` stops at the setup prompt, which is the branch that scenario set + // exercises. A second registration resolves setup instead, so createWorkspace runs to + // worktree.create and the reply matrix reaches that call's acceptance policy. + function taskWorkspaceAdapter(setupResolution: { + kind: string + command?: string + source?: string + decision?: string + }): MountAdapter { + return (context) => { + const useCreate = modules.load< + typeof import('../../tasks/use-mobile-tasks-workspace-create-actions') + >( + 'mobile/src/tasks/use-mobile-tasks-workspace-create-actions.tsx' + ).useMobileTasksWorkspaceCreateActions + const model = observableModel(context, { + client: context.client, + hostId: 'host-1', + tasksSupported: true, + taskStateHydrated: true, + runtimeTaskSettings: { disabledTuiAgents: ['claude'] }, + trustedOrcaHooks: {}, + workspaceDetectedAgentIds: new Set(['codex']), + workspaceLastAutoName: '', + ensureWorkspaceSshReady: async () => {}, + getWorkspaceTargetRepo: () => ({ + id: 'repo-1', + displayName: 'Repo', + connectionId: 'ssh-1' + }), + resolveCreateSetupDecision: async () => setupResolution, + router: { push: (value: unknown) => context.effect('navigation', value) } + }) + let actions: ReturnType + const hook = hookMount(() => { + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the recorder supplies only the members the hook reads. + actions = useCreate(model as unknown as Parameters[0]) + }) + return { + action(name, args) { + if (name === 'mount') { + return hook.mount() + } + if (name === 'submit') { + return actions.createWorkspace( + // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the scenario supplies the action item as JSON, not as a typed model. + (args.item ?? { + key: 'linear:1', + provider: 'linear', + source: { id: 'issue-1' } + }) as Parameters[0], + undefined, + undefined, + 'claude' + ) + } + throw new Error(`Unknown task workspace action: ${name}`) + }, + state: () => + projectObservable({ + settings: model.runtimeTaskSettings, + error: model.error, + creating: model.creatingKey + }), + dispose: hook.unmount + } + } + } + return { 'settings.workspace-submit': (context) => { const useSubmit = modules.load< @@ -56,65 +125,14 @@ export function workspaceSettingsMounts( dispose: hook.unmount } }, - 'settings.task-workspace': (context) => { - const useCreate = modules.load< - typeof import('../../tasks/use-mobile-tasks-workspace-create-actions') - >( - 'mobile/src/tasks/use-mobile-tasks-workspace-create-actions.tsx' - ).useMobileTasksWorkspaceCreateActions - const model = observableModel(context, { - client: context.client, - hostId: 'host-1', - tasksSupported: true, - taskStateHydrated: true, - runtimeTaskSettings: { disabledTuiAgents: ['claude'] }, - trustedOrcaHooks: {}, - workspaceDetectedAgentIds: new Set(['codex']), - workspaceLastAutoName: '', - ensureWorkspaceSshReady: async () => {}, - getWorkspaceTargetRepo: () => ({ - id: 'repo-1', - displayName: 'Repo', - connectionId: 'ssh-1' - }), - resolveCreateSetupDecision: async () => ({ - kind: 'prompt', - command: 'setup', - source: 'repo' - }), - router: { push: (value: unknown) => context.effect('navigation', value) } - }) - let actions: ReturnType - const hook = hookMount(() => { - // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the recorder supplies only the members the hook reads. - actions = useCreate(model as unknown as Parameters[0]) - }) - return { - action(name) { - if (name === 'mount') { - return hook.mount() - } - if (name === 'submit') { - return actions.createWorkspace( - // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the scenario supplies the action item as JSON, not as a typed model. - { key: 'linear:1', provider: 'linear', source: { id: 'issue-1' } } as Parameters< - typeof actions.createWorkspace - >[0], - undefined, - undefined, - 'claude' - ) - } - throw new Error(`Unknown task workspace action: ${name}`) - }, - state: () => - projectObservable({ - settings: model.runtimeTaskSettings, - error: model.error, - creating: model.creatingKey - }), - dispose: hook.unmount - } - } + 'settings.task-workspace': taskWorkspaceAdapter({ + kind: 'prompt', + command: 'setup', + source: 'repo' + }), + 'settings.task-workspace-create': taskWorkspaceAdapter({ + kind: 'decision', + decision: 'inherit' + }) } } diff --git a/mobile/src/transport/rpc-operation.ts b/mobile/src/transport/rpc-operation.ts index f4ee18d9dfe..97f27143e93 100644 --- a/mobile/src/transport/rpc-operation.ts +++ b/mobile/src/transport/rpc-operation.ts @@ -247,11 +247,19 @@ export async function interpretAtRpcBarrier< ) as RpcBarrierVerdicts } -/** Preserves omitted sender arguments as well as explicit undefined. */ +/** + * Preserves omitted sender arguments as well as explicit undefined. + * + * A params type with no required field may be omitted too, because the raw port always allowed it + * and several hosts' schemas are entirely optional (`preflight.check`). Forcing `{}` there would + * put a new object on the wire where main sent no params at all. + */ type RpcSendArguments = void extends RpcSendParams ? [params?: RpcSendParams, options?: SendRequestOptions] - : [params: RpcSendParams, options?: SendRequestOptions] + : Record extends RpcSendParams + ? [params?: RpcSendParams, options?: SendRequestOptions] + : [params: RpcSendParams, options?: SendRequestOptions] /** Binds sending and interpretation while preserving the transport promise identity. */ export function bindDeferredRpcOperation< diff --git a/mobile/src/transport/rpc-reader-payload.ts b/mobile/src/transport/rpc-reader-payload.ts index 07cdebc16a5..4d6a8635007 100644 --- a/mobile/src/transport/rpc-reader-payload.ts +++ b/mobile/src/transport/rpc-reader-payload.ts @@ -25,3 +25,11 @@ export function rpcUncheckedPayloadReader( ): RpcCompatibleReader { return (raw) => rpcReadUnchecked(variant, raw) } + +/** One property off the payload, unchecked. The shape for a call site that cast `result.field`. */ +export function rpcUncheckedMemberReader( + variant: Variant, + key: string +): RpcCompatibleReader { + return (raw) => rpcReadUnchecked(variant, rpcPayloadMember(raw, key)) +} diff --git a/mobile/src/transport/unvalidated-rpc-request-port-inventory.ts b/mobile/src/transport/unvalidated-rpc-request-port-inventory.ts index 3e09655c5a1..722c4e58310 100644 --- a/mobile/src/transport/unvalidated-rpc-request-port-inventory.ts +++ b/mobile/src/transport/unvalidated-rpc-request-port-inventory.ts @@ -159,14 +159,18 @@ export const UNVALIDATED_RPC_REQUEST_PORT_PENDING: readonly UnvalidatedRpcReques // and mobile-git-mutation-operations.ts for the operations the rest of the domain now sends. { file: 'src/source-control/use-mobile-git-requests.ts', references: 1 }, - // src/tasks/ — task lists, filters and mutations - { file: 'src/tasks/composer-source-base-resolve.ts', references: 2 }, + // src/tasks/ — task lists, filters and mutations. The workspace-creation half migrated in + // step 4: create, hosted-base resolution, SSH/agent preflight, sparse presets, the Smart + // source picker's provider reads and the screen's own preference writes. See + // mobile-workspace-create-operations.ts, mobile-workspace-source-operations.ts, + // mobile-task-runtime-operations.ts and mobile-task-source-search-operations.ts. What is left + // is the provider item/detail/mutation half, plus two files that cannot reach zero: + // mobile-tasks-source-family.test-support.ts matches the literal in a source scanner rather + // than sending anything, and use-mobile-tasks-project-file-merge-actions.tsx and + // use-mobile-tasks-hosted-metadata-actions.tsx each multiplex a `{ method, params }` step the + // pickers hand them at runtime. { file: 'src/tasks/mobile-tasks-filter-pickers.tsx', references: 1 }, { file: 'src/tasks/mobile-tasks-source-family.test-support.ts', references: 1 }, - { file: 'src/tasks/setup-hook-trust.ts', references: 1 }, - { file: 'src/tasks/smart-source-paste-intent.ts', references: 4 }, - { file: 'src/tasks/smart-source-search-requests.ts', references: 5 }, - { file: 'src/tasks/use-mobile-tasks-client-settings-actions.tsx', references: 6 }, { file: 'src/tasks/use-mobile-tasks-github-check-file-actions.tsx', references: 5 }, { file: 'src/tasks/use-mobile-tasks-github-reply-merge-actions.tsx', references: 5 }, { file: 'src/tasks/use-mobile-tasks-gitlab-github-status-actions.tsx', references: 3 }, @@ -187,16 +191,9 @@ export const UNVALIDATED_RPC_REQUEST_PORT_PENDING: readonly UnvalidatedRpcReques { file: 'src/tasks/use-mobile-tasks-project-workspace-comment-actions.tsx', references: 3 }, { file: 'src/tasks/use-mobile-tasks-provider-load-actions.tsx', references: 5 }, { file: 'src/tasks/use-mobile-tasks-route-and-item-state.tsx', references: 1 }, - { file: 'src/tasks/use-mobile-tasks-runtime-hydration.tsx', references: 4 }, { file: 'src/tasks/use-mobile-tasks-task-create-actions.tsx', references: 3 }, { file: 'src/tasks/use-mobile-tasks-task-list-loading.tsx', references: 4 }, { file: 'src/tasks/use-mobile-tasks-task-pagination-actions.tsx', references: 1 }, - { file: 'src/tasks/use-mobile-tasks-workspace-create-actions.tsx', references: 3 }, - { file: 'src/tasks/use-mobile-tasks-workspace-source-effects.tsx', references: 2 }, - { file: 'src/tasks/use-mobile-tasks-workspace-sparse-actions.tsx', references: 2 }, - { file: 'src/tasks/use-mobile-tasks-workspace-ssh-state.tsx', references: 5 }, - { file: 'src/tasks/worktree-create-capability.ts', references: 1 }, - { file: 'src/tasks/worktree-create-retry.ts', references: 1 }, // src/terminal/ — terminal input, viewport and queries { file: 'src/terminal/mobile-terminal-query-reply.ts', references: 2 },