orca/.github/workflows
Jinwoo Hong 06780260c0
test(remote-runtime): run an old client and an old server against current code (#12682)
Mixed versions are the normal state of the remote-server feature: users update clients and servers independently. Until now nothing tested that. Every cross-version claim was made by code reading plus unit tests with hand-written old/new shapes — enough to catch design problems, not enough to catch a real skew regression.

This runs the REAL protocol implementations from two builds against each other in one process: the actual host methods and RPC dispatcher on one side, the actual renderer multiplexer on the other, with a transport that reproduces the production asymmetry — each side decodes with its OWN codec and drops frames whose opcode it does not know. A frame survives only if the RECEIVING build understands it, which is what makes this level sufficient without launching two apps. The old side is a genuine checkout extracted from the release tag; the extracted client was confirmed to lack a symbol that exists only on main.

Journey: subscribe, first snapshot, input reaching the process, live output, hide/reveal snapshot, transport drop, resubscribe, input landing again — across old->new, new->old, and a current/current control. Every step ends on an observed-state barrier; no sleeps. The oracle asserts the recorded step list, the exact 16-frame named sequence, negotiated capabilities, the exact input the host wrote to the PTY, rendered content, and zero decoder-rejected frames. A host method the stub lacks is recorded by name and asserted empty, so a harness gap cannot masquerade as a wire break.

Detection is proven per violation shape, and it attributes each to the correct side: an unnegotiated opcode goes red only where a decoder would reject it, a removed published field goes red only where an old client consumes it, and a legal additive field stays green in all three pairings so the harness will not cry wolf on safe changes.

It also documents the three compatibility rules in docs/reference/remote-wire-compatibility.md, linked from AGENTS.md, since they previously existed only as folklore — notably that "decoders reject unknown opcodes" is true for the desktop decoder but NOT for mobile, which silently drops them.

Deliberately scoped: terminal stream only. The session-tab sync channel is not covered, nor agent-session publications, file/Git RPCs, mobile E2EE framing, or the relay transport. Two version points, so a regression introduced and reverted between them is invisible.

CI selection was verified rather than assumed — `vitest list` confirms 0 matches under the shard's exclude and 4 under the dedicated job — because a lane silently running zero tests is precisely how a host-side defect escaped CI earlier in this series. Closes STA-3469.
2026-08-05 01:31:29 -07:00
..
adhoc-mac-build.yml fix(ci): vet the adhoc build ref before running it with release secrets (#12161) 2026-08-03 18:52:44 -07:00
computer-e2e.yml ci: run only changed e2e specs on pull requests (#11834) 2026-07-31 16:25:13 -07:00
daemon-relocation-spike.yml chore: declutter top-level repo layout (#11890) 2026-08-01 00:25:35 -07:00
e2e.yml ci: run only changed e2e specs on pull requests (#11834) 2026-07-31 16:25:13 -07:00
golden-e2e-experiment.yml ci: run only changed e2e specs on pull requests (#11834) 2026-07-31 16:25:13 -07:00
homebrew-bump.yml
hourly-mac-build.yml feat(updater): restart hourly build numbers per version, restyle the timestamp (#12587) 2026-08-04 15:54:17 -07:00
issue-os-labeler.yaml
linux-wayland-gpu-sandbox.yml ci: run only changed e2e specs on pull requests (#11834) 2026-07-31 16:25:13 -07:00
mobile-android-release.yml fix(mobile): keep Android release versionCode committed (#7271) 2026-07-03 15:26:11 -07:00
mobile-ios-release.yml fix(mobile): unblock iOS releases (#10224) 2026-07-23 14:23:44 -07:00
mobile.yml fix(mobile): unblock iOS releases (#10224) 2026-07-23 14:23:44 -07:00
pr.yml test(remote-runtime): run an old client and an old server against current code (#12682) 2026-08-05 01:31:29 -07:00
pullfrog.yml Improve inactive workspace cleanup UX (#3600) 2026-06-28 11:38:23 -07:00
readme-downloads-badge.yml Use generated README downloads badge 2026-06-16 11:09:40 -07:00
release-cut.yml [P2] fix(release,settings): restore signing preflight portability, bootstrap diagnostics, and skill re-check (#11692) 2026-07-31 06:08:26 -07:00
release-mac-build.yml Fix ssh watcher isolation (#8463) 2026-07-12 21:34:59 -07:00
skill-update-roundtrip.yml Add safe skill freshness detection and update rail (#8637) 2026-07-16 14:47:28 -07:00
terminal-ime-e2e.yml ci: run only changed e2e specs on pull requests (#11834) 2026-07-31 16:25:13 -07:00
terminal-perf.yml
track-community-prs.yaml
win-crash-survival-e2e.yml chore: declutter top-level repo layout (#11890) 2026-08-01 00:25:35 -07:00
win-update-e2e.yml chore: declutter top-level repo layout (#11890) 2026-08-01 00:25:35 -07:00
win-update-survival-e2e.yml chore: declutter top-level repo layout (#11890) 2026-08-01 00:25:35 -07:00
windows-signing-rehearsal.yml fix(release): survive PSGallery outages in the Windows signing preflight 2026-07-30 18:16:38 -07:00
windows-terminal-restart-e2e.yml ci: run only changed e2e specs on pull requests (#11834) 2026-07-31 16:25:13 -07:00