Repository navigation
ci: Run the Flagsmith SDK behavioural spec - #99
Conversation
|
@themis-blindfold review |
1 similar comment
|
@themis-blindfold review |
⚖️ Themis review: 🟠 Fix before mergeThe new behavioural-spec job is currently failing because the adapter serialises number and boolean flag values as strings. It also cannot submit a protocol-valid identity request containing a
🟠 Majors
📝 Walkthrough
🧪 How to verify
Product take: Cross-SDK behavioural coverage is a solid improvement, but it cannot be relied on while its checked-in scenarios fail. 🧭 Assumptions & unverified claimsNo unverified assumptions or claims. The new guardrail will earn its keep once its values keep their shape. · reviewed at bd82c6c |
bd82c6c to
e2e9325
Compare
|
@themis-blindfold review |
e2e9325 to
16cedeb
Compare
|
@themis-blindfold review |
16cedeb to
dcef837
Compare
⚖️ Themis review: 🟠 Fix before mergeThe new behavioural check exposes real SDK compatibility gaps and is currently failing; the release-update configuration would also let its two required pins drift. The package, unit-test, and analysis checks completed successfully, while the SDK-spec check failed.
🟠 Majors
📝 Walkthrough
🧪 How to verify
Product take: This adds valuable compatibility coverage, but it cannot protect releases while its required check is red. 🧭 Assumptions & unverified claimsNo unverified assumptions or claims. The new harness is doing its job; it has found the loose bolts. · reviewed at dcef837 |
dcef837 to
e556ff1
Compare
⚖️ Themis review: 🟠 Fix before mergeThe behavioural-spec gate is green and covers the advertised environment and identity flows, but the identity adapter still rejects a nullable value that its own input type accepts, and Renovate cannot maintain the two workflow pins together.
🟠 Majors
📝 Walkthrough
🧪 How to verify
Product take: This is a solid compatibility improvement: it makes the SDK behaviour contract executable on every change. The nullable-trait and pin-maintenance paths need closing so the gate stays representative and maintainable. 🧭 Assumptions & unverified claims
A useful contract test, once its two loose ends are tied down · reviewed at e556ff1 |
e556ff1 to
cbad7c9
Compare
|
@themis-blindfold review |
⚖️ Themis review: 🟠 Fix before mergeThe new SDK behavioural-spec workflow is passing alongside the existing checks, but the null-trait serialization finding remains unresolved. That leaves an important protocol edge case outside the gate’s coverage.
🟠 Majors
📝 Walkthrough
🧪 How to verify
Product take: This adds a valuable compatibility guard for SDK consumers, while the unresolved nullable-trait case leaves an important protocol edge case uncovered. The gate matters most as protection against protocol drift. 🧭 Assumptions & unverified claimsThe behavioural spec’s exact contract for null trait values could not be independently checked; the SDK serializer’s rejection of The spec runner has its Flutter engine; the last nullable trait still needs its ticket stamped · reviewed at cbad7c9 |
cbad7c9 to
84523b5
Compare
|
@themis-blindfold review |
84523b5 to
370fd52
Compare
370fd52 to
43a853e
Compare
⚖️ Themis review: 🟠 Fix before mergeThis adds a useful compatibility gate and the recorded SDK-spec, analysis, test, and publish checks all passed. One previously raised compatibility path remains open: null trait values cannot be serialised before an identity evaluation; confirm the pinned spec's trait-value contract and support it if null is valid.
🟠 Majors
📝 Walkthrough
🧪 How to verify
Automate: Keep the SDK-spec workflow as a required check. Product take: A solid compatibility improvement: regressions in the two covered flag-evaluation paths now surface before merge. Its value depends on keeping the adapter aligned with the spec's full trait contract. 🧭 Assumptions & unverified claims
A new compatibility canary is singing; it just needs to accept every seed it is handed. · reviewed at 43a853e |
Runs the Flagsmith SDK behavioural spec against this SDK on every pull request and push to
main.sdk-spec/steps.dart: a function creating the SDK client, plus one function perWhenstep in the spec's features, each below a comment holding the step's text. Flag values come fromFlag.value(feat: Expose flag values with their JSON type #100), so they keep their JSON types. It doubles as a CI-checked usage example.sdk-spec/Dockerfile: builds the SDK from source and runs the steps file under the spec's Dart harness. The SDK depends on Flutter, so the harness entrypoint is compiled withflutter build bundleand runs onflutter_tester, the headless engineflutter testuses..github/workflows/sdk-spec.yml: calls the spec's reusable workflow withlanguage: dart. The workflow starts a real Flagsmith instance, seeds it through the Admin API and runs the scenarios through the steps file.renovate.json: lets Renovate bump theuses:ref andspec-reftogether, through one regex manager matching both. Only the SDK spec is enabled, so Renovate opens no other PRs.The spec currently covers getting environment flags and getting identity flags with traits.
Spec ref
The workflow is pinned to spec
v0.5.0, the first release with the Dart harness (Flagsmith/sdk-spec#6). Renovate bumps both refs together from here.