# Synthetic verification review Independent AI reviewer, 4 September 2026. This is a synthetic scientific and numerical review, not external peer review. The reviewer inspected `scripts/analyze.py` and independently parsed the original Băneasa daily file. The separate verification program does not import or execute production functions. No numerical defect was found in the reviewed calculation. The verification result applies to București Băneasa and the recorded implementation hash, not to every station or the final website. ## Evidence that passed - Recounted all 27 Băneasa configurations and 972 published rows using direct backwards date lookups, integer precipitation in tenths of a millimetre and explicit future-date lists. Counts, successes, anchor years, excluded future windows, suppression, probabilities, both baselines and both differences match the published output. - Confirmed identical denominators and nondecreasing success counts across the four future windows for every checked duration/configuration. - Reproduced 1,000 annual resampling draws for the default result and matched its probability interval, month-year difference interval and month-only difference interval. - Matched 23,738 accepted daily observations, all source counts and annual coverage/source counts against the raw record. - Passed 20 independent fixture assertions covering threshold equality, trace and rejected flags, a gap within history, restored age after a wet day, consecutive wet days, year crossing, leap day, period truncation, exclusion of the anchor from its outcome, an early success followed by a missing future day and a fully observed dry window without eventual termination. These fixtures validate the independent oracle. - Subsequently passed nine focused tests against the production functions themselves and whole-output invariants across 30 stations, 648 configurations and 23,328 estimate rows. All 214 supported boundary estimates hide their resampling intervals. Season partitions, period-boundary count inequalities and index/station metadata agree. Evidence is in `qa/numerical-checks.json`; run `scripts/test_analysis.py` to reproduce these checks. The executable check is `scripts/verify_independent.py`; compact evidence and file hashes are in `research/independent-verification.json`. ## The default comparison needs careful wording For 1961–2025, April–September anchors, threshold above 5 mm, 14 completed qualifying dry days and a seven-day outcome, 139 of 277 eligible episodes succeeded. The estimate is 50.2%, with an approximate annual-bootstrap interval of 45.3% to 55.1%. | Descriptive benchmark | Benchmark probability | Difference | Difference interval | | --- | ---: | ---: | ---: | | Same calendar month across the period | 49.8% | +0.4 percentage points | −3.9 to +4.6 points | | Same calendar month and year | 42.2% | +7.9 percentage points | +3.3 to +12.2 points | These benchmarks answer different questions. Matching month and year holds the realized climate of a particular month much more tightly than pooled monthly matching. Neither establishes a causal effect of waiting. Including the original anchor and overlapping outcomes in the descriptive benchmark is coherent; shared annual resampling preserves their within-year covariance. It does not require a leave-one-out correction for the stated descriptive estimand. The difference between benchmarks is material. Show both and avoid treating month-year matching as an automatic validation of the broader seasonal claim. Likewise, the predefined daily contrast from 7 to 30 completed days is +3.0 points before adjustment, with an interval from −4.0 to +10.7 points; after month-year adjustment it is +7.7 points, with an interval from +0.9 to +15.2 points. Neither contrast proves that the whole daily-hazard curve increases. ## Remaining bounded issues 1. Tail percentiles use wet-to-wet interval length `b-a`, including one-day intervals between consecutive wet dates. The calculator's duration is completed dry days, `b-a-1`. Tail intervals are also selected by the terminating wet day's season, while the calculator selects the anchor's season. Băneasa's displayed 99th-percentile interval of 49 days therefore must not be called 49 completed dry days or the exact support point of the main curve. Label the units and seasonal rule explicitly, or omit this auxiliary statistic from the reader-facing analysis. 2. The accepted measurement-flag audit is now complete for all 30 raw station files, with annual frequencies in `research/measurement-flags.json`. Băneasa includes 30 accepted source-S days, all in June 2024, and its default cohort and benchmark both use some of them. It must not be labelled ECA&D-only. Excluding source S before age and completeness calculations removes two default anchors and changes the seven-day probability from 139/277, or 50.18%, to 139/275, or 50.55%. The excluded-S probability interval is 45.62% to 55.44%; all 65 years still meet the annual coverage rule. The largest probability change among the four windows is 0.52 percentage points. `research/source-sensitivity.json` records both baselines, intervals and the daily contrast; `scripts/check_source_sensitivity.py` reproduces this sensitivity using production helpers. This narrow stability check does not validate other stations' source-S measurements. 3. No homogeneity check, instrument-history review, national representativeness claim, ritual-timing test or website review was performed here. Annual blocks still leave cross-year dependence untreated, and the confidence intervals are pointwise, conditional on the accepted observation process. The common 28-day cohort, explicit period truncation, month-only sensitivity and hidden degenerate bootstrap intervals resolve the principal implementation risks in the earlier methods review. Release should keep the benchmark sensitivity and the remaining scope limits visible.