ReleaseContext, then report lifecycle transitions.
It is a FireWeave extension on FireweaveClient. It is not the in-app rollout workflow (Registered / Ramping / Verifying / Completed / Rolled back). Do not document those console states as SDK APIs.
OpenFeature and the wire still say flagKey for evaluations. Release identity uses rolloutId, optional changeId, and stampIds.
Why it exists
Deploy-attestation (“boot beacon”) semantics aresetContext + start: this process declares which rollout and stamps it is running. complete and fail close that attestation. Evaluation does not require a bound release; correlation fields on signals and exposures are optional.
When to use it
Call this when your service knows the rollout it is serving and you want the SDK to record that lifecycle:setContext— once you have IDsstart— process is up and servingcompleteorfail— terminal transition
How it relates
SDK lifecycle (not the console)
Statuses the clients actually store:IDs
Validation matchesspec/release-context.schema.json. Clients enforce this set — they do not require extra fields.
Optional
surfaces[].surfaceId in the schema uses sfc_ + 26 Crockford chars. That field is not required by setContext. Do not treat sfc_ as a required SDK identifier.
Failure reason strings are secret-redacted (phc_ / phs_ / phx_, bearer tokens → [REDACTED]) before storage or emission.
API
Extension calls degrade instead of throwing (except Go, which returnserror). Before READY they fail with NotReady / UnsupportedCapability; after shutdown, AlreadyClosed.
Go (and Java via the adapter seam) can emit
$fw_release_<status> to a telemetry sink when one is attached. Node/Python may record some paths in-process only.
Delivery of release events all the way to fw-server is NEEDS VERIFICATION (compatibility known gap). Do not write “releases always reach the server.”
What it looks like
- Node
- Python
- Go
- Java
Related
- Signals —
recordOutcomevsreleases.complete - Capabilities — discover
releases.* - Lifecycle — READY before extension calls