2.8 KiB
2.8 KiB
OpenSpec Change: enterprise-feature-flags
- Change ID: enterprise-feature-flags
- Package:
@suaveplan/feature-flags - Category: universal
- Target path:
universal/config/feature-flags - Status: PROPOSED
- Date: 2026-04-19
- Reference spec:
/mnt/s/web/suaveplan/enterprise/feature-flags.md
Summary
Greenfield build of @suaveplan/feature-flags — provider-agnostic flag evaluation with a FlagRegistry + FlagManager façade, an Evaluator that runs strategy chains, provider adapters (memory, JSON), and composable targeting strategies (PercentageStrategy, UserTargetStrategy, AttributeStrategy, ScheduleStrategy, CompositeStrategy). Typed FlagValue with deterministic bucketing via hashToPercentage.
Current-state audit (genesis)
Package does not exist on genesis yet — fresh build.
Dependencies
- Workspace:
@suaveplan/error,@suaveplan/types,@suaveplan/events,@suaveplan/logger - External (via catalog):
zod→catalog:forms;@opentelemetry/api→catalog:observability;tslib→catalog:build - Dev (via catalog):
vitest,@vitest/coverage-istanbul,fast-check,mitata→catalog:testing
Preserved public surface (from main)
Core
FlagRegistry,FlagRegistryOptionsFlagManager,FlagManagerOptionsEvaluator,EvaluatorOptions
Providers
BaseFlagProvider,BaseFlagProviderOptionsMemoryProviderJsonProvider,JsonProviderOptions,JsonFlagConfig,parseJsonFlags
Strategies
PercentageStrategy,PercentageStrategyOptionsUserTargetStrategy,UserTargetStrategyOptionsAttributeStrategy,AttributeStrategyOptions,AttributeOperator,AttributeRule,compareValues,getNestedValueScheduleStrategy,ScheduleStrategyOptionsCompositeStrategy,CompositeStrategyOptions,CompositeOperator
Types
FlagDefinition, FlagDefinitionMap, FlagValue, FlagProvider, FlagChangeEvent, FlagChangeListener, FlagEvaluationResult, EvaluationContext, EvaluationReason, Strategy, StrategyResult
Utilities
hashToPercentage,combineKeys
New genesis additions
- Structured errors with codes
FEATURE_FLAGS.UNKNOWN_FLAG,FEATURE_FLAGS.PROVIDER_ERROR,FEATURE_FLAGS.STRATEGY_ERROR,FEATURE_FLAGS.INVALID_DEFINITION. - Zod schemas for every
FlagDefinition,EvaluationContext,JsonFlagConfig. - OTel histogram
ff.evaluate.duration_ms; counterff.evaluate.total{flag, result}. - Property tests:
hashToPercentageuniform over random keys within statistical tolerance;PercentageStrategybucketing is monotonic in rollout percentage. - mitata benchmarks for
Evaluator.evaluateacross strategy depths.
Impact
- Adds one new package:
universal/config/feature-flags - Adds one new spec capability:
feature-flags