Skip to content

docs: adding missing capabilities to service spec#361

Open
joker23 wants to merge 1 commit into
v3from
skz/fdv1-fallback-docs
Open

docs: adding missing capabilities to service spec#361
joker23 wants to merge 1 commit into
v3from
skz/fdv1-fallback-docs

Conversation

@joker23

@joker23 joker23 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Note

Low Risk
Documentation-only changes to the service spec with no runtime or test harness behavior changes.

Overview
Documents capabilities and SDK classification rules that the harness already supports but were missing from the service spec.

SDK typing: Adds "roku" as an SDK type capability and a rule that client-side + mobile + roku identifies a Roku client-side SDK (mobile special case). The intro to the SDK type section is lightly reworded.

New optional capabilities:

  • auto-env-attributes — client-side auto appending of environment attributes; tied to includeEnvironmentAttributes in config.
  • client-independence — multiple concurrent client instances with isolated state.
  • fdv1-fallback — server-directed FDv1 fallback; gates related subtests when omitted.

Fix: Closes the missing quote in the client-per-context-summaries capability heading.

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

@joker23 joker23 requested a review from a team as a code owner June 29, 2026 19:48
Events: events.Endpoint().BaseURL(),
}),
dataSource)...)
client := NewSDKClient(t, c.baseSDKConfigurationPlus(dataSystem)...)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Disabling events test drops endpoint

Medium Severity

The disabling-events subtests still require the service-endpoints capability but no longer configure the mock events base URI (or pass the event sink configurer to the client). The scenario under test is that events stay off even when an events service endpoint is set; without that wiring, the harness no longer exercises that behavior and can pass without validating it.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 06851df. Configure here.

dataSource)...)
verifyRequestHeader(t, dataSource.Endpoint())
dataSystem)...)
verifyRequestHeader(t, dataSystem.Synchronizers[0].Endpoint())

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Poll option ignored in header test

Medium Severity

Subtests named for poll requests pass only DataSystemOptionPolling() into NewSDKDataSystem, but default client-side setup already defines a streaming connection mode. In that branch buildDataSystem never applies the top-level polling flag, so the SDK keeps using streaming and the subtest may assert headers on a stream connection while claiming to cover polling.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 06851df. Configure here.

Comment thread mockld/polling_service.go
return []byte("UNSUPPORTED")
// data, _ := p.currentData.(ServerSDKData)
// flagsJSON, _ := json.Marshal(data["flags"])
// return flagsJSON

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

PHP poll mocks return UNSUPPORTED

High Severity

PHP polling routes still use dedicated handlers, but those handlers now always write the literal body UNSUPPORTED instead of flag or segment JSON from the configured SDK data. PHP contract tests that hit /sdk/flags, /sdk/flags/{key}, or /sdk/segments/{key} will receive unusable responses.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 06851df. Configure here.

// Once the directive engaged the FDv1 fallback, the FDv2 stream must
// be quiet; assert the SDK is not concurrently retrying it.
streamEndpoint.RequireNoMoreConnections(t, time.Millisecond*500)
})

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

FDv1 fallback test missing capability gate

Medium Severity

The instance-id “FDv1 fallback directive requests” subtest is gated only on fdv1-fallback, but it drives FDv2 streaming with HTTP 403 and the X-LD-FD-Fallback header. Client-side SDKs without client-event-source-http-errors typically cannot observe that directive; the subtest should skip when that capability is absent for client-side runs, matching other FDv1 fallback coverage.

Fix in Cursor Fix in Web

Triggered by learned rule: Gate SDK-specific test scenarios behind capability checks

Reviewed by Cursor Bugbot for commit 06851df. Configure here.

@joker23 joker23 changed the base branch from v2 to v3 June 29, 2026 19:51

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

@joker23 joker23 changed the title skz/fdv1 fallback docs doc: adding missing capabilities to service spec Jun 29, 2026
@joker23

joker23 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

@cursor review

@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.

✅ Bugbot reviewed your changes and found no new issues!

4 issues from previous reviews remain unresolved.

Fix All in Cursor

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 06851df. Configure here.

@joker23 joker23 changed the title doc: adding missing capabilities to service spec docs: adding missing capabilities to service spec Jun 29, 2026
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