ci: run remote sync E2E for remote-track PRs - #504
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
integration/remoteObserved 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 onmainwere 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 typechecknpm test(5 passed; 15 PostgreSQL-dependent tests skipped locally because the local server has no CIpostgresrole/database)The PR CI provisioned PostgreSQL test will run the heterogeneous SQLite/JSONL reference-server exchange.