Zero Violations Again, Different Country
Eighth entry in this series. The previous post ruled out single-customer and network-topology explanations for why rooftop-solar overvoltage wasn't showing up. This post is where the right network was found — and where the same "real data produces zero violations" surprise from the very first post in this series happened again, for a completely different reason.
The right network
Network R is a real 500 kVA, 11kV/415V transformer feeding single-phase residential connections — closer to how Australian LV networks are actually built than Network H's uniform three-phase layout. Buses weren't picked by name pattern this time either: cumulative line resistance from the transformer's LV secondary to every bus was computed via Dijkstra's algorithm on the network's own real Lines.dss/LineCodes.dss files, and the genuinely most electrically remote buses were selected — the correct physical driver of voltage-rise risk.
A single 5.5 kW test at the most remote of those buses, under near-zero background load, reached 1.016 p.u. — the first configuration where the physics plausibly supported the phenomenon at all.
Then the full pipeline said zero again
Fifteen real customers at the fifteen most electrically remote buses, run through the full pipeline under real background load — not the artificially suppressed load the smoke test used — found zero violations. An honest, informative null result, the same category as the German series' first real surprise: the mechanism looked right in isolation, and still didn't produce the headline result under realistic conditions.
The natural next question was whether more customers would tip it over. All 53 available real phase-1 buses were swept: N ∈ 53, every customer at full real capacity, every event in a real 17,520-event year, exhaustively audited — no truncation, no sampling.
| N customers | n_critical | Violations | Max V | Solver fails | |---|---|---|---|---| | 15 | 4,443 | 0 | 1.00000 | 3 (all non-critical) | | 25 | 4,595 | 0 | 1.00001 | 0 | | 35 | 4,635 | 0 | 1.00000 | 0 | | 45 | 4,681 | 0 | 1.00534 | 0 | | 53 (all available) | 4,678 | 0 | 1.00279 | 0 |
Zero violations at every tested count, including full saturation of every available real remote bus. Three of 87,600 solves failed to converge — all non-critical, all at N=15, confirmed harmless to the finding either way.
The explanation, traced rather than assumed
Customer count wasn't the missing variable. The real explanation surfaced once capacity itself was checked directly: the underlying Ausgrid dataset is from 2012–2013, with a mean documented generator capacity of 1.53 kW across the 127 customers with a complete year of data. Today's typical new residential solar install is 6.6–13+ kW — four to eight times larger. The 2012-2013 system sizes are simply too small relative to current adoption to reproduce the phenomenon at any customer count, no matter how many of them are saturated.
That's not a dead end the way it might look. It's the same discipline as the German series' provenance chase: don't report a null result and move on, trace why it's null. Here, the answer pointed directly at the next experiment — stop sweeping customer count, and sweep capacity instead.
Reproducibility: customer-count sweep, full real year, exhaustive audit
# Network R, real bus selection via Dijkstra on Lines.dss/LineCodes.dss,
# real Ausgrid customer capacities and export shapes, real background load
for n_customers in [15, 25, 35, 45, 53]:
# full 17,520-event year, every event AC-solved, no sampling
# result: 0 violations at every N, max V never exceeds 1.006 p.u.
pass
# Explanation: mean real capacity in the 2012-2013 dataset is 1.53 kW;
# today's typical new install is 6.6-13+ kW. Capacity, not count, was the
# missing variable -- confirmed in the next post's capacity-scale sweep.
Full script: au_severity_sweep.py in the Australia repository.


