What problem does it solve? When a metric spikes, drops, or behaves unexpectedly, teams often guess at causes or accept the first plausible story. This Skill replaces guesswork with a disciplined form-test-eliminate-confirm loop that narrows a slate of candidate causes against the actual data until exactly one survives refutation and passes a positive confirming test. ## Core Features & Use Cases - Candidate elimination loop: Forms a broad slate of mutually distinguishable causes (real change, mix shift, data-quality bug, measurement change, seasonality, outlier segment), then tests each against the dataset and drops the ones the data refutes. - Confirmation discipline: A cause is only declared root when it survives an honest refutation attempt and passes a positive confirming prediction, with every step recorded in an investigation log and ledger. - Sandboxed analysis: Runs stdlib-first Python snippets in the user's environment via a configurable analysis command, keeping the dataset read-only and all artifacts in a self-contained sandbox. - Use Case: Sessions spiked 3x while conversions stayed flat on a given date. The loop characterizes the anomaly, tests candidates like bot traffic versus a pipeline double-count, and reports the confirmed cause with the evidence that ruled out the alternatives. ## Quick Start Ask the assistant to investigate why conversions stayed flat while sessions spiked 3x on 2026-06-14 using the events.csv file in the working directory.