OSS-first docs
These docs teach the open system first: contracts, generated surfaces, runtimes, governance, and incremental adoption. Studio shows up as the operating layer on top, not as the source of truth.
Feature flag management with targeting rules and A/B experiments
Operations (13)
•
`flag.create` (v1.0.0)
•
`flag.update` (v1.0.0)
•
`flag.delete` (v1.0.0)
•
`flag.toggle` (v1.0.0)
•
`flag.get` (v1.0.0)
•
`flag.list` (v1.0.0)
•
`flag.evaluate` (v1.0.0)
•
`flag.rule.create` (v1.0.0)
•
`flag.rule.delete` (v1.0.0)
•
`experiment.create` (v1.0.0)
•
`experiment.start` (v1.0.0)
•
`experiment.stop` (v1.0.0)
•
`experiment.get` (v1.0.0)
Events (11)
•
`flag.created` (v1.0.0)
•
`flag.updated` (v1.0.0)
•
`flag.deleted` (v1.0.0)
•
`flag.toggled` (v1.0.0)
•
`flag.evaluated` (v1.0.0)
•
`flag.rule_created` (v1.0.0)
•
`flag.rule_deleted` (v1.0.0)
•
`experiment.created` (v1.0.0)
•
`experiment.started` (v1.0.0)
•
`experiment.stopped` (v1.0.0)
•
`experiment.variant_assigned` (v1.0.0)
Source Definition
/**
* Feature Flags Feature Module Specification
*
* Defines the feature module for feature flag and experiment management.
*/
import { defineFeature } from '@lssm-tech/lib.contracts-spec';
/**
* Feature Flags feature module that bundles flag management,
* targeting rules, and A/B experiment capabilities.
*/
export const FeatureFlagsFeature = defineFeature({
meta: {
key: 'feature-flags',
version: '1.0.0',
title: 'Feature Flags',
description:
'Feature flag management with targeting rules and A/B experiments',
domain: 'platform',
owners: ['@platform.feature-flags'],
tags: ['feature-flags', 'experiments', 'targeting'],
stability: 'stable',
},
// All contract operations included in this feature
operations: [
// Flag CRUD operations
{ key: 'flag.create', version: '1.0.0' },
{ key: 'flag.update', version: '1.0.0' },
{ key: 'flag.delete', version: '1.0.0' },
{ key: 'flag.toggle', version: '1.0.0' },
{ key: 'flag.get', version: '1.0.0' },
{ key: 'flag.list', version: '1.0.0' },
{ key: 'flag.evaluate', version: '1.0.0' },
// Targeting rule operations
{ key: 'flag.rule.create', version: '1.0.0' },
{ key: 'flag.rule.delete', version: '1.0.0' },
// Experiment operations
{ key: 'experiment.create', version: '1.0.0' },
{ key: 'experiment.start', version: '1.0.0' },
{ key: 'experiment.stop', version: '1.0.0' },
{ key: 'experiment.get', version: '1.0.0' },
],
// Events emitted by this feature
events: [
// Flag events
{ key: 'flag.created', version: '1.0.0' },
{ key: 'flag.updated', version: '1.0.0' },
{ key: 'flag.deleted', version: '1.0.0' },
{ key: 'flag.toggled', version: '1.0.0' },
{ key: 'flag.evaluated', version: '1.0.0' },
// Rule events
{ key: 'flag.rule_created', version: '1.0.0' },
{ key: 'flag.rule_deleted', version: '1.0.0' },
// Experiment events
{ key: 'experiment.created', version: '1.0.0' },
{ key: 'experiment.started', version: '1.0.0' },
{ key: 'experiment.stopped', version: '1.0.0' },
{ key: 'experiment.variant_assigned', version: '1.0.0' },
],
// No presentations for this library feature
presentations: [],
opToPresentation: [],
presentationsTargets: [],
// Capability definitions
capabilities: {
provides: [
{ key: 'feature-flag', version: '1.0.0' },
{ key: 'experiments', version: '1.0.0' },
],
requires: [{ key: 'identity', version: '1.0.0' }],
},
});