| Server IP : 35.80.110.71 / Your IP : 216.73.216.221 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ip-172-31-21-44 6.17.0-1019-aws #19~24.04.1-Ubuntu SMP Tue Jun 23 18:53:06 UTC 2026 x86_64 User : ubuntu ( 1000) PHP Version : 8.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/splitstream-web/.next/server/app/docs.segments/docs/ |
Upload File : |
1:"$Sreact.fragment"
2:I[4561,["/_next/static/chunks/3u-4v10_yuvs8.js","/_next/static/chunks/31jk64s9j6agx.js"],""]
3:I[51858,["/_next/static/chunks/3u-4v10_yuvs8.js","/_next/static/chunks/31jk64s9j6agx.js"],"OutletBoundary"]
4:"$Sreact.suspense"
0:{"rsc":["$","$1","c",{"children":[[["$","h1",null,{"className":"text-3xl font-bold","children":"Splitstream docs"}],["$","p",null,{"children":["Splitstream is the experimentation half of a feature-rollout pair. Pennant decides ",["$","em",null,{"children":"whether"}]," a feature ships. Splitstream decides"," ",["$","em",null,{"children":"which variant"}]," a user sees and ",["$","em",null,{"children":"whether the variant moved the metric."}]," The two ship a joint quickstart via the"," ",["$","$L2",null,{"href":"/with-pennant","children":"growth wrapper"}],"; the rest of this section explains the load-bearing pieces of Splitstream itself."]}],["$","h2",null,{"children":"The defaults are calibrated, not asserted."}],["$","p",null,{"children":["The most important thing to read first is"," ",["$","$L2",null,{"href":"/docs/concepts/bayesian-inference","children":"/docs/concepts/bayesian-inference"}],". The plan's draft thresholds (",["$","code",null,{"children":"0.95 / 1,000 / 15 min"}],") delivered ",["$","strong",null,{"children":"66% empirical false-positive rate"}]," in our null-effect simulation. The calibrated tuple is"," ",["$","code",null,{"children":"0.995 / 20,000 / 240 min"}],"; that's the default every new experiment inherits. Lowering thresholds without re-running the simulation re-inflates the false-positive rate."]}],["$","h2",null,{"children":"What the docs cover"}],["$","ul",null,{"children":[["$","li",null,{"children":[["$","$L2",null,{"href":"/docs/concepts/bayesian-inference","children":"Bayesian inference"}]," ","— the calibration table and why your prior intuitions about peeking are wrong."]}],["$","li",null,{"children":[["$","$L2",null,{"href":"/docs/concepts/sticky-assignment","children":"Sticky assignment"}]," ","— sticky-forever, mid-experiment weight-change semantics, and the force-rebucket tombstone story."]}],["$","li",null,{"children":[["$","$L2",null,{"href":"/docs/concepts/bucketing","children":"Bucketing"}]," — the hash function and the cross-SDK corpus that guards drift."]}],["$","li",null,{"children":[["$","$L2",null,{"href":"/docs/concepts/peeking","children":"Peeking discipline"}]," — why every dashboard open is logged and how the audit log reads."]}],["$","li",null,{"children":[["$","$L2",null,{"href":"/docs/concepts/srm","children":"Sample Ratio Mismatch"}]," — the chi-squared monitor that catches bucket-pipeline bugs."]}],["$","li",null,{"children":[["$","$L2",null,{"href":"/docs/concepts/mutex-groups","children":"Mutex groups"}]," — mutually exclusive experiments, forward-only semantics, and the SELECT FOR UPDATE race protection."]}]]}],["$","h2",null,{"children":"Where to start writing code"}],["$","p",null,{"children":["Five-line samples per stack live on the"," ",["$","$L2",null,{"href":"/","children":"home page"}],". Full SDK references and install instructions are on ",["$","$L2",null,{"href":"/sdks","children":"/sdks"}],". The API surface is rendered inline at"," ",["$","$L2",null,{"href":"/reference","children":"/reference"}]," via Scalar."]}]],null,["$","$L3",null,{"children":["$","$4",null,{"name":"Next.MetadataOutlet","children":"$@5"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"d4p1Nsp7dnkNrIm-L0oJl"}
5:null