reason: ERROR and an errorCode (OpenFeature spec §1.4.10). If a typed getter raised, that is a bug.
First diagnostic step: read details, not just the value.
flagMetadata["fireweave.errorKind"] is the FireWeave kind. Use it to tell NotReady from AlreadyClosed — both map to OpenFeature PROVIDER_NOT_READY.
15 kinds
Canonical kinds fromcontracts/errors.md. Messages are secret-redacted (no API keys, bearer tokens, or FW_PROJECT_API_KEY values).
*
MalformedResponse is permanent for a given response; a later request may succeed. Adapters must not invent flag values.
InvalidContext subtype: missing required targetingKey → TARGETING_KEY_MISSING. All other context violations (type, reserved keys, size/depth/count bounds) → INVALID_CONTEXT.
OpenFeature codes
All eight OpenFeature codes are reachable:Language surfaces
Go extension APIs (
Releases().Start, and so on) return error. Evaluation still does not throw through OpenFeature.
Reasons that are not errors
UnsupportedCapability
Expected in phase one for:
- Guardrails in every language (
guardrails: false). - Java
PostHogAdapter.create(config)until a Java server SDK exists.
capabilities.get().
Next
Troubleshooting
Default values, auth, missing exposures
OpenFeature
How kinds appear on ResolutionDetails