mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 16:02:32 +00:00
test(mobile): consolidate the RPC migration's verification infrastructure (#20521)
* test(mobile): record main RPC hooks and regression schedules Add scripted sender recordings, guarded main goldens, reply matrices, lifecycle schedules, settings caller fixtures, and targeted B-seed mutants. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): flush recording user actions through React act Keep lifecycle updates in separate act boundaries while wrapping direct stateful user actions. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): compile recorded modules with the Node VM API Use the same trusted-source execution boundary as existing mobile VM test harnesses. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): pool golden values and hoist pre-divergence checkpoints Golden format version 2 stores each distinct observation field value once in a `values` map keyed by a 12-hex sha256 of its sorted-key JSON, and a checkpoint references five hashes. Output stays pretty-printed; the reader rejects any other format version, resolves hashes back to values, and reports the scenario, checkpoint, field and JSON path on a mismatch. Generated variants now declare where their distinguishing input lands, so checkpoints observed before that point are recorded once in a `.prelude` scenario instead of once per reply partition. Reply matrices, interruption schedules and lifecycle schedules share the primitive, which asserts each variant's pre-divergence prefix matches the base. Equal-but-differently-reached checkpoints are untouched. 17.71 MB / 3,599 checkpoints / 58.4% intra-file duplicates becomes 4.21 MB / 1,961 checkpoints / 23.6%, with every file's set of distinct observations unchanged. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): make the recordings sense deadlines, the recorder, and every family The goldens carried no temporal information, so a request deadline could be cut to a third and all 61 files stayed byte-identical. Every threshold is now straddled by two advances with a checkpoint between them: the 30 s request deadline in both schedule drivers, the 120 ms search debounce in b1, and the 60 s repo-metadata cache TTL. Shortening any of them moves an observation. The record fence pinned product sources but excluded the whole recorder, so --record could rewrite every golden from a modified runner and report the baseline intact. Goldens now pin recorderSha256 over every non-markdown file in the runner plus pilot-scenarios.json, and the fence exemption shrinks to the one directory that digest covers. Mutation evidence covered 3 of 13 mounted operations. There is now one anchored mutant per adapter family, covering 11 operations and 51 of the 61 goldens; the two omitted are the pure async loaders whose entire output is their settlement. Anchors are asserted to match exactly one site, which caught the acceptance mutant silently half-applying against three identical guards. The archived-tree assertion pins each seed's visible state instead of merely differing from main, and error observations carry code and cause when present. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): record settlement times instead of straddling deadlines The previous commit made the reviewer's divide-by-three deadline mutant fail by placing checkpoints on each side of the 30 s deadline. That is a patch: a timing change that does not cross a hand-placed boundary stays invisible. Those scenario edits are reverted, and pilot-scenarios.json and schedule-driver.ts are byte-identical to what they were before them. The real defect was that the projection had no temporal dimension, so every settlement now carries startedAt and settledAt in virtual milliseconds on the pinned fake clock. Any transition the product schedules for itself is recorded at the time it actually fires, so a deadline or debounce change of any size, in either direction, moves a recorded number. A checkpoint's own clock is not recorded. It is always the sum of the scripted advances, so it is a function of the scenario rather than of the code under test; run-recording.ts asserts that equality at every checkpoint instead, which costs no bytes and fails loudly if it ever drifts. projectionVersion is 2 and all 61 goldens are re-recorded. With the added timestamps stripped, the distinct-observation set is identical to the previous recording, so the change is purely additive. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): probe the repo-metadata cache inside its TTL window Recorded settlement times cover thresholds the product schedules for itself, but not one it only consults when something else makes it act. The repo-metadata TTL is the single such case: with probes only at 0 s and 60 s, a 20 s TTL and a 60 s TTL are both expired at 60 s and record identically, so a 3x cache-lifetime regression was invisible. settings-repo-cache-expiry now probes the cache at 59 s as well. This is coverage, not a substitute for recorded time: it bounds how small a TTL reduction is visible rather than making the reduction itself observable, and the README says so. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): record the reply shapes a host can send, not a cross product The reply matrix froze ~26 malformed envelopes crossed against every consumed field and three boundary kinds, which is 163,925 lines of JSON pinning accidents on inputs no desktop produces. `successResponse` always sets `result`, so a JSON wire has no explicit-undefined slot, and no mounted handler returns a number, a string, an array, a bare `{}` or a boolean: `settings.get` returns `{settings: ...}`, and the seed methods return an object or nothing. Each family now runs nine witnessed partitions once, with no field cross: a normal result, an absent result, `null`, an inner `{ok: false}` envelope with a string or an object error, an inner envelope missing `ok`, an outer refusal, `method_not_found`, and a transport rejection. `null` stays because `linear.getIssue` returns it for a missing issue and b2 is a shipped null-result bug; it is also what carries the one named delta these goldens record. `run-step1-exit.ts` had zero callers and shelled out to the same two Vitest files as `rpc-recording.mts`, so it and its README paragraph go, along with `MUTATION_NAMES`, which only it read. In the module loader, the `rpc-delivery-ambiguity` escape is measured dead: over every scenario, mutant and reference run it was taken once, by the test that existed to take it. Golden comparison already fails loudly if a mounted module ever imports the marker, so both go. The history-panel exposure moves into a declarative table beside the mutation anchors, leaving the loader with one source-text mechanism and no per-file branch. The VM stays. Mount adapters load product sources from an arbitrary `root`, and the archivedbcba08b3e4tree is bare `mobile/src` and `src` with no package.json and no node_modules, so no bundler-resolved import can reach it and the seed rejection gate cannot run without it. Direct import also swaps a 38-module lazy graph for a 338-module eager one behind 20 native mocks, because `mobile-tasks-dependencies.ts` re-exports from `react-native` and four other native packages and `export *` enumerates. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * fix(mobile): treat the recorded lockfile hash as provenance, not an oracle Every golden pinned `lockfileSha256`, so any dependency bump on main failed all 61 comparisons on the merge commit while the traces were identical. A dependency that changes behaviour changes the trace itself; one that does not must not fail a candidate. `platform` already had this exemption — `lockfileSha256` joins it. Recording still refuses to run unless the lockfile matches the pinned baseline, so goldens are still produced under frozen conditions. Verified against main's lockfile: 85 passed, previously 61 failed. The declared mutation set still reports every mutant killed. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(rpc): cover repeat queries and settings refresh boundaries Add three scenarios, preserve existing traces, remove unreachable archived checks, and document observed mutation kills and remaining adapter limitations. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * docs(rpc): keep the known-open holes, drop the review transcript The audit file was mostly a point-in-time record of mutation runs that had already happened, in an artifacts directory, where it would go stale on the next scenario change. The durable part is which holes are still open and why they cannot be reached, which belongs beside the runner it describes. Markdown is outside recorderSha256, so no re-record; 88 passed | 3 skipped. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * chore(mobile): stage the nine RPC probe scenarios and goldens These existed only on one machine's /tmp. Landing them verbatim first so a reboot cannot lose them; a follow-up commit moves them into the suite. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): fold the nine probe scenarios into the recording oracle The probes were env-var invocations over loose /tmp manifests. They now live in pilot-scenarios.json and rpc-foundation/goldens, so `pnpm --dir mobile test` runs them with no flag to remember. Re-records every golden against main (22f56f7c2a). Two causes: - #20280 gave LogicalClientCutoverError the delivery-unknown mark and its cause, so nine cutover/interruption goldens now record `isRpcDeliveryUnknown: true` plus a `Connection closed` cause. The other 55 are byte-identical after 260 commits of main. - #20499 replaced the five anchored raw-envelope reads with typed operations, so those mutation anchors matched zero sites. Each is re-anchored at the same defect's new home; bot-overrides moves to the shared reader that now owns it. probe-hole-witness.test.ts pins hole and closure together: a probe must kill its mutation and every pre-probe scenario of the same operation must still survive it, so a redundant probe fails instead of accumulating. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): list the recording harness in the raw-port inventory main's #20026 boundary test fails on any non-test file that reaches the raw request port and is not inventoried. The oracle's scripted transport is exactly that — it drives the real tracker and logical client — so it belongs in OWNERS beside the supervisor fakes, not in the step-4 pending backlog. Also states what the oracle covers, the two holes it was blind to until the probes, and the step-4 runbook. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): pin the goldens to the tree that recorded them The inventory entry is a fenced product-tree edit, so --record refused against main's sha. Baseline now names the branch commit the goldens were recorded from; the next re-record after this lands bumps it to the merge commit. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): carry a SAFETY rationale on every recorder cast main added a changed-code casting gate after this branch was cut, so 45 `as` sites in the recorder read as new findings. Each now states why the assertion holds; they cluster into five reasons — recorded observations are RecordedValue by construction, parsed manifests and goldens are validated on the next lines, interned pools resolve their own hashes, a VM-evaluated module has no static type, and the mount adapters supply only the members each hook reads. Re-records the goldens: the comments move recorderSha256. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * docs(rpc): state the measured blindness, not the assumed one Applying each mutation to real product source shows the two holes are not equal. The reorder is invisible to 83 of 84 tests and only a probe sees it. The refusal blanking is also caught by the family reply matrix, because a refusal from cold publishes null over a non-null initial value — an observational gap, not a detection gap. Says so rather than letting the stronger claim carry both. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): close three ways the oracle could pass without checking All four review findings were real; three let the oracle report green while verifying less than it claimed. - The baseline guard used `git diff --quiet`, which ignores untracked files, so an untracked module under mobile/src or src/shared could change resolution while a golden still recorded a pinned baseline header. Adds a `git ls-files --others` check over the same paths, recorder still exempt. - The determinism loop read `Number(env ?? 2)` unvalidated, so RPC_FOUNDATION_DETERMINISM_RUNS=0 skipped the body and 57 tests passed having recorded and compared nothing. Now requires an integer >= 2. - Cleanup-time observations were dropped: every checkpoint clones the effects array, so anything appended during dispose or the final flush never reached a golden. Warns and documents the six scenarios that hit it today; recording them changes every golden and is its own change. - Two SAFETY rationales described each other's assertion. Swapped. Goldens re-recorded for the recorder-digest change: 73 files, one header line each, no recorded observation moved. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb * test(mobile): record teardown observations as a cleanup checkpoint Each checkpoint clones the effects array, so a rejection or state write produced by dispose, the transport teardown or the final flush landed after the recording was built and never reached a golden. An unmount leak is exactly what this oracle exists to catch, so teardown now runs on the recorded path and anything it observes becomes a checkpoint with id `cleanup`. State is captured before dispose, since the operation is gone afterwards. Six scenarios were dropping observations, across five goldens: projectRowDetailError, projectMutating, hostLabelById, hostPlatform, workspaceAgent, workspaceAgentOverridden, creatingKey, selectedAgent, agentOverridden and error. Those five gain a cleanup checkpoint; the other 68 goldens change by their header line only, so no existing observation moved. Also fixes the README's own formatting, which failed `format:check`. Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb
This commit is contained in:
@@ -0,0 +1,555 @@
|
||||
{
|
||||
"operation": "workspace.file-inventory",
|
||||
"family": "legacy-inventory",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"305c86832cd8": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"old": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"3390ae6d62f2": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "old",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "method_not_found",
|
||||
"message": "Unknown method"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 240,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"files": [
|
||||
{
|
||||
"relativePath": "old.ts"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.searchPaths#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "fresh",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 240,
|
||||
"settledAt": 240,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "method_not_found",
|
||||
"message": "Unknown method"
|
||||
},
|
||||
"id": "frame-3",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.list#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 240
|
||||
}
|
||||
}
|
||||
],
|
||||
"35af95861be6": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"old": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"select-b": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"reset-a": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"fresh": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"4f53cda18c2b": [],
|
||||
"5386959d4549": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"old": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"select-b": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"reset-a": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"fresh": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"third": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 240,
|
||||
"settledAt": 240,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"602e35a92eec": {
|
||||
"files": []
|
||||
},
|
||||
"6713de8f80d3": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"files.searchPaths\",\"params\":{\"worktree\":\"id:A\",\"query\":\"old\",\"limit\":16}}"
|
||||
},
|
||||
{
|
||||
"name": "files.list#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"files.list\",\"params\":{\"worktree\":\"id:A\"}}"
|
||||
}
|
||||
],
|
||||
"97ccce4248eb": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "old",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "method_not_found",
|
||||
"message": "Unknown method"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 120
|
||||
}
|
||||
}
|
||||
],
|
||||
"a129552fdc6e": {
|
||||
"files": ["third.ts"]
|
||||
},
|
||||
"ad0f58f0684c": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"files.searchPaths\",\"params\":{\"worktree\":\"id:A\",\"query\":\"old\",\"limit\":16}}"
|
||||
},
|
||||
{
|
||||
"name": "files.list#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"files.list\",\"params\":{\"worktree\":\"id:A\"}}"
|
||||
},
|
||||
{
|
||||
"name": "files.searchPaths#2",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"files.searchPaths\",\"params\":{\"worktree\":\"id:A\",\"query\":\"fresh\",\"limit\":16}}"
|
||||
},
|
||||
{
|
||||
"name": "files.list#2",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"files.list\",\"params\":{\"worktree\":\"id:A\"}}"
|
||||
}
|
||||
],
|
||||
"e72410768c32": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "old",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "method_not_found",
|
||||
"message": "Unknown method"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 240,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"files": [
|
||||
{
|
||||
"relativePath": "old.ts"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.searchPaths#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "fresh",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 240,
|
||||
"settledAt": 240,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "method_not_found",
|
||||
"message": "Unknown method"
|
||||
},
|
||||
"id": "frame-3",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.list#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 240,
|
||||
"settledAt": 360,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"files": [
|
||||
{
|
||||
"relativePath": "fresh.ts"
|
||||
},
|
||||
{
|
||||
"relativePath": "third.ts"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "b1",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "old-pending",
|
||||
"observation": {
|
||||
"sender": "97ccce4248eb",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "305c86832cd8",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "stale-arrived-fresh-pending",
|
||||
"observation": {
|
||||
"sender": "3390ae6d62f2",
|
||||
"payloads": "ad0f58f0684c",
|
||||
"settlements": "35af95861be6",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "third-query",
|
||||
"observation": {
|
||||
"sender": "3390ae6d62f2",
|
||||
"payloads": "ad0f58f0684c",
|
||||
"settlements": "5386959d4549",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "fresh-arrived",
|
||||
"observation": {
|
||||
"sender": "e72410768c32",
|
||||
"payloads": "ad0f58f0684c",
|
||||
"settlements": "5386959d4549",
|
||||
"state": "a129552fdc6e",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,200 @@
|
||||
{
|
||||
"operation": "project.update-metadata",
|
||||
"family": "project-explicit-false",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0318f81a142b": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.updateIssueBySlug\",\"params\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\",\"number\":1,\"updates\":{\"addLabels\":[\"recorded\"]}}}"
|
||||
}
|
||||
],
|
||||
"0c4dced3e005": {
|
||||
"error": "",
|
||||
"mutating": true,
|
||||
"row": {
|
||||
"content": {
|
||||
"assignees": [],
|
||||
"labels": [],
|
||||
"number": 1,
|
||||
"repository": "owner/repo"
|
||||
},
|
||||
"id": "item-1",
|
||||
"itemType": "ISSUE"
|
||||
}
|
||||
},
|
||||
"15516afe97e7": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "github.project.updateIssueBySlug"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"host": "github.enterprise.test",
|
||||
"number": 1,
|
||||
"owner": "owner",
|
||||
"repo": "repo",
|
||||
"updates": {
|
||||
"addLabels": ["recorded"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"204a5c5728c2": {
|
||||
"error": "Cannot read properties of null (reading 'ok')",
|
||||
"mutating": false,
|
||||
"row": {
|
||||
"content": {
|
||||
"assignees": [],
|
||||
"labels": [],
|
||||
"number": 1,
|
||||
"repository": "owner/repo"
|
||||
},
|
||||
"id": "item-1",
|
||||
"itemType": "ISSUE"
|
||||
}
|
||||
},
|
||||
"3b9a7724526d": [
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": true
|
||||
}
|
||||
],
|
||||
"6dfef4ef572b": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"7e11552b02fa": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "github.project.updateIssueBySlug"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"host": "github.enterprise.test",
|
||||
"number": 1,
|
||||
"owner": "owner",
|
||||
"repo": "repo",
|
||||
"updates": {
|
||||
"addLabels": ["recorded"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"dd1ba4033a27": [
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetailError",
|
||||
"value": "Cannot read properties of null (reading 'ok')"
|
||||
},
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": false
|
||||
}
|
||||
],
|
||||
"f117d93cf44a": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "b2",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "pending",
|
||||
"observation": {
|
||||
"sender": "15516afe97e7",
|
||||
"payloads": "0318f81a142b",
|
||||
"settlements": "f117d93cf44a",
|
||||
"state": "0c4dced3e005",
|
||||
"effects": "3b9a7724526d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "7e11552b02fa",
|
||||
"payloads": "0318f81a142b",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "204a5c5728c2",
|
||||
"effects": "dd1ba4033a27"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,310 @@
|
||||
{
|
||||
"operation": "linear.issue-detail",
|
||||
"family": "linear-detail-barrier",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"0b631657711f": [
|
||||
{
|
||||
"name": "linear.getIssue#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"linear.getIssue\",\"params\":{\"id\":\"issue-1\",\"workspaceId\":\"linear-workspace\"}}"
|
||||
},
|
||||
{
|
||||
"name": "linear.issueComments#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"linear.issueComments\",\"params\":{\"issueId\":\"issue-1\",\"workspaceId\":\"linear-workspace\"}}"
|
||||
}
|
||||
],
|
||||
"26c78123b573": [
|
||||
{
|
||||
"name": "detailPayload",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "detailError",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"name": "detailLoading",
|
||||
"value": true
|
||||
}
|
||||
],
|
||||
"42903545f0f8": {
|
||||
"error": "comments transport error",
|
||||
"loading": false,
|
||||
"payload": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
"68d958edb978": [
|
||||
{
|
||||
"name": "linear.getIssue#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.getIssue"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"id": "issue-1",
|
||||
"workspaceId": "linear-workspace"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "refused",
|
||||
"message": "issue refused"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.issueComments#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.issueComments"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"issueId": "issue-1",
|
||||
"workspaceId": "linear-workspace"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"6d65777cf6fe": [
|
||||
{
|
||||
"name": "detailPayload",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "detailError",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"name": "detailLoading",
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"name": "detailError",
|
||||
"value": "comments transport error"
|
||||
},
|
||||
{
|
||||
"name": "detailLoading",
|
||||
"value": false
|
||||
}
|
||||
],
|
||||
"780aaf1d97be": {
|
||||
"error": "",
|
||||
"loading": true,
|
||||
"payload": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
"db6e863f7087": [
|
||||
{
|
||||
"name": "linear.getIssue#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.getIssue"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"id": "issue-1",
|
||||
"workspaceId": "linear-workspace"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "refused",
|
||||
"message": "issue refused"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.issueComments#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.issueComments"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"issueId": "issue-1",
|
||||
"workspaceId": "linear-workspace"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "comments transport error",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"fc7910387ac9": [
|
||||
{
|
||||
"name": "linear.getIssue#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.getIssue"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"id": "issue-1",
|
||||
"workspaceId": "linear-workspace"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.issueComments#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.issueComments"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"issueId": "issue-1",
|
||||
"workspaceId": "linear-workspace"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "b3",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "pending",
|
||||
"observation": {
|
||||
"sender": "fc7910387ac9",
|
||||
"payloads": "0b631657711f",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "780aaf1d97be",
|
||||
"effects": "26c78123b573"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "issue-refused-comments-pending",
|
||||
"observation": {
|
||||
"sender": "68d958edb978",
|
||||
"payloads": "0b631657711f",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "780aaf1d97be",
|
||||
"effects": "26c78123b573"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "db6e863f7087",
|
||||
"payloads": "0b631657711f",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "42903545f0f8",
|
||||
"effects": "6d65777cf6fe"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,376 @@
|
||||
{
|
||||
"operation": "workspace.file-inventory",
|
||||
"family": "legacy-inventory",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"09d53cd763b1": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "old",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "method_not_found",
|
||||
"message": "Unknown method"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"error": {
|
||||
"category": "LogicalClientCutoverError",
|
||||
"message": "RPC interrupted by connection migration",
|
||||
"isRpcDeliveryUnknown": true,
|
||||
"cause": {
|
||||
"category": "Error",
|
||||
"message": "Connection closed",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"305c86832cd8": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"old": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"44517661da0d": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"old": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"cutover": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"4f53cda18c2b": [],
|
||||
"602e35a92eec": {
|
||||
"files": []
|
||||
},
|
||||
"6713de8f80d3": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"files.searchPaths\",\"params\":{\"worktree\":\"id:A\",\"query\":\"old\",\"limit\":16}}"
|
||||
},
|
||||
{
|
||||
"name": "files.list#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"files.list\",\"params\":{\"worktree\":\"id:A\"}}"
|
||||
}
|
||||
],
|
||||
"8c70b1eb7a30": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"old": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"disconnect": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"8d7ff0ac3500": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "old",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "method_not_found",
|
||||
"message": "Unknown method"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 120,
|
||||
"settledAt": 30120,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "Request timed out: files.list",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"e01595c0caa4": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "old",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "method_not_found",
|
||||
"message": "Unknown method"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "Connection lost",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "interruptions-inventory-lifecycle",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "inventory-lifecycle.timeout:interrupted",
|
||||
"observation": {
|
||||
"sender": "8d7ff0ac3500",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "305c86832cd8",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.timeout:settled",
|
||||
"observation": {
|
||||
"sender": "8d7ff0ac3500",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "305c86832cd8",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.disconnect:interrupted",
|
||||
"observation": {
|
||||
"sender": "e01595c0caa4",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "8c70b1eb7a30",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.disconnect:settled",
|
||||
"observation": {
|
||||
"sender": "e01595c0caa4",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "8c70b1eb7a30",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.cutover:interrupted",
|
||||
"observation": {
|
||||
"sender": "09d53cd763b1",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "44517661da0d",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.cutover:settled",
|
||||
"observation": {
|
||||
"sender": "09d53cd763b1",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "44517661da0d",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,274 @@
|
||||
{
|
||||
"operation": "settings.bot-overrides",
|
||||
"family": "settings.bot-overrides",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1f2f2a0a5737": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"4f53cda18c2b": [],
|
||||
"582aad0720e3": [
|
||||
{
|
||||
"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": "LogicalClientCutoverError",
|
||||
"message": "RPC interrupted by connection migration",
|
||||
"isRpcDeliveryUnknown": true,
|
||||
"cause": {
|
||||
"category": "Error",
|
||||
"message": "Connection closed",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"77571e1166d2": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"disconnect": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"79828a30028a": [
|
||||
{
|
||||
"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": 30000,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "Request timed out: settings.get",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"7a5a1b086254": [
|
||||
{
|
||||
"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 lost",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"8df6a469391c": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"cutover": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"9e493785145e": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "interruptions-settings-bot-overrides-fulfilled",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.prelude:settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.timeout:interrupted",
|
||||
"observation": {
|
||||
"sender": "79828a30028a",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.timeout:settled",
|
||||
"observation": {
|
||||
"sender": "79828a30028a",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.disconnect:interrupted",
|
||||
"observation": {
|
||||
"sender": "7a5a1b086254",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "77571e1166d2",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.disconnect:settled",
|
||||
"observation": {
|
||||
"sender": "7a5a1b086254",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "77571e1166d2",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.cutover:interrupted",
|
||||
"observation": {
|
||||
"sender": "582aad0720e3",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "8df6a469391c",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.cutover:settled",
|
||||
"observation": {
|
||||
"sender": "582aad0720e3",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "8df6a469391c",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
{
|
||||
"operation": "workspace.file-inventory",
|
||||
"family": "legacy-inventory",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"305c86832cd8": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"old": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"4f53cda18c2b": [],
|
||||
"6713de8f80d3": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"files.searchPaths\",\"params\":{\"worktree\":\"id:A\",\"query\":\"old\",\"limit\":16}}"
|
||||
},
|
||||
{
|
||||
"name": "files.list#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"files.list\",\"params\":{\"worktree\":\"id:A\"}}"
|
||||
}
|
||||
],
|
||||
"ab2510585ba0": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "old",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "method_not_found",
|
||||
"message": "Unknown method"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"files": [
|
||||
{
|
||||
"relativePath": "old.ts"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"fe1aebea954c": {
|
||||
"files": ["old.ts"]
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "inventory-lifecycle",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "305c86832cd8",
|
||||
"state": "fe1aebea954c",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,397 @@
|
||||
{
|
||||
"operation": "workspace.file-inventory",
|
||||
"family": "legacy-inventory",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"003a57e2bf31": {
|
||||
"files": ["alpha.ts"]
|
||||
},
|
||||
"07920a7dd2ac": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"files.searchPaths\",\"params\":{\"worktree\":\"id:A\",\"query\":\"alpha\",\"limit\":16}}"
|
||||
},
|
||||
{
|
||||
"name": "files.searchPaths#2",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"files.searchPaths\",\"params\":{\"worktree\":\"id:A\",\"query\":\"beta\",\"limit\":16}}"
|
||||
},
|
||||
{
|
||||
"name": "files.searchPaths#3",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"files.searchPaths\",\"params\":{\"worktree\":\"id:A\",\"query\":\"gamma\",\"limit\":16}}"
|
||||
}
|
||||
],
|
||||
"16c03a5dc6c8": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "alpha",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"files": [
|
||||
{
|
||||
"relativePath": "alpha.ts"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.searchPaths#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "beta",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 240,
|
||||
"settledAt": 240,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"files": [
|
||||
{
|
||||
"relativePath": "beta.ts"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.searchPaths#3",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "gamma",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 360
|
||||
}
|
||||
}
|
||||
],
|
||||
"22ab9118541c": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "alpha",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"files": [
|
||||
{
|
||||
"relativePath": "alpha.ts"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.searchPaths#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "beta",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 240,
|
||||
"settledAt": 240,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"files": [
|
||||
{
|
||||
"relativePath": "beta.ts"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.searchPaths#3",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "gamma",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 360,
|
||||
"settledAt": 360,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"files": [
|
||||
{
|
||||
"relativePath": "gamma.ts"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"3642acfe438f": {
|
||||
"files": ["beta.ts"]
|
||||
},
|
||||
"4f53cda18c2b": [],
|
||||
"d89c93bd8899": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"alpha": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"beta": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"gamma": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 240,
|
||||
"settledAt": 240,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"repeat-alpha": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 360,
|
||||
"settledAt": 360,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"eeba4d799744": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"alpha": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"beta": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"gamma": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 240,
|
||||
"settledAt": 240,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"repeat-alpha": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 360,
|
||||
"settledAt": 360,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"delta": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 360,
|
||||
"settledAt": 360,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"repeat-beta": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 360,
|
||||
"settledAt": 360,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "inventory-repeat-query",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "cached-alpha",
|
||||
"observation": {
|
||||
"sender": "16c03a5dc6c8",
|
||||
"payloads": "07920a7dd2ac",
|
||||
"settlements": "d89c93bd8899",
|
||||
"state": "003a57e2bf31",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "stale-search-ignored",
|
||||
"observation": {
|
||||
"sender": "22ab9118541c",
|
||||
"payloads": "07920a7dd2ac",
|
||||
"settlements": "d89c93bd8899",
|
||||
"state": "003a57e2bf31",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "cached-beta-cancels-debounce",
|
||||
"observation": {
|
||||
"sender": "22ab9118541c",
|
||||
"payloads": "07920a7dd2ac",
|
||||
"settlements": "eeba4d799744",
|
||||
"state": "3642acfe438f",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,602 @@
|
||||
{
|
||||
"operation": "workspace.file-inventory",
|
||||
"family": "legacy-inventory",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"1a957d27c347": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "old",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 120
|
||||
}
|
||||
}
|
||||
],
|
||||
"4f53cda18c2b": [],
|
||||
"602e35a92eec": {
|
||||
"files": []
|
||||
},
|
||||
"6713de8f80d3": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"files.searchPaths\",\"params\":{\"worktree\":\"id:A\",\"query\":\"old\",\"limit\":16}}"
|
||||
},
|
||||
{
|
||||
"name": "files.list#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"files.list\",\"params\":{\"worktree\":\"id:A\"}}"
|
||||
}
|
||||
],
|
||||
"8baaca44e19f": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"old": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"lifecycle-blur": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"97ccce4248eb": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "old",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "method_not_found",
|
||||
"message": "Unknown method"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 120
|
||||
}
|
||||
}
|
||||
],
|
||||
"a5b853493ed4": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"files.searchPaths\",\"params\":{\"worktree\":\"id:A\",\"query\":\"old\",\"limit\":16}}"
|
||||
}
|
||||
],
|
||||
"ab2510585ba0": [
|
||||
{
|
||||
"name": "files.searchPaths#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.searchPaths"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 16,
|
||||
"query": "old",
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "method_not_found",
|
||||
"message": "Unknown method"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "files.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "files.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"worktree": "id:A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"files": [
|
||||
{
|
||||
"relativePath": "old.ts"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"c8fe68914ed2": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"old": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"lifecycle-unmount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ca50cabf84eb": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"old": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"lifecycle-unmount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"remount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"e55f989316a7": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"old": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"lifecycle-reset": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 120,
|
||||
"settledAt": 120,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"fe1aebea954c": {
|
||||
"files": ["old.ts"]
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "lifecycle-inventory-lifecycle",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "inventory-lifecycle.reset-before-1:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "1a957d27c347",
|
||||
"payloads": "a5b853493ed4",
|
||||
"settlements": "e55f989316a7",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.reset-before-1:settled",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "e55f989316a7",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.reset-after-1:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "97ccce4248eb",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "e55f989316a7",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.reset-after-1:settled",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "e55f989316a7",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.reset-before-2:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "97ccce4248eb",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "e55f989316a7",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.reset-before-2:settled",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "e55f989316a7",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.reset-after-2:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "e55f989316a7",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.reset-after-2:settled",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "e55f989316a7",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.unmount-before-1:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "1a957d27c347",
|
||||
"payloads": "a5b853493ed4",
|
||||
"settlements": "c8fe68914ed2",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.unmount-before-1:settled",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "c8fe68914ed2",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.unmount-before-1:remounted",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "ca50cabf84eb",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.unmount-after-1:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "97ccce4248eb",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "c8fe68914ed2",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.unmount-after-1:settled",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "c8fe68914ed2",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.unmount-after-1:remounted",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "ca50cabf84eb",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.unmount-before-2:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "97ccce4248eb",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "c8fe68914ed2",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.unmount-before-2:settled",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "c8fe68914ed2",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.unmount-before-2:remounted",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "ca50cabf84eb",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.unmount-after-2:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "c8fe68914ed2",
|
||||
"state": "fe1aebea954c",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.unmount-after-2:settled",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "c8fe68914ed2",
|
||||
"state": "fe1aebea954c",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.unmount-after-2:remounted",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "ca50cabf84eb",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.blur-before-1:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "1a957d27c347",
|
||||
"payloads": "a5b853493ed4",
|
||||
"settlements": "8baaca44e19f",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.blur-before-1:settled",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "8baaca44e19f",
|
||||
"state": "fe1aebea954c",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.blur-after-1:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "97ccce4248eb",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "8baaca44e19f",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.blur-after-1:settled",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "8baaca44e19f",
|
||||
"state": "fe1aebea954c",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.blur-before-2:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "97ccce4248eb",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "8baaca44e19f",
|
||||
"state": "602e35a92eec",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.blur-before-2:settled",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "8baaca44e19f",
|
||||
"state": "fe1aebea954c",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.blur-after-2:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "8baaca44e19f",
|
||||
"state": "fe1aebea954c",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "inventory-lifecycle.blur-after-2:settled",
|
||||
"observation": {
|
||||
"sender": "ab2510585ba0",
|
||||
"payloads": "6713de8f80d3",
|
||||
"settlements": "8baaca44e19f",
|
||||
"state": "fe1aebea954c",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,464 @@
|
||||
{
|
||||
"operation": "settings.bot-overrides",
|
||||
"family": "settings.bot-overrides",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"0622544ec536": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"lifecycle-unmount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"remount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1d4a2fa741de": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"1f2f2a0a5737": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"20d650b20730": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"lifecycle-blur": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"4f53cda18c2b": [],
|
||||
"84155dde485f": [
|
||||
{
|
||||
"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": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"9e493785145e": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"a7af6ac4ce05": [
|
||||
{
|
||||
"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": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"d52c8e96e222": ["bot-user"],
|
||||
"d7482cfe1d66": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"eb595117f4da": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"lifecycle-reset": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"f7efecfbed85": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"lifecycle-unmount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "lifecycle-settings-bot-overrides-fulfilled",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.prelude:settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.reset-before-1:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "d7482cfe1d66",
|
||||
"payloads": "1d4a2fa741de",
|
||||
"settlements": "eb595117f4da",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.reset-before-1:settled",
|
||||
"observation": {
|
||||
"sender": "84155dde485f",
|
||||
"payloads": "1d4a2fa741de",
|
||||
"settlements": "eb595117f4da",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.reset-after-1:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "84155dde485f",
|
||||
"payloads": "1d4a2fa741de",
|
||||
"settlements": "eb595117f4da",
|
||||
"state": "d52c8e96e222",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.reset-after-1:settled",
|
||||
"observation": {
|
||||
"sender": "84155dde485f",
|
||||
"payloads": "1d4a2fa741de",
|
||||
"settlements": "eb595117f4da",
|
||||
"state": "d52c8e96e222",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.unmount-before-1:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "f7efecfbed85",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.unmount-before-1:settled",
|
||||
"observation": {
|
||||
"sender": "a7af6ac4ce05",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "f7efecfbed85",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.unmount-before-1:remounted",
|
||||
"observation": {
|
||||
"sender": "84155dde485f",
|
||||
"payloads": "1d4a2fa741de",
|
||||
"settlements": "0622544ec536",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.unmount-after-1:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "a7af6ac4ce05",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "f7efecfbed85",
|
||||
"state": "d52c8e96e222",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.unmount-after-1:settled",
|
||||
"observation": {
|
||||
"sender": "a7af6ac4ce05",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "f7efecfbed85",
|
||||
"state": "d52c8e96e222",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.unmount-after-1:remounted",
|
||||
"observation": {
|
||||
"sender": "84155dde485f",
|
||||
"payloads": "1d4a2fa741de",
|
||||
"settlements": "0622544ec536",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.blur-before-1:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "20d650b20730",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.blur-before-1:settled",
|
||||
"observation": {
|
||||
"sender": "a7af6ac4ce05",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "20d650b20730",
|
||||
"state": "d52c8e96e222",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.blur-after-1:lifecycle-boundary",
|
||||
"observation": {
|
||||
"sender": "a7af6ac4ce05",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "20d650b20730",
|
||||
"state": "d52c8e96e222",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.blur-after-1:settled",
|
||||
"observation": {
|
||||
"sender": "a7af6ac4ce05",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "20d650b20730",
|
||||
"state": "d52c8e96e222",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,915 @@
|
||||
{
|
||||
"operation": "project.update-metadata",
|
||||
"family": "project-explicit-false",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0318f81a142b": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"github.project.updateIssueBySlug\",\"params\":{\"owner\":\"owner\",\"repo\":\"repo\",\"host\":\"github.enterprise.test\",\"number\":1,\"updates\":{\"addLabels\":[\"recorded\"]}}}"
|
||||
}
|
||||
],
|
||||
"0af9e441da2d": [
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetailError",
|
||||
"value": "Failed to update GitHub item"
|
||||
},
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": false
|
||||
}
|
||||
],
|
||||
"0c4dced3e005": {
|
||||
"error": "",
|
||||
"mutating": true,
|
||||
"row": {
|
||||
"content": {
|
||||
"assignees": [],
|
||||
"labels": [],
|
||||
"number": 1,
|
||||
"repository": "owner/repo"
|
||||
},
|
||||
"id": "item-1",
|
||||
"itemType": "ISSUE"
|
||||
}
|
||||
},
|
||||
"15516afe97e7": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "github.project.updateIssueBySlug"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"host": "github.enterprise.test",
|
||||
"number": 1,
|
||||
"owner": "owner",
|
||||
"repo": "repo",
|
||||
"updates": {
|
||||
"addLabels": ["recorded"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"204a5c5728c2": {
|
||||
"error": "Cannot read properties of null (reading 'ok')",
|
||||
"mutating": false,
|
||||
"row": {
|
||||
"content": {
|
||||
"assignees": [],
|
||||
"labels": [],
|
||||
"number": 1,
|
||||
"repository": "owner/repo"
|
||||
},
|
||||
"id": "item-1",
|
||||
"itemType": "ISSUE"
|
||||
}
|
||||
},
|
||||
"22021a77bba3": {
|
||||
"error": "Unknown method",
|
||||
"mutating": false,
|
||||
"row": {
|
||||
"content": {
|
||||
"assignees": [],
|
||||
"labels": [],
|
||||
"number": 1,
|
||||
"repository": "owner/repo"
|
||||
},
|
||||
"id": "item-1",
|
||||
"itemType": "ISSUE"
|
||||
}
|
||||
},
|
||||
"26facd6684ea": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "github.project.updateIssueBySlug"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"host": "github.enterprise.test",
|
||||
"number": 1,
|
||||
"owner": "owner",
|
||||
"repo": "repo",
|
||||
"updates": {
|
||||
"addLabels": ["recorded"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"29f9b15bed7a": {
|
||||
"error": "Cannot read properties of undefined (reading 'ok')",
|
||||
"mutating": false,
|
||||
"row": {
|
||||
"content": {
|
||||
"assignees": [],
|
||||
"labels": [],
|
||||
"number": 1,
|
||||
"repository": "owner/repo"
|
||||
},
|
||||
"id": "item-1",
|
||||
"itemType": "ISSUE"
|
||||
}
|
||||
},
|
||||
"2b3c1b95331e": {
|
||||
"error": "outer refused",
|
||||
"mutating": false,
|
||||
"row": {
|
||||
"content": {
|
||||
"assignees": [],
|
||||
"labels": [],
|
||||
"number": 1,
|
||||
"repository": "owner/repo"
|
||||
},
|
||||
"id": "item-1",
|
||||
"itemType": "ISSUE"
|
||||
}
|
||||
},
|
||||
"2d4bb5e23b2b": [
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetailError",
|
||||
"value": "Cannot read properties of undefined (reading 'ok')"
|
||||
},
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": false
|
||||
}
|
||||
],
|
||||
"32cc1f3ceec8": {
|
||||
"error": "inner refused",
|
||||
"mutating": false,
|
||||
"row": {
|
||||
"content": {
|
||||
"assignees": [],
|
||||
"labels": [],
|
||||
"number": 1,
|
||||
"repository": "owner/repo"
|
||||
},
|
||||
"id": "item-1",
|
||||
"itemType": "ISSUE"
|
||||
}
|
||||
},
|
||||
"341bf4999ec7": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "github.project.updateIssueBySlug"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"host": "github.enterprise.test",
|
||||
"number": 1,
|
||||
"owner": "owner",
|
||||
"repo": "repo",
|
||||
"updates": {
|
||||
"addLabels": ["recorded"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"error": "inner refused",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"3b9a7724526d": [
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": true
|
||||
}
|
||||
],
|
||||
"572294a588f2": [
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetailError",
|
||||
"value": "outer refused"
|
||||
},
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": false
|
||||
}
|
||||
],
|
||||
"5ea692508d69": {
|
||||
"error": "transport failure",
|
||||
"mutating": false,
|
||||
"row": {
|
||||
"content": {
|
||||
"assignees": [],
|
||||
"labels": [],
|
||||
"number": 1,
|
||||
"repository": "owner/repo"
|
||||
},
|
||||
"id": "item-1",
|
||||
"itemType": "ISSUE"
|
||||
}
|
||||
},
|
||||
"602c739007cd": [
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetailError",
|
||||
"value": "Connection closed"
|
||||
},
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": false
|
||||
}
|
||||
],
|
||||
"699c2c3a725a": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "github.project.updateIssueBySlug"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"host": "github.enterprise.test",
|
||||
"number": 1,
|
||||
"owner": "owner",
|
||||
"repo": "repo",
|
||||
"updates": {
|
||||
"addLabels": ["recorded"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "Connection closed",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"6dfef4ef572b": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"7000538c4980": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "github.project.updateIssueBySlug"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"host": "github.enterprise.test",
|
||||
"number": 1,
|
||||
"owner": "owner",
|
||||
"repo": "repo",
|
||||
"updates": {
|
||||
"addLabels": ["recorded"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"error": "refused"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"7df10429e862": {
|
||||
"error": "",
|
||||
"mutating": false,
|
||||
"row": {
|
||||
"content": {
|
||||
"assignees": [],
|
||||
"labels": [
|
||||
{
|
||||
"color": "808080",
|
||||
"name": "recorded"
|
||||
}
|
||||
],
|
||||
"number": 1,
|
||||
"repository": "owner/repo"
|
||||
},
|
||||
"id": "item-1",
|
||||
"itemType": "ISSUE"
|
||||
}
|
||||
},
|
||||
"7e11552b02fa": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "github.project.updateIssueBySlug"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"host": "github.enterprise.test",
|
||||
"number": 1,
|
||||
"owner": "owner",
|
||||
"repo": "repo",
|
||||
"updates": {
|
||||
"addLabels": ["recorded"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"8bb949ebd8c5": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "github.project.updateIssueBySlug"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"host": "github.enterprise.test",
|
||||
"number": 1,
|
||||
"owner": "owner",
|
||||
"repo": "repo",
|
||||
"updates": {
|
||||
"addLabels": ["recorded"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"8f4cdf6e9ea3": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "github.project.updateIssueBySlug"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"host": "github.enterprise.test",
|
||||
"number": 1,
|
||||
"owner": "owner",
|
||||
"repo": "repo",
|
||||
"updates": {
|
||||
"addLabels": ["recorded"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"9033c0d7d9eb": [
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetailError",
|
||||
"value": "Unknown method"
|
||||
},
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": false
|
||||
}
|
||||
],
|
||||
"9c6bc085b45b": [
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"name": "projectRowItem",
|
||||
"value": {
|
||||
"content": {
|
||||
"assignees": [],
|
||||
"labels": [
|
||||
{
|
||||
"color": "808080",
|
||||
"name": "recorded"
|
||||
}
|
||||
],
|
||||
"number": 1,
|
||||
"repository": "owner/repo"
|
||||
},
|
||||
"id": "item-1",
|
||||
"itemType": "ISSUE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "githubProjectTable",
|
||||
"value": {
|
||||
"rows": [
|
||||
{
|
||||
"content": {
|
||||
"assignees": [],
|
||||
"labels": [
|
||||
{
|
||||
"color": "808080",
|
||||
"name": "recorded"
|
||||
}
|
||||
],
|
||||
"number": 1,
|
||||
"repository": "owner/repo"
|
||||
},
|
||||
"id": "item-1",
|
||||
"itemType": "ISSUE"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetail",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": false
|
||||
}
|
||||
],
|
||||
"9cf0630c4079": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "github.project.updateIssueBySlug"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"host": "github.enterprise.test",
|
||||
"number": 1,
|
||||
"owner": "owner",
|
||||
"repo": "repo",
|
||||
"updates": {
|
||||
"addLabels": ["recorded"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"ok": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"c679565dc881": {
|
||||
"error": "Failed to update GitHub item",
|
||||
"mutating": false,
|
||||
"row": {
|
||||
"content": {
|
||||
"assignees": [],
|
||||
"labels": [],
|
||||
"number": 1,
|
||||
"repository": "owner/repo"
|
||||
},
|
||||
"id": "item-1",
|
||||
"itemType": "ISSUE"
|
||||
}
|
||||
},
|
||||
"c7c7fd6677d0": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "github.project.updateIssueBySlug"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"host": "github.enterprise.test",
|
||||
"number": 1,
|
||||
"owner": "owner",
|
||||
"repo": "repo",
|
||||
"updates": {
|
||||
"addLabels": ["recorded"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "refused",
|
||||
"message": "outer refused"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"c7e42c33f7cc": [
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetailError",
|
||||
"value": "inner refused"
|
||||
},
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": false
|
||||
}
|
||||
],
|
||||
"c7ff11bf23e1": [
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetailError",
|
||||
"value": "transport failure"
|
||||
},
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": false
|
||||
}
|
||||
],
|
||||
"dd1ba4033a27": [
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": true
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetailError",
|
||||
"value": "Cannot read properties of null (reading 'ok')"
|
||||
},
|
||||
{
|
||||
"name": "projectMutating",
|
||||
"value": false
|
||||
}
|
||||
],
|
||||
"ed0dd90e4fa1": [
|
||||
{
|
||||
"name": "github.project.updateIssueBySlug#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "github.project.updateIssueBySlug"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"host": "github.enterprise.test",
|
||||
"number": 1,
|
||||
"owner": "owner",
|
||||
"repo": "repo",
|
||||
"updates": {
|
||||
"addLabels": ["recorded"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "transport failure",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"f117d93cf44a": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "matrix-project-explicit-false",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "b2.prelude:pending",
|
||||
"observation": {
|
||||
"sender": "15516afe97e7",
|
||||
"payloads": "0318f81a142b",
|
||||
"settlements": "f117d93cf44a",
|
||||
"state": "0c4dced3e005",
|
||||
"effects": "3b9a7724526d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b2.prelude:cleanup",
|
||||
"observation": {
|
||||
"sender": "699c2c3a725a",
|
||||
"payloads": "0318f81a142b",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "0c4dced3e005",
|
||||
"effects": "602c739007cd"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b2.normal:settled",
|
||||
"observation": {
|
||||
"sender": "9cf0630c4079",
|
||||
"payloads": "0318f81a142b",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "7df10429e862",
|
||||
"effects": "9c6bc085b45b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b2.result-absent:settled",
|
||||
"observation": {
|
||||
"sender": "8f4cdf6e9ea3",
|
||||
"payloads": "0318f81a142b",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "29f9b15bed7a",
|
||||
"effects": "2d4bb5e23b2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b2.result-null:settled",
|
||||
"observation": {
|
||||
"sender": "7e11552b02fa",
|
||||
"payloads": "0318f81a142b",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "204a5c5728c2",
|
||||
"effects": "dd1ba4033a27"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b2.inner-ok-missing:settled",
|
||||
"observation": {
|
||||
"sender": "7000538c4980",
|
||||
"payloads": "0318f81a142b",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "7df10429e862",
|
||||
"effects": "9c6bc085b45b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b2.inner-false-string-error:settled",
|
||||
"observation": {
|
||||
"sender": "341bf4999ec7",
|
||||
"payloads": "0318f81a142b",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "c679565dc881",
|
||||
"effects": "0af9e441da2d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b2.inner-false-object-error:settled",
|
||||
"observation": {
|
||||
"sender": "26facd6684ea",
|
||||
"payloads": "0318f81a142b",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "32cc1f3ceec8",
|
||||
"effects": "c7e42c33f7cc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b2.outer-refused:settled",
|
||||
"observation": {
|
||||
"sender": "c7c7fd6677d0",
|
||||
"payloads": "0318f81a142b",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "2b3c1b95331e",
|
||||
"effects": "572294a588f2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b2.method-not-found:settled",
|
||||
"observation": {
|
||||
"sender": "8bb949ebd8c5",
|
||||
"payloads": "0318f81a142b",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "22021a77bba3",
|
||||
"effects": "9033c0d7d9eb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b2.transport-rejection:settled",
|
||||
"observation": {
|
||||
"sender": "ed0dd90e4fa1",
|
||||
"payloads": "0318f81a142b",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "5ea692508d69",
|
||||
"effects": "c7ff11bf23e1"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,496 @@
|
||||
{
|
||||
"operation": "settings.task-preferences",
|
||||
"family": "settings-best-effort",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"30dcc6c2791e": [
|
||||
{
|
||||
"name": "settings.update#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.update"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"defaultTaskViewPreset": "assigned"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"5db909d58c6f": {
|
||||
"preset": "assigned"
|
||||
},
|
||||
"86cae7d2eb05": [
|
||||
{
|
||||
"name": "settings.update#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.update"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"defaultTaskViewPreset": "assigned"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "transport failure",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"9c7e0ecdf09b": [
|
||||
{
|
||||
"name": "settings.update#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.update"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"defaultTaskViewPreset": "assigned"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"error": "inner refused",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"a11ef678ac34": [
|
||||
{
|
||||
"name": "settings.update#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.update"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"defaultTaskViewPreset": "assigned"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"ok": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"a4cc6c82ee53": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"write": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"b26f6d594d62": [
|
||||
{
|
||||
"name": "defaultGitHubPreset",
|
||||
"value": "assigned"
|
||||
}
|
||||
],
|
||||
"c48c361670b0": [
|
||||
{
|
||||
"name": "settings.update#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.update\",\"params\":{\"defaultTaskViewPreset\":\"assigned\"}}"
|
||||
}
|
||||
],
|
||||
"c8c488b25f28": [
|
||||
{
|
||||
"name": "settings.update#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.update"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"defaultTaskViewPreset": "assigned"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"de2d142b9c07": [
|
||||
{
|
||||
"name": "settings.update#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.update"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"defaultTaskViewPreset": "assigned"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "refused",
|
||||
"message": "outer refused"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"dfbe228314eb": [
|
||||
{
|
||||
"name": "settings.update#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.update"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"defaultTaskViewPreset": "assigned"
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"e02c44633084": [
|
||||
{
|
||||
"name": "settings.update#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.update"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"defaultTaskViewPreset": "assigned"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"e4c31c436812": [
|
||||
{
|
||||
"name": "settings.update#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.update"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"defaultTaskViewPreset": "assigned"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"error": "refused"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"fe2d291961f4": [
|
||||
{
|
||||
"name": "settings.update#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.update"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"defaultTaskViewPreset": "assigned"
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "matrix-settings-best-effort",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-task-write.prelude:optimistic",
|
||||
"observation": {
|
||||
"sender": "e02c44633084",
|
||||
"payloads": "c48c361670b0",
|
||||
"settlements": "a4cc6c82ee53",
|
||||
"state": "5db909d58c6f",
|
||||
"effects": "b26f6d594d62"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-write.normal:settled",
|
||||
"observation": {
|
||||
"sender": "a11ef678ac34",
|
||||
"payloads": "c48c361670b0",
|
||||
"settlements": "a4cc6c82ee53",
|
||||
"state": "5db909d58c6f",
|
||||
"effects": "b26f6d594d62"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-write.result-absent:settled",
|
||||
"observation": {
|
||||
"sender": "30dcc6c2791e",
|
||||
"payloads": "c48c361670b0",
|
||||
"settlements": "a4cc6c82ee53",
|
||||
"state": "5db909d58c6f",
|
||||
"effects": "b26f6d594d62"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-write.result-null:settled",
|
||||
"observation": {
|
||||
"sender": "c8c488b25f28",
|
||||
"payloads": "c48c361670b0",
|
||||
"settlements": "a4cc6c82ee53",
|
||||
"state": "5db909d58c6f",
|
||||
"effects": "b26f6d594d62"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-write.inner-ok-missing:settled",
|
||||
"observation": {
|
||||
"sender": "e4c31c436812",
|
||||
"payloads": "c48c361670b0",
|
||||
"settlements": "a4cc6c82ee53",
|
||||
"state": "5db909d58c6f",
|
||||
"effects": "b26f6d594d62"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-write.inner-false-string-error:settled",
|
||||
"observation": {
|
||||
"sender": "9c7e0ecdf09b",
|
||||
"payloads": "c48c361670b0",
|
||||
"settlements": "a4cc6c82ee53",
|
||||
"state": "5db909d58c6f",
|
||||
"effects": "b26f6d594d62"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-write.inner-false-object-error:settled",
|
||||
"observation": {
|
||||
"sender": "fe2d291961f4",
|
||||
"payloads": "c48c361670b0",
|
||||
"settlements": "a4cc6c82ee53",
|
||||
"state": "5db909d58c6f",
|
||||
"effects": "b26f6d594d62"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-write.outer-refused:settled",
|
||||
"observation": {
|
||||
"sender": "de2d142b9c07",
|
||||
"payloads": "c48c361670b0",
|
||||
"settlements": "a4cc6c82ee53",
|
||||
"state": "5db909d58c6f",
|
||||
"effects": "b26f6d594d62"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-write.method-not-found:settled",
|
||||
"observation": {
|
||||
"sender": "dfbe228314eb",
|
||||
"payloads": "c48c361670b0",
|
||||
"settlements": "a4cc6c82ee53",
|
||||
"state": "5db909d58c6f",
|
||||
"effects": "b26f6d594d62"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-write.transport-rejection:settled",
|
||||
"observation": {
|
||||
"sender": "86cae7d2eb05",
|
||||
"payloads": "c48c361670b0",
|
||||
"settlements": "a4cc6c82ee53",
|
||||
"state": "5db909d58c6f",
|
||||
"effects": "b26f6d594d62"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,496 @@
|
||||
{
|
||||
"operation": "settings.bot-overrides",
|
||||
"family": "settings.bot-overrides",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"0c7c10d0f1d4": [
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"1f2f2a0a5737": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"35364e9332cb": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"3c782ee7b9a5": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"41b24c27cb2d": [
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"4f53cda18c2b": [],
|
||||
"5a6be9b97ba7": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"624fba4da33b": ["recorded-bot"],
|
||||
"6435848e9b34": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"9c753d3a11f2": [
|
||||
{
|
||||
"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": {
|
||||
"defaultLinearTeamSelection": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"defaultRepoSelection": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"defaultTaskSource": "github",
|
||||
"defaultTaskViewPreset": "all",
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"githubProjects": {},
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["recorded-bot"],
|
||||
"visibleTaskProviders": ["github"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"9e493785145e": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"cd41018879b7": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"f60b502aa33d": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "matrix-settings.bot-overrides",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.prelude:settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.normal:settled",
|
||||
"observation": {
|
||||
"sender": "9c753d3a11f2",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "624fba4da33b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.result-absent:settled",
|
||||
"observation": {
|
||||
"sender": "5a6be9b97ba7",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.result-null:settled",
|
||||
"observation": {
|
||||
"sender": "41b24c27cb2d",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.inner-ok-missing:settled",
|
||||
"observation": {
|
||||
"sender": "0c7c10d0f1d4",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.inner-false-string-error:settled",
|
||||
"observation": {
|
||||
"sender": "3c782ee7b9a5",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.inner-false-object-error:settled",
|
||||
"observation": {
|
||||
"sender": "6435848e9b34",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.outer-refused:settled",
|
||||
"observation": {
|
||||
"sender": "cd41018879b7",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.method-not-found:settled",
|
||||
"observation": {
|
||||
"sender": "35364e9332cb",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-bot-overrides-fulfilled.transport-rejection:settled",
|
||||
"observation": {
|
||||
"sender": "f60b502aa33d",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,725 @@
|
||||
{
|
||||
"operation": "settings.task-workspace",
|
||||
"family": "settings.task-workspace",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0c7c10d0f1d4": [
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"1f2f2a0a5737": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"235e65047685": {
|
||||
"creating": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"error": "Selected agent is disabled. Choose an enabled agent before creating.",
|
||||
"settings": {
|
||||
"defaultLinearTeamSelection": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"defaultRepoSelection": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"defaultTaskSource": "github",
|
||||
"defaultTaskViewPreset": "all",
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"githubProjects": {},
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["recorded-bot"],
|
||||
"visibleTaskProviders": ["github"]
|
||||
}
|
||||
},
|
||||
"236832733364": [
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": "linear:1"
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"name": "workspaceAgent",
|
||||
"value": "codex"
|
||||
},
|
||||
{
|
||||
"name": "workspaceAgentOverridden",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": "Selected agent is disabled. Choose an enabled agent before creating."
|
||||
},
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
}
|
||||
],
|
||||
"290a60cb44eb": [
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": "linear:1"
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"name": "runtimeTaskSettings",
|
||||
"value": {
|
||||
"defaultLinearTeamSelection": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"defaultRepoSelection": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"defaultTaskSource": "github",
|
||||
"defaultTaskViewPreset": "all",
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"githubProjects": {},
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["recorded-bot"],
|
||||
"visibleTaskProviders": ["github"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "workspaceAgent",
|
||||
"value": "codex"
|
||||
},
|
||||
{
|
||||
"name": "workspaceAgentOverridden",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": "Selected agent is disabled. Choose an enabled agent before creating."
|
||||
},
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
}
|
||||
],
|
||||
"35364e9332cb": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"3c782ee7b9a5": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"41b24c27cb2d": [
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"5a6be9b97ba7": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"6435848e9b34": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"6dfef4ef572b": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"7abdfe20af50": {
|
||||
"creating": "linear:1",
|
||||
"error": "",
|
||||
"settings": {
|
||||
"disabledTuiAgents": ["claude"]
|
||||
}
|
||||
},
|
||||
"9c753d3a11f2": [
|
||||
{
|
||||
"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": {
|
||||
"defaultLinearTeamSelection": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"defaultRepoSelection": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"defaultTaskSource": "github",
|
||||
"defaultTaskViewPreset": "all",
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"githubProjects": {},
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["recorded-bot"],
|
||||
"visibleTaskProviders": ["github"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"9e493785145e": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"adec34c2065c": {
|
||||
"creating": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"error": "",
|
||||
"settings": {}
|
||||
},
|
||||
"b05ebf557542": [
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": "linear:1"
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"b4ddfb3cab99": [
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": "linear:1"
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"name": "runtimeTaskSettings",
|
||||
"value": {}
|
||||
},
|
||||
{
|
||||
"name": "setupPrompt",
|
||||
"value": {
|
||||
"agentOverride": "claude",
|
||||
"command": "setup",
|
||||
"item": {
|
||||
"key": "linear:1",
|
||||
"provider": "linear",
|
||||
"source": {
|
||||
"id": "issue-1"
|
||||
}
|
||||
},
|
||||
"repoName": "Repo",
|
||||
"source": "repo"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
}
|
||||
],
|
||||
"cd41018879b7": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"d0feb81f9400": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"d5df3f6b123a": {
|
||||
"creating": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"error": "Selected agent is disabled. Choose an enabled agent before creating.",
|
||||
"settings": {
|
||||
"disabledTuiAgents": ["claude"]
|
||||
}
|
||||
},
|
||||
"f117d93cf44a": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"f60b502aa33d": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "matrix-settings.task-workspace",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-task-workspace-fulfilled.prelude:settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "f117d93cf44a",
|
||||
"state": "7abdfe20af50",
|
||||
"effects": "b05ebf557542"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-workspace-fulfilled.prelude:cleanup",
|
||||
"observation": {
|
||||
"sender": "d0feb81f9400",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "7abdfe20af50",
|
||||
"effects": "236832733364"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-workspace-fulfilled.normal:settled",
|
||||
"observation": {
|
||||
"sender": "9c753d3a11f2",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "235e65047685",
|
||||
"effects": "290a60cb44eb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-workspace-fulfilled.result-absent:settled",
|
||||
"observation": {
|
||||
"sender": "5a6be9b97ba7",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "d5df3f6b123a",
|
||||
"effects": "236832733364"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-workspace-fulfilled.result-null:settled",
|
||||
"observation": {
|
||||
"sender": "41b24c27cb2d",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "d5df3f6b123a",
|
||||
"effects": "236832733364"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-workspace-fulfilled.inner-ok-missing:settled",
|
||||
"observation": {
|
||||
"sender": "0c7c10d0f1d4",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "adec34c2065c",
|
||||
"effects": "b4ddfb3cab99"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-workspace-fulfilled.inner-false-string-error:settled",
|
||||
"observation": {
|
||||
"sender": "3c782ee7b9a5",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "adec34c2065c",
|
||||
"effects": "b4ddfb3cab99"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-workspace-fulfilled.inner-false-object-error:settled",
|
||||
"observation": {
|
||||
"sender": "6435848e9b34",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "adec34c2065c",
|
||||
"effects": "b4ddfb3cab99"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-workspace-fulfilled.outer-refused:settled",
|
||||
"observation": {
|
||||
"sender": "cd41018879b7",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "d5df3f6b123a",
|
||||
"effects": "236832733364"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-workspace-fulfilled.method-not-found:settled",
|
||||
"observation": {
|
||||
"sender": "35364e9332cb",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "d5df3f6b123a",
|
||||
"effects": "236832733364"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settings-task-workspace-fulfilled.transport-rejection:settled",
|
||||
"observation": {
|
||||
"sender": "f60b502aa33d",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "d5df3f6b123a",
|
||||
"effects": "236832733364"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,244 @@
|
||||
{
|
||||
"operation": "settings.new-tab-agents",
|
||||
"family": "settings-agent-read",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"155ff7f445b7": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"227b6af1aa2d": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"id": "repo-1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "settings refused"
|
||||
},
|
||||
"id": "frame-2",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "agents refused"
|
||||
},
|
||||
"id": "frame-3",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"274355646d54": {
|
||||
"load": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "settings refused",
|
||||
"isRpcDeliveryUnknown": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"3076d0a13ab4": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4f53cda18c2b": [],
|
||||
"503a535a0cd0": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.detectRemoteAgents#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}"
|
||||
}
|
||||
],
|
||||
"b11c8efab170": {
|
||||
"load": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "probe-new-tab-both-refused",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "pending",
|
||||
"observation": {
|
||||
"sender": "155ff7f445b7",
|
||||
"payloads": "3076d0a13ab4",
|
||||
"settlements": "b11c8efab170",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "227b6af1aa2d",
|
||||
"payloads": "503a535a0cd0",
|
||||
"settlements": "274355646d54",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,243 @@
|
||||
{
|
||||
"operation": "settings.new-tab-agents",
|
||||
"family": "settings-agent-read",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0b6f5724327e": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"id": "repo-1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "agents refused"
|
||||
},
|
||||
"id": "frame-3",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"155ff7f445b7": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"3076d0a13ab4": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4f53cda18c2b": [],
|
||||
"503a535a0cd0": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.detectRemoteAgents#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}"
|
||||
}
|
||||
],
|
||||
"b11c8efab170": {
|
||||
"load": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"b2ed82397ed2": {
|
||||
"load": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "agents refused",
|
||||
"isRpcDeliveryUnknown": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "probe-new-tab-null-sibling-refused",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "pending",
|
||||
"observation": {
|
||||
"sender": "155ff7f445b7",
|
||||
"payloads": "3076d0a13ab4",
|
||||
"settlements": "b11c8efab170",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "0b6f5724327e",
|
||||
"payloads": "503a535a0cd0",
|
||||
"settlements": "b2ed82397ed2",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,241 @@
|
||||
{
|
||||
"operation": "settings.new-tab-agents",
|
||||
"family": "settings-agent-read",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"155ff7f445b7": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"3076d0a13ab4": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4f53cda18c2b": [],
|
||||
"503a535a0cd0": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.detectRemoteAgents#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}"
|
||||
}
|
||||
],
|
||||
"6eae545ef4a0": {
|
||||
"load": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "agents disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"98f2d44e2e10": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"id": "repo-1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "settings refused"
|
||||
},
|
||||
"id": "frame-2",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "agents disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"b11c8efab170": {
|
||||
"load": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "probe-new-tab-refused-sibling-rejects",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "pending",
|
||||
"observation": {
|
||||
"sender": "155ff7f445b7",
|
||||
"payloads": "3076d0a13ab4",
|
||||
"settlements": "b11c8efab170",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "98f2d44e2e10",
|
||||
"payloads": "503a535a0cd0",
|
||||
"settlements": "6eae545ef4a0",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,241 @@
|
||||
{
|
||||
"operation": "settings.new-tab-agents",
|
||||
"family": "settings-agent-read",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"155ff7f445b7": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"3076d0a13ab4": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4f53cda18c2b": [],
|
||||
"503a535a0cd0": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.detectRemoteAgents#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}"
|
||||
}
|
||||
],
|
||||
"b11c8efab170": {
|
||||
"load": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"ddae1d634b3e": {
|
||||
"load": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "settings disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"fc4b6e5f9239": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"id": "repo-1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "settings disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "agents refused"
|
||||
},
|
||||
"id": "frame-3",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "probe-new-tab-rejects-sibling-refused",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "pending",
|
||||
"observation": {
|
||||
"sender": "155ff7f445b7",
|
||||
"payloads": "3076d0a13ab4",
|
||||
"settlements": "b11c8efab170",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "fc4b6e5f9239",
|
||||
"payloads": "503a535a0cd0",
|
||||
"settlements": "ddae1d634b3e",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,126 @@
|
||||
{
|
||||
"operation": "settings.bot-overrides",
|
||||
"family": "settings.bot-overrides",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1f2f2a0a5737": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"4f53cda18c2b": [],
|
||||
"9e493785145e": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"a7af6ac4ce05": [
|
||||
{
|
||||
"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": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"d52c8e96e222": ["bot-user"]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-bot-overrides-fulfilled",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "a7af6ac4ce05",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "d52c8e96e222",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,315 @@
|
||||
{
|
||||
"operation": "settings.bot-overrides",
|
||||
"family": "settings.bot-overrides",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1d4a2fa741de": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"1f2f2a0a5737": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"4f53cda18c2b": [],
|
||||
"83bb868a6681": [
|
||||
{
|
||||
"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": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"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": "Settings refused"
|
||||
},
|
||||
"id": "frame-2",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"84155dde485f": [
|
||||
{
|
||||
"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": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"9e493785145e": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"a7af6ac4ce05": [
|
||||
{
|
||||
"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": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"a7c491dcb172": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"refresh": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"d52c8e96e222": ["bot-user"]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-bot-overrides-refresh-refused",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "a7af6ac4ce05",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "d52c8e96e222",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "refresh-pending",
|
||||
"observation": {
|
||||
"sender": "84155dde485f",
|
||||
"payloads": "1d4a2fa741de",
|
||||
"settlements": "a7c491dcb172",
|
||||
"state": "d52c8e96e222",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "refused-retains-overrides",
|
||||
"observation": {
|
||||
"sender": "83bb868a6681",
|
||||
"payloads": "1d4a2fa741de",
|
||||
"settlements": "a7c491dcb172",
|
||||
"state": "d52c8e96e222",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
{
|
||||
"operation": "settings.bot-overrides",
|
||||
"family": "settings.bot-overrides",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"16043f76be6c": [
|
||||
{
|
||||
"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": "settings refused"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"1f2f2a0a5737": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"4f53cda18c2b": [],
|
||||
"9e493785145e": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-bot-overrides-refused",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "16043f76be6c",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
{
|
||||
"operation": "settings.bot-overrides",
|
||||
"family": "settings.bot-overrides",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1f2f2a0a5737": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"4f53cda18c2b": [],
|
||||
"9e493785145e": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"d069f81df435": [
|
||||
{
|
||||
"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": "settings disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-bot-overrides-transport-error",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "d069f81df435",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "4f53cda18c2b",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,977 @@
|
||||
{
|
||||
"operation": "settings.home-providers",
|
||||
"family": "settings.home-providers",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"13d58e42ea1c": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
}
|
||||
],
|
||||
"1476fcb5bc03": [
|
||||
{
|
||||
"name": "providers",
|
||||
"value": {
|
||||
"host-1": ["github"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "providers",
|
||||
"value": {
|
||||
"host-1": ["github"]
|
||||
}
|
||||
}
|
||||
],
|
||||
"31e52986b3e4": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#2",
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#2",
|
||||
"json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#3",
|
||||
"json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#3",
|
||||
"json": "{\"id\":\"frame-8\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#3",
|
||||
"json": "{\"id\":\"frame-9\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
}
|
||||
],
|
||||
"40b162c1b21a": [
|
||||
{
|
||||
"name": "providers",
|
||||
"value": {
|
||||
"host-1": ["github"]
|
||||
}
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4f53cda18c2b": [],
|
||||
"780ac4cd0c2f": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"79b8c1b0d1d1": {
|
||||
"host-1": ["github"]
|
||||
},
|
||||
"8792ba235e35": {
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"overlapping-load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"third-load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"9c0b1bcf8ef1": {
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"overlapping-load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"aa599367ba4b": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-5",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-6",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"d1e42a0a312d": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#2",
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#2",
|
||||
"json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
}
|
||||
],
|
||||
"d6e8453528de": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"e7049095b2b6": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-5",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-6",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#3",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#3",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#3",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-home-coalesced",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "780ac4cd0c2f",
|
||||
"payloads": "13d58e42ea1c",
|
||||
"settlements": "9c0b1bcf8ef1",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "d6e8453528de",
|
||||
"payloads": "d1e42a0a312d",
|
||||
"settlements": "9c0b1bcf8ef1",
|
||||
"state": "79b8c1b0d1d1",
|
||||
"effects": "40b162c1b21a"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "follow-up-settled",
|
||||
"observation": {
|
||||
"sender": "aa599367ba4b",
|
||||
"payloads": "d1e42a0a312d",
|
||||
"settlements": "9c0b1bcf8ef1",
|
||||
"state": "79b8c1b0d1d1",
|
||||
"effects": "1476fcb5bc03"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "third-query",
|
||||
"observation": {
|
||||
"sender": "e7049095b2b6",
|
||||
"payloads": "31e52986b3e4",
|
||||
"settlements": "8792ba235e35",
|
||||
"state": "79b8c1b0d1d1",
|
||||
"effects": "1476fcb5bc03"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,263 @@
|
||||
{
|
||||
"operation": "settings.home-providers",
|
||||
"family": "settings.home-providers",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"13d58e42ea1c": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
}
|
||||
],
|
||||
"3b52deb98f39": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"40b162c1b21a": [
|
||||
{
|
||||
"name": "providers",
|
||||
"value": {
|
||||
"host-1": ["github"]
|
||||
}
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4f53cda18c2b": [],
|
||||
"50274b2889df": {
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"780ac4cd0c2f": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"79b8c1b0d1d1": {
|
||||
"host-1": ["github"]
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-home-providers-fulfilled",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "780ac4cd0c2f",
|
||||
"payloads": "13d58e42ea1c",
|
||||
"settlements": "50274b2889df",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "3b52deb98f39",
|
||||
"payloads": "13d58e42ea1c",
|
||||
"settlements": "50274b2889df",
|
||||
"state": "79b8c1b0d1d1",
|
||||
"effects": "40b162c1b21a"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,746 @@
|
||||
{
|
||||
"operation": "settings.home-providers",
|
||||
"family": "settings.home-providers",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"01a7596f538f": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "refused",
|
||||
"message": "settings refused"
|
||||
},
|
||||
"id": "frame-4",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-5",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-6",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"13d58e42ea1c": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
}
|
||||
],
|
||||
"1476fcb5bc03": [
|
||||
{
|
||||
"name": "providers",
|
||||
"value": {
|
||||
"host-1": ["github"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "providers",
|
||||
"value": {
|
||||
"host-1": ["github"]
|
||||
}
|
||||
}
|
||||
],
|
||||
"161b05d3a099": {
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"reload": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"3b52deb98f39": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"40b162c1b21a": [
|
||||
{
|
||||
"name": "providers",
|
||||
"value": {
|
||||
"host-1": ["github"]
|
||||
}
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4f53cda18c2b": [],
|
||||
"50274b2889df": {
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"780ac4cd0c2f": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"79b8c1b0d1d1": {
|
||||
"host-1": ["github"]
|
||||
},
|
||||
"d1e42a0a312d": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#2",
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#2",
|
||||
"json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
}
|
||||
],
|
||||
"d6e8453528de": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-home-providers-refuse-after-data",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "780ac4cd0c2f",
|
||||
"payloads": "13d58e42ea1c",
|
||||
"settlements": "50274b2889df",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "3b52deb98f39",
|
||||
"payloads": "13d58e42ea1c",
|
||||
"settlements": "50274b2889df",
|
||||
"state": "79b8c1b0d1d1",
|
||||
"effects": "40b162c1b21a"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "data-present",
|
||||
"observation": {
|
||||
"sender": "3b52deb98f39",
|
||||
"payloads": "13d58e42ea1c",
|
||||
"settlements": "50274b2889df",
|
||||
"state": "79b8c1b0d1d1",
|
||||
"effects": "40b162c1b21a"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "refresh-pending",
|
||||
"observation": {
|
||||
"sender": "d6e8453528de",
|
||||
"payloads": "d1e42a0a312d",
|
||||
"settlements": "161b05d3a099",
|
||||
"state": "79b8c1b0d1d1",
|
||||
"effects": "40b162c1b21a"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "refused-after-data",
|
||||
"observation": {
|
||||
"sender": "01a7596f538f",
|
||||
"payloads": "d1e42a0a312d",
|
||||
"settlements": "161b05d3a099",
|
||||
"state": "79b8c1b0d1d1",
|
||||
"effects": "1476fcb5bc03"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,258 @@
|
||||
{
|
||||
"operation": "settings.home-providers",
|
||||
"family": "settings.home-providers",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"13d58e42ea1c": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
}
|
||||
],
|
||||
"40b162c1b21a": [
|
||||
{
|
||||
"name": "providers",
|
||||
"value": {
|
||||
"host-1": ["github"]
|
||||
}
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4f53cda18c2b": [],
|
||||
"50274b2889df": {
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"780ac4cd0c2f": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"79b8c1b0d1d1": {
|
||||
"host-1": ["github"]
|
||||
},
|
||||
"b6fb70e7de43": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "refused",
|
||||
"message": "settings refused"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-home-providers-refused",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "780ac4cd0c2f",
|
||||
"payloads": "13d58e42ea1c",
|
||||
"settlements": "50274b2889df",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "b6fb70e7de43",
|
||||
"payloads": "13d58e42ea1c",
|
||||
"settlements": "50274b2889df",
|
||||
"state": "79b8c1b0d1d1",
|
||||
"effects": "40b162c1b21a"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,255 @@
|
||||
{
|
||||
"operation": "settings.home-providers",
|
||||
"family": "settings.home-providers",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"13326bd872a6": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "settings disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"13d58e42ea1c": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
}
|
||||
],
|
||||
"40b162c1b21a": [
|
||||
{
|
||||
"name": "providers",
|
||||
"value": {
|
||||
"host-1": ["github"]
|
||||
}
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4f53cda18c2b": [],
|
||||
"50274b2889df": {
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"780ac4cd0c2f": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"79b8c1b0d1d1": {
|
||||
"host-1": ["github"]
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-home-providers-transport-error",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "780ac4cd0c2f",
|
||||
"payloads": "13d58e42ea1c",
|
||||
"settlements": "50274b2889df",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "13326bd872a6",
|
||||
"payloads": "13d58e42ea1c",
|
||||
"settlements": "50274b2889df",
|
||||
"state": "79b8c1b0d1d1",
|
||||
"effects": "40b162c1b21a"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,241 @@
|
||||
{
|
||||
"operation": "settings.new-tab-agents",
|
||||
"family": "settings-agent-read",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"155ff7f445b7": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"16de1d62c270": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"id": "repo-1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "settings refused"
|
||||
},
|
||||
"id": "frame-2",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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-3",
|
||||
"ok": true,
|
||||
"result": ["codex", "claude"]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"274355646d54": {
|
||||
"load": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "settings refused",
|
||||
"isRpcDeliveryUnknown": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"3076d0a13ab4": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4f53cda18c2b": [],
|
||||
"503a535a0cd0": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.detectRemoteAgents#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}"
|
||||
}
|
||||
],
|
||||
"b11c8efab170": {
|
||||
"load": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-new-tab-refused",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "pending",
|
||||
"observation": {
|
||||
"sender": "155ff7f445b7",
|
||||
"payloads": "3076d0a13ab4",
|
||||
"settlements": "b11c8efab170",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "16de1d62c270",
|
||||
"payloads": "503a535a0cd0",
|
||||
"settlements": "274355646d54",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,248 @@
|
||||
{
|
||||
"operation": "settings.new-tab-agents",
|
||||
"family": "settings-agent-read",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"08dec2e70517": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"id": "repo-1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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-3",
|
||||
"ok": true,
|
||||
"result": ["codex", "claude"]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"155ff7f445b7": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"3076d0a13ab4": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4990c034cddd": {
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": [
|
||||
{
|
||||
"agent": "codex",
|
||||
"label": "Codex"
|
||||
},
|
||||
{
|
||||
"agent": "claude",
|
||||
"label": "Claude"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"4f53cda18c2b": [],
|
||||
"503a535a0cd0": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.detectRemoteAgents#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}"
|
||||
}
|
||||
],
|
||||
"b11c8efab170": {
|
||||
"load": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-new-tab-ssh",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "pending",
|
||||
"observation": {
|
||||
"sender": "155ff7f445b7",
|
||||
"payloads": "3076d0a13ab4",
|
||||
"settlements": "b11c8efab170",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "08dec2e70517",
|
||||
"payloads": "503a535a0cd0",
|
||||
"settlements": "4990c034cddd",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,238 @@
|
||||
{
|
||||
"operation": "settings.new-tab-agents",
|
||||
"family": "settings-agent-read",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"155ff7f445b7": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"3076d0a13ab4": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4f53cda18c2b": [],
|
||||
"503a535a0cd0": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.detectRemoteAgents#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.detectRemoteAgents\",\"params\":{\"connectionId\":\"ssh-1\"}}"
|
||||
}
|
||||
],
|
||||
"b11c8efab170": {
|
||||
"load": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"d309fe89b198": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"id": "repo-1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "settings disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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-3",
|
||||
"ok": true,
|
||||
"result": ["codex", "claude"]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"ddae1d634b3e": {
|
||||
"load": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "settings disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-new-tab-transport-error",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "pending",
|
||||
"observation": {
|
||||
"sender": "155ff7f445b7",
|
||||
"payloads": "3076d0a13ab4",
|
||||
"settlements": "b11c8efab170",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "d309fe89b198",
|
||||
"payloads": "503a535a0cd0",
|
||||
"settlements": "ddae1d634b3e",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,811 @@
|
||||
{
|
||||
"operation": "settings.repo-metadata",
|
||||
"family": "settings.repo-metadata",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"071880b671a1": {
|
||||
"hostLabelById": [["ssh:ssh-1", "SSH"]],
|
||||
"hostPlatform": "linux",
|
||||
"repoColorsByName": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
],
|
||||
"repoHostIdByRepoId": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
],
|
||||
"repoIconsByName": [],
|
||||
"repoIdsByName": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
"0837485f8127": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"displayName": "Local",
|
||||
"id": "repo-1"
|
||||
},
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"displayName": "Remote",
|
||||
"id": "repo-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ssh.listTargetSummaries#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ssh.listTargetSummaries"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"targets": [
|
||||
{
|
||||
"id": "ssh-1",
|
||||
"label": "SSH"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "host.platform#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "host.platform"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"0f10f753b645": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"cached-query": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"26ce47c562c3": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "ssh.listTargetSummaries#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.listTargetSummaries\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "host.platform#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"host.platform\"}"
|
||||
},
|
||||
{
|
||||
"name": "repo.list#2",
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
}
|
||||
],
|
||||
"2bf0f26c9185": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"3d1e2998e81c": [
|
||||
{
|
||||
"name": "repoColorsByName",
|
||||
"value": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoIconsByName",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "repoIdsByName",
|
||||
"value": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoHostIdByRepoId",
|
||||
"value": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
]
|
||||
}
|
||||
],
|
||||
"6134b73f18d0": {
|
||||
"repoColorsByName": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
],
|
||||
"repoHostIdByRepoId": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
],
|
||||
"repoIconsByName": [],
|
||||
"repoIdsByName": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
"6c2fa8796498": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"cached-query": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"warm-query": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 59000,
|
||||
"settledAt": 59000,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"83ef5f7039bf": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "ssh.listTargetSummaries#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.listTargetSummaries\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "host.platform#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"host.platform\"}"
|
||||
}
|
||||
],
|
||||
"8dff1fd17ddc": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"displayName": "Local",
|
||||
"id": "repo-1"
|
||||
},
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"displayName": "Remote",
|
||||
"id": "repo-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ssh.listTargetSummaries#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ssh.listTargetSummaries"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"targets": [
|
||||
{
|
||||
"id": "ssh-1",
|
||||
"label": "SSH"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "host.platform#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "host.platform"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"platform": "linux"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "repo.list#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 60000
|
||||
}
|
||||
}
|
||||
],
|
||||
"cff69ce01bb1": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"cached-query": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"warm-query": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 59000,
|
||||
"settledAt": 59000,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"expired-query": {
|
||||
"status": "pending",
|
||||
"startedAt": 60000
|
||||
}
|
||||
},
|
||||
"d90e99979f09": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"displayName": "Local",
|
||||
"id": "repo-1"
|
||||
},
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"displayName": "Remote",
|
||||
"id": "repo-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ssh.listTargetSummaries#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ssh.listTargetSummaries"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"targets": [
|
||||
{
|
||||
"id": "ssh-1",
|
||||
"label": "SSH"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "host.platform#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "host.platform"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"platform": "linux"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"e91286279b33": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"load": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"ec7bb9cef277": [
|
||||
{
|
||||
"name": "repoColorsByName",
|
||||
"value": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoIconsByName",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "repoIdsByName",
|
||||
"value": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoHostIdByRepoId",
|
||||
"value": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "hostLabelById",
|
||||
"value": [["ssh:ssh-1", "SSH"]]
|
||||
},
|
||||
{
|
||||
"name": "hostPlatform",
|
||||
"value": "linux"
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-repo-cache-expiry",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "0837485f8127",
|
||||
"payloads": "83ef5f7039bf",
|
||||
"settlements": "e91286279b33",
|
||||
"state": "6134b73f18d0",
|
||||
"effects": "3d1e2998e81c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "d90e99979f09",
|
||||
"payloads": "83ef5f7039bf",
|
||||
"settlements": "2bf0f26c9185",
|
||||
"state": "071880b671a1",
|
||||
"effects": "ec7bb9cef277"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "cache-hit",
|
||||
"observation": {
|
||||
"sender": "d90e99979f09",
|
||||
"payloads": "83ef5f7039bf",
|
||||
"settlements": "0f10f753b645",
|
||||
"state": "071880b671a1",
|
||||
"effects": "ec7bb9cef277"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "cache-warm",
|
||||
"observation": {
|
||||
"sender": "d90e99979f09",
|
||||
"payloads": "83ef5f7039bf",
|
||||
"settlements": "6c2fa8796498",
|
||||
"state": "071880b671a1",
|
||||
"effects": "ec7bb9cef277"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "cache-expired",
|
||||
"observation": {
|
||||
"sender": "8dff1fd17ddc",
|
||||
"payloads": "26ce47c562c3",
|
||||
"settlements": "cff69ce01bb1",
|
||||
"state": "071880b671a1",
|
||||
"effects": "ec7bb9cef277"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,478 @@
|
||||
{
|
||||
"operation": "settings.repo-metadata",
|
||||
"family": "settings.repo-metadata",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"071880b671a1": {
|
||||
"hostLabelById": [["ssh:ssh-1", "SSH"]],
|
||||
"hostPlatform": "linux",
|
||||
"repoColorsByName": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
],
|
||||
"repoHostIdByRepoId": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
],
|
||||
"repoIconsByName": [],
|
||||
"repoIdsByName": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
"0837485f8127": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"displayName": "Local",
|
||||
"id": "repo-1"
|
||||
},
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"displayName": "Remote",
|
||||
"id": "repo-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ssh.listTargetSummaries#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ssh.listTargetSummaries"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"targets": [
|
||||
{
|
||||
"id": "ssh-1",
|
||||
"label": "SSH"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "host.platform#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "host.platform"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"2bf0f26c9185": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"3d1e2998e81c": [
|
||||
{
|
||||
"name": "repoColorsByName",
|
||||
"value": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoIconsByName",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "repoIdsByName",
|
||||
"value": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoHostIdByRepoId",
|
||||
"value": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
]
|
||||
}
|
||||
],
|
||||
"6134b73f18d0": {
|
||||
"repoColorsByName": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
],
|
||||
"repoHostIdByRepoId": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
],
|
||||
"repoIconsByName": [],
|
||||
"repoIdsByName": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
"83ef5f7039bf": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "ssh.listTargetSummaries#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.listTargetSummaries\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "host.platform#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"host.platform\"}"
|
||||
}
|
||||
],
|
||||
"d90e99979f09": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"displayName": "Local",
|
||||
"id": "repo-1"
|
||||
},
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"displayName": "Remote",
|
||||
"id": "repo-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ssh.listTargetSummaries#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ssh.listTargetSummaries"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"targets": [
|
||||
{
|
||||
"id": "ssh-1",
|
||||
"label": "SSH"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "host.platform#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "host.platform"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"platform": "linux"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"e91286279b33": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"load": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"ec7bb9cef277": [
|
||||
{
|
||||
"name": "repoColorsByName",
|
||||
"value": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoIconsByName",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "repoIdsByName",
|
||||
"value": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoHostIdByRepoId",
|
||||
"value": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "hostLabelById",
|
||||
"value": [["ssh:ssh-1", "SSH"]]
|
||||
},
|
||||
{
|
||||
"name": "hostPlatform",
|
||||
"value": "linux"
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-repo-metadata-fulfilled",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "0837485f8127",
|
||||
"payloads": "83ef5f7039bf",
|
||||
"settlements": "e91286279b33",
|
||||
"state": "6134b73f18d0",
|
||||
"effects": "3d1e2998e81c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "d90e99979f09",
|
||||
"payloads": "83ef5f7039bf",
|
||||
"settlements": "2bf0f26c9185",
|
||||
"state": "071880b671a1",
|
||||
"effects": "ec7bb9cef277"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,473 @@
|
||||
{
|
||||
"operation": "settings.repo-metadata",
|
||||
"family": "settings.repo-metadata",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"071880b671a1": {
|
||||
"hostLabelById": [["ssh:ssh-1", "SSH"]],
|
||||
"hostPlatform": "linux",
|
||||
"repoColorsByName": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
],
|
||||
"repoHostIdByRepoId": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
],
|
||||
"repoIconsByName": [],
|
||||
"repoIdsByName": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
"0837485f8127": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"displayName": "Local",
|
||||
"id": "repo-1"
|
||||
},
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"displayName": "Remote",
|
||||
"id": "repo-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ssh.listTargetSummaries#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ssh.listTargetSummaries"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"targets": [
|
||||
{
|
||||
"id": "ssh-1",
|
||||
"label": "SSH"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "host.platform#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "host.platform"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"2bf0f26c9185": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"3d1e2998e81c": [
|
||||
{
|
||||
"name": "repoColorsByName",
|
||||
"value": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoIconsByName",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "repoIdsByName",
|
||||
"value": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoHostIdByRepoId",
|
||||
"value": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
]
|
||||
}
|
||||
],
|
||||
"6134b73f18d0": {
|
||||
"repoColorsByName": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
],
|
||||
"repoHostIdByRepoId": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
],
|
||||
"repoIconsByName": [],
|
||||
"repoIdsByName": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
"83ef5f7039bf": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "ssh.listTargetSummaries#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.listTargetSummaries\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "host.platform#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"host.platform\"}"
|
||||
}
|
||||
],
|
||||
"e91286279b33": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"load": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"ec7bb9cef277": [
|
||||
{
|
||||
"name": "repoColorsByName",
|
||||
"value": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoIconsByName",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "repoIdsByName",
|
||||
"value": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoHostIdByRepoId",
|
||||
"value": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "hostLabelById",
|
||||
"value": [["ssh:ssh-1", "SSH"]]
|
||||
},
|
||||
{
|
||||
"name": "hostPlatform",
|
||||
"value": "linux"
|
||||
}
|
||||
],
|
||||
"fc6ef6e9b0c0": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"displayName": "Local",
|
||||
"id": "repo-1"
|
||||
},
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"displayName": "Remote",
|
||||
"id": "repo-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ssh.listTargetSummaries#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ssh.listTargetSummaries"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"targets": [
|
||||
{
|
||||
"id": "ssh-1",
|
||||
"label": "SSH"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "settings refused"
|
||||
},
|
||||
"id": "frame-3",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "host.platform#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "host.platform"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"platform": "linux"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-repo-metadata-refused",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "0837485f8127",
|
||||
"payloads": "83ef5f7039bf",
|
||||
"settlements": "e91286279b33",
|
||||
"state": "6134b73f18d0",
|
||||
"effects": "3d1e2998e81c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "fc6ef6e9b0c0",
|
||||
"payloads": "83ef5f7039bf",
|
||||
"settlements": "2bf0f26c9185",
|
||||
"state": "071880b671a1",
|
||||
"effects": "ec7bb9cef277"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
{
|
||||
"operation": "settings.repo-metadata",
|
||||
"family": "settings.repo-metadata",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"2bd489a9fa29": {
|
||||
"repoColorsByName": [
|
||||
["Remote", "#f97316"],
|
||||
["Remote folder", "#ec4899"]
|
||||
],
|
||||
"repoHostIdByRepoId": [
|
||||
["repo-1", "ssh:ssh-1"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
],
|
||||
"repoIconsByName": [],
|
||||
"repoIdsByName": [
|
||||
["Remote", "repo-1"],
|
||||
["Remote folder", "repo-2"]
|
||||
]
|
||||
},
|
||||
"2bf0f26c9185": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"3af5a7c8dbf8": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"displayName": "Remote",
|
||||
"id": "repo-1"
|
||||
},
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"displayName": "Remote folder",
|
||||
"id": "repo-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"5e0c4a6ec80d": [
|
||||
{
|
||||
"name": "repoColorsByName",
|
||||
"value": [
|
||||
["Remote", "#f97316"],
|
||||
["Remote folder", "#ec4899"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoIconsByName",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "repoIdsByName",
|
||||
"value": [
|
||||
["Remote", "repo-1"],
|
||||
["Remote folder", "repo-2"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoHostIdByRepoId",
|
||||
"value": [
|
||||
["repo-1", "ssh:ssh-1"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
]
|
||||
}
|
||||
],
|
||||
"8442ee22b3fc": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-repo-metadata-single-host",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "single-host-without-label-lookups",
|
||||
"observation": {
|
||||
"sender": "3af5a7c8dbf8",
|
||||
"payloads": "8442ee22b3fc",
|
||||
"settlements": "2bf0f26c9185",
|
||||
"state": "2bd489a9fa29",
|
||||
"effects": "5e0c4a6ec80d"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,470 @@
|
||||
{
|
||||
"operation": "settings.repo-metadata",
|
||||
"family": "settings.repo-metadata",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"071880b671a1": {
|
||||
"hostLabelById": [["ssh:ssh-1", "SSH"]],
|
||||
"hostPlatform": "linux",
|
||||
"repoColorsByName": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
],
|
||||
"repoHostIdByRepoId": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
],
|
||||
"repoIconsByName": [],
|
||||
"repoIdsByName": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
"0837485f8127": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"displayName": "Local",
|
||||
"id": "repo-1"
|
||||
},
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"displayName": "Remote",
|
||||
"id": "repo-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ssh.listTargetSummaries#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ssh.listTargetSummaries"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"targets": [
|
||||
{
|
||||
"id": "ssh-1",
|
||||
"label": "SSH"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "host.platform#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "host.platform"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"148d92080e35": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": [
|
||||
{
|
||||
"connectionId": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"displayName": "Local",
|
||||
"id": "repo-1"
|
||||
},
|
||||
{
|
||||
"connectionId": "ssh-1",
|
||||
"displayName": "Remote",
|
||||
"id": "repo-2"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ssh.listTargetSummaries#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ssh.listTargetSummaries"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"targets": [
|
||||
{
|
||||
"id": "ssh-1",
|
||||
"label": "SSH"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "settings disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "host.platform#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "host.platform"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"platform": "linux"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"2bf0f26c9185": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"3d1e2998e81c": [
|
||||
{
|
||||
"name": "repoColorsByName",
|
||||
"value": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoIconsByName",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "repoIdsByName",
|
||||
"value": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoHostIdByRepoId",
|
||||
"value": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
]
|
||||
}
|
||||
],
|
||||
"6134b73f18d0": {
|
||||
"repoColorsByName": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
],
|
||||
"repoHostIdByRepoId": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
],
|
||||
"repoIconsByName": [],
|
||||
"repoIdsByName": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
"83ef5f7039bf": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "ssh.listTargetSummaries#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"ssh.listTargetSummaries\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "host.platform#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"host.platform\"}"
|
||||
}
|
||||
],
|
||||
"e91286279b33": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"load": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"ec7bb9cef277": [
|
||||
{
|
||||
"name": "repoColorsByName",
|
||||
"value": [
|
||||
["Local", "#6366f1"],
|
||||
["Remote", "#f97316"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoIconsByName",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "repoIdsByName",
|
||||
"value": [
|
||||
["Local", "repo-1"],
|
||||
["Remote", "repo-2"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "repoHostIdByRepoId",
|
||||
"value": [
|
||||
["repo-1", "local"],
|
||||
["repo-2", "ssh:ssh-1"]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "hostLabelById",
|
||||
"value": [["ssh:ssh-1", "SSH"]]
|
||||
},
|
||||
{
|
||||
"name": "hostPlatform",
|
||||
"value": "linux"
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-repo-metadata-transport-error",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "0837485f8127",
|
||||
"payloads": "83ef5f7039bf",
|
||||
"settlements": "e91286279b33",
|
||||
"state": "6134b73f18d0",
|
||||
"effects": "3d1e2998e81c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "148d92080e35",
|
||||
"payloads": "83ef5f7039bf",
|
||||
"settlements": "2bf0f26c9185",
|
||||
"state": "071880b671a1",
|
||||
"effects": "ec7bb9cef277"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,414 @@
|
||||
{
|
||||
"operation": "settings.resume-metadata",
|
||||
"family": "settings.resume-metadata",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"1f0e36a0a4b5": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "folderWorkspace.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "folderWorkspace.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"folderWorkspaces": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectGroup.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "projectGroup.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"groups": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "worktree.ps#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "worktree.ps"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 10000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4f53cda18c2b": [],
|
||||
"65c557da4079": {
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"folderWorkspaces": [],
|
||||
"projectGroups": [],
|
||||
"repos": [],
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
},
|
||||
"worktrees": []
|
||||
}
|
||||
}
|
||||
},
|
||||
"7c1aad2b38f8": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "folderWorkspace.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "folderWorkspace.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"folderWorkspaces": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectGroup.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "projectGroup.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"groups": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "worktree.ps#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "worktree.ps"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 10000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-5",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"worktrees": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"979c190bfe01": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "folderWorkspace.list#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"folderWorkspace.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "projectGroup.list#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"projectGroup.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "worktree.ps#1",
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.ps\",\"params\":{\"limit\":10000,\"supportsWorktreeVisibilitySourceDefaults\":true}}"
|
||||
}
|
||||
],
|
||||
"b11c8efab170": {
|
||||
"load": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-resume-metadata-fulfilled",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f0e36a0a4b5",
|
||||
"payloads": "979c190bfe01",
|
||||
"settlements": "b11c8efab170",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "7c1aad2b38f8",
|
||||
"payloads": "979c190bfe01",
|
||||
"settlements": "65c557da4079",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,405 @@
|
||||
{
|
||||
"operation": "settings.resume-metadata",
|
||||
"family": "settings.resume-metadata",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"111461dd9433": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "folderWorkspace.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "folderWorkspace.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"folderWorkspaces": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectGroup.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "projectGroup.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"groups": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"error": {
|
||||
"code": "refused",
|
||||
"message": "settings refused"
|
||||
},
|
||||
"id": "frame-4",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "worktree.ps#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "worktree.ps"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 10000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-5",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"worktrees": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"1f0e36a0a4b5": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "folderWorkspace.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "folderWorkspace.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"folderWorkspaces": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectGroup.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "projectGroup.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"groups": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "worktree.ps#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "worktree.ps"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 10000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4ef7f873c93e": {
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"folderWorkspaces": [],
|
||||
"projectGroups": [],
|
||||
"repos": [],
|
||||
"settings": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"worktrees": []
|
||||
}
|
||||
}
|
||||
},
|
||||
"4f53cda18c2b": [],
|
||||
"979c190bfe01": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "folderWorkspace.list#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"folderWorkspace.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "projectGroup.list#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"projectGroup.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "worktree.ps#1",
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.ps\",\"params\":{\"limit\":10000,\"supportsWorktreeVisibilitySourceDefaults\":true}}"
|
||||
}
|
||||
],
|
||||
"b11c8efab170": {
|
||||
"load": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-resume-metadata-refused",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f0e36a0a4b5",
|
||||
"payloads": "979c190bfe01",
|
||||
"settlements": "b11c8efab170",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "111461dd9433",
|
||||
"payloads": "979c190bfe01",
|
||||
"settlements": "4ef7f873c93e",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,402 @@
|
||||
{
|
||||
"operation": "settings.resume-metadata",
|
||||
"family": "settings.resume-metadata",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"059fe1eb42cb": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "folderWorkspace.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "folderWorkspace.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"folderWorkspaces": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectGroup.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "projectGroup.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"groups": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "settings disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "worktree.ps#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "worktree.ps"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 10000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-5",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"worktrees": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"1f0e36a0a4b5": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "repo.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"repos": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "folderWorkspace.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "folderWorkspace.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"folderWorkspaces": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectGroup.list#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "projectGroup.list"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"groups": []
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "worktree.ps#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "worktree.ps"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"limit": 10000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"timeoutMs": 30000
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"44136fa355b3": {},
|
||||
"4ef7f873c93e": {
|
||||
"load": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"folderWorkspaces": [],
|
||||
"projectGroups": [],
|
||||
"repos": [],
|
||||
"settings": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"worktrees": []
|
||||
}
|
||||
}
|
||||
},
|
||||
"4f53cda18c2b": [],
|
||||
"979c190bfe01": [
|
||||
{
|
||||
"name": "repo.list#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"repo.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "folderWorkspace.list#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"folderWorkspace.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "projectGroup.list#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"projectGroup.list\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "worktree.ps#1",
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.ps\",\"params\":{\"limit\":10000,\"supportsWorktreeVisibilitySourceDefaults\":true}}"
|
||||
}
|
||||
],
|
||||
"b11c8efab170": {
|
||||
"load": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-resume-metadata-transport-error",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f0e36a0a4b5",
|
||||
"payloads": "979c190bfe01",
|
||||
"settlements": "b11c8efab170",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "059fe1eb42cb",
|
||||
"payloads": "979c190bfe01",
|
||||
"settlements": "4ef7f873c93e",
|
||||
"state": "44136fa355b3",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,875 @@
|
||||
{
|
||||
"operation": "settings.task-hydration",
|
||||
"family": "settings.task-hydration",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"4345d70c756e": [
|
||||
{
|
||||
"name": "status.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"ui.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
}
|
||||
],
|
||||
"58c52d8b7c76": {
|
||||
"hydrated": true,
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
},
|
||||
"5a9cc1957824": [
|
||||
{
|
||||
"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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"ui": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-5",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"8574a5791dce": [
|
||||
{
|
||||
"name": "taskStateHydrated",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "tasksSupportState",
|
||||
"value": {
|
||||
"client": "logical-client",
|
||||
"kind": "unknown"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "showLinearWorkspacePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearTeamPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearGroupPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearOrderPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearDisplayPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearConnect",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showProviderPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubKindPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubPresetPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitLabViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitLabFilterPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearFilterPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showSortPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showRepoPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubIssueSourcePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubPagePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectSortPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectFieldsPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "pendingGitHubProjectViewSelection",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "actionItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRowItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRepoNotInOrca",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "detailPayload",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetail",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "showCreateTask",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showCreateTargetPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "linearStatusPickerItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingHostedMerge",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingProjectGitHubMerge",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingHostedStateChange",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mergeMethodTaskItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mergeMethodProjectRow",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "reset-workspace",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "tasksSupportState",
|
||||
"value": {
|
||||
"client": "logical-client",
|
||||
"kind": "supported"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"name": "runtimeTaskSettings",
|
||||
"value": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "trustedOrcaHooks",
|
||||
"value": {}
|
||||
},
|
||||
{
|
||||
"name": "githubProjectHiddenFieldIdsByView",
|
||||
"value": {}
|
||||
},
|
||||
{
|
||||
"name": "linearConnected",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "linearWorkspaces",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "linearTeams",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "selectedLinearTeamIds",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "selectedLinearWorkspaceId",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "visibleProviders",
|
||||
"value": ["github", "linear"]
|
||||
},
|
||||
{
|
||||
"name": "provider",
|
||||
"value": "github"
|
||||
},
|
||||
{
|
||||
"name": "githubMode",
|
||||
"value": "items"
|
||||
},
|
||||
{
|
||||
"name": "defaultGitHubPreset",
|
||||
"value": "issues"
|
||||
},
|
||||
{
|
||||
"name": "githubPreset",
|
||||
"value": "issues"
|
||||
},
|
||||
{
|
||||
"name": "githubKind",
|
||||
"value": "issues"
|
||||
},
|
||||
{
|
||||
"name": "linearFilter",
|
||||
"value": "all"
|
||||
},
|
||||
{
|
||||
"name": "githubProjectSettings",
|
||||
"value": {
|
||||
"activeProject": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"lastViewByProject": {},
|
||||
"pinned": [],
|
||||
"recent": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "query",
|
||||
"value": "is:issue is:open"
|
||||
},
|
||||
{
|
||||
"name": "appliedQuery",
|
||||
"value": "is:issue is:open"
|
||||
},
|
||||
{
|
||||
"name": "taskStateHydrated",
|
||||
"value": true
|
||||
}
|
||||
],
|
||||
"c3f33d88e338": [
|
||||
{
|
||||
"name": "taskStateHydrated",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "tasksSupportState",
|
||||
"value": {
|
||||
"client": "logical-client",
|
||||
"kind": "unknown"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "showLinearWorkspacePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearTeamPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearGroupPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearOrderPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearDisplayPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearConnect",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showProviderPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubKindPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubPresetPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitLabViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitLabFilterPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearFilterPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showSortPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showRepoPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubIssueSourcePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubPagePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectSortPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectFieldsPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "pendingGitHubProjectViewSelection",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "actionItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRowItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRepoNotInOrca",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "detailPayload",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetail",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "showCreateTask",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showCreateTargetPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "linearStatusPickerItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingHostedMerge",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingProjectGitHubMerge",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingHostedStateChange",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mergeMethodTaskItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mergeMethodProjectRow",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "reset-workspace",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "tasksSupportState",
|
||||
"value": {
|
||||
"client": "logical-client",
|
||||
"kind": "supported"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"c6178e6a0f4e": {
|
||||
"hydrated": false,
|
||||
"settings": {}
|
||||
},
|
||||
"e71a3d7fabe9": [
|
||||
{
|
||||
"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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-task-hydration-fulfilled",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "e71a3d7fabe9",
|
||||
"payloads": "4345d70c756e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "c6178e6a0f4e",
|
||||
"effects": "c3f33d88e338"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "5a9cc1957824",
|
||||
"payloads": "4345d70c756e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "58c52d8b7c76",
|
||||
"effects": "8574a5791dce"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,858 @@
|
||||
{
|
||||
"operation": "settings.task-hydration",
|
||||
"family": "settings.task-hydration",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"4345d70c756e": [
|
||||
{
|
||||
"name": "status.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"ui.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
}
|
||||
],
|
||||
"69474d6e5c50": [
|
||||
{
|
||||
"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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "settings refused"
|
||||
},
|
||||
"id": "frame-2",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"ui": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-5",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"963a91c532c8": {
|
||||
"hydrated": true,
|
||||
"settings": {}
|
||||
},
|
||||
"c3f33d88e338": [
|
||||
{
|
||||
"name": "taskStateHydrated",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "tasksSupportState",
|
||||
"value": {
|
||||
"client": "logical-client",
|
||||
"kind": "unknown"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "showLinearWorkspacePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearTeamPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearGroupPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearOrderPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearDisplayPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearConnect",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showProviderPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubKindPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubPresetPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitLabViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitLabFilterPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearFilterPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showSortPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showRepoPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubIssueSourcePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubPagePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectSortPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectFieldsPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "pendingGitHubProjectViewSelection",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "actionItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRowItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRepoNotInOrca",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "detailPayload",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetail",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "showCreateTask",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showCreateTargetPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "linearStatusPickerItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingHostedMerge",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingProjectGitHubMerge",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingHostedStateChange",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mergeMethodTaskItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mergeMethodProjectRow",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "reset-workspace",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "tasksSupportState",
|
||||
"value": {
|
||||
"client": "logical-client",
|
||||
"kind": "supported"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"c479baa4b17d": [
|
||||
{
|
||||
"name": "taskStateHydrated",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "tasksSupportState",
|
||||
"value": {
|
||||
"client": "logical-client",
|
||||
"kind": "unknown"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "showLinearWorkspacePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearTeamPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearGroupPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearOrderPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearDisplayPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearConnect",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showProviderPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubKindPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubPresetPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitLabViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitLabFilterPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearFilterPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showSortPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showRepoPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubIssueSourcePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubPagePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectSortPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectFieldsPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "pendingGitHubProjectViewSelection",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "actionItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRowItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRepoNotInOrca",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "detailPayload",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetail",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "showCreateTask",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showCreateTargetPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "linearStatusPickerItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingHostedMerge",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingProjectGitHubMerge",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingHostedStateChange",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mergeMethodTaskItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mergeMethodProjectRow",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "reset-workspace",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "tasksSupportState",
|
||||
"value": {
|
||||
"client": "logical-client",
|
||||
"kind": "supported"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"name": "runtimeTaskSettings",
|
||||
"value": {}
|
||||
},
|
||||
{
|
||||
"name": "trustedOrcaHooks",
|
||||
"value": {}
|
||||
},
|
||||
{
|
||||
"name": "githubProjectHiddenFieldIdsByView",
|
||||
"value": {}
|
||||
},
|
||||
{
|
||||
"name": "linearConnected",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "linearWorkspaces",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "linearTeams",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "selectedLinearTeamIds",
|
||||
"value": []
|
||||
},
|
||||
{
|
||||
"name": "selectedLinearWorkspaceId",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "visibleProviders",
|
||||
"value": ["github", "linear"]
|
||||
},
|
||||
{
|
||||
"name": "provider",
|
||||
"value": "github"
|
||||
},
|
||||
{
|
||||
"name": "githubMode",
|
||||
"value": "items"
|
||||
},
|
||||
{
|
||||
"name": "defaultGitHubPreset",
|
||||
"value": "issues"
|
||||
},
|
||||
{
|
||||
"name": "githubPreset",
|
||||
"value": "issues"
|
||||
},
|
||||
{
|
||||
"name": "githubKind",
|
||||
"value": "issues"
|
||||
},
|
||||
{
|
||||
"name": "linearFilter",
|
||||
"value": "all"
|
||||
},
|
||||
{
|
||||
"name": "githubProjectSettings",
|
||||
"value": {
|
||||
"activeProject": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"lastViewByProject": {},
|
||||
"pinned": [],
|
||||
"recent": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "query",
|
||||
"value": "is:issue is:open"
|
||||
},
|
||||
{
|
||||
"name": "appliedQuery",
|
||||
"value": "is:issue is:open"
|
||||
},
|
||||
{
|
||||
"name": "taskStateHydrated",
|
||||
"value": true
|
||||
}
|
||||
],
|
||||
"c6178e6a0f4e": {
|
||||
"hydrated": false,
|
||||
"settings": {}
|
||||
},
|
||||
"e71a3d7fabe9": [
|
||||
{
|
||||
"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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-task-hydration-refused",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "e71a3d7fabe9",
|
||||
"payloads": "4345d70c756e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "c6178e6a0f4e",
|
||||
"effects": "c3f33d88e338"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "69474d6e5c50",
|
||||
"payloads": "4345d70c756e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "963a91c532c8",
|
||||
"effects": "c479baa4b17d"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,774 @@
|
||||
{
|
||||
"operation": "settings.task-hydration",
|
||||
"family": "settings.task-hydration",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"4345d70c756e": [
|
||||
{
|
||||
"name": "status.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"ui.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
}
|
||||
],
|
||||
"4908672a6114": [
|
||||
{
|
||||
"name": "taskStateHydrated",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "tasksSupportState",
|
||||
"value": {
|
||||
"client": "logical-client",
|
||||
"kind": "unknown"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "showLinearWorkspacePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearTeamPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearGroupPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearOrderPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearDisplayPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearConnect",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showProviderPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubKindPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubPresetPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitLabViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitLabFilterPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearFilterPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showSortPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showRepoPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubIssueSourcePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubPagePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectSortPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectFieldsPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "pendingGitHubProjectViewSelection",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "actionItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRowItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRepoNotInOrca",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "detailPayload",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetail",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "showCreateTask",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showCreateTargetPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "linearStatusPickerItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingHostedMerge",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingProjectGitHubMerge",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingHostedStateChange",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mergeMethodTaskItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mergeMethodProjectRow",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "reset-workspace",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "tasksSupportState",
|
||||
"value": {
|
||||
"client": "logical-client",
|
||||
"kind": "supported"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": "settings disconnected"
|
||||
},
|
||||
{
|
||||
"name": "taskStateHydrated",
|
||||
"value": false
|
||||
}
|
||||
],
|
||||
"b6ff724ea992": [
|
||||
{
|
||||
"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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "settings disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"ui": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-5",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"c3f33d88e338": [
|
||||
{
|
||||
"name": "taskStateHydrated",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "tasksSupportState",
|
||||
"value": {
|
||||
"client": "logical-client",
|
||||
"kind": "unknown"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "showLinearWorkspacePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearTeamPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearGroupPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearOrderPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearDisplayPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearConnect",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showProviderPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubKindPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubPresetPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitLabViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitLabFilterPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showLinearFilterPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showSortPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showRepoPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubIssueSourcePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubPagePicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectViewPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectSortPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showGitHubProjectFieldsPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "pendingGitHubProjectViewSelection",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "actionItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRowItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRepoNotInOrca",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "detailPayload",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "projectRowDetail",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "showCreateTask",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "showCreateTargetPicker",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "linearStatusPickerItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingHostedMerge",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingProjectGitHubMerge",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "pendingHostedStateChange",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mergeMethodTaskItem",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mergeMethodProjectRow",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "reset-workspace",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "tasksSupportState",
|
||||
"value": {
|
||||
"client": "logical-client",
|
||||
"kind": "supported"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"c6178e6a0f4e": {
|
||||
"hydrated": false,
|
||||
"settings": {}
|
||||
},
|
||||
"e71a3d7fabe9": [
|
||||
{
|
||||
"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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-task-hydration-transport-error",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "e71a3d7fabe9",
|
||||
"payloads": "4345d70c756e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "c6178e6a0f4e",
|
||||
"effects": "c3f33d88e338"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "b6ff724ea992",
|
||||
"payloads": "4345d70c756e",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "c6178e6a0f4e",
|
||||
"effects": "4908672a6114"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,214 @@
|
||||
{
|
||||
"operation": "settings.task-workspace",
|
||||
"family": "settings.task-workspace",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0ffb818cf79c": [
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": "linear:1"
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"name": "runtimeTaskSettings",
|
||||
"value": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "workspaceAgent",
|
||||
"value": "codex"
|
||||
},
|
||||
{
|
||||
"name": "workspaceAgentOverridden",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": "Selected agent is disabled. Choose an enabled agent before creating."
|
||||
},
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
}
|
||||
],
|
||||
"1f2f2a0a5737": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"6dfef4ef572b": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"7abdfe20af50": {
|
||||
"creating": "linear:1",
|
||||
"error": "",
|
||||
"settings": {
|
||||
"disabledTuiAgents": ["claude"]
|
||||
}
|
||||
},
|
||||
"8b8197eed660": {
|
||||
"creating": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"error": "Selected agent is disabled. Choose an enabled agent before creating.",
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
},
|
||||
"9e493785145e": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"a7af6ac4ce05": [
|
||||
{
|
||||
"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": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"b05ebf557542": [
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": "linear:1"
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"f117d93cf44a": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-task-workspace-fulfilled",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "f117d93cf44a",
|
||||
"state": "7abdfe20af50",
|
||||
"effects": "b05ebf557542"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "a7af6ac4ce05",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "8b8197eed660",
|
||||
"effects": "0ffb818cf79c"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,195 @@
|
||||
{
|
||||
"operation": "settings.task-workspace",
|
||||
"family": "settings.task-workspace",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"16043f76be6c": [
|
||||
{
|
||||
"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": "settings refused"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"1f2f2a0a5737": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"236832733364": [
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": "linear:1"
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"name": "workspaceAgent",
|
||||
"value": "codex"
|
||||
},
|
||||
{
|
||||
"name": "workspaceAgentOverridden",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": "Selected agent is disabled. Choose an enabled agent before creating."
|
||||
},
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
}
|
||||
],
|
||||
"6dfef4ef572b": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"7abdfe20af50": {
|
||||
"creating": "linear:1",
|
||||
"error": "",
|
||||
"settings": {
|
||||
"disabledTuiAgents": ["claude"]
|
||||
}
|
||||
},
|
||||
"9e493785145e": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"b05ebf557542": [
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": "linear:1"
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"d5df3f6b123a": {
|
||||
"creating": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"error": "Selected agent is disabled. Choose an enabled agent before creating.",
|
||||
"settings": {
|
||||
"disabledTuiAgents": ["claude"]
|
||||
}
|
||||
},
|
||||
"f117d93cf44a": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-task-workspace-refused",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "f117d93cf44a",
|
||||
"state": "7abdfe20af50",
|
||||
"effects": "b05ebf557542"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "16043f76be6c",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "d5df3f6b123a",
|
||||
"effects": "236832733364"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,192 @@
|
||||
{
|
||||
"operation": "settings.task-workspace",
|
||||
"family": "settings.task-workspace",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"1f2f2a0a5737": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"236832733364": [
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": "linear:1"
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"name": "workspaceAgent",
|
||||
"value": "codex"
|
||||
},
|
||||
{
|
||||
"name": "workspaceAgentOverridden",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": "Selected agent is disabled. Choose an enabled agent before creating."
|
||||
},
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": {
|
||||
"$rpc": "null"
|
||||
}
|
||||
}
|
||||
],
|
||||
"6dfef4ef572b": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"7abdfe20af50": {
|
||||
"creating": "linear:1",
|
||||
"error": "",
|
||||
"settings": {
|
||||
"disabledTuiAgents": ["claude"]
|
||||
}
|
||||
},
|
||||
"9e493785145e": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"b05ebf557542": [
|
||||
{
|
||||
"name": "creatingKey",
|
||||
"value": "linear:1"
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"d069f81df435": [
|
||||
{
|
||||
"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": "settings disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"d5df3f6b123a": {
|
||||
"creating": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"error": "Selected agent is disabled. Choose an enabled agent before creating.",
|
||||
"settings": {
|
||||
"disabledTuiAgents": ["claude"]
|
||||
}
|
||||
},
|
||||
"f117d93cf44a": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-task-workspace-transport-error",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "f117d93cf44a",
|
||||
"state": "7abdfe20af50",
|
||||
"effects": "b05ebf557542"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "d069f81df435",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "d5df3f6b123a",
|
||||
"effects": "236832733364"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
{
|
||||
"operation": "settings.task-preferences",
|
||||
"family": "settings-best-effort",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"1e0992e3ef1e": [
|
||||
{
|
||||
"name": "settings.update#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.update"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"defaultTaskViewPreset": "assigned"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "write disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"5db909d58c6f": {
|
||||
"preset": "assigned"
|
||||
},
|
||||
"a4cc6c82ee53": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"write": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"b26f6d594d62": [
|
||||
{
|
||||
"name": "defaultGitHubPreset",
|
||||
"value": "assigned"
|
||||
}
|
||||
],
|
||||
"c48c361670b0": [
|
||||
{
|
||||
"name": "settings.update#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.update\",\"params\":{\"defaultTaskViewPreset\":\"assigned\"}}"
|
||||
}
|
||||
],
|
||||
"e02c44633084": [
|
||||
{
|
||||
"name": "settings.update#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.update"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"defaultTaskViewPreset": "assigned"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-task-write",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "optimistic",
|
||||
"observation": {
|
||||
"sender": "e02c44633084",
|
||||
"payloads": "c48c361670b0",
|
||||
"settlements": "a4cc6c82ee53",
|
||||
"state": "5db909d58c6f",
|
||||
"effects": "b26f6d594d62"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "1e0992e3ef1e",
|
||||
"payloads": "c48c361670b0",
|
||||
"settlements": "a4cc6c82ee53",
|
||||
"state": "5db909d58c6f",
|
||||
"effects": "b26f6d594d62"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,331 @@
|
||||
{
|
||||
"operation": "settings.workspace-context",
|
||||
"family": "settings.workspace-context",
|
||||
"namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"2a7485a88169": {
|
||||
"providers": ["github"],
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
},
|
||||
"trust": {}
|
||||
},
|
||||
"4f53cda18c2b": [],
|
||||
"7076fb41232c": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"ui.get\"}"
|
||||
}
|
||||
],
|
||||
"7e236d701bd4": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"edae57429e34": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"ui": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"f6a09f8c5b85": {
|
||||
"providers": [],
|
||||
"settings": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"trust": {}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-workspace-context-fulfilled",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "7e236d701bd4",
|
||||
"payloads": "7076fb41232c",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "f6a09f8c5b85",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "edae57429e34",
|
||||
"payloads": "7076fb41232c",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "2a7485a88169",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,940 @@
|
||||
{
|
||||
"operation": "settings.workspace-context",
|
||||
"family": "settings.workspace-context",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"2a7485a88169": {
|
||||
"providers": ["github"],
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
},
|
||||
"trust": {}
|
||||
},
|
||||
"3ee7bea0470d": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"blur": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"revisit": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"4f53cda18c2b": [],
|
||||
"60fdc69b3ee5": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"ui": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "settings.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"7076fb41232c": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"ui.get\"}"
|
||||
}
|
||||
],
|
||||
"7d7f0d2cb674": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"ui.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#2",
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#2",
|
||||
"json": "{\"id\":\"frame-6\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"json": "{\"id\":\"frame-7\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "ui.get#2",
|
||||
"json": "{\"id\":\"frame-8\",\"deviceToken\":\"recording-device\",\"method\":\"ui.get\"}"
|
||||
}
|
||||
],
|
||||
"7e236d701bd4": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"d5bfc5b033a8": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"ui": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preflight.check#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-5",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-6",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "settings.get#2",
|
||||
"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": "settings refused"
|
||||
},
|
||||
"id": "frame-7",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#2",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-8",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"ui": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"edae57429e34": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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-3",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"ui": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"f6a09f8c5b85": {
|
||||
"providers": [],
|
||||
"settings": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"trust": {}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-workspace-context-refuse-after-data",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "7e236d701bd4",
|
||||
"payloads": "7076fb41232c",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "f6a09f8c5b85",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "edae57429e34",
|
||||
"payloads": "7076fb41232c",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "2a7485a88169",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "data-present",
|
||||
"observation": {
|
||||
"sender": "edae57429e34",
|
||||
"payloads": "7076fb41232c",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "2a7485a88169",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "refresh-pending",
|
||||
"observation": {
|
||||
"sender": "60fdc69b3ee5",
|
||||
"payloads": "7d7f0d2cb674",
|
||||
"settlements": "3ee7bea0470d",
|
||||
"state": "2a7485a88169",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "refused-after-data",
|
||||
"observation": {
|
||||
"sender": "d5bfc5b033a8",
|
||||
"payloads": "7d7f0d2cb674",
|
||||
"settlements": "3ee7bea0470d",
|
||||
"state": "2a7485a88169",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,322 @@
|
||||
{
|
||||
"operation": "settings.workspace-context",
|
||||
"family": "settings.workspace-context",
|
||||
"namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"3a834cb85dd8": {
|
||||
"providers": ["github"],
|
||||
"settings": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"trust": {}
|
||||
},
|
||||
"4f53cda18c2b": [],
|
||||
"7076fb41232c": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"ui.get\"}"
|
||||
}
|
||||
],
|
||||
"7e236d701bd4": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"96691837821b": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "settings refused"
|
||||
},
|
||||
"id": "frame-3",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"ui": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"f6a09f8c5b85": {
|
||||
"providers": [],
|
||||
"settings": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"trust": {}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-workspace-context-refused",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "7e236d701bd4",
|
||||
"payloads": "7076fb41232c",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "f6a09f8c5b85",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "96691837821b",
|
||||
"payloads": "7076fb41232c",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "3a834cb85dd8",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,319 @@
|
||||
{
|
||||
"operation": "settings.workspace-context",
|
||||
"family": "settings.workspace-context",
|
||||
"namedDeltas": ["new-workspace-runtime-context-null-settings-typeerror"],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0131611322e3": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"3a834cb85dd8": {
|
||||
"providers": ["github"],
|
||||
"settings": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"trust": {}
|
||||
},
|
||||
"4f53cda18c2b": [],
|
||||
"7076fb41232c": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"preflight.check\"}"
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"linear.status\"}"
|
||||
},
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-3\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"ui.get\"}"
|
||||
}
|
||||
],
|
||||
"7e236d701bd4": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"86f1b091bb72": [
|
||||
{
|
||||
"name": "preflight.check#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "preflight.check"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-1",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"glab": {
|
||||
"installed": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "linear.status#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "linear.status"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-2",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"connected": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "settings disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ui.get#1",
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "ui.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"ui": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"f6a09f8c5b85": {
|
||||
"providers": [],
|
||||
"settings": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"trust": {}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-workspace-context-transport-error",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "7e236d701bd4",
|
||||
"payloads": "7076fb41232c",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "f6a09f8c5b85",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "86f1b091bb72",
|
||||
"payloads": "7076fb41232c",
|
||||
"settlements": "0131611322e3",
|
||||
"state": "3a834cb85dd8",
|
||||
"effects": "4f53cda18c2b"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
{
|
||||
"operation": "settings.workspace-submit",
|
||||
"family": "settings.workspace-submit",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"13c996e4ec2b": {
|
||||
"creating": true,
|
||||
"error": "",
|
||||
"settings": {
|
||||
"disabledTuiAgents": ["claude"]
|
||||
}
|
||||
},
|
||||
"1f2f2a0a5737": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"5efbd884ea5a": {
|
||||
"creating": false,
|
||||
"error": "Selected agent is disabled. Choose an enabled agent before creating.",
|
||||
"settings": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
},
|
||||
"6dfef4ef572b": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"9db655095867": [
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"name": "runtimeSettings",
|
||||
"value": {
|
||||
"defaultTuiAgent": "codex",
|
||||
"disabledTuiAgents": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "selectedAgent",
|
||||
"value": {
|
||||
"id": "codex",
|
||||
"label": "Codex"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "agentOverridden",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": "Selected agent is disabled. Choose an enabled agent before creating."
|
||||
}
|
||||
],
|
||||
"9e493785145e": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"a7af6ac4ce05": [
|
||||
{
|
||||
"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": ["claude"],
|
||||
"hostSettingOverrides": {},
|
||||
"prBotAuthorOverrides": ["bot-user"],
|
||||
"visibleTaskProviders": ["github", "linear"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"c0cb3df4feef": [
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"f117d93cf44a": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-workspace-submit-fulfilled",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "f117d93cf44a",
|
||||
"state": "13c996e4ec2b",
|
||||
"effects": "c0cb3df4feef"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "a7af6ac4ce05",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "5efbd884ea5a",
|
||||
"effects": "9db655095867"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,182 @@
|
||||
{
|
||||
"operation": "settings.workspace-submit",
|
||||
"family": "settings.workspace-submit",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0e315dbfe7a8": [
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"name": "selectedAgent",
|
||||
"value": {
|
||||
"id": "codex",
|
||||
"label": "Codex"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "agentOverridden",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": "Selected agent is disabled. Choose an enabled agent before creating."
|
||||
}
|
||||
],
|
||||
"13c996e4ec2b": {
|
||||
"creating": true,
|
||||
"error": "",
|
||||
"settings": {
|
||||
"disabledTuiAgents": ["claude"]
|
||||
}
|
||||
},
|
||||
"16043f76be6c": [
|
||||
{
|
||||
"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": "settings refused"
|
||||
},
|
||||
"id": "frame-1",
|
||||
"ok": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"1f2f2a0a5737": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"2e8e352c8dd1": {
|
||||
"creating": false,
|
||||
"error": "Selected agent is disabled. Choose an enabled agent before creating.",
|
||||
"settings": {
|
||||
"disabledTuiAgents": ["claude"]
|
||||
}
|
||||
},
|
||||
"6dfef4ef572b": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"9e493785145e": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"c0cb3df4feef": [
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"f117d93cf44a": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-workspace-submit-refused",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "f117d93cf44a",
|
||||
"state": "13c996e4ec2b",
|
||||
"effects": "c0cb3df4feef"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "16043f76be6c",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "2e8e352c8dd1",
|
||||
"effects": "0e315dbfe7a8"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,179 @@
|
||||
{
|
||||
"operation": "settings.workspace-submit",
|
||||
"family": "settings.workspace-submit",
|
||||
"namedDeltas": [],
|
||||
"runnerVersion": 1,
|
||||
"baseline": "aba77d5babfeb3988a8ad39a16a1bc5af86ebf80",
|
||||
"lockfileSha256": "788c1234b38a61fc882fca292341fce6690deee9cc6695673b0575cf2c4cf571",
|
||||
"recorderSha256": "70e4ea4590f92a02dd93cf9212d0160f9bc194fbd59eee746c917e9dc42c5718",
|
||||
"platform": "darwin",
|
||||
"scenarioVersion": 1,
|
||||
"projectionVersion": 2,
|
||||
"goldenFormatVersion": 2,
|
||||
"values": {
|
||||
"0e315dbfe7a8": [
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
},
|
||||
{
|
||||
"name": "selectedAgent",
|
||||
"value": {
|
||||
"id": "codex",
|
||||
"label": "Codex"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "agentOverridden",
|
||||
"value": false
|
||||
},
|
||||
{
|
||||
"name": "error",
|
||||
"value": "Selected agent is disabled. Choose an enabled agent before creating."
|
||||
}
|
||||
],
|
||||
"13c996e4ec2b": {
|
||||
"creating": true,
|
||||
"error": "",
|
||||
"settings": {
|
||||
"disabledTuiAgents": ["claude"]
|
||||
}
|
||||
},
|
||||
"1f2f2a0a5737": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
],
|
||||
"2e8e352c8dd1": {
|
||||
"creating": false,
|
||||
"error": "Selected agent is disabled. Choose an enabled agent before creating.",
|
||||
"settings": {
|
||||
"disabledTuiAgents": ["claude"]
|
||||
}
|
||||
},
|
||||
"6dfef4ef572b": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
}
|
||||
},
|
||||
"9e493785145e": [
|
||||
{
|
||||
"name": "settings.get#1",
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"settings.get\"}"
|
||||
}
|
||||
],
|
||||
"c0cb3df4feef": [
|
||||
{
|
||||
"name": "error",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"d069f81df435": [
|
||||
{
|
||||
"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": "settings disconnected",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"f117d93cf44a": {
|
||||
"mount": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"submit": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
"scenario": "settings-workspace-submit-transport-error",
|
||||
"checkpoints": [
|
||||
{
|
||||
"id": "settings-pending",
|
||||
"observation": {
|
||||
"sender": "1f2f2a0a5737",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "f117d93cf44a",
|
||||
"state": "13c996e4ec2b",
|
||||
"effects": "c0cb3df4feef"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "settled",
|
||||
"observation": {
|
||||
"sender": "d069f81df435",
|
||||
"payloads": "9e493785145e",
|
||||
"settlements": "6dfef4ef572b",
|
||||
"state": "2e8e352c8dd1",
|
||||
"effects": "0e315dbfe7a8"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
diff --git a/mobile/scripts/mock-server-rpc-handlers.ts b/mobile/scripts/mock-server-rpc-handlers.ts
|
||||
index f67db5bc2f2..5049bd9d143 100644
|
||||
--- a/mobile/scripts/mock-server-rpc-handlers.ts
|
||||
+++ b/mobile/scripts/mock-server-rpc-handlers.ts
|
||||
@@ -165,17 +165,37 @@ export function handleRequest(
|
||||
respond(success(request.id, { repos: FAKE_REPOS }))
|
||||
break
|
||||
|
||||
- case 'settings.get':
|
||||
- respond(
|
||||
- success(request.id, {
|
||||
- settings: {
|
||||
- defaultTuiAgent: 'codex',
|
||||
- disabledTuiAgents: [],
|
||||
- agentCmdOverrides: {}
|
||||
- }
|
||||
- })
|
||||
- )
|
||||
+ case 'settings.get': {
|
||||
+ // MOCK_SETTINGS_GET_MODE drives runtime validation of the refusal/null/absent branches.
|
||||
+ const mode = process.env.MOCK_SETTINGS_GET_MODE ?? 'ok'
|
||||
+ if (mode === 'refused') {
|
||||
+ respond(error(request.id, 'refused', 'settings refused'))
|
||||
+ } else if (mode === 'method-not-found') {
|
||||
+ respond(error(request.id, 'method_not_found', 'Unknown method'))
|
||||
+ } else if (mode === 'null-result') {
|
||||
+ respond(success(request.id, null))
|
||||
+ } else if (mode === 'absent-result') {
|
||||
+ const resp = success(request.id, undefined)
|
||||
+ delete (resp as { result?: unknown }).result
|
||||
+ respond(resp)
|
||||
+ } else if (mode === 'absent-settings') {
|
||||
+ respond(success(request.id, {}))
|
||||
+ } else if (mode === 'drop') {
|
||||
+ // Mid-request disconnect: never answer, then close the socket.
|
||||
+ setTimeout(() => ws.close(), 50)
|
||||
+ } else {
|
||||
+ respond(
|
||||
+ success(request.id, {
|
||||
+ settings: {
|
||||
+ defaultTuiAgent: 'codex',
|
||||
+ disabledTuiAgents: [],
|
||||
+ agentCmdOverrides: {}
|
||||
+ }
|
||||
+ })
|
||||
+ )
|
||||
+ }
|
||||
break
|
||||
+ }
|
||||
|
||||
case 'settings.getTerminalQuickCommands':
|
||||
respond(success(request.id, { terminalQuickCommands: fakeQuickCommands }))
|
||||
@@ -0,0 +1,130 @@
|
||||
// Runtime probe: real mock-desktop settings.get replies through the migrated acceptance layer.
|
||||
import WebSocket from 'ws'
|
||||
import nacl from 'tweetnacl'
|
||||
import { readFileSync } from 'node:fs'
|
||||
import { deriveSharedKey, e2eeDecrypt, e2eeEncrypt } from '../../scripts/mock-server-encryption.ts'
|
||||
import {
|
||||
botOverridesRead,
|
||||
newTabSettingsRead,
|
||||
optionalSettingsRead,
|
||||
settingsRead
|
||||
} from '../../src/transport/settings-read-operations.ts'
|
||||
|
||||
const PORT = Number(process.env.PORT) || 6768
|
||||
const KEY_FILE = process.env.MOCK_SERVER_KEY_FILE!
|
||||
const serverPublic = nacl.box.keyPair.fromSecretKey(
|
||||
Uint8Array.from(Buffer.from(readFileSync(KEY_FILE, 'utf-8').trim(), 'base64'))
|
||||
).publicKey
|
||||
|
||||
function rawReply(): Promise<unknown> {
|
||||
const kp = nacl.box.keyPair()
|
||||
const key = deriveSharedKey(kp.secretKey, serverPublic)
|
||||
const ws = new WebSocket(`ws://127.0.0.1:${PORT}`)
|
||||
return new Promise((resolve, reject) => {
|
||||
let settled = false
|
||||
const finish = (value: unknown) => {
|
||||
if (!settled) {
|
||||
settled = true
|
||||
try {
|
||||
ws.close()
|
||||
} catch {}
|
||||
resolve(value)
|
||||
}
|
||||
}
|
||||
const timer = setTimeout(() => finish({ __outcome: 'no-reply-timeout' }), 5000)
|
||||
ws.on('open', () =>
|
||||
ws.send(
|
||||
JSON.stringify({
|
||||
type: 'e2ee_hello',
|
||||
publicKeyB64: Buffer.from(kp.publicKey).toString('base64')
|
||||
})
|
||||
)
|
||||
)
|
||||
ws.on('close', () => {
|
||||
clearTimeout(timer)
|
||||
finish({ __outcome: 'socket-closed-before-reply' })
|
||||
})
|
||||
ws.on('error', (e) => {
|
||||
clearTimeout(timer)
|
||||
if (!settled) {
|
||||
settled = true
|
||||
reject(e)
|
||||
}
|
||||
})
|
||||
ws.on('message', (data) => {
|
||||
const text = data.toString('utf-8')
|
||||
if (text.startsWith('{"type":"e2ee_ready"')) {
|
||||
ws.send(
|
||||
e2eeEncrypt(JSON.stringify({ type: 'e2ee_auth', deviceToken: 'mock-device-token' }), key)
|
||||
)
|
||||
return
|
||||
}
|
||||
const plain = e2eeDecrypt(text, key)
|
||||
if (plain === null) {
|
||||
return
|
||||
}
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the probe prints whatever the host sent, so the frame is read as a bag of fields.
|
||||
const frame = JSON.parse(plain) as { type?: string; id?: string }
|
||||
if (frame.type === 'e2ee_authenticated') {
|
||||
ws.send(
|
||||
e2eeEncrypt(
|
||||
JSON.stringify({ id: 'probe-1', method: 'settings.get', token: 'mock-device-token' }),
|
||||
key
|
||||
)
|
||||
)
|
||||
return
|
||||
}
|
||||
if (frame.id === 'probe-1') {
|
||||
clearTimeout(timer)
|
||||
finish(frame)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function describe(label: string, run: () => unknown): string {
|
||||
try {
|
||||
const value = run()
|
||||
return `${label}=${JSON.stringify(value)}`
|
||||
} catch (error) {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: a thrown value is not an Error by type; only its constructor name and message are printed.
|
||||
return `${label}=THREW ${(error as Error).constructor.name}: ${(error as Error).message}`
|
||||
}
|
||||
}
|
||||
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the probe substitutes one recorded reply for the whole client surface.
|
||||
const reply = (await rawReply()) as Record<string, unknown>
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the probe substitutes one recorded reply for the whole client surface.
|
||||
const client = {
|
||||
sendRequest: async () => reply
|
||||
} as unknown as Parameters<typeof settingsRead.request>[0]
|
||||
|
||||
const lines: string[] = [`mode=${process.env.MOCK_SETTINGS_GET_MODE ?? 'ok'}`]
|
||||
lines.push(`wireReply=${JSON.stringify(reply)}`)
|
||||
if (reply.__outcome) {
|
||||
lines.push('interpret=skipped (no reply frame)')
|
||||
} else {
|
||||
for (const [name, op] of [
|
||||
['settingsRead', settingsRead],
|
||||
['optionalSettingsRead', optionalSettingsRead],
|
||||
['botOverridesRead', botOverridesRead],
|
||||
['newTabSettingsRead', newTabSettingsRead]
|
||||
] as const) {
|
||||
const response = await op.request(client)
|
||||
lines.push(
|
||||
describe(name, () => {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: each operation is driven through its own declared reply type in turn.
|
||||
const outcome = op.interpret(response as never) as
|
||||
| (() => unknown)
|
||||
| { accepted?: boolean; value?: unknown }
|
||||
// new-tab acceptance returns a deferred reader, not an accept envelope.
|
||||
if (typeof outcome === 'function') {
|
||||
return { deferred: outcome() }
|
||||
}
|
||||
const value = typeof outcome?.value === 'function' ? outcome.value() : outcome?.value
|
||||
return outcome?.accepted === undefined ? value : { accepted: outcome.accepted, value }
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
process.stdout.write(lines.join('\n') + '\n')
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,124 @@
|
||||
{
|
||||
"manifestCommit": "1d950ab0e0",
|
||||
"recordingBaseline": "aac38d698ff75ac4c8658addab48ef5a83617619",
|
||||
"excludedKinds": ["device-preference"],
|
||||
"operations": [
|
||||
{
|
||||
"manifestOperation": "main:mobile/src/agent-history/MobileAgentSessionHistoryPanel.tsx:loadMobileResumeMetadata:settings.get:387",
|
||||
"manifestScenarioIds": [
|
||||
"main:mobile/src/agent-history/MobileAgentSessionHistoryPanel.tsx:loadMobileResumeMetadata:settings.get:387:fulfilled",
|
||||
"main:mobile/src/agent-history/MobileAgentSessionHistoryPanel.tsx:loadMobileResumeMetadata:settings.get:387:refused",
|
||||
"main:mobile/src/agent-history/MobileAgentSessionHistoryPanel.tsx:loadMobileResumeMetadata:settings.get:387:transport-error"
|
||||
],
|
||||
"scenarios": [
|
||||
"settings-resume-metadata-fulfilled",
|
||||
"settings-resume-metadata-refused",
|
||||
"settings-resume-metadata-transport-error"
|
||||
]
|
||||
},
|
||||
{
|
||||
"manifestOperation": "main:mobile/src/components/use-new-workspace-create-submit.ts:create:settings.get:91",
|
||||
"manifestScenarioIds": [
|
||||
"main:mobile/src/components/use-new-workspace-create-submit.ts:create:settings.get:91:fulfilled",
|
||||
"main:mobile/src/components/use-new-workspace-create-submit.ts:create:settings.get:91:refused",
|
||||
"main:mobile/src/components/use-new-workspace-create-submit.ts:create:settings.get:91:transport-error"
|
||||
],
|
||||
"scenarios": [
|
||||
"settings-workspace-submit-fulfilled",
|
||||
"settings-workspace-submit-refused",
|
||||
"settings-workspace-submit-transport-error"
|
||||
]
|
||||
},
|
||||
{
|
||||
"manifestOperation": "main:mobile/src/components/use-new-workspace-runtime-context.ts:useNewWorkspaceRuntimeContext:settings.get:42",
|
||||
"manifestScenarioIds": [
|
||||
"main:mobile/src/components/use-new-workspace-runtime-context.ts:useNewWorkspaceRuntimeContext:settings.get:42:fulfilled",
|
||||
"main:mobile/src/components/use-new-workspace-runtime-context.ts:useNewWorkspaceRuntimeContext:settings.get:42:refused",
|
||||
"main:mobile/src/components/use-new-workspace-runtime-context.ts:useNewWorkspaceRuntimeContext:settings.get:42:transport-error"
|
||||
],
|
||||
"scenarios": [
|
||||
"settings-workspace-context-fulfilled",
|
||||
"settings-workspace-context-refused",
|
||||
"settings-workspace-context-transport-error"
|
||||
]
|
||||
},
|
||||
{
|
||||
"manifestOperation": "main:mobile/src/home/mobile-home-host-requests.ts:fetchMobileHomeTaskProviders:settings.get:76",
|
||||
"manifestScenarioIds": [
|
||||
"main:mobile/src/home/mobile-home-host-requests.ts:fetchMobileHomeTaskProviders:settings.get:76:fulfilled",
|
||||
"main:mobile/src/home/mobile-home-host-requests.ts:fetchMobileHomeTaskProviders:settings.get:76:refused",
|
||||
"main:mobile/src/home/mobile-home-host-requests.ts:fetchMobileHomeTaskProviders:settings.get:76:transport-error"
|
||||
],
|
||||
"scenarios": [
|
||||
"settings-home-providers-fulfilled",
|
||||
"settings-home-providers-refused",
|
||||
"settings-home-providers-transport-error"
|
||||
]
|
||||
},
|
||||
{
|
||||
"manifestOperation": "main:mobile/src/host-screen/use-host-repo-metadata.ts:fetchRepoMetadata:settings.get:124",
|
||||
"manifestScenarioIds": [
|
||||
"main:mobile/src/host-screen/use-host-repo-metadata.ts:fetchRepoMetadata:settings.get:124:fulfilled",
|
||||
"main:mobile/src/host-screen/use-host-repo-metadata.ts:fetchRepoMetadata:settings.get:124:refused",
|
||||
"main:mobile/src/host-screen/use-host-repo-metadata.ts:fetchRepoMetadata:settings.get:124:transport-error"
|
||||
],
|
||||
"scenarios": [
|
||||
"settings-repo-metadata-fulfilled",
|
||||
"settings-repo-metadata-refused",
|
||||
"settings-repo-metadata-transport-error"
|
||||
]
|
||||
},
|
||||
{
|
||||
"manifestOperation": "main:mobile/src/session/mobile-new-tab-agent-loader.ts:loadMobileNewTabAgentOptions:settings.get:26",
|
||||
"manifestScenarioIds": [
|
||||
"main:mobile/src/session/mobile-new-tab-agent-loader.ts:loadMobileNewTabAgentOptions:settings.get:26:fulfilled",
|
||||
"main:mobile/src/session/mobile-new-tab-agent-loader.ts:loadMobileNewTabAgentOptions:settings.get:26:refused",
|
||||
"main:mobile/src/session/mobile-new-tab-agent-loader.ts:loadMobileNewTabAgentOptions:settings.get:26:transport-error"
|
||||
],
|
||||
"scenarios": [
|
||||
"settings-new-tab-ssh",
|
||||
"settings-new-tab-refused",
|
||||
"settings-new-tab-transport-error"
|
||||
]
|
||||
},
|
||||
{
|
||||
"manifestOperation": "main:mobile/src/session/use-pr-bot-author-overrides.ts:usePRBotAuthorOverrides:settings.get:35",
|
||||
"manifestScenarioIds": [
|
||||
"main:mobile/src/session/use-pr-bot-author-overrides.ts:usePRBotAuthorOverrides:settings.get:35:fulfilled",
|
||||
"main:mobile/src/session/use-pr-bot-author-overrides.ts:usePRBotAuthorOverrides:settings.get:35:refused",
|
||||
"main:mobile/src/session/use-pr-bot-author-overrides.ts:usePRBotAuthorOverrides:settings.get:35:transport-error"
|
||||
],
|
||||
"scenarios": [
|
||||
"settings-bot-overrides-fulfilled",
|
||||
"settings-bot-overrides-refused",
|
||||
"settings-bot-overrides-transport-error"
|
||||
]
|
||||
},
|
||||
{
|
||||
"manifestOperation": "main:mobile/src/tasks/use-mobile-tasks-runtime-hydration.tsx:hydrateTaskState:settings.get:253",
|
||||
"manifestScenarioIds": [
|
||||
"main:mobile/src/tasks/use-mobile-tasks-runtime-hydration.tsx:hydrateTaskState:settings.get:253:fulfilled",
|
||||
"main:mobile/src/tasks/use-mobile-tasks-runtime-hydration.tsx:hydrateTaskState:settings.get:253:refused",
|
||||
"main:mobile/src/tasks/use-mobile-tasks-runtime-hydration.tsx:hydrateTaskState:settings.get:253:transport-error"
|
||||
],
|
||||
"scenarios": [
|
||||
"settings-task-hydration-fulfilled",
|
||||
"settings-task-hydration-refused",
|
||||
"settings-task-hydration-transport-error"
|
||||
]
|
||||
},
|
||||
{
|
||||
"manifestOperation": "main:mobile/src/tasks/use-mobile-tasks-workspace-create-actions.tsx:createWorkspace:settings.get:75",
|
||||
"manifestScenarioIds": [
|
||||
"main:mobile/src/tasks/use-mobile-tasks-workspace-create-actions.tsx:createWorkspace:settings.get:75:fulfilled",
|
||||
"main:mobile/src/tasks/use-mobile-tasks-workspace-create-actions.tsx:createWorkspace:settings.get:75:refused",
|
||||
"main:mobile/src/tasks/use-mobile-tasks-workspace-create-actions.tsx:createWorkspace:settings.get:75:transport-error"
|
||||
],
|
||||
"scenarios": [
|
||||
"settings-task-workspace-fulfilled",
|
||||
"settings-task-workspace-refused",
|
||||
"settings-task-workspace-transport-error"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
import { createRequire } from 'node:module'
|
||||
import { resolve } from 'node:path'
|
||||
import { runProcess } from '../../src/shared/child-process/run-process.ts'
|
||||
import { readScenarios } from '../src/test-support/rpc-recording/scenario-input.ts'
|
||||
|
||||
if (process.argv[2] !== '--record' || process.env.RPC_FOUNDATION_RECORD !== '1') {
|
||||
throw new Error('Recording requires --record and RPC_FOUNDATION_RECORD=1')
|
||||
}
|
||||
const root = resolve(import.meta.dirname, '../..')
|
||||
const input = readScenarios(resolve(root, 'mobile/rpc-foundation/pilot-scenarios.json'))
|
||||
const baseline = await runProcess({
|
||||
program: 'git',
|
||||
args: [
|
||||
'diff',
|
||||
'--quiet',
|
||||
input.baseline,
|
||||
'--',
|
||||
'mobile/src',
|
||||
'src/shared',
|
||||
'mobile/pnpm-lock.yaml',
|
||||
// Only the recorder is exempt, and every golden pins `recorderSha256` over it instead.
|
||||
':!mobile/src/test-support/rpc-recording'
|
||||
],
|
||||
cwd: root
|
||||
})
|
||||
if (baseline.code !== 0) {
|
||||
throw new Error('Product sources or lockfile differ from the pinned main baseline')
|
||||
}
|
||||
// Why a second check: `git diff` only sees tracked paths, so an untracked module under the
|
||||
// guarded trees can change resolution while the baseline check still passes — the golden would
|
||||
// then carry a pinned baseline header it did not actually record against.
|
||||
const untracked = await runProcess({
|
||||
program: 'git',
|
||||
args: [
|
||||
'ls-files',
|
||||
'--others',
|
||||
'--exclude-standard',
|
||||
'--',
|
||||
'mobile/src',
|
||||
'src/shared',
|
||||
':!mobile/src/test-support/rpc-recording'
|
||||
],
|
||||
cwd: root
|
||||
})
|
||||
if (untracked.code !== 0) {
|
||||
throw new Error(`Could not enumerate untracked product sources: ${untracked.stderr}`)
|
||||
}
|
||||
if (untracked.stdout.trim() !== '') {
|
||||
throw new Error(
|
||||
`Untracked product sources would not be pinned by the baseline:\n${untracked.stdout.trim()}`
|
||||
)
|
||||
}
|
||||
const require = createRequire(resolve(root, 'mobile/package.json'))
|
||||
const result = await runProcess({
|
||||
program: process.execPath,
|
||||
args: [
|
||||
resolve(require.resolve('vitest/package.json'), '../vitest.mjs'),
|
||||
'run',
|
||||
'src/test-support/rpc-recording/pilot-recordings.test.ts',
|
||||
'src/test-support/rpc-recording/family-recordings.test.ts'
|
||||
],
|
||||
cwd: resolve(root, 'mobile'),
|
||||
timeoutMs: 120_000,
|
||||
env: { ...process.env, ORCA_BACKGROUND_LAUNCH: '1', RPC_FOUNDATION_MODE: '--record' }
|
||||
})
|
||||
process.stdout.write(result.stdout)
|
||||
process.stderr.write(result.stderr)
|
||||
if (result.code !== 0) {
|
||||
process.exitCode = 1
|
||||
}
|
||||
@@ -0,0 +1,247 @@
|
||||
# Main RPC recordings
|
||||
|
||||
Test infrastructure only. `pilot-scenarios.json` binds logical operations/actions to small
|
||||
mount adapters. The adapters execute the actual product modules from the selected source
|
||||
root, using React's test renderer; they do not reconstruct acceptance or lifecycle logic.
|
||||
The module loader transpiles the real source with TypeScript and resolves task barrels
|
||||
lazily so unused native views do not need a device. Accessing an unspecified native import
|
||||
fails. The history metadata function is exposed to its adapter without rewriting its body.
|
||||
|
||||
The transport reuses `createStableLogicalRpcClient`, `projectMobileRpcRequestParams`
|
||||
(through that client), `RpcClientRequestTracker`, and the delivery-unknown marker. Hook
|
||||
mounting follows `use-mobile-native-chat-file-search.test.ts`; physical session mounting
|
||||
follows `stable-logical-rpc-client.test.ts`. Neither test exported a reusable mount utility.
|
||||
|
||||
## Scenario actions
|
||||
|
||||
```json
|
||||
{"action":"mount","id":"mount"}
|
||||
{"action":"query","id":"old-query","args":{"query":"old"}}
|
||||
{"advance":120}
|
||||
{"complete":"files.searchPaths#1","params":{"worktree":"id:A","query":"old","limit":16},"reply":{"ok":false,"error":{"code":"method_not_found","message":"Unknown method"}}}
|
||||
{"bind":"old-inventory","request":"files.list#1","params":{"worktree":"id:A"}}
|
||||
{"checkpoint":"pending"}
|
||||
{"action":"select","id":"select-b","args":{"workspace":"B"}}
|
||||
{"action":"select","id":"reset-a","args":{"workspace":"A"}}
|
||||
{"complete":"old-inventory","params":{"worktree":"id:A"},"reply":{"ok":true,"result":{"files":[]}}}
|
||||
{"checkpoint":"stale-completed"}
|
||||
```
|
||||
|
||||
`{"$undefined":true}` in the input means explicit undefined, including an own property;
|
||||
absence remains absence. Completion params are asserted against projected sender params.
|
||||
Concurrent requests of one method require a logical binding and asserted params; random
|
||||
wire ids never identify completions. Timers only advance explicitly, and zero-time drains
|
||||
flush due timers, promise continuations, and React work after every step. Date, performance,
|
||||
Math.random, Web Crypto random bytes/UUIDs, and transport ids are deterministic.
|
||||
|
||||
### Recorded time
|
||||
|
||||
Every settlement carries `startedAt` and `settledAt` in virtual milliseconds since the pinned epoch,
|
||||
so the projection has a temporal dimension instead of relying on where a checkpoint happens to sit.
|
||||
Any transition the product schedules for itself is recorded at the time it actually fires: change a
|
||||
request deadline or the search debounce by any amount, in either direction, and a recorded number
|
||||
moves. Granularity is exact milliseconds, because the fake timers fire at their scheduled time and
|
||||
never coalesce; `recording-runner.test.ts` pins a 5 ms deadline settling at exactly `settledAt: 5`.
|
||||
|
||||
A checkpoint's own clock is not recorded. It is always the sum of the scripted `advance` steps, so
|
||||
it is a function of the scenario rather than of the code under test; `run-recording.ts` asserts that
|
||||
equality at every checkpoint instead, which costs no bytes and fails loudly if it ever drifts.
|
||||
|
||||
Recorded time covers thresholds the product schedules for itself. It cannot cover a threshold the
|
||||
product only consults when something else makes it act, because no observation exists unless a
|
||||
scenario acts inside the window. The `Date.now()` cache TTL in `use-host-repo-metadata.ts` is the
|
||||
one such case here, so `settings-repo-cache-expiry` probes the cache at 59 s as well as at 60 s;
|
||||
without the earlier probe a 20 s TTL and a 60 s TTL are both expired at 60 s and record identically.
|
||||
That probe is coverage, not a substitute for recorded time: it bounds how small a TTL reduction is
|
||||
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
|
||||
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.
|
||||
|
||||
### Value pool
|
||||
|
||||
Format version 2 stores each distinct observation field value once under `values`, keyed by the
|
||||
first 12 hex of sha256 over the value's sorted-key, whitespace-free JSON. A checkpoint holds five
|
||||
hashes (`sender`, `payloads`, `settlements`, `state`, `effects`). Files stay pretty-printed so a
|
||||
diff is reviewable; compact printing, element-level interning of list fields and delta encoding
|
||||
against the previous checkpoint were measured and rejected. `readGolden` refuses any other
|
||||
`goldenFormatVersion`, resolves hashes back to values, and `compareGolden` reports the scenario,
|
||||
the checkpoint id, the field, the JSON path inside it, and both resolved values.
|
||||
|
||||
### Prelude checkpoints
|
||||
|
||||
A generated variant declares the index where its distinguishing input lands. Checkpoints before
|
||||
that index observe steps identical to the base, so `hoistPreludeCheckpoints` records them once in
|
||||
a `<base>.prelude` scenario and starts each variant at its own divergence; it asserts each
|
||||
variant's pre-divergence prefix matches the base. Reply matrices, interruption schedules and
|
||||
lifecycle schedules use it. Checkpoints that merely happen to be equal are never merged: reaching
|
||||
the same state through different inputs is evidence. Sibling schedules already drop their shared
|
||||
prefix, so they are unchanged.
|
||||
|
||||
Family matrices and schedule recordings retain both boundaries. Matrices execute
|
||||
raw reply partitions at the scripted sender port; they do not claim malformed-frame coverage
|
||||
through direct/relay frame validation. Caches
|
||||
are tested by follow-up requests; no private cache maps are inspected.
|
||||
|
||||
Each family runs the nine partitions in `reply-matrix.ts` once, and nothing is crossed against
|
||||
consumed fields. The partitions are the reply shapes a host can send: a normal result, an absent
|
||||
result, `null`, an inner `{ok: false}` envelope with a string or object error, an inner envelope
|
||||
missing `ok`, an outer refusal, `method_not_found`, and a transport rejection. Shapes that were
|
||||
recorded before and are gone were unreachable: `successResponse` always sets `result`, so JSON
|
||||
carries no explicit-undefined slot, and no mounted method's handler returns a number, a string, an
|
||||
array, a bare `{}`, or a boolean. `null` stays because `linear.getIssue` returns it for a missing
|
||||
issue and the b2 seed is a shipped null-result bug.
|
||||
|
||||
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.
|
||||
Task-model projections record setter invocations and resulting model values, not native UI.
|
||||
|
||||
## Commands and checker contract
|
||||
|
||||
Record only from unchanged pinned product sources and lockfile. The fence exempts only
|
||||
`mobile/src/test-support/rpc-recording`, which `recorderSha256` pins instead; every other
|
||||
test-support path is compared against the baseline like product code:
|
||||
|
||||
```sh
|
||||
ORCA_BACKGROUND_LAUNCH=1 RPC_FOUNDATION_RECORD=1 pnpm --dir mobile exec tsx scripts/rpc-recording.mts --record
|
||||
ORCA_BACKGROUND_LAUNCH=1 pnpm --dir mobile test src/test-support/rpc-recording
|
||||
```
|
||||
|
||||
Mutants are the defect evidence. `operation-mutations.ts` holds one anchored source edit per
|
||||
adapter family, and every family's recording must change visible state when its mutant is applied,
|
||||
which is what shows that family's `state()` projection observes the operation's real output.
|
||||
Anchors are asserted to match exactly one site, because a repeated anchor would half-apply while
|
||||
still counting as applied. Mutants replace the expression in memory, then run the same real hook.
|
||||
`runRecordingMutant` accepts a mutated mounting adapter, scheduler, baseline and optional
|
||||
observation projection, and returns `{verdict: "killed" | "survived", recording}`. Every mutant
|
||||
test requires the mutation to apply exactly once and change visible state to count as killed.
|
||||
|
||||
Set `RPC_FOUNDATION_REFERENCE_ROOT` to an archived `bcba08b3e4` source tree to corroborate the
|
||||
three B-seed mutants against the real defect; the reference checkout is never edited. Each seed
|
||||
pins the archived tree's visible state, so a later refactor of those files cannot pass by merely
|
||||
differing from main. Archived-tree corroboration for b1/b2/b3 is **unproven in CI**:
|
||||
CI does not set `RPC_FOUNDATION_REFERENCE_ROOT`. These three checks remain opt-in; the
|
||||
in-memory mutant checks run in CI. No archived-tree checks are registered for other
|
||||
families because no reference states are defined for them.
|
||||
|
||||
## What this oracle does and does not see
|
||||
|
||||
It replays 46 scenarios against frozen goldens and fails on any divergence: 73 goldens over 118
|
||||
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?
|
||||
|
||||
It is not a substitute for reading the diff. Two facts bound it, both learned the hard way:
|
||||
|
||||
- **It was blind to refusal ordering.** Reordering the settings and sibling refusal checks in
|
||||
`mobile-new-tab-agent-loader.ts` survives every golden except `probe-new-tab-both-refused` —
|
||||
measured by applying the reorder to the real source: 1 failure in 84 tests, and the one failure
|
||||
is a probe. Every pre-probe "refused" scenario refuses on the _first_ request, and every
|
||||
correlated-failure schedule rejects at the transport, where neither check is reached. A human
|
||||
reviewer caught that class by reading #20499.
|
||||
- **It did not observe data loss on refresh.** No pre-probe golden records state after a refused
|
||||
_refresh_, so "does this screen keep its data or blank it?" was undocumented. This one is an
|
||||
observational gap, not a proven detection gap: publishing an unaccepted read in
|
||||
`use-new-workspace-runtime-context.ts` is caught by the refuse-after-data probe _and_ by
|
||||
`matrix-settings.workspace-context`, because a refusal from cold publishes `null` over a non-null
|
||||
initial value. Claim the recorded behaviour, not blindness.
|
||||
|
||||
`probe-hole-witness.test.ts` closes both and keeps them closed. It asserts the hole and the closure
|
||||
together: each probe must kill its mutation _and_ every pre-probe scenario of the same operation
|
||||
must still survive it. A probe that stops being load-bearing fails instead of lingering.
|
||||
|
||||
What is still not covered: what the count-based raw-port inventory covers instead (which files
|
||||
reach `sendRequest`, and how often), native storage, transport skew, the `subscribe`/
|
||||
`sendUnsubscribe` ports, and the two mutations under _Known-open holes_ below. Four of the nine
|
||||
probes pin behaviour with no demonstrated mutation — the two mixed reject/refusal new-tab orders
|
||||
and the home-providers and resume-metadata refresh refusals; they are frozen observations, not
|
||||
proven defect detectors. `settings.resume-metadata` projects `{}` as its state, so its probe
|
||||
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.
|
||||
|
||||
## Running it for a step-4 migration
|
||||
|
||||
```sh
|
||||
# 1. Before touching the call site, confirm the oracle is green on your branch.
|
||||
ORCA_BACKGROUND_LAUNCH=1 pnpm --dir mobile test src/test-support/rpc-recording
|
||||
|
||||
# 2. Migrate the call site. Re-run. Any divergence is your diff, reported down to the JSON path.
|
||||
|
||||
# 3. If a divergence is intended, say so deliberately. Recording refuses to run unless the
|
||||
# product tree matches the pinned baseline, so bump `baseline` in pilot-scenarios.json to the
|
||||
# commit you are recording from first.
|
||||
ORCA_BACKGROUND_LAUNCH=1 RPC_FOUNDATION_RECORD=1 \
|
||||
pnpm --dir mobile exec tsx scripts/rpc-recording.mts --record
|
||||
```
|
||||
|
||||
A re-record is a claim about behaviour. State the cause in the commit; every golden the refresh
|
||||
moves should have one.
|
||||
|
||||
If your call site carries a mutation anchor in `operation-mutations.ts`, rewriting it will make the
|
||||
anchor match zero sites. Re-anchor the same defect at its new home rather than deleting the mutant:
|
||||
#20499 broke five anchors that way, and each one had a new home.
|
||||
|
||||
`live-probe/` holds the runtime companion: `mock-desktop-settings-reply-modes.patch` teaches the
|
||||
mock desktop server to answer `settings.get` with a refusal, `method_not_found`, a null or absent
|
||||
result, absent settings, or silence, and `settings-get-reply-probe.mts` drives a real socket
|
||||
through the migrated acceptance layer. Opt-in, never applied by the suite, because the patch is a
|
||||
product-tree edit.
|
||||
|
||||
## Known-open holes
|
||||
|
||||
Two behavioural mutations are not caught by any golden. Both were confirmed by mutating product
|
||||
source and re-deriving the whole suite; neither is reachable through the adapters as they stand,
|
||||
so closing them needs new adapter capability rather than another scenario. Anyone migrating these
|
||||
call sites should not assume the recordings will notice a change here:
|
||||
|
||||
- **`use-host-repo-metadata.ts` cross-module cache write.** Deleting `setCachedRepos(...)` survives.
|
||||
No adapter mounts `useNewWorkspaceRepositories`, which is the consumer that reads that cache to
|
||||
open workspace creation without waiting, so the write has no observer. Closing it needs a
|
||||
cache-consumer mount after the metadata fetch.
|
||||
- **`use-pr-bot-author-overrides.ts` client-identity guard.** Forcing
|
||||
`sourceClientRef.current !== client` to `false` survives. The adapter closes over one client
|
||||
object: `reset` changes only the refresh key, `cutover` migrates the same stable logical client,
|
||||
and remounting discards the old hook state. Closing it needs a same-mount client replacement.
|
||||
|
||||
The original settings slice coverage maps nine host-RPC callers in
|
||||
`settings-recording-coverage.json`; device-preference entries are excluded by coordinator
|
||||
instruction. Later manifest additions require new scenarios and remain uncovered until
|
||||
those recordings land. This runner does not certify native storage or transport skew.
|
||||
|
||||
## The cleanup checkpoint
|
||||
|
||||
Teardown runs on the recorded path, not only in `finally`. Each checkpoint clones the effects
|
||||
array, so a rejection or state write produced by `dispose()`, the transport teardown or the final
|
||||
`scheduler.flush()` used to land after the recording was built and never reached a golden — and an
|
||||
unmount leak is exactly what this oracle exists to catch.
|
||||
|
||||
When teardown observes anything, it becomes a checkpoint with id `cleanup`. `state` is captured
|
||||
before dispose, because the operation is gone afterwards.
|
||||
|
||||
Five goldens carry one today, covering six scenarios whose dropped observations were not noise:
|
||||
`projectRowDetailError`, `projectMutating`, `hostLabelById`, `hostPlatform`, `workspaceAgent`,
|
||||
`workspaceAgentOverridden`, `creatingKey`, `selectedAgent`, `agentOverridden` and `error`. A
|
||||
scenario that stops leaking loses its checkpoint, which is a visible golden diff rather than a
|
||||
silent improvement.
|
||||
@@ -0,0 +1,20 @@
|
||||
/**
|
||||
* How many times each scenario is recorded and compared against itself.
|
||||
*
|
||||
* Why it validates instead of coercing: the loop bound came straight from `Number(env ?? 2)`, so
|
||||
* `0`, `-1` or a typo skipped the body entirely and every scenario reported green having recorded
|
||||
* and compared nothing. A verification suite must not have a silent no-op mode.
|
||||
*/
|
||||
export function determinismRuns(): number {
|
||||
const raw = process.env.RPC_FOUNDATION_DETERMINISM_RUNS
|
||||
if (raw === undefined) {
|
||||
return 2
|
||||
}
|
||||
const runs = Number(raw)
|
||||
if (!Number.isInteger(runs) || runs < 2) {
|
||||
throw new Error(
|
||||
`RPC_FOUNDATION_DETERMINISM_RUNS must be an integer >= 2 to compare a run against another; got ${JSON.stringify(raw)}`
|
||||
)
|
||||
}
|
||||
return runs
|
||||
}
|
||||
@@ -0,0 +1,163 @@
|
||||
import { resolve } from 'node:path'
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { readScenarios } from './scenario-input'
|
||||
import { driveReplyMatrix } from './reply-matrix'
|
||||
import {
|
||||
bindCompletions,
|
||||
interruptionSchedules,
|
||||
lifecycleSchedules,
|
||||
siblingSchedules
|
||||
} from './schedule-driver'
|
||||
import { hoistPreludeCheckpoints } from './prelude-checkpoints'
|
||||
import { runRecording } from './run-recording'
|
||||
import { pilotMountAdapters } from './pilot-mount-adapters'
|
||||
import { vitestRecordingScheduler } from './vitest-recording-scheduler'
|
||||
import {
|
||||
compareGolden,
|
||||
goldenBytes,
|
||||
goldenRecording,
|
||||
readGolden,
|
||||
writeGolden
|
||||
} from './golden-recording'
|
||||
import type { Recording, RecordingScenario } from './recording-scenario'
|
||||
import { determinismRuns } from './determinism-runs'
|
||||
|
||||
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')
|
||||
const settingsNormal = {
|
||||
settings: {
|
||||
disabledTuiAgents: ['claude'],
|
||||
defaultTuiAgent: 'codex',
|
||||
prBotAuthorOverrides: ['recorded-bot'],
|
||||
visibleTaskProviders: ['github'],
|
||||
hostSettingOverrides: {},
|
||||
defaultTaskSource: 'github',
|
||||
defaultTaskViewPreset: 'all',
|
||||
defaultRepoSelection: null,
|
||||
defaultLinearTeamSelection: null,
|
||||
githubProjects: {}
|
||||
}
|
||||
}
|
||||
|
||||
async function certify(id: string, scenarios: RecordingScenario[]) {
|
||||
let first = ''
|
||||
for (let run = 0; run < determinismRuns(); run++) {
|
||||
const checkpoints: Recording['checkpoints'] = []
|
||||
for (const scenario of scenarios) {
|
||||
const { adapters } = pilotMountAdapters(root)
|
||||
const recording = await runRecording(
|
||||
scenario,
|
||||
adapters[scenario.operation],
|
||||
vitestRecordingScheduler()
|
||||
)
|
||||
for (const checkpoint of recording.checkpoints) {
|
||||
checkpoints.push({ ...checkpoint, id: `${scenario.id}:${checkpoint.id}` })
|
||||
}
|
||||
}
|
||||
const golden = goldenRecording(root, input.baseline, scenarios[0], {
|
||||
scenario: id,
|
||||
checkpoints
|
||||
})
|
||||
const bytes = goldenBytes(golden)
|
||||
if (run) {
|
||||
expect(bytes).toBe(first)
|
||||
}
|
||||
first = bytes
|
||||
if (process.env.RPC_FOUNDATION_MODE === '--record') {
|
||||
await writeGolden(directory, golden, '--record')
|
||||
} else {
|
||||
compareGolden(readGolden(directory, id), golden)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
describe('family reply partitions and owned schedules', () => {
|
||||
const families = new Map<string, RecordingScenario>()
|
||||
for (const scenario of input.scenarios) {
|
||||
if (!families.has(scenario.family)) {
|
||||
families.set(scenario.family, scenario)
|
||||
}
|
||||
}
|
||||
for (const [family, base] of families) {
|
||||
const completion = base.steps.find(
|
||||
(step) =>
|
||||
'complete' in step &&
|
||||
(step.complete.startsWith('settings.') ||
|
||||
(base.id === 'b1' && step.complete === 'fresh-inventory') ||
|
||||
(base.id === 'b2' && step.complete.startsWith('github.project.')) ||
|
||||
(base.id === 'b3' && step.complete.startsWith('linear.getIssue')))
|
||||
)
|
||||
if (!completion || !('complete' in completion)) {
|
||||
continue
|
||||
}
|
||||
const normal =
|
||||
base.id === 'b1'
|
||||
? { files: [{ relativePath: 'third.ts' }] }
|
||||
: base.id === 'b3'
|
||||
? { id: 'issue-1', description: 'recorded', labels: [], subIssues: [] }
|
||||
: completion.complete.startsWith('settings.get')
|
||||
? settingsNormal
|
||||
: { ok: true }
|
||||
it(`${family}: reply partitions once per family`, async () => {
|
||||
await certify(`matrix-${family}`, driveReplyMatrix(base, completion.complete, normal))
|
||||
}, 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) {
|
||||
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'))
|
||||
)
|
||||
)
|
||||
})
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,194 @@
|
||||
import { format } from 'oxfmt'
|
||||
import { createHash } from 'node:crypto'
|
||||
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs'
|
||||
import { join } from 'node:path'
|
||||
import {
|
||||
canonicalJson,
|
||||
internRecording,
|
||||
OBSERVATION_FIELDS,
|
||||
resolveRecording,
|
||||
type InternedRecording,
|
||||
type ValuePool
|
||||
} from './golden-value-pool'
|
||||
import { recorderSha256 } from './recorder-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
|
||||
// 2 interns observation field values into a pooled map; a version 1 file is not comparable here.
|
||||
export const GOLDEN_FORMAT_VERSION = 2
|
||||
export type GoldenRecording = {
|
||||
operation: string
|
||||
family: string
|
||||
namedDeltas: string[]
|
||||
runnerVersion: number
|
||||
baseline: string
|
||||
lockfileSha256: string
|
||||
recorderSha256: string
|
||||
platform: string
|
||||
scenarioVersion: number
|
||||
projectionVersion: number
|
||||
goldenFormatVersion: number
|
||||
recording: Recording
|
||||
}
|
||||
type GoldenFile = Omit<GoldenRecording, 'recording'> & {
|
||||
values: ValuePool
|
||||
recording: InternedRecording
|
||||
}
|
||||
export function goldenRecording(
|
||||
root: string,
|
||||
baseline: string,
|
||||
scenario: RecordingScenario,
|
||||
recording: Recording
|
||||
): GoldenRecording {
|
||||
return {
|
||||
operation: scenario.operation,
|
||||
family: scenario.family,
|
||||
namedDeltas: scenario.namedDeltas ?? [],
|
||||
runnerVersion: RUNNER_VERSION,
|
||||
baseline,
|
||||
lockfileSha256: createHash('sha256')
|
||||
.update(readFileSync(join(root, 'mobile/pnpm-lock.yaml')))
|
||||
.digest('hex'),
|
||||
recorderSha256: recorderSha256(root),
|
||||
platform: process.platform,
|
||||
scenarioVersion: scenario.version,
|
||||
projectionVersion: PROJECTION_VERSION,
|
||||
goldenFormatVersion: GOLDEN_FORMAT_VERSION,
|
||||
recording
|
||||
}
|
||||
}
|
||||
export function goldenBytes(golden: GoldenRecording): string {
|
||||
const { recording: _value, ...header } = golden
|
||||
const interned = internRecording(golden.recording)
|
||||
return `${JSON.stringify({ ...header, values: interned.values, recording: interned.recording }, null, 2)}\n`
|
||||
}
|
||||
export function readGolden(directory: string, id: string): GoldenRecording {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the file is validated against GoldenFile on the next lines.
|
||||
const file = JSON.parse(readFileSync(goldenPath(directory, id), 'utf8')) as Partial<GoldenFile>
|
||||
if (file.goldenFormatVersion !== GOLDEN_FORMAT_VERSION) {
|
||||
throw new Error(
|
||||
`Golden ${id} has format version ${JSON.stringify(file.goldenFormatVersion)}; this reader requires ${GOLDEN_FORMAT_VERSION}. Re-record with --record.`
|
||||
)
|
||||
}
|
||||
if (!file.values || !file.recording) {
|
||||
throw new Error(`Golden ${id} is missing its value pool or recording`)
|
||||
}
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: goldenFormatVersion was just checked, so the pool is present.
|
||||
const { values: _pool, ...header } = file as GoldenFile
|
||||
return { ...header, recording: resolveRecording(file.values, file.recording) }
|
||||
}
|
||||
export async function writeGolden(
|
||||
directory: string,
|
||||
golden: GoldenRecording,
|
||||
mode: string
|
||||
): Promise<void> {
|
||||
if (mode !== '--record' || process.env.RPC_FOUNDATION_RECORD !== '1') {
|
||||
throw new Error('Golden writes require --record and RPC_FOUNDATION_RECORD=1')
|
||||
}
|
||||
mkdirSync(directory, { recursive: true })
|
||||
const path = goldenPath(directory, golden.recording.scenario)
|
||||
const result = await format(path, goldenBytes(golden), { printWidth: 100, trailingComma: 'none' })
|
||||
if (result.errors.length) {
|
||||
throw new Error('Cannot format golden')
|
||||
}
|
||||
writeFileSync(path, result.code)
|
||||
}
|
||||
function goldenPath(directory: string, id: string): string {
|
||||
if (!/^[a-z0-9][a-z0-9._-]*$/.test(id)) {
|
||||
throw new Error(`Unsafe scenario id: ${id}`)
|
||||
}
|
||||
return join(directory, `${id}.json`)
|
||||
}
|
||||
export function compareGolden(expected: GoldenRecording, actual: GoldenRecording): void {
|
||||
const scenario = actual.recording.scenario
|
||||
// Platform and lockfile are provenance: a dependency that changes behaviour changes the trace
|
||||
// below, and one that does not must not fail the compare on every unrelated bump.
|
||||
const pinned = { ...expected, platform: actual.platform, lockfileSha256: actual.lockfileSha256 }
|
||||
const { recording: _expectedRecording, ...expectedHeader } = pinned
|
||||
const { recording: _actualRecording, ...actualHeader } = actual
|
||||
for (const [key, value] of Object.entries(expectedHeader)) {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: header keys are compared as data, not consumed as fields.
|
||||
const found = (actualHeader as Record<string, unknown>)[key]
|
||||
if (JSON.stringify(found) !== JSON.stringify(value)) {
|
||||
throw new Error(
|
||||
`Recording differs: ${scenario} header ${key}\n expected ${JSON.stringify(value)}\n actual ${JSON.stringify(found)}`
|
||||
)
|
||||
}
|
||||
}
|
||||
const expectedIds = pinned.recording.checkpoints.map((checkpoint) => checkpoint.id)
|
||||
const actualIds = actual.recording.checkpoints.map((checkpoint) => checkpoint.id)
|
||||
if (JSON.stringify(expectedIds) !== JSON.stringify(actualIds)) {
|
||||
const index = expectedIds.findIndex((id, at) => id !== actualIds[at])
|
||||
throw new Error(
|
||||
`Recording differs: ${scenario} checkpoint list (${expectedIds.length} expected, ${actualIds.length} actual)\n first divergence at index ${index}: expected ${JSON.stringify(expectedIds[index])}, actual ${JSON.stringify(actualIds[index])}`
|
||||
)
|
||||
}
|
||||
for (const [index, checkpoint] of pinned.recording.checkpoints.entries()) {
|
||||
const found = actual.recording.checkpoints[index]!
|
||||
for (const field of OBSERVATION_FIELDS) {
|
||||
if (
|
||||
canonicalJson(checkpoint.observation[field]) === canonicalJson(found.observation[field])
|
||||
) {
|
||||
continue
|
||||
}
|
||||
const path = firstDifference(checkpoint.observation[field], found.observation[field])
|
||||
throw new Error(
|
||||
`Recording differs: ${scenario} checkpoint ${checkpoint.id} field ${field}${path.path}\n expected ${excerpt(path.expected)}\n actual ${excerpt(path.actual)}`
|
||||
)
|
||||
}
|
||||
}
|
||||
if (goldenBytes(pinned) !== goldenBytes(actual)) {
|
||||
throw new Error(`Recording differs: ${scenario} (encoding)`)
|
||||
}
|
||||
}
|
||||
function firstDifference(
|
||||
expected: RecordedValue,
|
||||
actual: RecordedValue,
|
||||
path = ''
|
||||
): { path: string; expected: RecordedValue; actual: RecordedValue } {
|
||||
const here = { path, expected, actual }
|
||||
if (
|
||||
expected === null ||
|
||||
actual === null ||
|
||||
typeof expected !== 'object' ||
|
||||
typeof actual !== 'object' ||
|
||||
Array.isArray(expected) !== Array.isArray(actual)
|
||||
) {
|
||||
return here
|
||||
}
|
||||
if (Array.isArray(expected) && Array.isArray(actual)) {
|
||||
const index = expected.findIndex(
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: both sides are recorded observations, so every member is a RecordedValue.
|
||||
(entry, at) => canonicalJson(entry) !== canonicalJson(actual[at] as RecordedValue)
|
||||
)
|
||||
return index === -1 || index >= actual.length
|
||||
? here
|
||||
: firstDifference(
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: both sides are recorded observations, so every member is a RecordedValue.
|
||||
expected[index] as RecordedValue,
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: both sides are recorded observations, so every member is a RecordedValue.
|
||||
actual[index] as RecordedValue,
|
||||
`${path}[${index}]`
|
||||
)
|
||||
}
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the array branch above already rejected a non-object pair.
|
||||
const left = expected as Record<string, RecordedValue>
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the array branch above already rejected a non-object pair.
|
||||
const right = actual as Record<string, RecordedValue>
|
||||
const key = [...new Set([...Object.keys(left), ...Object.keys(right)])].sort().find(
|
||||
(name) =>
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: both sides are recorded observations, so every member is a RecordedValue.
|
||||
canonicalJson(left[name] as RecordedValue) !== canonicalJson(right[name] as RecordedValue)
|
||||
)
|
||||
return key === undefined || !(key in left) || !(key in right)
|
||||
? here
|
||||
: // oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: both sides are recorded observations, so every member is a RecordedValue.
|
||||
firstDifference(left[key] as RecordedValue, right[key] as RecordedValue, `${path}.${key}`)
|
||||
}
|
||||
function excerpt(value: RecordedValue): string {
|
||||
const json = JSON.stringify(value)
|
||||
return json === undefined ? 'absent' : json.length > 600 ? `${json.slice(0, 600)}…` : json
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
import { createHash } from 'node:crypto'
|
||||
import type { Observation, Recording } from './recording-scenario'
|
||||
import type { RecordedValue } from './recording-values'
|
||||
|
||||
export const OBSERVATION_FIELDS = [
|
||||
'sender',
|
||||
'payloads',
|
||||
'settlements',
|
||||
'state',
|
||||
'effects'
|
||||
] as const satisfies readonly (keyof Observation)[]
|
||||
|
||||
export type ValuePool = Record<string, RecordedValue>
|
||||
export type InternedObservation = Record<keyof Observation, string>
|
||||
export type InternedRecording = {
|
||||
scenario: string
|
||||
checkpoints: { id: string; observation: InternedObservation }[]
|
||||
}
|
||||
|
||||
export function canonicalJson(value: RecordedValue): string {
|
||||
if (value === null || typeof value !== 'object') {
|
||||
return JSON.stringify(value)
|
||||
}
|
||||
if (Array.isArray(value)) {
|
||||
return `[${value.map(canonicalJson).join(',')}]`
|
||||
}
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: canonicalJson only reaches here for a plain object observation.
|
||||
const record = value as Record<string, RecordedValue>
|
||||
return `{${Object.keys(record)
|
||||
.sort()
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: a recorded object holds recorded values.
|
||||
.map((key) => `${JSON.stringify(key)}:${canonicalJson(record[key] as RecordedValue)}`)
|
||||
.join(',')}}`
|
||||
}
|
||||
|
||||
export function valueHash(value: RecordedValue): string {
|
||||
return createHash('sha256').update(canonicalJson(value)).digest('hex').slice(0, 12)
|
||||
}
|
||||
|
||||
export function internRecording(recording: Recording): {
|
||||
values: ValuePool
|
||||
recording: InternedRecording
|
||||
} {
|
||||
const pool: ValuePool = {}
|
||||
const canonical = new Map<string, string>()
|
||||
const checkpoints = recording.checkpoints.map((checkpoint) => {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: every observation field is assigned below before the value is read.
|
||||
const observation = {} as InternedObservation
|
||||
for (const field of OBSERVATION_FIELDS) {
|
||||
const value = checkpoint.observation[field]
|
||||
const json = canonicalJson(value)
|
||||
const hash = valueHash(value)
|
||||
const seen = canonical.get(hash)
|
||||
if (seen !== undefined && seen !== json) {
|
||||
throw new Error(`Golden value hash collision at ${hash} (${checkpoint.id}.${field})`)
|
||||
}
|
||||
canonical.set(hash, json)
|
||||
pool[hash] = value
|
||||
observation[field] = hash
|
||||
}
|
||||
return { id: checkpoint.id, observation }
|
||||
})
|
||||
// Hash-ordered so a value's position in the pool does not move when checkpoints are reordered.
|
||||
const values = Object.fromEntries(
|
||||
Object.keys(pool)
|
||||
.sort()
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: pool entries are the recorded values that were interned into it.
|
||||
.map((hash) => [hash, pool[hash] as RecordedValue])
|
||||
)
|
||||
return { values, recording: { scenario: recording.scenario, checkpoints } }
|
||||
}
|
||||
|
||||
export function resolveRecording(values: ValuePool, recording: InternedRecording): Recording {
|
||||
return {
|
||||
scenario: recording.scenario,
|
||||
checkpoints: recording.checkpoints.map((checkpoint) => {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: every observation field is assigned below before the value is read.
|
||||
const observation = {} as Observation
|
||||
for (const field of OBSERVATION_FIELDS) {
|
||||
const hash = checkpoint.observation[field]
|
||||
if (!(hash in values)) {
|
||||
throw new Error(
|
||||
`Golden value ${hash} is missing from the pool (${checkpoint.id}.${field})`
|
||||
)
|
||||
}
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the hash was resolved against the same pool that interned it.
|
||||
observation[field] = values[hash] as RecordedValue
|
||||
}
|
||||
return { id: checkpoint.id, observation }
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
import { createElement } from 'react'
|
||||
import { act, create, type ReactTestRenderer } from 'react-test-renderer'
|
||||
|
||||
export function hookMount(render: () => void) {
|
||||
let renderer: ReactTestRenderer | undefined
|
||||
function Harness() {
|
||||
render()
|
||||
return null
|
||||
}
|
||||
return {
|
||||
mount() {
|
||||
act(() => {
|
||||
renderer = create(createElement(Harness))
|
||||
})
|
||||
},
|
||||
update() {
|
||||
act(() => {
|
||||
renderer?.update(createElement(Harness))
|
||||
})
|
||||
},
|
||||
unmount() {
|
||||
act(() => {
|
||||
renderer?.unmount()
|
||||
renderer = undefined
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function performHookAction<T>(action: () => T): T {
|
||||
let result!: T
|
||||
act(() => {
|
||||
result = action()
|
||||
})
|
||||
return result
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
import type { MountContext } from './recording-scenario'
|
||||
|
||||
export function projectObservable(value: unknown): unknown {
|
||||
if (value instanceof Set) {
|
||||
return [...value].map(projectObservable)
|
||||
}
|
||||
if (value instanceof Map) {
|
||||
return [...value].map(([key, entry]) => [key, projectObservable(entry)])
|
||||
}
|
||||
if (Array.isArray(value)) {
|
||||
return value.map(projectObservable)
|
||||
}
|
||||
if (value && typeof value === 'object') {
|
||||
return Object.fromEntries(
|
||||
Object.entries(value).map(([key, entry]) => [
|
||||
key,
|
||||
key === 'client' ? 'logical-client' : projectObservable(entry)
|
||||
])
|
||||
)
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
export function observableModel(context: MountContext, initial: Record<string, unknown>) {
|
||||
const values = { ...initial }
|
||||
const callbacks = new Map<string, (value: unknown) => void>()
|
||||
return new Proxy(values, {
|
||||
get(target, key: string) {
|
||||
if (key in target) {
|
||||
return target[key]
|
||||
}
|
||||
if (!key.startsWith('set') || key.length < 4) {
|
||||
throw new Error(`Missing model fixture: ${key}`)
|
||||
}
|
||||
if (!callbacks.has(key)) {
|
||||
const field = key[3].toLowerCase() + key.slice(4)
|
||||
callbacks.set(key, (value) => {
|
||||
target[field] = typeof value === 'function' ? value(target[field]) : value
|
||||
context.effect(field, projectObservable(target[field]))
|
||||
})
|
||||
}
|
||||
return callbacks.get(key)
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
import { compileFunction } from 'node:vm'
|
||||
import { existsSync, readFileSync } from 'node:fs'
|
||||
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'
|
||||
|
||||
export type { Mutation }
|
||||
export type OperationModule = Record<string, (...args: any[]) => unknown>
|
||||
|
||||
// Only mounting boundaries are substituted; every operation and projection is loaded from source.
|
||||
export function operationModuleLoader(root: string, mutation?: Mutation) {
|
||||
const cache = new Map<string, OperationModule>()
|
||||
let mutationCount = 0
|
||||
function pathFor(base: string): string {
|
||||
const file = ['', '.ts', '.tsx', '/index.ts']
|
||||
.map((suffix) => base + suffix)
|
||||
.find((path) => existsSync(path) && /\.tsx?$/.test(path))
|
||||
if (!file) {
|
||||
throw new Error(`Module not found: ${base}`)
|
||||
}
|
||||
return file
|
||||
}
|
||||
function imported(base: string, name: string): unknown {
|
||||
if (name === 'react') {
|
||||
return React
|
||||
}
|
||||
if (!name.startsWith('.')) {
|
||||
return new Proxy(
|
||||
{},
|
||||
{
|
||||
get: () => {
|
||||
throw new Error(`Unspecified native mounting dependency: ${name}`)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
return new Proxy(
|
||||
{},
|
||||
{ get: (_target, key) => load(pathFor(resolve(dirname(base), name)))[String(key)] }
|
||||
)
|
||||
}
|
||||
function barrel(file: string, source: string): OperationModule {
|
||||
const parsed = ts.createSourceFile(file, source, ts.ScriptTarget.Latest, true)
|
||||
return new Proxy(
|
||||
{},
|
||||
{
|
||||
get: (_target, key) => {
|
||||
for (const statement of parsed.statements) {
|
||||
if (
|
||||
!ts.isExportDeclaration(statement) ||
|
||||
!statement.moduleSpecifier ||
|
||||
!ts.isStringLiteral(statement.moduleSpecifier) ||
|
||||
statement.isTypeOnly
|
||||
) {
|
||||
continue
|
||||
}
|
||||
const name = statement.moduleSpecifier.text
|
||||
if (statement.exportClause && ts.isNamedExports(statement.exportClause)) {
|
||||
const binding = statement.exportClause.elements.find(
|
||||
(item) => item.name.text === key && !item.isTypeOnly
|
||||
)
|
||||
if (binding) {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the barrel target is a module this loader evaluated.
|
||||
return (imported(file, name) as OperationModule)[
|
||||
binding.propertyName?.text ?? String(key)
|
||||
]
|
||||
}
|
||||
} else if (!statement.exportClause) {
|
||||
const target = pathFor(resolve(dirname(file), name))
|
||||
const text = readFileSync(target, 'utf8')
|
||||
if (
|
||||
new RegExp(`export (?:async )?(?:function|const|class) ${String(key)}\\b`).test(
|
||||
text
|
||||
)
|
||||
) {
|
||||
return load(target)[String(key)]
|
||||
}
|
||||
}
|
||||
}
|
||||
throw new Error(`Unmapped barrel export: ${String(key)} in ${file}`)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
function load(file: string): OperationModule {
|
||||
const cached = cache.get(file)
|
||||
if (cached) {
|
||||
return cached
|
||||
}
|
||||
let source = readFileSync(file, 'utf8')
|
||||
if (/mobile-tasks-(dependencies|legacy-foundation)\.tsx?$/.test(file)) {
|
||||
const result = barrel(file, source)
|
||||
cache.set(file, result)
|
||||
return result
|
||||
}
|
||||
const spec = mutation ? OPERATION_MUTATIONS[mutation] : undefined
|
||||
if (spec && file.endsWith(spec.file)) {
|
||||
// Counting occurrences, not replace calls: `replace` would silently take only the first.
|
||||
const occurrences = source.split(spec.before).length - 1
|
||||
if (occurrences !== 1) {
|
||||
throw new Error(`Mutant anchor matched ${occurrences} sites, expected 1: ${mutation}`)
|
||||
}
|
||||
source = source.replace(spec.before, spec.after)
|
||||
mutationCount++
|
||||
}
|
||||
const exports: OperationModule = {}
|
||||
cache.set(file, exports)
|
||||
const output = ts.transpileModule(source, {
|
||||
compilerOptions: {
|
||||
module: ts.ModuleKind.CommonJS,
|
||||
target: ts.ScriptTarget.ES2022,
|
||||
jsx: ts.JsxEmit.React
|
||||
}
|
||||
}).outputText
|
||||
const exposure = OPERATION_EXPOSURES.find(([suffix]) => file.endsWith(suffix))?.[1] ?? ''
|
||||
const evaluate = compileFunction(output + exposure, ['require', 'exports'], { filename: file })
|
||||
evaluate((name: string) => imported(file, name), exports)
|
||||
return exports
|
||||
}
|
||||
return {
|
||||
load: <T = OperationModule>(path: string): T =>
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: a VM-evaluated module has no static type; the caller names the shape it mounts.
|
||||
load(pathFor(resolve(root, path))) as unknown as T,
|
||||
assertMutationApplied: () => {
|
||||
if (mutation && mutationCount !== 1) {
|
||||
throw new Error(`Expected one mutation, applied ${mutationCount}`)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
/**
|
||||
* One in-memory source edit per adapter family. Each anchor names a real expression in a mounted
|
||||
* operation; the recording that owns the family must change visible state when it is applied, which
|
||||
* is what proves that family's `state()` projection observes the operation's actual output.
|
||||
*/
|
||||
export type OperationMutation = {
|
||||
/** Suffix of the mounted source file the anchor belongs to. */
|
||||
file: string
|
||||
before: string
|
||||
after: string
|
||||
}
|
||||
|
||||
export const OPERATION_MUTATIONS = {
|
||||
// Loses the generation comparison, so a stale workspace response poisons the search cache.
|
||||
race: {
|
||||
file: 'use-mobile-native-chat-file-search.ts',
|
||||
before: '!response.ok || generationRef.current !== generation',
|
||||
after: '!response.ok'
|
||||
},
|
||||
// Accepts a null result envelope instead of rejecting it. The guard is repeated for three
|
||||
// mutations in this file; the anchor carries the message so only the recorded one is edited.
|
||||
acceptance: {
|
||||
file: 'use-mobile-tasks-project-metadata-actions.tsx',
|
||||
before: `if (result.ok === false) {
|
||||
throw new Error(result.error?.message ?? 'Failed to update GitHub item')`,
|
||||
after: `if (result?.ok === false) {
|
||||
throw new Error(result.error?.message ?? 'Failed to update GitHub item')`
|
||||
},
|
||||
// Rejects the barrier early, so the sibling comment request is abandoned out of order.
|
||||
order: {
|
||||
file: 'use-mobile-tasks-item-detail-loading.tsx',
|
||||
before: `{ timeoutMs: 30_000 }
|
||||
),
|
||||
client.sendRequest(
|
||||
'linear.issueComments'`,
|
||||
after: `{ timeoutMs: 30_000 }
|
||||
).then((response) => { if (!isSuccess(response)) throw new Error(response.error.message); return response }),
|
||||
client.sendRequest(
|
||||
'linear.issueComments'`
|
||||
},
|
||||
// Reads the overrides one level above the settings envelope.
|
||||
'bot-overrides-envelope': {
|
||||
file: 'settings-read-operations.ts',
|
||||
before: "settings == null ? undefined : Reflect.get(Object(settings), 'prBotAuthorOverrides')",
|
||||
after: "raw == null ? undefined : Reflect.get(Object(raw), 'prBotAuthorOverrides')"
|
||||
},
|
||||
// Publishes the settings envelope instead of the accepted operation value.
|
||||
'workspace-context-envelope': {
|
||||
file: 'use-new-workspace-runtime-context.ts',
|
||||
before:
|
||||
'(settingsResult.value as NewWorktreeRuntimeSettings & { visibleTaskProviders?: unknown })',
|
||||
after:
|
||||
'(settingsRes.value.result as NewWorktreeRuntimeSettings & { visibleTaskProviders?: unknown })'
|
||||
},
|
||||
// Treats any successful linear.status reply as a connected Linear account.
|
||||
'home-providers-linear': {
|
||||
file: 'mobile-home-host-requests.ts',
|
||||
before: 'linearConnected: linear?.connected === true',
|
||||
after: 'linearConnected: linear !== null'
|
||||
},
|
||||
// Reads the host platform from the wrong field of the host.platform result.
|
||||
'repo-metadata-platform': {
|
||||
file: 'use-host-repo-metadata.ts',
|
||||
before: 'const platform = (result as { platform?: unknown } | null)?.platform',
|
||||
after: 'const platform = (result as { hostPlatform?: unknown } | null)?.hostPlatform'
|
||||
},
|
||||
// Hydrates the runtime task settings from the envelope rather than the accepted value.
|
||||
'task-hydration-envelope': {
|
||||
file: 'use-mobile-tasks-runtime-hydration.tsx',
|
||||
before: '((settingsResult.value ?? {}) as RuntimeTaskSettings)',
|
||||
after: '((settingsResponse.result ?? {}) as RuntimeTaskSettings)'
|
||||
},
|
||||
// Applies the preset only after the write settles, dropping the optimistic update.
|
||||
'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': {
|
||||
file: 'use-new-workspace-create-submit.ts',
|
||||
before: 'latestRuntimeSettings = settings.value as NewWorktreeRuntimeSettings',
|
||||
after: 'latestRuntimeSettings = settingsReply.result as NewWorktreeRuntimeSettings'
|
||||
},
|
||||
// Reads settings eagerly, so a null result throws before the sibling's refusal is checked.
|
||||
'new-tab-deferred-settings-read': {
|
||||
file: 'settings-read-operations.ts',
|
||||
before: ' value: () => settingsMember(raw),',
|
||||
after: ' value: ((settings) => () => settings)(settingsMember(raw)),'
|
||||
},
|
||||
// Checks the sibling's refusal before the operation's own, so a correlated refusal reports the
|
||||
// sibling. Invisible to every scenario whose sibling succeeds or rejects at the transport.
|
||||
'new-tab-refusal-order': {
|
||||
file: 'mobile-new-tab-agent-loader.ts',
|
||||
before: ` const readSettings = newTabSettingsRead.interpret(settingsResponse)
|
||||
if (!detectedResponse.ok) {
|
||||
throw new Error((detectedResponse as RpcFailure).error.message)
|
||||
}`,
|
||||
after: ` if (!detectedResponse.ok) {
|
||||
throw new Error((detectedResponse as RpcFailure).error.message)
|
||||
}
|
||||
const readSettings = newTabSettingsRead.interpret(settingsResponse)`
|
||||
},
|
||||
// Publishes an unaccepted read, blanking settings a refusal should have left alone. Invisible
|
||||
// to any scenario that refuses before the screen ever held data.
|
||||
'workspace-context-refusal-blanks': {
|
||||
file: 'use-new-workspace-runtime-context.ts',
|
||||
before: ` if (settingsValue) {
|
||||
setRuntimeSettings(settingsValue)
|
||||
}`,
|
||||
after: ' setRuntimeSettings(settingsValue)'
|
||||
},
|
||||
// Publishes the settings envelope as the refreshed task runtime settings.
|
||||
'task-workspace-envelope': {
|
||||
file: 'use-mobile-tasks-workspace-create-actions.tsx',
|
||||
before: 'latestRuntimeTaskSettings = (settingsResult.value ?? {}) as RuntimeTaskSettings',
|
||||
after: 'latestRuntimeTaskSettings = (settingsReply.result ?? {}) as RuntimeTaskSettings'
|
||||
}
|
||||
} as const satisfies Record<string, OperationMutation>
|
||||
|
||||
export type Mutation = keyof typeof OPERATION_MUTATIONS
|
||||
|
||||
/**
|
||||
* Appended to a mounted module after transpile, keyed by file suffix. An adapter drives a real
|
||||
* operation the product keeps module-private; exposing it here beats editing the pinned source.
|
||||
*/
|
||||
export const OPERATION_EXPOSURES: readonly (readonly [string, string])[] = [
|
||||
[
|
||||
'MobileAgentSessionHistoryPanel.tsx',
|
||||
'\nexports.loadMobileResumeMetadata = loadMobileResumeMetadata;'
|
||||
]
|
||||
]
|
||||
@@ -0,0 +1,227 @@
|
||||
import { observableModel } from './observable-model'
|
||||
import { settingsMountAdapters } from './settings-mount-adapters'
|
||||
import { workspaceSettingsMounts } from './workspace-settings-mounts'
|
||||
import type { MountAdapter } from './recording-scenario'
|
||||
import { hookMount, performHookAction } from './hook-mount'
|
||||
import { operationModuleLoader, type Mutation } from './operation-module-loader'
|
||||
|
||||
export function pilotMountAdapters(
|
||||
root: string,
|
||||
options: { reference?: boolean; mutation?: Mutation } = {}
|
||||
) {
|
||||
const modules = operationModuleLoader(root, options.mutation)
|
||||
const adapters: Record<string, MountAdapter> = {
|
||||
...settingsMountAdapters(modules),
|
||||
...workspaceSettingsMounts(modules),
|
||||
'workspace.file-inventory': ({ client }) => {
|
||||
const useSearch = modules.load<
|
||||
typeof import('../../session/use-mobile-native-chat-file-search')
|
||||
>('mobile/src/session/use-mobile-native-chat-file-search.ts').useMobileNativeChatFileSearch
|
||||
const operations = options.reference
|
||||
? modules
|
||||
.load('mobile/src/session/native-host-session-native-chat-operations.ts')
|
||||
.nativeHostSessionNativeChatOperations(client)
|
||||
: undefined
|
||||
let workspace = 'A'
|
||||
let state: ReturnType<typeof useSearch>
|
||||
const hook = hookMount(() => {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the recorder supplies only the members the hook reads.
|
||||
state = useSearch({ client, operations, worktreeId: workspace } as Parameters<
|
||||
typeof useSearch
|
||||
>[0])
|
||||
})
|
||||
return {
|
||||
action(name, args) {
|
||||
if (name === 'mount' || name === 'remount') {
|
||||
return hook.mount()
|
||||
}
|
||||
if (name === 'unmount') {
|
||||
return hook.unmount()
|
||||
}
|
||||
if (name === 'select') {
|
||||
workspace = String(args.workspace)
|
||||
return hook.update()
|
||||
}
|
||||
if (name === 'reset') {
|
||||
const previous = workspace
|
||||
workspace = `${workspace}-reset`
|
||||
hook.update()
|
||||
workspace = previous
|
||||
return hook.update()
|
||||
}
|
||||
if (name === 'query') {
|
||||
return performHookAction(() => state.loadNativeChatFiles(String(args.query)))
|
||||
}
|
||||
if (name === 'blur') {
|
||||
return
|
||||
}
|
||||
throw new Error(`Unknown inventory action: ${name}`)
|
||||
},
|
||||
state: () => ({ files: state?.nativeChatFilePaths ?? [] }),
|
||||
dispose: hook.unmount
|
||||
}
|
||||
},
|
||||
'project.update-metadata': (context) => {
|
||||
const useMetadata = modules.load<
|
||||
typeof import('../../tasks/use-mobile-tasks-project-metadata-actions')
|
||||
>(
|
||||
'mobile/src/tasks/use-mobile-tasks-project-metadata-actions.tsx'
|
||||
).useMobileTasksProjectMetadataActions
|
||||
const row = {
|
||||
id: 'item-1',
|
||||
itemType: 'ISSUE',
|
||||
content: { repository: 'owner/repo', number: 1, labels: [], assignees: [] }
|
||||
}
|
||||
const model = observableModel(context, {
|
||||
projectMutating: false,
|
||||
projectRowDetailError: '',
|
||||
projectRowItem: row,
|
||||
githubProjectTable: { rows: [row] },
|
||||
projectRowDetail: null,
|
||||
projectFieldDrafts: {}
|
||||
})
|
||||
Object.assign(model, {
|
||||
client: context.client,
|
||||
activeGitHubProjectHost: 'github.enterprise.test'
|
||||
})
|
||||
if (options.reference) {
|
||||
model.taskOperations = {
|
||||
projectMutation: modules
|
||||
.load('mobile/src/tasks/native-host-task-project-mutation-operations.ts')
|
||||
.nativeHostTaskProjectMutationOperations(context.client)
|
||||
}
|
||||
}
|
||||
let actions: ReturnType<typeof useMetadata>
|
||||
const hook = hookMount(() => {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the recorder supplies only the members the hook reads.
|
||||
actions = useMetadata(model as unknown as Parameters<typeof useMetadata>[0])
|
||||
})
|
||||
return {
|
||||
action(name) {
|
||||
if (name === 'mount') {
|
||||
return hook.mount()
|
||||
}
|
||||
if (name === 'submit') {
|
||||
return actions.mutateProjectRowMetadata(
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the scenario supplies the row as JSON, not as a typed model.
|
||||
row as unknown as Parameters<typeof actions.mutateProjectRowMetadata>[0],
|
||||
{ addLabels: ['recorded'] }
|
||||
)
|
||||
}
|
||||
throw new Error(`Unknown project action: ${name}`)
|
||||
},
|
||||
state: () => ({
|
||||
mutating: model.projectMutating,
|
||||
error: model.projectRowDetailError,
|
||||
row: model.projectRowItem
|
||||
}),
|
||||
dispose: hook.unmount
|
||||
}
|
||||
},
|
||||
'linear.issue-detail': (context) => {
|
||||
const useDetail = modules.load<
|
||||
typeof import('../../tasks/use-mobile-tasks-item-detail-loading')
|
||||
>('mobile/src/tasks/use-mobile-tasks-item-detail-loading.tsx').useMobileTasksItemDetailLoading
|
||||
const model = observableModel(context, {
|
||||
actionItem: {
|
||||
provider: 'linear',
|
||||
source: { id: 'issue-1', workspaceId: 'linear-workspace' }
|
||||
},
|
||||
detailLoading: false,
|
||||
detailError: '',
|
||||
detailPayload: null,
|
||||
items: []
|
||||
})
|
||||
Object.assign(model, { client: context.client, tasksSupported: true, detailRefreshSeq: 0 })
|
||||
if (options.reference) {
|
||||
model.taskOperations = {
|
||||
detail: modules
|
||||
.load('mobile/src/tasks/native-host-task-detail-operations.ts')
|
||||
.nativeHostTaskDetailOperations(context.client)
|
||||
}
|
||||
}
|
||||
const hook = hookMount(() => {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the recorder supplies only the members the hook reads.
|
||||
useDetail(model as unknown as Parameters<typeof useDetail>[0])
|
||||
})
|
||||
return {
|
||||
action(name) {
|
||||
if (name === 'mount' || name === 'remount') {
|
||||
return hook.mount()
|
||||
}
|
||||
if (name === 'unmount') {
|
||||
return hook.unmount()
|
||||
}
|
||||
if (name === 'reset') {
|
||||
model.detailRefreshSeq = Number(model.detailRefreshSeq) + 1
|
||||
return hook.update()
|
||||
}
|
||||
if (name === 'blur') {
|
||||
return
|
||||
}
|
||||
throw new Error(`Unknown detail action: ${name}`)
|
||||
},
|
||||
state: () => ({
|
||||
loading: model.detailLoading,
|
||||
error: model.detailError,
|
||||
payload: model.detailPayload
|
||||
}),
|
||||
dispose: hook.unmount
|
||||
}
|
||||
},
|
||||
'settings.new-tab-agents': ({ client }) => {
|
||||
const load = modules.load<typeof import('../../session/mobile-new-tab-agent-loader')>(
|
||||
'mobile/src/session/mobile-new-tab-agent-loader.ts'
|
||||
).loadMobileNewTabAgentOptions
|
||||
return {
|
||||
action: (_name, args) =>
|
||||
load({ client, worktreeId: String(args.workspace ?? 'repo-1::/folder') }),
|
||||
state: () => ({}),
|
||||
dispose: () => {}
|
||||
}
|
||||
},
|
||||
'settings.task-preferences': (context) => {
|
||||
const usePreferences = modules.load<
|
||||
typeof import('../../tasks/use-mobile-tasks-client-settings-actions')
|
||||
>(
|
||||
'mobile/src/tasks/use-mobile-tasks-client-settings-actions.tsx'
|
||||
).useMobileTasksClientSettingsActions
|
||||
const model = observableModel(context, {
|
||||
defaultGitHubPreset: 'all',
|
||||
githubProjectSettings: {}
|
||||
})
|
||||
Object.assign(model, {
|
||||
client: context.client,
|
||||
clientRef: { current: context.client },
|
||||
repoSelectionHydratedRef: { current: false },
|
||||
defaultRepoSelectionRef: { current: null },
|
||||
taskUiReady: true,
|
||||
githubProjectFieldVisibilityScope: null,
|
||||
taskResumeRef: { current: {} },
|
||||
trustedOrcaHooks: {}
|
||||
})
|
||||
let actions: ReturnType<typeof usePreferences>
|
||||
const hook = hookMount(() => {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the recorder supplies only the members the hook reads.
|
||||
actions = usePreferences(model as unknown as Parameters<typeof usePreferences>[0])
|
||||
})
|
||||
return {
|
||||
action(name, args) {
|
||||
if (name === 'mount') {
|
||||
return hook.mount()
|
||||
}
|
||||
if (name === 'write') {
|
||||
return actions.persistDefaultGitHubPreset(
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the preset arrives from the scenario JSON as a string.
|
||||
args.preset as Parameters<typeof actions.persistDefaultGitHubPreset>[0]
|
||||
)
|
||||
}
|
||||
throw new Error(`Unknown preferences action: ${name}`)
|
||||
},
|
||||
state: () => ({ preset: model.defaultGitHubPreset }),
|
||||
dispose: hook.unmount
|
||||
}
|
||||
}
|
||||
}
|
||||
return { adapters, assertMutationApplied: modules.assertMutationApplied }
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
import { readScenarios } from './scenario-input'
|
||||
import { resolve } from 'node:path'
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { runRecording, runRecordingMutant } from './run-recording'
|
||||
import { pilotMountAdapters } from './pilot-mount-adapters'
|
||||
import { vitestRecordingScheduler } from './vitest-recording-scheduler'
|
||||
import {
|
||||
compareGolden,
|
||||
goldenBytes,
|
||||
goldenRecording,
|
||||
readGolden,
|
||||
writeGolden
|
||||
} from './golden-recording'
|
||||
import type { Recording } from './recording-scenario'
|
||||
import type { RecordedValue } from './recording-values'
|
||||
import type { Mutation } from './operation-mutations'
|
||||
import { determinismRuns } from './determinism-runs'
|
||||
|
||||
const root = resolve(import.meta.dirname, '../../../..')
|
||||
const input = readScenarios(
|
||||
process.env.RPC_FOUNDATION_SCENARIOS ??
|
||||
resolve(root, 'mobile/rpc-foundation/pilot-scenarios.json')
|
||||
)
|
||||
const goldens = process.env.RPC_FOUNDATION_GOLDENS ?? resolve(root, 'mobile/rpc-foundation/goldens')
|
||||
// One mutant per adapter family, so every family's state projection is shown to be load-bearing.
|
||||
const mutants: Record<string, Mutation> = {
|
||||
b1: 'race',
|
||||
b2: 'acceptance',
|
||||
b3: 'order',
|
||||
'settings-bot-overrides-fulfilled': 'bot-overrides-envelope',
|
||||
'settings-workspace-context-fulfilled': 'workspace-context-envelope',
|
||||
'settings-home-providers-fulfilled': 'home-providers-linear',
|
||||
'settings-repo-metadata-fulfilled': 'repo-metadata-platform',
|
||||
'settings-task-hydration-fulfilled': 'task-hydration-envelope',
|
||||
'settings-task-write': 'task-preferences-optimistic',
|
||||
'settings-workspace-submit-fulfilled': 'workspace-submit-envelope',
|
||||
'settings-task-workspace-fulfilled': 'task-workspace-envelope'
|
||||
}
|
||||
/**
|
||||
* The archived tree's visible state, pinned per seed: b1 serves the poisoned empty inventory, b2
|
||||
* accepts the null envelope and applies the label anyway, and b3 reports the issue error instead of
|
||||
* the comments error. An unrelated refactor of those files can no longer keep this green by merely
|
||||
* differing; the mutants remain the defect evidence and this run corroborates them.
|
||||
*/
|
||||
const referenceStates: Record<string, RecordedValue> = {
|
||||
b1: { files: [] },
|
||||
b2: {
|
||||
error: '',
|
||||
mutating: false,
|
||||
row: {
|
||||
content: {
|
||||
assignees: [],
|
||||
labels: [{ color: '808080', name: 'recorded' }],
|
||||
number: 1,
|
||||
repository: 'owner/repo'
|
||||
},
|
||||
id: 'item-1',
|
||||
itemType: 'ISSUE'
|
||||
}
|
||||
},
|
||||
b3: { error: 'issue refused', loading: false, payload: { $rpc: 'null' } }
|
||||
}
|
||||
|
||||
function visibleState(recording: Recording): RecordedValue {
|
||||
return recording.checkpoints.at(-1)!.observation.state
|
||||
}
|
||||
|
||||
describe('RPC main recordings', () => {
|
||||
for (const scenario of input.scenarios) {
|
||||
it(`${scenario.id}: frozen main parity and determinism`, async () => {
|
||||
let first = ''
|
||||
for (let run = 0; run < determinismRuns(); run++) {
|
||||
const { adapters } = pilotMountAdapters(root)
|
||||
const recording = await runRecording(
|
||||
scenario,
|
||||
adapters[scenario.operation],
|
||||
vitestRecordingScheduler()
|
||||
)
|
||||
if (scenario.id === 'b1') {
|
||||
expect(visibleState(recording)).toEqual({ files: ['third.ts'] })
|
||||
}
|
||||
if (scenario.id === 'b2') {
|
||||
expect(visibleState(recording)).toMatchObject({
|
||||
error: "Cannot read properties of null (reading 'ok')"
|
||||
})
|
||||
}
|
||||
if (scenario.id === 'b3') {
|
||||
expect(visibleState(recording)).toMatchObject({
|
||||
error: 'comments transport error',
|
||||
loading: false
|
||||
})
|
||||
}
|
||||
const golden = goldenRecording(root, input.baseline, scenario, recording)
|
||||
const bytes = goldenBytes(golden)
|
||||
if (run) {
|
||||
expect(bytes).toBe(first)
|
||||
}
|
||||
first = bytes
|
||||
if (process.env.RPC_FOUNDATION_MODE === '--record') {
|
||||
await writeGolden(goldens, golden, '--record')
|
||||
} else {
|
||||
compareGolden(readGolden(goldens, scenario.id), golden)
|
||||
}
|
||||
}
|
||||
})
|
||||
const mutation = mutants[scenario.id]
|
||||
if (mutation) {
|
||||
it(`${scenario.id}: kills ${mutation}`, async () => {
|
||||
const { adapters, assertMutationApplied } = pilotMountAdapters(root, { mutation })
|
||||
const result = await runRecordingMutant(
|
||||
scenario,
|
||||
adapters[scenario.operation],
|
||||
vitestRecordingScheduler(),
|
||||
readGolden(goldens, scenario.id).recording,
|
||||
visibleState
|
||||
)
|
||||
assertMutationApplied()
|
||||
expect(result.verdict).toBe('killed')
|
||||
})
|
||||
const reference = referenceStates[scenario.id]
|
||||
if (reference) {
|
||||
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))
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,53 @@
|
||||
import type { RecordingScenario, ScenarioStep } from './recording-scenario'
|
||||
|
||||
/** A generated variant plus the index in its own step list where its distinguishing input lands. */
|
||||
export type DivergingScenario = { scenario: RecordingScenario; divergence: number }
|
||||
|
||||
function stepsKey(steps: readonly ScenarioStep[]): string {
|
||||
// The replacer keeps an explicit-undefined param distinct from an absent one.
|
||||
return JSON.stringify(steps, (_key, value: unknown) =>
|
||||
value === undefined ? '$undefined' : value
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* A checkpoint before a variant's divergence observes steps identical to the base, so every variant
|
||||
* would record the same value. Record those once in a prelude and let each variant start at its own
|
||||
* divergence; checkpoints that merely happen to be equal are left alone.
|
||||
*/
|
||||
export function hoistPreludeCheckpoints(
|
||||
base: RecordingScenario,
|
||||
variants: readonly DivergingScenario[]
|
||||
): RecordingScenario[] {
|
||||
if (!variants.length) {
|
||||
throw new Error(`No variants to hoist: ${base.id}`)
|
||||
}
|
||||
for (const { scenario, divergence } of variants) {
|
||||
if (
|
||||
stepsKey(scenario.steps.slice(0, divergence)) !== stepsKey(base.steps.slice(0, divergence))
|
||||
) {
|
||||
throw new Error(`Variant diverges from the base before its divergence index: ${scenario.id}`)
|
||||
}
|
||||
}
|
||||
const shared = Math.max(...variants.map((variant) => variant.divergence))
|
||||
const preludeSteps = base.steps.slice(0, shared)
|
||||
const scenarios: RecordingScenario[] = []
|
||||
if (preludeSteps.some((step) => 'checkpoint' in step)) {
|
||||
scenarios.push({
|
||||
...base,
|
||||
id: `${base.id}.prelude`,
|
||||
schedules: ['prelude'],
|
||||
steps: preludeSteps
|
||||
})
|
||||
}
|
||||
for (const { scenario, divergence } of variants) {
|
||||
const steps = scenario.steps.filter(
|
||||
(step, index) => !('checkpoint' in step) || index >= divergence
|
||||
)
|
||||
if (!steps.some((step) => 'checkpoint' in step)) {
|
||||
throw new Error(`Variant has no checkpoint at or after its divergence: ${scenario.id}`)
|
||||
}
|
||||
scenarios.push({ ...scenario, steps })
|
||||
}
|
||||
return scenarios
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
import { resolve } from 'node:path'
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { readScenarios } from './scenario-input'
|
||||
import { readGolden } from './golden-recording'
|
||||
import { runRecordingMutant } from './run-recording'
|
||||
import { pilotMountAdapters } from './pilot-mount-adapters'
|
||||
import { vitestRecordingScheduler } from './vitest-recording-scheduler'
|
||||
import type { Mutation } from './operation-mutations'
|
||||
|
||||
const root = resolve(import.meta.dirname, '../../../..')
|
||||
const input = readScenarios(
|
||||
process.env.RPC_FOUNDATION_SCENARIOS ??
|
||||
resolve(root, 'mobile/rpc-foundation/pilot-scenarios.json')
|
||||
)
|
||||
const goldens = process.env.RPC_FOUNDATION_GOLDENS ?? resolve(root, 'mobile/rpc-foundation/goldens')
|
||||
|
||||
/**
|
||||
* Each probe exists because a real mutation survived the whole pre-probe suite. Hole and closure
|
||||
* are asserted together: if a pre-probe scenario of the same operation also caught the mutation,
|
||||
* the probe is redundant and this test says so instead of letting it accumulate.
|
||||
*/
|
||||
const HOLES: readonly { mutation: Mutation; operation: string; closedBy: readonly string[] }[] = [
|
||||
{
|
||||
mutation: 'new-tab-refusal-order',
|
||||
operation: 'settings.new-tab-agents',
|
||||
closedBy: ['probe-new-tab-both-refused']
|
||||
},
|
||||
{
|
||||
mutation: 'new-tab-deferred-settings-read',
|
||||
operation: 'settings.new-tab-agents',
|
||||
closedBy: ['probe-new-tab-null-sibling-refused']
|
||||
},
|
||||
{
|
||||
mutation: 'workspace-context-refusal-blanks',
|
||||
operation: 'settings.workspace-context',
|
||||
closedBy: ['settings-workspace-context-refuse-after-data']
|
||||
}
|
||||
]
|
||||
|
||||
async function verdict(id: string, mutation: Mutation): Promise<string> {
|
||||
const scenario = input.scenarios.find((candidate) => candidate.id === id)!
|
||||
const { adapters, assertMutationApplied } = pilotMountAdapters(root, { mutation })
|
||||
const result = await runRecordingMutant(
|
||||
scenario,
|
||||
adapters[scenario.operation],
|
||||
vitestRecordingScheduler(),
|
||||
readGolden(goldens, id).recording
|
||||
)
|
||||
assertMutationApplied()
|
||||
return result.verdict
|
||||
}
|
||||
|
||||
describe('probe scenarios close holes the pre-probe recordings left open', () => {
|
||||
for (const hole of HOLES) {
|
||||
const family = input.scenarios.filter((scenario) => scenario.operation === hole.operation)
|
||||
for (const id of hole.closedBy) {
|
||||
it(`${id} kills ${hole.mutation}`, async () => {
|
||||
expect(await verdict(id, hole.mutation)).toBe('killed')
|
||||
})
|
||||
}
|
||||
for (const scenario of family.filter(({ id }) => !hole.closedBy.includes(id))) {
|
||||
it(`${scenario.id} cannot see ${hole.mutation}`, async () => {
|
||||
expect(await verdict(scenario.id, hole.mutation)).toBe('survived')
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,44 @@
|
||||
import { createHash } from 'node:crypto'
|
||||
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<string, string>()
|
||||
|
||||
function collect(root: string, relative: string, files: string[]): void {
|
||||
for (const entry of readdirSync(join(root, relative), { withFileTypes: true }).sort((a, b) =>
|
||||
a.name < b.name ? -1 : 1
|
||||
)) {
|
||||
const child = `${relative}/${entry.name}`
|
||||
if (entry.isDirectory()) {
|
||||
collect(root, child, files)
|
||||
} else if (!entry.name.endsWith('.md')) {
|
||||
files.push(child)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
export function recorderSha256(root: string): string {
|
||||
const cached = digests.get(root)
|
||||
if (cached !== undefined) {
|
||||
return cached
|
||||
}
|
||||
const files: string[] = []
|
||||
collect(root, RECORDER_DIRECTORY, files)
|
||||
files.push(RECORDER_SCENARIO_INPUT)
|
||||
const digest = createHash('sha256')
|
||||
.update(
|
||||
files
|
||||
.map((file) => `${file}:${readFileSync(join(root, ...file.split(posix.sep)))}`)
|
||||
.join('\n')
|
||||
)
|
||||
.digest('hex')
|
||||
digests.set(root, digest)
|
||||
return digest
|
||||
}
|
||||
@@ -0,0 +1,327 @@
|
||||
import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs'
|
||||
import { tmpdir } from 'node:os'
|
||||
import { join } from 'node:path'
|
||||
import { operationModuleLoader } from './operation-module-loader'
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { captureArguments, captureError, captureValue } from './recording-values'
|
||||
import { RECORDER_DIRECTORY, recorderSha256 } from './recorder-digest'
|
||||
import { ScriptedRpcTransport } from './scripted-rpc-transport'
|
||||
import { vitestRecordingScheduler } from './vitest-recording-scheduler'
|
||||
import {
|
||||
compareGolden,
|
||||
GOLDEN_FORMAT_VERSION,
|
||||
goldenBytes,
|
||||
PROJECTION_VERSION,
|
||||
readGolden,
|
||||
writeGolden,
|
||||
type GoldenRecording
|
||||
} from './golden-recording'
|
||||
import { hoistPreludeCheckpoints } from './prelude-checkpoints'
|
||||
import { runRecording } from './run-recording'
|
||||
import type { Observation, RecordingScenario } from './recording-scenario'
|
||||
|
||||
describe('recording boundaries', () => {
|
||||
it('preserves omitted arguments, explicit undefined, null, order, and tagged-looking objects', () => {
|
||||
expect(captureArguments(['m'])).not.toEqual(captureArguments(['m', undefined]))
|
||||
expect(captureArguments(['m', undefined])).not.toEqual(captureArguments(['m', null]))
|
||||
expect(captureValue({ b: undefined, a: null })).toEqual(captureValue({ a: null, b: undefined }))
|
||||
expect(captureValue({ $rpc: 'undefined' })).not.toEqual(captureValue(undefined))
|
||||
expect(captureValue([1, 2])).not.toEqual(captureValue([2, 1]))
|
||||
})
|
||||
|
||||
it('runs the actual stable-client projection and physical serialization', async () => {
|
||||
const clock = vitestRecordingScheduler()
|
||||
clock.start()
|
||||
const transport = new ScriptedRpcTransport(clock.elapsed)
|
||||
try {
|
||||
const result = transport.client.sendRequest(
|
||||
'worktree.ps',
|
||||
{ omitted: undefined, nullable: null },
|
||||
{ timeoutMs: 7 }
|
||||
)
|
||||
await clock.flush()
|
||||
expect(transport.requests[0].args).toEqual(
|
||||
captureArguments(['worktree.ps', { omitted: undefined, nullable: null }, { timeoutMs: 7 }])
|
||||
)
|
||||
expect(JSON.parse(transport.payloads[0].json)).toEqual({
|
||||
id: 'frame-1',
|
||||
deviceToken: 'recording-device',
|
||||
method: 'worktree.ps',
|
||||
params: { nullable: null, supportsWorktreeVisibilitySourceDefaults: true }
|
||||
})
|
||||
transport.complete(
|
||||
'worktree.ps#1',
|
||||
{ omitted: undefined, nullable: null, supportsWorktreeVisibilitySourceDefaults: true },
|
||||
{ ok: true, result: null }
|
||||
)
|
||||
await result
|
||||
} finally {
|
||||
transport.dispose()
|
||||
await clock.flush()
|
||||
clock.stop()
|
||||
}
|
||||
})
|
||||
|
||||
it('requires logical bindings plus matching params for concurrent same-method calls', async () => {
|
||||
const clock = vitestRecordingScheduler()
|
||||
clock.start()
|
||||
const transport = new ScriptedRpcTransport(clock.elapsed)
|
||||
try {
|
||||
const left = transport.client.sendRequest('files.list', { worktree: 'A' })
|
||||
const right = transport.client.sendRequest('files.list', { worktree: 'B' })
|
||||
await clock.flush()
|
||||
expect(() => transport.complete('files.list#1', { worktree: 'A' }, {})).toThrow(
|
||||
'logical binding'
|
||||
)
|
||||
expect(() => transport.bind('left', 'files.list#1', { worktree: 'B' })).toThrow(
|
||||
'params mismatch'
|
||||
)
|
||||
transport.bind('left', 'files.list#1', { worktree: 'A' })
|
||||
transport.bind('right', 'files.list#2', { worktree: 'B' })
|
||||
transport.complete('right', { worktree: 'B' }, { ok: true, result: [] })
|
||||
transport.complete('left', { worktree: 'A' }, { ok: true, result: [] })
|
||||
await Promise.all([left, right])
|
||||
} finally {
|
||||
transport.dispose()
|
||||
await clock.flush()
|
||||
clock.stop()
|
||||
}
|
||||
})
|
||||
|
||||
it('records actual deadline ambiguity and leaves peers pending before their deadlines', async () => {
|
||||
const clock = vitestRecordingScheduler()
|
||||
clock.start()
|
||||
const transport = new ScriptedRpcTransport(clock.elapsed)
|
||||
try {
|
||||
void transport.client.sendRequest('short', {}, { timeoutMs: 5 }).catch(() => {})
|
||||
void transport.client.sendRequest('long', {}, { timeoutMs: 50 }).catch(() => {})
|
||||
await clock.advance(5)
|
||||
// Exact virtual milliseconds: the deadline is recorded at the value the product asked for.
|
||||
expect(transport.requests[0].settlement).toEqual({
|
||||
status: 'rejected',
|
||||
startedAt: 0,
|
||||
settledAt: 5,
|
||||
error: {
|
||||
category: 'Error',
|
||||
message: 'Request timed out: short',
|
||||
isRpcDeliveryUnknown: true
|
||||
}
|
||||
})
|
||||
expect(transport.requests[1].settlement).toEqual({ status: 'pending', startedAt: 0 })
|
||||
} finally {
|
||||
transport.dispose()
|
||||
await clock.flush()
|
||||
clock.stop()
|
||||
}
|
||||
})
|
||||
|
||||
it('never writes from candidate mode and requires both recording authorizations', async () => {
|
||||
const directory = mkdtempSync(join(tmpdir(), 'rpc-recording-'))
|
||||
const golden = sampleGolden('test')
|
||||
const previous = process.env.RPC_FOUNDATION_RECORD
|
||||
try {
|
||||
process.env.RPC_FOUNDATION_RECORD = '0'
|
||||
await expect(writeGolden(directory, golden, '--record')).rejects.toThrow('require')
|
||||
process.env.RPC_FOUNDATION_RECORD = '1'
|
||||
await expect(writeGolden(directory, golden, 'candidate')).rejects.toThrow('require')
|
||||
await writeGolden(directory, golden, '--record')
|
||||
expect(readGolden(directory, 'test')).toEqual(golden)
|
||||
expect(() => readGolden(directory, '../escape')).toThrow('Unsafe')
|
||||
writeFileSync(
|
||||
join(directory, 'stale.json'),
|
||||
JSON.stringify({
|
||||
...JSON.parse(readFileSync(join(directory, 'test.json'), 'utf8')),
|
||||
goldenFormatVersion: 1
|
||||
})
|
||||
)
|
||||
expect(() => readGolden(directory, 'stale')).toThrow(
|
||||
`format version 1; this reader requires ${GOLDEN_FORMAT_VERSION}`
|
||||
)
|
||||
} finally {
|
||||
if (previous === undefined) {
|
||||
delete process.env.RPC_FOUNDATION_RECORD
|
||||
} else {
|
||||
process.env.RPC_FOUNDATION_RECORD = previous
|
||||
}
|
||||
rmSync(directory, { recursive: true })
|
||||
}
|
||||
})
|
||||
|
||||
it('pools repeated observation values and still resolves them for comparison', () => {
|
||||
const golden = sampleGolden('pooled')
|
||||
golden.recording.checkpoints.push({ id: 'again', observation: observation('idle') })
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the bytes were just produced by goldenBytes, so the pool is present.
|
||||
const file = JSON.parse(goldenBytes(golden)) as {
|
||||
values: Record<string, unknown>
|
||||
recording: { checkpoints: { observation: Observation }[] }
|
||||
}
|
||||
const [first, second] = file.recording.checkpoints
|
||||
expect(second!.observation).toEqual(first!.observation)
|
||||
// [] is shared by three fields; {} and the state object are the other two pool entries.
|
||||
expect(Object.keys(file.values)).toHaveLength(3)
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: an interned observation field is a pool hash at rest.
|
||||
expect(file.values[first!.observation.state as unknown as string]).toEqual({ phase: 'idle' })
|
||||
})
|
||||
|
||||
it('names the scenario, checkpoint and field, and prints values rather than hashes', () => {
|
||||
const expected = sampleGolden('diffable')
|
||||
const actual = sampleGolden('diffable')
|
||||
actual.recording.checkpoints[0]!.observation.state = { phase: 'busy' }
|
||||
expect(() => compareGolden(expected, actual)).toThrow(
|
||||
/Recording differs: diffable checkpoint settled field state\.phase[\s\S]*"idle"[\s\S]*"busy"/
|
||||
)
|
||||
})
|
||||
|
||||
it('accepts a dependency bump but still refuses a different baseline', () => {
|
||||
const expected = sampleGolden('provenance')
|
||||
const bumped = sampleGolden('provenance')
|
||||
bumped.lockfileSha256 = 'd'.repeat(64)
|
||||
expect(() => compareGolden(expected, bumped)).not.toThrow()
|
||||
const rebased = sampleGolden('provenance')
|
||||
rebased.baseline = 'e'.repeat(40)
|
||||
expect(() => compareGolden(expected, rebased)).toThrow(
|
||||
/Recording differs: provenance header baseline/
|
||||
)
|
||||
})
|
||||
|
||||
it('records a shared prefix once and refuses a variant that already diverged', () => {
|
||||
const base: RecordingScenario = {
|
||||
id: 'family',
|
||||
operation: 'op',
|
||||
version: 1,
|
||||
family: 'op',
|
||||
sites: [],
|
||||
schedules: [],
|
||||
steps: [
|
||||
{ action: 'mount', id: 'mount' },
|
||||
{ checkpoint: 'pending' },
|
||||
{ complete: 'a#1', params: {}, reply: { ok: true } },
|
||||
{ checkpoint: 'settled' }
|
||||
]
|
||||
}
|
||||
const variant = (id: string, reply: unknown): RecordingScenario => ({
|
||||
...base,
|
||||
id,
|
||||
steps: base.steps.map((step) => ('complete' in step ? { ...step, reply } : step))
|
||||
})
|
||||
const hoisted = hoistPreludeCheckpoints(base, [
|
||||
{ divergence: 2, scenario: variant('family.ok', { ok: true }) },
|
||||
{ divergence: 2, scenario: variant('family.refused', { ok: false }) }
|
||||
])
|
||||
expect(hoisted.map((scenario) => scenario.id)).toEqual([
|
||||
'family.prelude',
|
||||
'family.ok',
|
||||
'family.refused'
|
||||
])
|
||||
expect(hoisted[0]!.steps.filter((step) => 'checkpoint' in step)).toEqual([
|
||||
{ checkpoint: 'pending' }
|
||||
])
|
||||
expect(hoisted[1]!.steps.filter((step) => 'checkpoint' in step)).toEqual([
|
||||
{ checkpoint: 'settled' }
|
||||
])
|
||||
expect(() =>
|
||||
hoistPreludeCheckpoints(base, [
|
||||
{ divergence: 3, scenario: variant('family.late', { ok: false }) }
|
||||
])
|
||||
).toThrow('diverges from the base')
|
||||
})
|
||||
|
||||
it('refuses a checkpoint whose clock drifted from the scripted advances', async () => {
|
||||
const scheduler = vitestRecordingScheduler()
|
||||
await expect(
|
||||
runRecording(
|
||||
{
|
||||
id: 'drift',
|
||||
operation: 'op',
|
||||
version: 1,
|
||||
family: 'op',
|
||||
sites: [],
|
||||
schedules: [],
|
||||
steps: [{ advance: 10 }, { checkpoint: 'settled' }]
|
||||
},
|
||||
() => ({ action: () => {}, state: () => ({}), dispose: () => {} }),
|
||||
{ ...scheduler, elapsed: () => scheduler.elapsed() + 1 }
|
||||
)
|
||||
).rejects.toThrow('Checkpoint clock drifted: drift settled at 11, scripted 10')
|
||||
})
|
||||
|
||||
it('records an error code and cause, and omits both when the error carries neither', () => {
|
||||
expect(captureError(new Error('plain'))).toEqual({
|
||||
category: 'Error',
|
||||
message: 'plain',
|
||||
isRpcDeliveryUnknown: false
|
||||
})
|
||||
const detailed = Object.assign(new TypeError('outer'), {
|
||||
code: 'refused',
|
||||
cause: new Error('inner')
|
||||
})
|
||||
expect(captureError(detailed)).toMatchObject({
|
||||
code: 'refused',
|
||||
cause: { category: 'Error', message: 'inner' }
|
||||
})
|
||||
})
|
||||
|
||||
it('digests every executable recorder input and ignores prose', () => {
|
||||
const root = mkdtempSync(join(tmpdir(), 'rpc-recorder-'))
|
||||
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')
|
||||
expect(recorderSha256(join(root, '.'))).toBe(original)
|
||||
writeFileSync(join(directory, 'runner.ts'), 'export const runner = 2')
|
||||
expect(recorderSha256(join(root, './'))).not.toBe(original)
|
||||
} finally {
|
||||
rmSync(root, { recursive: true })
|
||||
}
|
||||
})
|
||||
|
||||
it('refuses a mutation anchor that matches more than once', () => {
|
||||
const root = mkdtempSync(join(tmpdir(), 'rpc-mutant-'))
|
||||
try {
|
||||
const anchor =
|
||||
"const overrides = settings == null ? undefined : Reflect.get(Object(settings), 'prBotAuthorOverrides')"
|
||||
mkdirSync(join(root, 'mod'), { recursive: true })
|
||||
writeFileSync(
|
||||
join(root, 'mod/settings-read-operations.ts'),
|
||||
`const raw = {} as { settings?: unknown }\nconst settings = raw.settings\nexport function first() {\n ${anchor}\n return overrides\n}\nexport function second() {\n ${anchor}\n return overrides\n}\n`
|
||||
)
|
||||
const loader = operationModuleLoader(root, 'bot-overrides-envelope')
|
||||
expect(() => loader.load('mod/settings-read-operations.ts')).toThrow(
|
||||
'matched 2 sites, expected 1'
|
||||
)
|
||||
} finally {
|
||||
rmSync(root, { recursive: true })
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
function observation(phase: string): Observation {
|
||||
return {
|
||||
sender: [],
|
||||
payloads: [],
|
||||
settlements: {},
|
||||
state: { phase },
|
||||
effects: []
|
||||
}
|
||||
}
|
||||
|
||||
function sampleGolden(id: string): GoldenRecording {
|
||||
return {
|
||||
operation: 'op',
|
||||
family: 'op',
|
||||
namedDeltas: [],
|
||||
runnerVersion: 1,
|
||||
baseline: 'a'.repeat(40),
|
||||
lockfileSha256: 'b'.repeat(64),
|
||||
recorderSha256: 'c'.repeat(64),
|
||||
platform: process.platform,
|
||||
scenarioVersion: 1,
|
||||
projectionVersion: PROJECTION_VERSION,
|
||||
goldenFormatVersion: GOLDEN_FORMAT_VERSION,
|
||||
recording: { scenario: id, checkpoints: [{ id: 'settled', observation: observation('idle') }] }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
import type { RpcClient } from '../../transport/rpc-client'
|
||||
import type { RecordedValue } from './recording-values'
|
||||
|
||||
export type RpcRequestSender = Pick<RpcClient, 'sendRequest'>
|
||||
export type Rejection = {
|
||||
message: string
|
||||
category?: 'Error' | 'TypeError'
|
||||
deliveryUnknown?: boolean
|
||||
}
|
||||
export type ScenarioStep =
|
||||
| { action: string; id: string; args?: Record<string, unknown> }
|
||||
| { complete: string; params: unknown; reply?: unknown; reject?: Rejection }
|
||||
| { bind: string; request: string; params: unknown }
|
||||
| { advance: number }
|
||||
| { checkpoint: string }
|
||||
export type RecordingScenario = {
|
||||
id: string
|
||||
operation: string
|
||||
version: number
|
||||
family: string
|
||||
sites: string[]
|
||||
schedules: string[]
|
||||
namedDeltas?: string[]
|
||||
steps: ScenarioStep[]
|
||||
}
|
||||
export type MountedOperation = {
|
||||
action: (name: string, args: Record<string, unknown>) => unknown
|
||||
state: () => unknown
|
||||
dispose: () => void | Promise<void>
|
||||
}
|
||||
export type MountContext = {
|
||||
client: RpcClient
|
||||
effect: (name: string, value: unknown) => void
|
||||
}
|
||||
export type MountAdapter = (context: MountContext) => MountedOperation
|
||||
export type RecordingScheduler = {
|
||||
start: () => void
|
||||
flush: () => Promise<void>
|
||||
advance: (ms: number) => Promise<void>
|
||||
/** Virtual milliseconds since the pinned recording epoch. */
|
||||
elapsed: () => number
|
||||
stop: () => void
|
||||
}
|
||||
export type Observation = {
|
||||
sender: RecordedValue
|
||||
payloads: RecordedValue
|
||||
settlements: RecordedValue
|
||||
state: RecordedValue
|
||||
effects: RecordedValue
|
||||
}
|
||||
export type Recording = {
|
||||
scenario: string
|
||||
checkpoints: { id: string; observation: Observation }[]
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
import { isRpcDeliveryUnknown } from '../../transport/rpc-delivery-ambiguity'
|
||||
|
||||
export type RecordedValue =
|
||||
| null
|
||||
| boolean
|
||||
| number
|
||||
| string
|
||||
| RecordedValue[]
|
||||
| {
|
||||
[key: string]: RecordedValue
|
||||
}
|
||||
|
||||
export function captureValue(value: unknown): RecordedValue {
|
||||
if (value === undefined) {
|
||||
return { $rpc: 'undefined' }
|
||||
}
|
||||
if (value === null) {
|
||||
return { $rpc: 'null' }
|
||||
}
|
||||
if (Array.isArray(value)) {
|
||||
return value.map(captureValue)
|
||||
}
|
||||
if (typeof value === 'object') {
|
||||
if (![Object.prototype, null].includes(Object.getPrototypeOf(value))) {
|
||||
throw new Error('Observation requires an explicit projection for non-plain objects')
|
||||
}
|
||||
const entries = Object.keys(value)
|
||||
.sort()
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the plain-object branch above already narrowed the container.
|
||||
.map((key) => [key, captureValue((value as Record<string, unknown>)[key])] as const)
|
||||
return '$rpc' in value
|
||||
? { $rpc: 'object', entries: entries.map(([key, entry]) => [key, entry]) }
|
||||
: Object.fromEntries(entries)
|
||||
}
|
||||
if (typeof value === 'number' && !Number.isFinite(value)) {
|
||||
return { $rpc: 'number', value: String(value) }
|
||||
}
|
||||
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
||||
return value
|
||||
}
|
||||
throw new Error(`Unsupported observation: ${typeof value}`)
|
||||
}
|
||||
|
||||
export function captureArguments(args: readonly unknown[]): RecordedValue {
|
||||
return ['method', 'params', 'options'].map((name, index) => ({
|
||||
name,
|
||||
value: index < args.length ? captureValue(args[index]) : { $rpc: 'absent' }
|
||||
}))
|
||||
}
|
||||
|
||||
/** `code` and `cause` are recorded only when present, so an error without them keeps three fields. */
|
||||
export function captureError(error: unknown, depth = 0): RecordedValue {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: code and cause are read defensively; a thrown value carries neither by type.
|
||||
const detail = error as { code?: unknown; cause?: unknown }
|
||||
const code = error instanceof Error ? detail.code : undefined
|
||||
const cause = error instanceof Error && depth < 4 ? detail.cause : undefined
|
||||
return {
|
||||
category: error instanceof Error ? error.constructor.name : typeof error,
|
||||
message: error instanceof Error ? error.message : String(error),
|
||||
isRpcDeliveryUnknown: isRpcDeliveryUnknown(error),
|
||||
...(code === undefined ? {} : { code: captureValue(code) }),
|
||||
...(cause === undefined ? {} : { cause: captureError(cause, depth + 1) })
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* `startedAt` and `settledAt` are virtual milliseconds on the pinned fake clock. They give the
|
||||
* observation a temporal dimension: a transition the product schedules for itself, such as a
|
||||
* request deadline or a debounce, is recorded at the time it actually happens, so any change to
|
||||
* that duration moves a recorded number rather than needing a scenario placed across it.
|
||||
*/
|
||||
export type Settlement =
|
||||
| { status: 'pending'; startedAt: number }
|
||||
| { status: 'fulfilled'; startedAt: number; settledAt: number; value: RecordedValue }
|
||||
| { status: 'rejected'; startedAt: number; settledAt: number; error: RecordedValue }
|
||||
|
||||
export function rejectedSettlement(error: unknown, at: number): Settlement {
|
||||
return { status: 'rejected', startedAt: at, settledAt: at, error: captureError(error) }
|
||||
}
|
||||
|
||||
export function observeSettlement(
|
||||
value: unknown,
|
||||
now: () => number,
|
||||
update: (state: Settlement) => void
|
||||
): void {
|
||||
const startedAt = now()
|
||||
update({ status: 'pending', startedAt })
|
||||
Promise.resolve(value).then(
|
||||
(result) =>
|
||||
update({ status: 'fulfilled', startedAt, settledAt: now(), value: captureValue(result) }),
|
||||
(error: unknown) =>
|
||||
update({ status: 'rejected', startedAt, settledAt: now(), error: captureError(error) })
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
import { hoistPreludeCheckpoints } from './prelude-checkpoints'
|
||||
import type { RecordingScenario, Rejection, ScenarioStep } from './recording-scenario'
|
||||
|
||||
export type ReplyPartition = { id: string; reply?: unknown; reject?: Rejection }
|
||||
|
||||
/**
|
||||
* Only shapes a host can send. `successResponse` always sets `result`, so an absent key means the
|
||||
* handler returned undefined and there is no explicit-undefined shape on a JSON wire; `null` is a
|
||||
* real result (`linear.getIssue` on a missing issue, and the b2 seed). The GitHub project
|
||||
* mutations carry an inner `{ok, error}` envelope whose error is a string or an object. Everything
|
||||
* else a client sees is the dispatcher refusing, not knowing the method, or the transport failing.
|
||||
*/
|
||||
export function replyPartitions(normal: unknown): ReplyPartition[] {
|
||||
return [
|
||||
{ id: 'normal', reply: { ok: true, result: normal } },
|
||||
{ id: 'result-absent', reply: { ok: true } },
|
||||
{ id: 'result-null', reply: { ok: true, result: null } },
|
||||
{ id: 'inner-ok-missing', reply: { ok: true, result: { error: 'refused' } } },
|
||||
{
|
||||
id: 'inner-false-string-error',
|
||||
reply: { ok: true, result: { ok: false, error: 'inner refused' } }
|
||||
},
|
||||
{
|
||||
id: 'inner-false-object-error',
|
||||
reply: { ok: true, result: { ok: false, error: { message: 'inner refused' } } }
|
||||
},
|
||||
{
|
||||
id: 'outer-refused',
|
||||
reply: { ok: false, error: { code: 'refused', message: 'outer refused' } }
|
||||
},
|
||||
{
|
||||
id: 'method-not-found',
|
||||
reply: { ok: false, error: { code: 'method_not_found', message: 'Unknown method' } }
|
||||
},
|
||||
{ id: 'transport-rejection', reject: { message: 'transport failure', deliveryUnknown: true } }
|
||||
]
|
||||
}
|
||||
|
||||
export function driveReplyMatrix(
|
||||
base: RecordingScenario,
|
||||
request: string,
|
||||
normal: unknown
|
||||
): RecordingScenario[] {
|
||||
const sites = base.steps.flatMap((step, index) =>
|
||||
'complete' in step && step.complete === request ? [index] : []
|
||||
)
|
||||
if (sites.length !== 1) {
|
||||
throw new Error(`Matrix requires exactly one completion: ${request}`)
|
||||
}
|
||||
const divergence = sites[0]!
|
||||
return hoistPreludeCheckpoints(
|
||||
base,
|
||||
replyPartitions(normal).map((partition) => ({
|
||||
divergence,
|
||||
scenario: {
|
||||
...base,
|
||||
id: `${base.id}.${partition.id}`,
|
||||
steps: base.steps.map((step, index): ScenarioStep =>
|
||||
index === divergence && 'complete' in step
|
||||
? {
|
||||
complete: request,
|
||||
params: step.params,
|
||||
...('reject' in partition
|
||||
? { reject: partition.reject }
|
||||
: { reply: partition.reply })
|
||||
}
|
||||
: step
|
||||
)
|
||||
}
|
||||
}))
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,148 @@
|
||||
import { recordUnhandledRejections } from './unhandled-recording'
|
||||
import {
|
||||
captureValue,
|
||||
observeSettlement,
|
||||
rejectedSettlement,
|
||||
type Settlement,
|
||||
type RecordedValue
|
||||
} from './recording-values'
|
||||
import type {
|
||||
MountAdapter,
|
||||
Recording,
|
||||
RecordingScenario,
|
||||
RecordingScheduler,
|
||||
MountedOperation
|
||||
} from './recording-scenario'
|
||||
import { ScriptedRpcTransport } from './scripted-rpc-transport'
|
||||
|
||||
export async function runRecording(
|
||||
scenario: RecordingScenario,
|
||||
mount: MountAdapter,
|
||||
scheduler: RecordingScheduler
|
||||
): Promise<Recording> {
|
||||
scheduler.start()
|
||||
const transport = new ScriptedRpcTransport(scheduler.elapsed)
|
||||
const effects: { name: string; value: RecordedValue }[] = []
|
||||
const settlements: Record<string, Settlement> = {}
|
||||
const recording: Recording = { scenario: scenario.id, checkpoints: [] }
|
||||
const effect = (name: string, value: unknown) => {
|
||||
effects.push({ name, value: captureValue(value) })
|
||||
}
|
||||
const stopUnhandled = recordUnhandledRejections(effect)
|
||||
let mounted: MountedOperation | undefined
|
||||
const ids = new Set<string>()
|
||||
let advanced = 0
|
||||
let cleaned = false
|
||||
const teardown = async (): Promise<void> => {
|
||||
cleaned = true
|
||||
await mounted?.dispose()
|
||||
transport.dispose()
|
||||
await scheduler.flush()
|
||||
}
|
||||
try {
|
||||
mounted = mount({ client: transport.client, effect })
|
||||
for (const step of scenario.steps) {
|
||||
if ('action' in step) {
|
||||
if (ids.has(step.id)) {
|
||||
throw new Error(`Duplicate action: ${step.id}`)
|
||||
}
|
||||
ids.add(step.id)
|
||||
try {
|
||||
const value =
|
||||
step.action === 'disconnect'
|
||||
? transport.disconnect()
|
||||
: step.action === 'cutover'
|
||||
? transport.cutover()
|
||||
: mounted.action(step.action, step.args ?? {})
|
||||
observeSettlement(value, scheduler.elapsed, (state) => {
|
||||
settlements[step.id] = state
|
||||
})
|
||||
} catch (error) {
|
||||
settlements[step.id] = rejectedSettlement(error, scheduler.elapsed())
|
||||
}
|
||||
} else if ('complete' in step) {
|
||||
transport.complete(step.complete, step.params, step.reply, step.reject)
|
||||
} else if ('bind' in step) {
|
||||
transport.bind(step.bind, step.request, step.params)
|
||||
} else if ('advance' in step) {
|
||||
advanced += step.advance
|
||||
await scheduler.advance(step.advance)
|
||||
}
|
||||
await scheduler.flush()
|
||||
if ('checkpoint' in step) {
|
||||
// A checkpoint's own clock is the sum of the scripted advances, so recording it would add
|
||||
// bytes and no signal. Asserted rather than recorded, so a future drift fails loudly.
|
||||
if (scheduler.elapsed() !== advanced) {
|
||||
throw new Error(
|
||||
`Checkpoint clock drifted: ${scenario.id} ${step.checkpoint} at ${scheduler.elapsed()}, scripted ${advanced}`
|
||||
)
|
||||
}
|
||||
recording.checkpoints.push({
|
||||
id: step.checkpoint,
|
||||
observation: {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: a structured clone of recorded requests is recorded data.
|
||||
sender: structuredClone(transport.requests) as unknown as RecordedValue,
|
||||
payloads: structuredClone(transport.payloads),
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: a structured clone of recorded settlements is recorded data.
|
||||
settlements: structuredClone(settlements) as unknown as RecordedValue,
|
||||
state: captureValue(mounted.state()),
|
||||
effects: structuredClone(effects)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
if (!recording.checkpoints.length) {
|
||||
throw new Error(`No checkpoints: ${scenario.id}`)
|
||||
}
|
||||
// Why cleanup runs here and not only in `finally`: each checkpoint clones `effects`, so a
|
||||
// rejection or state write produced by dispose, transport teardown or the final flush landed
|
||||
// after the recording was built and never reached a golden. Unmount leaks are exactly what
|
||||
// this oracle exists to catch, so teardown happens on the recorded path and anything it
|
||||
// observes becomes its own checkpoint. `state` is captured before dispose because the
|
||||
// operation is gone afterwards.
|
||||
const beforeCleanup = effects.length
|
||||
const stateAtCleanup = captureValue(mounted.state())
|
||||
await teardown()
|
||||
if (effects.length !== beforeCleanup) {
|
||||
recording.checkpoints.push({
|
||||
id: 'cleanup',
|
||||
observation: {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: a structured clone of recorded requests is recorded data.
|
||||
sender: structuredClone(transport.requests) as unknown as RecordedValue,
|
||||
payloads: structuredClone(transport.payloads),
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: a structured clone of recorded settlements is recorded data.
|
||||
settlements: structuredClone(settlements) as unknown as RecordedValue,
|
||||
state: stateAtCleanup,
|
||||
effects: structuredClone(effects)
|
||||
}
|
||||
})
|
||||
}
|
||||
return recording
|
||||
} finally {
|
||||
try {
|
||||
if (!cleaned) {
|
||||
await teardown()
|
||||
}
|
||||
} finally {
|
||||
stopUnhandled()
|
||||
scheduler.stop()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export async function runRecordingMutant(
|
||||
scenario: RecordingScenario,
|
||||
mutatedMount: MountAdapter,
|
||||
scheduler: RecordingScheduler,
|
||||
baseline: Recording,
|
||||
project: (recording: Recording) => unknown = (recording) => recording
|
||||
): Promise<{ verdict: 'killed' | 'survived'; recording: Recording }> {
|
||||
const recording = await runRecording(scenario, mutatedMount, scheduler)
|
||||
return {
|
||||
verdict:
|
||||
JSON.stringify(project(recording)) === JSON.stringify(project(baseline))
|
||||
? 'survived'
|
||||
: 'killed',
|
||||
recording
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
import { readFileSync } from 'node:fs'
|
||||
import type { RecordingScenario } from './recording-scenario'
|
||||
|
||||
function decode(value: unknown): unknown {
|
||||
if (Array.isArray(value)) {
|
||||
return value.map(decode)
|
||||
}
|
||||
if (value && typeof value === 'object') {
|
||||
if (Object.keys(value).length === 1 && '$undefined' in value && value.$undefined === true) {
|
||||
return undefined
|
||||
}
|
||||
return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, decode(entry)]))
|
||||
}
|
||||
return value
|
||||
}
|
||||
export function readScenarios(path: string): { baseline: string; scenarios: RecordingScenario[] } {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the manifest shape is validated on the next lines.
|
||||
const input = decode(JSON.parse(readFileSync(path, 'utf8'))) as {
|
||||
baseline: string
|
||||
scenarios: RecordingScenario[]
|
||||
}
|
||||
if (
|
||||
!/^[a-f0-9]{40}$/.test(input.baseline) ||
|
||||
!Array.isArray(input.scenarios) ||
|
||||
!input.scenarios.length
|
||||
) {
|
||||
throw new Error('Invalid recording manifest')
|
||||
}
|
||||
const ids = input.scenarios.map((scenario) => scenario.id)
|
||||
if (new Set(ids).size !== ids.length) {
|
||||
throw new Error('Duplicate scenario ids')
|
||||
}
|
||||
return input
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
import { hoistPreludeCheckpoints, type DivergingScenario } from './prelude-checkpoints'
|
||||
import type { RecordingScenario, ScenarioStep } from './recording-scenario'
|
||||
|
||||
type Completion = Extract<ScenarioStep, { complete: string }>
|
||||
export const REQUIRED_SCHEDULES = [
|
||||
'forward',
|
||||
'reverse',
|
||||
'reset-before-first',
|
||||
'reset-after-first',
|
||||
'reset-before-second',
|
||||
'reset-after-second',
|
||||
'a-b-a',
|
||||
'stale-inflight-cleanup',
|
||||
'unmount-remount',
|
||||
'blur-retained-route',
|
||||
'client-cutover',
|
||||
'timeout',
|
||||
'disconnect',
|
||||
'both-reject-forward',
|
||||
'both-reject-reverse',
|
||||
'reject-peer-pending'
|
||||
] as const
|
||||
|
||||
export function siblingSchedules(
|
||||
base: RecordingScenario,
|
||||
first: Completion,
|
||||
second: Completion
|
||||
): RecordingScenario[] {
|
||||
const firstIndex = base.steps.indexOf(first)
|
||||
const secondIndex = base.steps.indexOf(second)
|
||||
if (firstIndex === -1 || secondIndex < firstIndex) {
|
||||
throw new Error('Sibling completions must be ordered members of the base scenario')
|
||||
}
|
||||
const prefix = base.steps.slice(0, firstIndex).filter((step) => !('checkpoint' in step))
|
||||
const suffix = base.steps.slice(secondIndex + 1).filter((step) => !('checkpoint' in step))
|
||||
const checkpoint = { checkpoint: 'sibling-pending' }
|
||||
const rejected = (step: Completion): Completion => ({
|
||||
complete: step.complete,
|
||||
params: step.params,
|
||||
reject: { message: `${step.complete} rejected`, deliveryUnknown: true }
|
||||
})
|
||||
const variants: Record<string, ScenarioStep[]> = {
|
||||
forward: [first, checkpoint, second],
|
||||
reverse: [second, checkpoint, first],
|
||||
'both-reject-forward': [rejected(first), checkpoint, rejected(second)],
|
||||
'both-reject-reverse': [rejected(second), checkpoint, rejected(first)],
|
||||
'reject-peer-pending': [rejected(first), checkpoint],
|
||||
timeout: [{ advance: 30_000 }],
|
||||
disconnect: [{ action: 'disconnect', id: 'disconnect' }],
|
||||
'client-cutover': [{ action: 'cutover', id: 'cutover' }]
|
||||
}
|
||||
return Object.entries(variants).map(([schedule, steps]) => ({
|
||||
...base,
|
||||
id: `${base.id}.${schedule}`,
|
||||
schedules: [schedule],
|
||||
steps: [...prefix, ...steps, ...suffix, { checkpoint: 'settled' }]
|
||||
}))
|
||||
}
|
||||
|
||||
/** Completions are rebound so a lifecycle boundary can land between a request and its reply. */
|
||||
export function bindCompletions(steps: readonly ScenarioStep[]): ScenarioStep[] {
|
||||
return steps.flatMap((step): ScenarioStep[] =>
|
||||
'complete' in step
|
||||
? [
|
||||
{ bind: `lifecycle-${step.complete}`, request: step.complete, params: step.params },
|
||||
{ ...step, complete: `lifecycle-${step.complete}` }
|
||||
]
|
||||
: [step]
|
||||
)
|
||||
}
|
||||
|
||||
export function lifecycleSchedules(
|
||||
base: RecordingScenario,
|
||||
action: 'reset' | 'unmount' | 'blur'
|
||||
): DivergingScenario[] {
|
||||
const completions = base.steps.flatMap((step, index) => ('complete' in step ? [index] : []))
|
||||
return completions.flatMap((index, occurrence) =>
|
||||
['before', 'after'].map((side) => {
|
||||
const insertion = index + (side === 'after' ? 1 : 0)
|
||||
const steps = [...base.steps]
|
||||
steps.splice(
|
||||
insertion,
|
||||
0,
|
||||
{ action, id: `lifecycle-${action}` },
|
||||
{ checkpoint: 'lifecycle-boundary' }
|
||||
)
|
||||
if (action === 'unmount') {
|
||||
steps.push({ action: 'remount', id: 'remount' }, { checkpoint: 'remounted' })
|
||||
}
|
||||
return {
|
||||
divergence: bindCompletions(base.steps.slice(0, insertion)).length,
|
||||
scenario: {
|
||||
...base,
|
||||
id: `${base.id}.${action}-${side}-${occurrence + 1}`,
|
||||
schedules: [`${action}-${side}-${occurrence + 1}`],
|
||||
steps: bindCompletions(steps)
|
||||
}
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
export function interruptionSchedules(base: RecordingScenario): RecordingScenario[] {
|
||||
const completion = base.steps.findLastIndex((step) => 'complete' in step)
|
||||
if (completion === -1) {
|
||||
throw new Error('Interruption schedule needs an in-flight request')
|
||||
}
|
||||
return hoistPreludeCheckpoints(
|
||||
base,
|
||||
['timeout', 'disconnect', 'cutover'].map((interruption) => ({
|
||||
divergence: completion,
|
||||
scenario: {
|
||||
...base,
|
||||
id: `${base.id}.${interruption}`,
|
||||
schedules: [interruption],
|
||||
steps: [
|
||||
...base.steps.slice(0, completion),
|
||||
interruption === 'timeout'
|
||||
? { advance: 30_000 }
|
||||
: { action: interruption, id: interruption },
|
||||
{ checkpoint: 'interrupted' },
|
||||
...base.steps.slice(completion)
|
||||
]
|
||||
}
|
||||
}))
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,176 @@
|
||||
import type { ConnectionState, RpcResponse } from '../../transport/types'
|
||||
import type { RpcClient } from '../../transport/rpc-client'
|
||||
import { RpcClientRequestTracker } from '../../transport/rpc-client-request-tracker'
|
||||
import { createStableLogicalRpcClient } from '../../transport/stable-logical-rpc-client'
|
||||
import { markRpcDeliveryUnknown } from '../../transport/rpc-delivery-ambiguity'
|
||||
import {
|
||||
captureArguments,
|
||||
captureValue,
|
||||
observeSettlement,
|
||||
type Settlement
|
||||
} from './recording-values'
|
||||
import type { Rejection } from './recording-scenario'
|
||||
|
||||
export class ScriptedRpcTransport {
|
||||
readonly requests: {
|
||||
name: string
|
||||
args: ReturnType<typeof captureArguments>
|
||||
settlement: Settlement
|
||||
}[] = []
|
||||
readonly payloads: { name: string; json: string }[] = []
|
||||
readonly client: RpcClient
|
||||
readonly logical
|
||||
private counts = new Map<string, number>()
|
||||
private bindings = new Map<string, { id: string; params: unknown; completed: boolean }>()
|
||||
private aliases = new Map<string, string>()
|
||||
private activeName = ''
|
||||
private frameCount = 0
|
||||
private state: ConnectionState = 'connected'
|
||||
private listeners = new Set<(state: ConnectionState) => void>()
|
||||
private rejects = new Map<string, (error: Error) => void>()
|
||||
private tracker = new RpcClientRequestTracker({
|
||||
nextId: () => `frame-${++this.frameCount}`,
|
||||
getState: () => this.state,
|
||||
waitForConnected: async () => {
|
||||
if (this.state !== 'connected') {
|
||||
throw new Error('Scripted transport disconnected')
|
||||
}
|
||||
},
|
||||
deviceToken: 'recording-device',
|
||||
sendEncrypted: (value) => {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the physical client publishes the frame this transport just serialized.
|
||||
const payload = value as { id: string; method: string; params: unknown }
|
||||
const name = this.wireNames.shift()
|
||||
if (!name) {
|
||||
throw new Error('Unbound physical request')
|
||||
}
|
||||
this.bindings.set(name, { id: payload.id, params: payload.params, completed: false })
|
||||
this.payloads.push({ name, json: JSON.stringify(value) })
|
||||
return true
|
||||
}
|
||||
})
|
||||
private wireNames: string[] = []
|
||||
|
||||
/** `now` is the recording scheduler's virtual clock; every settlement is stamped from it. */
|
||||
constructor(private readonly now: () => number = () => 0) {
|
||||
const session = this.session()
|
||||
this.logical = createStableLogicalRpcClient(session, 'lan')
|
||||
this.client = {
|
||||
...this.logical,
|
||||
sendRequest: (...args: Parameters<RpcClient['sendRequest']>) => {
|
||||
const occurrence = (this.counts.get(args[0]) ?? 0) + 1
|
||||
this.counts.set(args[0], occurrence)
|
||||
const name = `${args[0]}#${occurrence}`
|
||||
this.activeName = name
|
||||
const request = {
|
||||
name,
|
||||
args: captureArguments(args),
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: a pending settlement has no settledAt yet.
|
||||
settlement: { status: 'pending', startedAt: this.now() } as Settlement
|
||||
}
|
||||
this.requests.push(request)
|
||||
const promise = this.logical.sendRequest(...args)
|
||||
observeSettlement(promise, this.now, (state) => {
|
||||
request.settlement = state
|
||||
})
|
||||
return promise
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private session(): RpcClient {
|
||||
return {
|
||||
sendRequest: (...args) => {
|
||||
const name = this.activeName
|
||||
this.wireNames.push(name)
|
||||
return new Promise<RpcResponse>((resolve, reject) => {
|
||||
this.rejects.set(name, reject)
|
||||
this.tracker.sendRequest(...args).then(resolve, reject)
|
||||
})
|
||||
},
|
||||
subscribe: () => {
|
||||
throw new Error('Subscriptions are outside this request-only runner')
|
||||
},
|
||||
updateTerminalSubscriptionViewport: () => {},
|
||||
getState: () => this.state,
|
||||
getReconnectAttempt: () => 0,
|
||||
getLastConnectedAt: () => 0,
|
||||
onStateChange: (listener) => {
|
||||
this.listeners.add(listener)
|
||||
return () => {
|
||||
this.listeners.delete(listener)
|
||||
}
|
||||
},
|
||||
notifyForeground: () => {},
|
||||
close: () => {
|
||||
this.tracker.rejectAll('Connection closed', { deliveryUnknown: true })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bind(alias: string, name: string, params: unknown): void {
|
||||
name = this.aliases.get(name) ?? name
|
||||
const binding = this.bindings.get(name)
|
||||
if (!binding || this.aliases.has(alias)) {
|
||||
throw new Error(`Invalid request binding: ${alias}`)
|
||||
}
|
||||
if (JSON.stringify(captureValue(binding.params)) !== JSON.stringify(captureValue(params))) {
|
||||
throw new Error(`Binding params mismatch: ${alias}`)
|
||||
}
|
||||
this.aliases.set(alias, name)
|
||||
}
|
||||
|
||||
complete(name: string, params: unknown, reply: unknown, rejection?: Rejection): void {
|
||||
const alias = this.aliases.get(name)
|
||||
const requestedName = alias ?? name
|
||||
const method = requestedName.split('#')[0]
|
||||
if (
|
||||
!alias &&
|
||||
[...this.bindings].filter(([key, value]) => key.split('#')[0] === method && !value.completed)
|
||||
.length > 1
|
||||
) {
|
||||
throw new Error(`Concurrent requests require a logical binding: ${name}`)
|
||||
}
|
||||
name = requestedName
|
||||
const binding = this.bindings.get(name)
|
||||
if (!binding || binding.completed) {
|
||||
throw new Error(`Missing or completed request: ${name}`)
|
||||
}
|
||||
if (JSON.stringify(captureValue(binding.params)) !== JSON.stringify(captureValue(params))) {
|
||||
throw new Error(`Request params mismatch: ${name}`)
|
||||
}
|
||||
binding.completed = true
|
||||
if (rejection) {
|
||||
const error =
|
||||
rejection.category === 'TypeError'
|
||||
? new TypeError(rejection.message)
|
||||
: new Error(rejection.message)
|
||||
if (rejection.deliveryUnknown) {
|
||||
markRpcDeliveryUnknown(error)
|
||||
}
|
||||
// Resolve the physical tracker to cancel its deadline before injecting the scripted rejection.
|
||||
this.rejects.get(name)?.(error)
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the scenario asked for a null result, which is a reply shape a host can send.
|
||||
this.tracker.resolve({ id: binding.id, ok: true, result: null } as RpcResponse)
|
||||
} else {
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the scenario supplies the reply as JSON; the wire id is the transport’s.
|
||||
this.tracker.resolve({ ...(reply as object), id: binding.id } as RpcResponse)
|
||||
}
|
||||
}
|
||||
|
||||
disconnect(): void {
|
||||
this.state = 'disconnected'
|
||||
this.tracker.rejectAll('Connection lost', { deliveryUnknown: true })
|
||||
for (const listener of this.listeners) {
|
||||
listener(this.state)
|
||||
}
|
||||
}
|
||||
|
||||
async cutover(): Promise<void> {
|
||||
await this.logical.migrateTo(this.session(), 'relay')
|
||||
}
|
||||
|
||||
dispose(): void {
|
||||
this.logical.close()
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user