Skip to content

docs: address documentation gaps from three-year client support audit#721

Open
bertilhatt wants to merge 2 commits intomainfrom
docs/playbook-audit-gaps
Open

docs: address documentation gaps from three-year client support audit#721
bertilhatt wants to merge 2 commits intomainfrom
docs/playbook-audit-gaps

Conversation

@bertilhatt
Copy link
Copy Markdown
Contributor

@bertilhatt bertilhatt commented Mar 21, 2026

Motivation

I used Claude to go through Slack channel with clients and identify patterns of responses and product information mentioned there. I also used it to match with our docs, compare and identify topics that were not covered in the docs. It suggested this (very long) PR.

Summary

Adds callouts, warnings, and new sections across 25 documentation pages to address gaps identified during a systematic three-year audit of ~75 client Slack channels (430+ findings documented in the internal playbook audit). Every change addresses a pattern where clients repeatedly needed information that wasn't in the public docs.

Changes are organized by client impact:

High priority (7 items — frequent questions, high confusion):

  • Run Log as debugging tool — new section in Debugging Metrics explaining when and how to use the Run Log
  • Diagnostic query approximation caveat — callout on Diagnostics page noting queries exclude CUPED++, winsorization, and mixed-assignment filtering
  • SSC does not account for CUPED++ — notes on both Sample Size Calculator and Progress Bar pages
  • Entry point replaces assignment timestamp — warning callout on the entry point filter page
  • Assignment logger required fields — callout on Assignment Logging page highlighting that omitting experiment causes silent data loss
  • Backfill decision tree — new subsection in Data Pipeline explaining when a full refresh is (and isn't) needed
  • Ramp via passthrough vs variant weight change — new section in Running Well-Powered Experiments

Medium priority (11 items — recurring confusion):

  • ConfigurationStore environment isolation warning (iOS + Android SDK init)
  • Holdout limitations: archived bands still consume hash space, compounding percentages, immutable dates, Admin-only creation
  • Flag archival is irreversible
  • JSON variation int-to-double type coercion
  • Layer parameter lock on active experiments
  • CDN stale-if-error does not cover 429 responses
  • EPPO_OUTPUT schema accumulation guidance
  • Service account rotation checklist (Snowflake, Redshift, BigQuery)
  • Winsorization truncation (capping) vs discard clarification
  • Schedule limitations (no per-day-of-week, reassignment via Metrics tab)

Lower priority (7 items):

  • SSO is SP-initiated only (IdP-initiated causes login loop)
  • Audience builder: no "is null" condition, no array-type attributes
  • Interaction effects limited to Simple metrics
  • Sequential test three-trigger readiness criteria
  • Global Lift non-additivity of unique entity metrics
  • Experiment key non-uniqueness note

3 lower-priority items were skipped as out of scope for this repo (billing model, API status field in Swagger, incident communication runbook).

Test plan

  • Verify docs build successfully (Docusaurus)
  • Spot-check rendered callout boxes on key pages (diagnostics, assignment-logging, holdout-config)
  • Review that internal links resolve correctly (e.g., diagnostics anchor link from confidence-intervals page)

Made with Cursor

@netlify
Copy link
Copy Markdown

netlify bot commented Mar 21, 2026

Deploy Preview for eppo-data-docs ready!

Name Link
🔨 Latest commit ae771d9
🔍 Latest deploy log https://app.netlify.com/projects/eppo-data-docs/deploys/69beed9de73cda00084d3633
😎 Deploy Preview https://deploy-preview-721--eppo-data-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Adds callouts, warnings, and new sections across 25 documentation pages
to address gaps identified during a systematic three-year audit of ~75
client Slack channels.

Changes include:
- Diagnostic query approximation callout (excludes CUPED++, winsorization, mixed-assignment)
- Run Log as source of truth when Diagnostics is insufficient
- Backfill triage: Eppo pipeline failed (no backfill) vs upstream data fixed (full refresh)
- Entry point replaces assignment timestamp; filter-only alternative via Assignment SQL
- SSC does not account for CUPED++ (qualify run-time estimates)
- Self-service warehouse table cleanup (Admin → Pipeline Update Schedules)
- SA migration checklist for warehouse connection pages
- ConfigurationStore environment isolation warning (iOS/Android)
- Holdout allocation band fragmentation and date immutability
- Flag archival irreversibility and key reuse
- JSON variation type coercion (int → double)
- Layer parameter lock on active layers
- Winsorization truncation (not discard) and Diagnostic exclusion
- Assignment logging required fields and experiment field inclusion
- Global Lift unique entity metric non-additivity caveat
- Interaction effects limited to Simple metrics
- Sequential test three-trigger readiness model
- CDN stale-if-error 429 gap
- SSO SP-initiated only constraint

Made-with: Cursor
@bertilhatt bertilhatt force-pushed the docs/playbook-audit-gaps branch from ba2d088 to cc61a50 Compare March 21, 2026 18:41
…nup nav

- Lookback window: 24h → 2 days (matches DEFAULT_INC_LOOKBACK_PERIOD_DAYS)
- Ready-for-review: three independent paths, not all-three-required;
  document min-requirements gate and traffic-imbalance blocker
- Flag archival: note that keys can be reused after archival
- Warehouse cleanup: Admin → Settings → Experiment Schedule Settings

Made-with: Cursor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant