Statsig source-first coverage — 2026-11-05
Research preceded control selection. The working candidate inventory was opened at research/statsig-discovery.md in the task workspace before guide/pack authoring. This durable ledger reconciles its leads against the final 13-control guide; a count of controls or packs is not discovery completeness. All observations below were retrieved on 2026-11-05. Official documentation bodies and implementation sources originate configuration claims. No live tenant, login, key creation, integration connection or setting change was used.
Product and ownership boundary
The official documentation index was read in full (96lines): feature gates, dynamic configs, experiments/layers/Autotunes/Parameter Stores, Cloud product analytics/web analytics/replay, Warehouse Native, integrations, SDK/API, CLI and agent skills. Those products share the relevant Statsig project plane; warehouse delegated access and browser capture have separate controls. AI Experimentation is Early Access and not accepting new customers; existing deployments need provider/data review, not an assertion of general availability.
The 2025 OpenAI acquisition announcement is conditional. The current OpenAI Core Experimentation role explicitly describes Statsig’s post-acquisition journey. Together these support current OpenAI family placement, not a precise closing date or inherited ChatGPT administration.
Retrieval and source quality
Official web body reads succeeded. Direct curl of llms.txt and the Console OpenAPI endpoint timed out connecting after8seconds, including an escalated attempt; web retrieval supplied the index and targeted public schema reads. /introduction, guessed /access-management/roles and a guessed Warehouse quickstart URL were inaccessible; linked canonical project/data-privacy bodies supplied the relevant evidence. These failures are not feature-absence evidence. The112595-line OpenAPI was not locally parsed end-to-end; endpoint/field claims below are bounded to actual targeted reads and pinned source. No screenshots or search snippets alone originate a setting. Ownership search evidence was read in the actual official role body.
Bounded secondary-baseline discovery used “Statsig hardening CIS benchmark”, “Statsig DISA STIG security configuration” and “Statsig security hardening guide OIDC project keys”, plus the current CIS catalog. No qualifying Statsig-specific prescriptive baseline was obtained. That is a search result, not universal absence. Vendor security/compliance pages describe provider practices; they do not prove customer-configurable switches. Framework labels in this guide map intent, not a product benchmark. In particular, no configurable customer disk cipher, forced keychain mode or session timeout was invented from assurance prose.
Candidate reconciliation
| Lead | Configuration source and observed boundary | Disposition |
|---|---|---|
| S01 OIDC/Strict SSO/Owner recovery | SSO: Enterprise organization connection, project enforcement and Owner exemption | Covered1.1; IdP MFA is upstream, not a Statsig local MFA toggle |
| S02 Visibility, roles, invites | Organizations, Projects: moved projects OPEN; granular create/edit/delete behavior | Covered1.2; ordinary role API can reset per-type creation permissions |
| S03 SCIM groups/offboarding | Overview, concepts: aliases need re-add/full sync; unassignment deactivates/wipes roles | Covered1.3; no generic project-delete endpoint claimed |
| S04 Key identity and authority | Keys: client/server/Console/personal distinctions, shared key Admin authority | Covered2.1; collector limited to caller-visible metadata |
| S05 Environment/Target Apps/bootstrap | Target Apps: Enterprise, dependencies not inherited, server union/client filtering | Covered2.1, with evaluation availability impact |
| S06 Client definition exposure | Key documentation’s optional config-spec download scope | Covered2.1; public client key does not mean every granted payload is harmless |
| S07 Review bypass/environment | Reviews, workflow: production default, other environments/bypass separate | Covered3.1; settings flags do not prove effective independence |
| S08 MCP confirmation vs review | Tool reference: discovered operations, confirmation varying by tool, approve vs commit | Covered4.2; no machine confirmation promoted to human approval |
| S09 Dependency history | History: nested gate/segment changes omitted | Covered3.3 and5.1 |
| S10 Audit/export | History describes console/indefinite retention; MCP documents get_audit_logs | Covered5.1; exact complete REST/export contract unverified, no guessed API/Sigma |
| S11 Public/project MCP and EMA | Overview, EMA, client: user membership, exact issuer, project Tenant ID, read-only scopes | Covered4.2; no account enrollment performed |
| S12 Siggy credential/config plane | CLI introduction, commands: official @statsig/siggy, version/read/write/config commands | Covered3.3 version-only; no credential-config dump or unverified settings-output parser |
| S13 IaC full census/lifecycle | Pinned provider2.2.1 docs and internal provider/resource source | Covered1.2/3.1/3.3; no import invented, defaults no resources |
| S14 SDK local data/cache/fallback | Current JS SDK: localStorage evaluations/queued events, stable ID, disableStorage/logging options; released EventLogger buffers disabled events and replays on enable | Covered2.2; logging/storage disabled is not a consent barrier. Old cached data, all SDKs/custom adapters and app fallback require deployment review |
| S15 Replay | Privacy, configuration: Passwords default, selectors/console overrides, sampling/conditional/forced/retention | Covered4.1/5.2; no browser recording initialized |
| S16 Autocapture | Overview, actual installed3.33.7 options/plugin/metadata builder | Covered4.1. Prose suggests copied-text capture but released captureCopyText defaults false. Peer review caught an initial nonnative pageUrl fixture; native fields are page_url/current_url, both query-overwritable. Corrected to independent actual browser location plus matching native fields; actual released metadata-helper regressions cover query spoofing. Console/copy capture remain false, default deny |
| S17 Warehouse trust/egress | Data privacy: source read/job, isolated staging write/delete, samples and aggregate egress | Covered4.3/5.2; generic database/host encryption excluded, exact warehouse editor unverified |
| S18 Ingestion/export integration plane | Warehouse privacy source and linked integration index | Native delegated data and external copies covered4.3/5.2; no unsupported connector schemas or full warehouse catalog completeness claim |
| S19 Pre-commit webhook | Contract: authenticated delivery, independent creation enablement, callback and commit distinctions, UI recovery | Covered3.2; receiver/deployment/key generation excluded from this update |
| S20 Slack audiences | Slack: project connection+filters, separate personal notifications | Covered4.3; no Slack message sent or connection made |
| S21 Agent/automation source trust | Agent skills, CLI/provider source | Covered3.3/4.2; no global skill install or automatic write authorization |
| S22 Deletion/retention | Enterprise deletion: user_id only, SERVER key, uncancellable/batched, POST status read | Covered5.2; status-only pack, never deletion submission |
| S23 Ownership/control inheritance | Current official role+conditional announcement above | Separate product guide; no Statsig setting attributed to ChatGPT |
| S24 Lifecycle | Current index’s AI Experimentation admission restriction; current v3 MCP/JS SDK and pinned provider | Scope and explicit version boundaries; not an absence finding |
| S25 AI instrumentation | OpenAI integration includes historical provider code and telemetry examples | Covered4.3 data boundary; deprecated credential/model snippets not copied, actual prompt capture requires app review |
| S26 Granular role API drift | Current Projects body: shared keys Admin; per-type creation not API-manageable and reset on role updates | Covered1.2; role-writing TF/API packs deliberately excluded |
| S27 GitHub AI repository ingestion | GitHub AI: Early Access App, selected repositories/shared org installation, temporary code processing/knowledge graph, cleanup PRs | Covered4.3; no repository connected or PR-generating integration enabled |
Six-surface pack census
| Surface | Evidence obtained | Result and limitation |
|---|---|---|
| Terraform resources and data sources | v2.2.1: all docs/resource filenames and provider.go read | 17resources: dynamic_config, entity_property, environments, experiment, gate, keys, metric, metric_source, qualifying_event, role, segment, settings_project, settings_reviews, settings_roles, settings_teams, tag, unit_id_type. DataSources returns empty at this tag, verified absence for this version. Two relevant settings used; flat role writes unsafe for granular roles |
| REST/GraphQL | Console introduction, linked 20240601 OpenAPI, keys list, deletion docs, provider source | GET project/review settings and paginated keys verified; deletion status POST verified. REST key header/version and pagination validated. GraphQL administration not established; unverified rather than absent. Full schema not locally parsed |
| CLI/companion | Official Siggy introduction/commands | Native version read supplied. Config may reveal secrets; credential-storage enforcement and output schema not established, no companion daemon invented |
| SDK | Current JS3.33.7 docs, actual package+locked dependencies, private-attribute docs | Native user parameter and actual AutoCapture plugin factory. No SDK initialization; serverSDK/custom adapters require perdeployment review |
| Native configuration | Console SSO/roles/reviews/capture, native SDK options, provider settings; no generic JSONC policy | Supported parameters represented without pretending one project policy enforces all planes. No console/daemon encryption setting inferred from vendor disk assurance |
| SIEM | Audit console/history and MCP log-read capability | Complete event field/export schema unverified; no sample Sigma promoted into a detection |
Nine numbered packs cover seven controls through five types. This is an automation coverage result; six manual/unverified-interface controls remain valid guide content. No unsupported/unavailable capability was mislabeled as verified absence. The only explicit version-scoped absence established here is the provider’s empty DataSources implementation.