Skip to content

ci: run remote sync E2E for remote-track PRs - #504

Merged
fujibee merged 18 commits into
integration/remotefrom
ci/remote-sync-gate
Jul 28, 2026
Merged

ci: run remote sync E2E for remote-track PRs#504
fujibee merged 18 commits into
integration/remotefrom
ci/remote-sync-gate

Conversation

@fujibee

@fujibee fujibee commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Summary

  • trigger the test workflow for PRs targeting integration/remote
  • run reference-server checks when the Stage-1 client, storage driver, or workflow changes
  • exercise Stage-1 push and pull across a SQLite store and a JSONL store in the PostgreSQL integration test

Observed impact

Before this workflow covered integration/remote, a conflict-resolution regression remained undetected for about 17 hours. The full suite hung at test 74 of 139, two additional tests failed deterministically, 327 seconds of fixed waits returned, and three tests present on main were absent. No PR check reported any of it because PRs targeting the integration branch had zero checks. This wiring would have surfaced the regression when it was introduced.

Verification

  • node --test tests/remote_sync_engine.test.mjs (36/36)
  • AGMSG_STORAGE_DRIVER=jsonl bats tests/test_jsonl_remote_sync.bats tests/test_storage_contract.bats (57/57)
  • npm run typecheck
  • npm test (5 passed; 15 PostgreSQL-dependent tests skipped locally because the local server has no CI postgres role/database)

The PR CI provisioned PostgreSQL test will run the heterogeneous SQLite/JSONL reference-server exchange.

fujibee added 18 commits July 27, 2026 13:05
Exercise Stage-1 changes against the reference server and a SQLite/JSONL pair.
JSONL participates in the heterogeneous Stage-1 exchange but does not publish read state.
Keep the Stage-2 SQLite coverage separate from the Stage-1 SQLite/JSONL rehearsal.
The test binding must start from the same current policy represented in its history.
Watch the data plane broadly and verify both heterogeneous peers keep one ordered history.
Write the held-open payload to the test FIFO so the hook timeout path\nreceives the intended non-EOF input.
Expect shell-escaped quote paths and the current Codex monitor wording.
Avoid empty-array expansion under nounset and wait for mock ports\nwith the shared bounded helper.
Keep mock servers independent from PATH-gating tests and close inherited\nstdin for the background inbox check.
Resolve fixture Python inside each Bats test process and close stdin for both background inbox assertions. This prevents test isolation from depending on suite-load state or retaining the Bats input pipe.
Bind the loopback mock without HTTPServer hostname resolution and detach every background server from Bats input and reporting descriptors. This keeps fixture startup and suite shutdown independent of macOS resolver behavior.
Use the existing watcher helper to stop only after the gap message is observed and the store cursor advances. This removes fixed startup and delivery delays from the restart regression.
@fujibee
fujibee merged commit 2fab2e5 into integration/remote Jul 28, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant