Rulestead is a self-hostable, Elixir-native feature-flag and remote-config system for Phoenix teams. This page states what v1.x ships, what hosts own, and what is explicitly deferred so adopters do not expect a hosted LaunchDarkly clone.

In scope (v1.x post-GA band)

SurfaceWhat you get
RuntimePure Rulestead.evaluate/3 on authored payloads + %Rulestead.Context{}; projections; explain API; deterministic bucketing
Snapshot runtimeRulestead.Runtime.* keyed lookup by environment + flag key (local cache; not admin internals)
Mounted adminrulestead_admin sibling package — flags, rollouts, kill switch, audit, compare, audiences, experiments, diagnostics
GovernanceChange requests, scheduling, protected-environment controls, blast-radius thresholds (reference-count based)
Guarded rolloutsHost-supplied guardrail signals; hold/rollback; observation-window auto-advance (fail-closed)
Reusable audiencesImpact previews, dependency inventory, preview→confirm→audit, host-supplied preview evidence (bounded)
Promotion / GitOpsCompare, promote, manifest export/import with governed apply
LifecycleOwner metadata (host-owned refs), archive-readiness guidance, cleanup workbench — advisory only
Tenancy helpersExplicit tenant scope in runtime, admin, promotion, audit — not environment-per-tenant topology
IntegrationOpenFeature companion package, installer, Fake adapter, Plug/LiveView/Oban seams

Runtime semver (0.1.x)

Rulestead.Runtime is the supported keyed lookup path when using environment + flag key with the snapshot cache. See Getting Started and Evaluation for the evaluation flow.

The six-function catalog in API Stability is stable for 0.1.x patch releases.

Implementation modules under Rulestead.Runtime.* (cache, snapshot, refresh) are not semver-locked and may change without notice.

Payload-first Rulestead.evaluate/3 remains the pure evaluation contract; Rulestead.Runtime is additive for cached lookup.

Host always owns

  • Identity and authorizationRulestead.Admin.Policy behaviour; no bundled auth stack
  • Observability and metrics — guardrail signals, preview evidence, baselines; Rulestead normalizes bounded facts only
  • Population truth — no authoritative affected-user counts; previews declare basis and uncertainty
  • Team/owner directory — lifecycle owner fields are opaque host references

Out of scope (not Rulestead)

AreaWhy
Hosted Rulestead CloudSelf-hostable OSS; you run Postgres and Phoenix
Stats engine / experiment analytics warehouseImpression hooks only; analytics lives in your warehouse
Standalone fleet control planeAdmin mounts inside your app
Automatic code removal from lifecycle heuristicsArchive readiness is advisory
Percentage-of-time rolloutsFootgun; use stable targeting_key + percentage-of-actors
Impression-weighted blast-radius governanceGOV-05: reference-count thresholds only

Deferred to v2 (optional deepening)

IDItemReopen when
ADM-06Draft targeting presetsHigh authoring volume + duplication pain
ROL-08Guardrail baseline comparisonProd guarded rollouts need host baselines
GOV-02-extBlast-radius threshold profilesPer-env/tenant thresholds beyond v1.7 defaults

Maintainers track full trigger text in the repository .planning/DEFERRED.md.

Proof posture

Adopters should trust what CI and maintainers run:

  • Every merge: full mix test in rulestead and rulestead_admin (includes release_contract_test.exs)
  • Band closure maintainer gate: cd rulestead && mix verify.phase76
  • Integrator shortcut: cd rulestead && mix verify.adopter (delegates to phase76)
  • Runnable demo: scripts/demo/proof.sh