Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
3fe1f3c
feat: add Appendix F, provider conformance (TCK)
aepfli Aug 24, 2026
75b3ec7
feat: separate @lifecycle from @events in the provider conformance suite
aepfli Aug 24, 2026
91ce923
fix: require POST /start to return only once the flag state is being …
aepfli Aug 24, 2026
0f8c086
Apply suggestion from @toddbaert
aepfli Sep 10, 2026
cacfe92
fix: a reserved capability must not be declarable
aepfli Sep 10, 2026
77f7b89
feat: rename @strict-numeric-typing to @numeric-coercion, and fix the…
aepfli Sep 11, 2026
3aede54
fix: stop presenting the numeric coercion rule as normative OpenFeature
aepfli Sep 11, 2026
afad72b
style: pad the appendix tables to the repository's table style
aepfli Sep 11, 2026
43904ed
feat: say how the suite may be extended, and what an extension may no…
aepfli Sep 11, 2026
2fe718b
feat: publish the provider conformance assets as a Go module
aepfli Sep 11, 2026
95a1ee6
feat: release the provider conformance assets on their own tags
aepfli Sep 11, 2026
44591ff
docs: state the suite's coverage of the numbered provider requirements
aepfli Sep 11, 2026
630c000
feat: close the cheap provider-contract gaps and test the edge cases
aepfli Sep 11, 2026
6e211a3
docs: list metadata.feature among the feature files
aepfli Sep 11, 2026
a67376e
docs: keep the load-bearing flag properties in one list
aepfli Sep 11, 2026
0efb1b9
docs: name the right flag in the canonical set's precision note
aepfli Sep 11, 2026
e6754cb
fix: point the number-type quote at specification/types.md
aepfli Sep 11, 2026
ba002ce
fix: name the falsy flags what the SDK suite already names them
aepfli Sep 11, 2026
e97c8e5
feat: release the specification with release-please as well
aepfli Sep 11, 2026
fc99d5a
fix: gate reinitialisation, which 2.5.2 permits rather than requires
aepfli Sep 11, 2026
4b84105
fix: state the rules four implementations answered differently
aepfli Sep 11, 2026
600ef9f
fix: one skip with a reason, not a second way to say the same thing
aepfli Sep 11, 2026
16ae2d5
fix: configure release-please with inputs the action actually declares
aepfli Sep 11, 2026
b18ae5c
ci: run pull request checks for pull requests based on feat/provider-…
aepfli Sep 11, 2026
2751f32
fix: gate the variant assertions, which 2.2.4 makes a SHOULD
aepfli Sep 11, 2026
11132e6
feat: test evaluation context, and make @targeting a real capability
aepfli Sep 11, 2026
7f61fa3
fix: use Appendix B's wording for the targeting-key step
aepfli Sep 11, 2026
26362f8
fix: use flagd-testbed's targeting-key-flag, and state the reason nar…
aepfli Sep 11, 2026
d9c654c
docs: stop pinning the canonical set's size in an anecdote
aepfli Sep 12, 2026
009afe0
feat: test disabled flags, gated, because the answer depends on archi…
aepfli Sep 12, 2026
249cd01
fix: state why @disabled-flags is gated, correctly this time
aepfli Sep 12, 2026
9cb7ac9
feat: settle what a known deviation means, and who owns the container…
aepfli Sep 12, 2026
2439475
feat: the control states which path a run used, and the harness must …
aepfli Sep 12, 2026
8c2c1a7
fix: require every state-changing control endpoint to serve before it…
aepfli Sep 12, 2026
93eb1a5
fix: /restart is optional, and the TCK never called it
aepfli Sep 12, 2026
ccdb887
feat: say how an adoption suite relates to CI, and warn about cached …
aepfli Sep 12, 2026
b64832c
feat: make the resolution reason a claim a provider declares, not a h…
aepfli Sep 13, 2026
c342461
docs: say what an ERROR reason assertion does and does not establish
aepfli Sep 13, 2026
e616ff4
feat: a capability the SDK cannot express is refused by the implement…
aepfli Sep 13, 2026
89b1519
fix: the canonical flag set still told adopters every scenario expect…
aepfli Sep 13, 2026
045950c
fix: the numeric-coercion note taught the shape the deviation rule fo…
aepfli Sep 13, 2026
4cab032
feat: the unit of a declaration decision is the scenario, not the tag
aepfli Sep 13, 2026
aa2ad24
fix: rule six decides whether a question is askable, not whether it i…
aepfli Sep 13, 2026
8d9b1fe
docs: give the conformance suite its own step, and mark the gating ad…
aepfli Sep 13, 2026
971aef9
fix: the separation argument rested on the step running, which it doe…
aepfli Sep 13, 2026
cf6fc72
feat: a conformance suite must be separable without a naming convention
aepfli Sep 13, 2026
34ee78c
feat: a suite must not be able to run against assets it did not fetch
aepfli Sep 13, 2026
c1f19a1
docs: record that @stale has no Docker-free coverage in any implement…
aepfli Sep 13, 2026
cf258e2
fix: keep the adoption typechecked, not "compiling in the default build"
aepfli Sep 13, 2026
e97c218
docs: name the two steps the inherited vocabulary had to rename
aepfli Sep 14, 2026
3fc85ff
docs: say that the configuration-change scenarios rest on cache inval…
aepfli Sep 14, 2026
a109531
docs: the load-bearing properties are five, and the heading said four
aepfli Sep 14, 2026
e63ae3e
docs: an absent @stale is a permitted choice, and the appendix never …
aepfli Sep 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/pr-checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ on:
types: [opened, synchronize, reopened]
branches:
- main
# Temporary, for the duration of the provider conformance suite's review.
# This filter matches the pull request's BASE branch, so without it a pull
# request stacked on feat/provider-tck-appendix gets no checks at all.
# Remove once the chain has landed. See open-feature/spec#417.
- 'feat/provider-tck*'

jobs:
# This job ensures that any PR targeting the main branch has up-to-date generated JSON files.
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/pr-python.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ on:
pull_request:
branches:
- main
# Temporary, for the duration of the provider conformance suite's review.
# This filter matches the pull request's BASE branch, so without it a pull
# request stacked on feat/provider-tck-appendix gets no checks at all.
# Remove once the chain has landed. See open-feature/spec#417.
- 'feat/provider-tck*'

permissions:
contents: read
Expand Down
35 changes: 35 additions & 0 deletions .github/workflows/release-please.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Run Release Please

# Releases everything versioned in this repository. Two packages are configured in
# release-please-config.json, each with its own release pull request:
#
# . the specification, tagged vX.Y.Z as it always has been
# specification/assets/provider-tck the provider conformance assets, tagged with their path
#
# The two are independent. The specification package excludes the conformance assets, so a
# change confined to the suite never bumps the specification; the assets carry their own
# version because four language suites pin a revision of them, and a pinned revision needs a
# name a human can read and a bot can compare.
#
# This repository enforces DCO, so the bot's own commits need a sign-off. That is the signoff
# key in release-please-config.json: v5 takes it from the configuration file, and an action
# input of the same name is not declared and would be silently ignored.

on:
push:
branches:
- main

permissions:
contents: write
issues: write
pull-requests: write

jobs:
release-please:
runs-on: ubuntu-latest
steps:
- uses: googleapis/release-please-action@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
target-branch: main
4 changes: 4 additions & 0 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
".": "0.9.0",
"specification/assets/provider-tck": "0.0.0"
}
28 changes: 28 additions & 0 deletions release-please-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
"signoff": "OpenFeature Bot <109696520+openfeaturebot@users.noreply.github.com>",
"tag-separator": "/",
"bootstrap-sha": "dd235837f7b2ddb1120ab6e1bde940bf4d532313",
"separate-pull-requests": true,
"packages": {
".": {
"release-type": "simple",
"package-name": "spec",
"include-component-in-tag": false,
"changelog-path": "CHANGELOG.md",
"bump-minor-pre-major": true,
"versioning": "default",
"exclude-paths": ["specification/assets/provider-tck"],
"extra-files": []
},
"specification/assets/provider-tck": {
"release-type": "go",
"package-name": "specification/assets/provider-tck",
"include-component-in-tag": true,
"changelog-path": "CHANGELOG.md",
"bump-minor-pre-major": true,
"versioning": "default",
"extra-files": []
}
}
}
1 change: 1 addition & 0 deletions specification/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ sidebar_position: 0
- [Appendix C: OFREP](./appendix-c/index.md)
- [Appendix D: Observability](./appendix-d-observability.md)
- [Appendix E: Migrations](./appendix-e-migrations.md)
- [Appendix F: Provider Conformance (TCK)](./appendix-f-provider-conformance.md)

## Conformance

Expand Down
3 changes: 3 additions & 0 deletions specification/appendix-b-gherkin-suites.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ This section contains a set of language-agnostic end-to-end tests (defined in gh
These tests can be used to validate the behavior of an OpenFeature implementation.
"Features" (test suites) can be used in conjunction with an [in-memory provider](./appendix-a-included-utilities.md#in-memory-provider) and a cucumber test-runner for the language in question.

The suites below validate an **SDK**, using an in-memory provider as a stand-in for a real one.
To validate a **provider** against a real backend instead, see [Appendix F: Provider Conformance (TCK)](./appendix-f-provider-conformance.md).

## Evaluation Feature

The [evaluation feature](./assets/gherkin/evaluation.feature) contains tests for the basic functionality of the [Evaluation API](./sections/01-flag-evaluation.md).
Loading
Loading