Skip to content

feat: wire FDv2 into v3 contract tests, with CI#548

Open
beekld wants to merge 76 commits into
mainfrom
beeklimt/SDK-2102
Open

feat: wire FDv2 into v3 contract tests, with CI#548
beekld wants to merge 76 commits into
mainfrom
beeklimt/SDK-2102

Conversation

@beekld

@beekld beekld commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Adds FDv2 wiring to the server contract-test service so the v3 SDK test harness can exercise the FDv2 code paths, plus a CI job that runs the v3 harness on every change.

  • New dataSystem block on ConfigParams covering harness-provided initializers, synchronizers, and fdv1 fallback.
  • Entity manager dispatches FDv2 vs BackgroundSync based on the dataSystem presence
  • fdv1-fallback capability advertised by the service
  • Empty test-suppressions-fdv2.txt
  • New CI job runs the v3.0.0-alpha.3 harness

Note

Low Risk
Changes are limited to contract-test adapters, CI, and test suppressions; production SDK behavior is only exercised indirectly via existing builders.

Overview
Adds v3 SDK contract-test coverage for FDv2 by extending the harness config model and routing client creation through FDv2 when the harness sends a dataSystem block.

Contract-test service: ConfigParams gains optional dataSystem (initializers, synchronizers, fdv1Fallback, payloadFilter). EntityManager::create chooses FDv2 via BuildFDv2 when dataSystem is present; otherwise it keeps the existing BackgroundSync path in a refactored BuildBackgroundSync. FDv2 mapping wires streaming/polling synchronizers and initializers, explicit or derived FDv1 fallback (polling URL on global endpoints), and advertises the fdv1-fallback capability.

CI: New contract-tests-fdv2 and contract-tests-fdv2-curl jobs build server-tests, start the service, and run the v3.0.0-alpha.3 harness with test-suppressions-fdv2.txt (skipped scenarios for TTL vs terminal FDv1 fallback and unexposed FDv2 payload filter URL tests).

Reviewed by Cursor Bugbot for commit 1293152. Bugbot is set up for automated code reviews on this repo. Configure here.

@beekld beekld force-pushed the beeklimt/SDK-2102 branch from 1e4e898 to c3a8a41 Compare June 4, 2026 23:43
@beekld beekld force-pushed the beeklimt/SDK-2100 branch from 095280a to 58392f8 Compare June 4, 2026 23:43
@beekld beekld force-pushed the beeklimt/SDK-2102 branch from c3a8a41 to 9dd3055 Compare June 4, 2026 23:51
@beekld beekld force-pushed the beeklimt/SDK-2100 branch from 58392f8 to aaf3aa6 Compare June 4, 2026 23:51
@beekld beekld force-pushed the beeklimt/SDK-2100 branch from aaf3aa6 to 9bb657e Compare June 5, 2026 18:07
@beekld beekld force-pushed the beeklimt/SDK-2102 branch from 9dd3055 to a6ffcae Compare June 5, 2026 18:07
beekld added 25 commits June 11, 2026 22:27
# Conflicts:
#	libs/server-sdk/src/client_impl.cpp
Base automatically changed from beeklimt/SDK-2100 to main June 17, 2026 22:45
@beekld beekld marked this pull request as ready for review June 17, 2026 23:26
@beekld beekld requested a review from a team as a code owner June 17, 2026 23:26

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 1293152. Configure here.

}
if (in.serviceEndpoints->events) {
endpoints.EventsBaseUrl(*in.serviceEndpoints->events);
fdv2.FDv1Fallback(std::move(p));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explicit fdv1Fallback skips URL

Medium Severity

When dataSystem.fdv1Fallback is present but has no baseUri, BuildFDv2 enables FDv1 fallback without updating ServiceEndpoints polling URL. The synchronizer-derived polling URL logic runs only when fdv1Fallback is omitted, so the same harness config can point FDv1 polling at the default endpoint instead of the mock synchronizer URL.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 1293152. Configure here.

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