# Recharge source attribution Measured by `scripts/attribute_seepage_window_recharge.py`. Soil, non-RIV channel and canal source arrays were checksum-checked against the recharge receipt bound by the original model build. Their sum reproduces the native RCHA budget at every selected cell-day to below 1e-6 m3/day. These are original-control cells with heads above average ground, across both countries, during each replay window. | Window | Recharge component | Share | | --- | --- | --- | | april | soil | 91.2% | | april | channel | 8.7% | | april | canal | 0.1% | | september | soil | 0.2% | | september | channel | 99.8% | | september | canal | 0.0% | The soil-bottom term is water transferred from the surface model's soil system. It does not identify rainfall versus snowmelt versus irrigation ancestry. Direct canal leakage and prescribed non-RIV channel seepage are separate here; river-package exchange, lateral groundwater movement and storage are outside this recharge partition. This is source accounting, not proof that the simulated recharge is physically correct. Read: `docs/records/model-domain-review-2026-09-23/production_adoption/physical_basis/g2_peak_recharge_saturation_contract_r1.json`, keys `implemented_contract.soil_bottom_head_dependent_limiter=false` and `implemented_contract.mf6_head_to_hru_soil_credit_active=false`, records the tested G2 generation's missing head-to-soil response. The source builder `production_adoption/mf6/recharge_package.py` constructs prescribed recharge from the three input arrays; this investigation verifies their exact equality to the native window budgets. This statement concerns this G2 generation, not later development branches. It does not establish how much recharge should physically be rejected or returned. The next discriminating check is the soil-recharge pulse and its response to shallow saturation, together with surface outlet capacity. Increasing drainage alone could conceal excessive recharge; reducing recharge alone could conceal inadequate outlets. The hand-drawn search polygons do not enter this attribution.