Skip to content

Commit 65728e6

Browse files
authored
feat: stabilize - evaluation, providers, harden - hooks, events, context (#314)
This PR: * stabilizes evaluation API * stabilizes providers * hardens hooks, events and context * hardens all "static context" (client-side) points This is a pretty substantial step. `stable` means that we have no more leeway at all in SDKs - **any breaking changes to the parts of the SDK implementing stable APIs means a new major version of the SDK is required, without exception**. I've also opted to "harden" the `static context paradigm` since we have numerous client implementations in the wild, in particular React and Angular, but also Android. There could still be breaking changes here but the bar is higher. I think this is how we're acting already with regards to these APIs, in all honesty. I did not promote the [context propagation](https://openfeature.dev/specification/sections/evaluation-context#33-context-propagation) sub-section, or the new tracking section - these are _relatively_ new, though I'm open to opinions on hardening these further. Potential blockers: - open-feature/go-sdk#389 - #270 Signed-off-by: Todd Baert <[email protected]>
1 parent 4542c3c commit 65728e6

File tree

5 files changed

+16
-16
lines changed

5 files changed

+16
-16
lines changed

specification/sections/01-flag-evaluation.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ toc_max_heading_level: 4
66

77
# 1. Flag Evaluation API
88

9-
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
9+
[![stable](https://img.shields.io/static/v1?label=Status&message=stable&color=green)](https://github.com/open-feature/spec/tree/main/specification#stable)
1010

1111
## Overview
1212

@@ -203,7 +203,7 @@ See [evaluation context](./03-evaluation-context.md) for details.
203203

204204
#### Condition 1.3.2
205205

206-
[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)
206+
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
207207

208208
> The implementation uses the static-context paradigm.
209209
@@ -285,7 +285,7 @@ FlagEvaluationDetails<MyStruct> myStructDetails = client.getObjectDetails<MyStru
285285

286286
#### Condition 1.4.2
287287

288-
[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)
288+
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
289289

290290
> The implementation uses the static-context paradigm.
291291
@@ -396,7 +396,7 @@ See [hooks](./04-hooks.md) for details.
396396

397397
### 1.6. Shutdown
398398

399-
[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)
399+
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
400400

401401
The API's `shutdown` function defines a means of graceful shutdown, calling the `shutdown` function on all providers, allowing them to flush telemetry, clean up connections, and release any relevant resources.
402402
It also provides a means of resetting the API object to its default state, removing all hooks, event handlers, providers, and setting a "No-op provider"; this is useful for testing purposes.
@@ -469,7 +469,7 @@ see [provider status](../types.md#provider-status)
469469

470470
#### Condition 1.7.2
471471

472-
[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)
472+
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
473473

474474
> The implementation uses the static-context paradigm.
475475

specification/sections/02-providers.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ toc_max_heading_level: 4
66

77
# 2. Provider
88

9-
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
9+
[![stable](https://img.shields.io/static/v1?label=Status&message=stable&color=green)](https://github.com/open-feature/spec/tree/main/specification#stable)
1010

1111
## Overview
1212

@@ -166,7 +166,7 @@ class MyProvider implements Provider {
166166
167167
### 2.4 Initialization
168168

169-
[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)
169+
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
170170

171171
#### Requirement 2.4.1
172172

@@ -209,7 +209,7 @@ see: [error codes](../types.md#error-code)
209209

210210
### 2.5. Shutdown
211211

212-
[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)
212+
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
213213

214214
#### Requirement 2.5.1
215215

@@ -245,7 +245,7 @@ see: [initialization](#24-initialization)
245245

246246
### 2.6. Provider context reconciliation
247247

248-
[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)
248+
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
249249

250250
Static-context focused providers may need a mechanism to understand when their cache of evaluated flags must be invalidated or updated. An `on context changed` function can be defined which performs whatever operations are needed to reconcile the evaluated flags with the new context.
251251

specification/sections/03-evaluation-context.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ toc_max_heading_level: 4
66

77
# 3. Evaluation Context
88

9-
[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)
9+
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
1010

1111
## Overview
1212

@@ -59,7 +59,7 @@ API (global) `evaluation context` can be used to supply static data to flag eval
5959

6060
#### Condition 3.2.2
6161

62-
[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)
62+
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
6363

6464
> The implementation uses the static-context paradigm.
6565
@@ -116,7 +116,7 @@ This describes the precedence of all `evaluation context` variants. Depending on
116116

117117
#### Condition 3.2.4
118118

119-
[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)
119+
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
120120

121121
> The implementation uses the static-context paradigm.
122122

specification/sections/04-hooks.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ toc_max_heading_level: 4
66

77
# 4. Hooks
88

9-
[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)
9+
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
1010

1111
## Overview
1212

@@ -184,7 +184,7 @@ EvaluationContext | void before(HookContext hookContext, HookHints hints);
184184

185185
#### Condition 4.3.3
186186

187-
[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)
187+
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
188188

189189
> The implementation uses the static-context paradigm.
190190

specification/sections/05-events.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ toc_max_heading_level: 4
66

77
# 5. Events
88

9-
[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)
9+
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
1010

1111
## Overview
1212

@@ -195,7 +195,7 @@ stateDiagram-v2
195195

196196
#### Condition 5.3.4
197197

198-
[![experimental](https://img.shields.io/static/v1?label=Status&message=experimental&color=orange)](https://github.com/open-feature/spec/tree/main/specification#experimental)
198+
[![hardening](https://img.shields.io/static/v1?label=Status&message=hardening&color=yellow)](https://github.com/open-feature/spec/tree/main/specification#hardening)
199199

200200
> The implementation uses the static-context paradigm.
201201

0 commit comments

Comments
 (0)