A register of every claim this dataset makes, sorted by how much weight it can carry. Nothing below is hedged for its own sake: an assumption with a number attached and a knob next to it starts a negotiation, while an undisclosed one loses the reader's trust in everything else on the page.
Each of these was verified live against the source and re-checked by an assertion in the pipeline. They are safe to state without qualification.
Built from SCE's own published territory polygon — not the CEC approximation — then reduced by 3,924 km² (2.90%) for twenty-one publicly owned utilities that serve their own meters. Three entities in the CEC layer were deliberately kept, each with a written reason, because they are not retail electric distributors at all.
The erase list is opt-in per utility rather than a blanket difference against the CEC layer, precisely so this decision is reviewable rather than implicit.
Assignment is by parcel representative point; only 0.14% of parcels straddle the boundary, so the rule barely matters and the result is robust to changing it. Ventura keeps 99.9% of its parcels, Los Angeles 60.8%, Tulare 34.8%, and Imperial and Tuolumne 0.6% each.
The countywide total of 6,478,429 is a number about California counties. It is not a number about SCE, and the two must never be reported interchangeably.
Zero parcels failed to find a line section; exactly one failed to find a census block. Four assertions hold across all fifteen counties: the clip total matches, parcel_uid is unique per county, block_share sums to 1.0 per parcel, and the allocation key set equals the clip key set.
Cross-county block assignment affects 91 parcels in 4.1 million — 0.002%, every one landing in a genuinely adjacent county. That is a representative point falling just over a county line, which is correct behaviour, and it is recorded as a metric with a threshold rather than treated as a failure.
Thirty sources, 8,637,423 assembled features, every row stamped with source_url and retrieved_at, every harvest writing a manifest that records what the service claimed against what actually arrived. Zero count drift against the register. Four sources contained features with no geometry; those are recorded in a companion file rather than quietly dropped.
The source register is generated from those manifests, so it documents retrievals that actually ran rather than a hand-maintained list that has already drifted.
TIGERweb's block layer carries HU100 and POP100 itself, so the 2020 decennial housing-unit count arrives attached to the geometry — no separate Census API pull, and block-level resolution rather than the city-level CA Department of Finance E-5 figures alone. Decennial rather than ACS below block group, because ACS margins of error at that grain are wider than the quantity being measured.
Across all fifteen counties, unclipped: 7,750,632 housing units and 22,060,189 people. That is the frame the 5.7M meter figure sits inside, not a number to compare it against.
Roughly 42,000 parcels carried a non-unique identifier: San Bernardino 18,715, Orange 15,461, Ventura 7,286, Los Angeles 112. Orange's ASSESSMENT_NO repeats up to 337 times on a single value, carries a 000 sentinel on 1,795 rows and is null on 876. Only Kern and Tuolumne were clean.
Duplicates are suffixed, apn_raw is preserved for the eventual assessor-roll join, and uniqueness is enforced as a pipeline gate. A duplicated key fans out every downstream join silently and inflates the meter count with no error raised — which is why this is a gate and not a QA nicety.
Both clip to 0.6% of their countywide parcels, which is also exactly what a bad clip looks like, so it was checked rather than assumed. Tuolumne's 273 surviving parcels sit a median 7,748 m from the nearest SCE line section against 79 m in Los Angeles; Imperial's 564 sit a median 24,279 m away. Tuolumne additionally shows 11% of its parcels assigning into Mono County blocks and is 100% unincorporated.
A projection or winding-order artifact would misplace parcels, not place them uniformly far from the network. This is corroboration rather than proof, but it points one way consistently.
These are gaps with a defined shape. Each has a next action; none of them threatens the design.
Los Angeles, Riverside and Riverside's condominium polygons are through stage 2. The remaining 1,940,049 allocated parcels divide cleanly, and the division determines the effort:
| Situation | Parcels | What unblocks it |
|---|---|---|
| Use code present, crosswalk rows seeded but not yet classed San Bernardino, Ventura, Tulare, Mono, Imperial, Tuolumne | 1,136,513 | Hand-mapping the vocabulary — hours of judgement, no new data |
| No use code or zoning on the parcel layer at all Orange, Kern, Santa Barbara | 803,536 | An assessor-roll join, or the separate county zoning layer |
1,205,637 building records on 846,251 parcels — the multifamily signal, with DESIGN_TYPE, BEDROOM_COUNT and YEAR_BUILT — sit in data/interim/riverside_buildings.gpkg, unused. It is a non-spatial table joining on PIN, not on APN, which is why it was deferred.
Until it lands, 472,373 Riverside parcels whose crosswalk rule asks for a published unit count fall back to a class constant. The pipeline handles that honestly — it relabels them inferred rather than passing them off as measured — but it is the largest single available accuracy gain in the build.
core.service_point, the marts, the difficulty index and config/weights.yml do not exist yet; sql/ is empty. The index still needs four inputs joined to parcels that are not yet attached: HFTD tier per parcel, SB 535 disadvantaged-community share, OSM route kilometres per line section, and the structure-vintage share.
The design is settled and the hard spatial work is cached, so this is construction rather than discovery.
Allocated parcels reach 272,354 of 524,522 line sections, 3,005 of 4,304 circuits and 574 of 735 substations. Some of the shortfall is the four counties with no public parcel service; some is line sections that genuinely carry no customers. Those are completely different statements — one is a data gap this project owns, the other is a real property of SCE's network and is itself a finding.
Until they are separated, the coverage figure describes this build rather than the network, and it should be reported that way.
The National Address Database service cannot be filtered to California: the registered URL returns an error body under HTTP 200, and the live view service indexes only OBJECTID and Shape, so a state filter scans 98 million rows into a gateway timeout while a bounding-box count returns {"count":0} for downtown Los Angeles in half a second. A wrong answer delivered confidently is worse than a timeout, because a harvest would accept it — so the source is marked blocked rather than worked around.
Replacement candidates are the USDOT bulk release or per-county address point layers. A further wrinkle: NAD's Placement field distinguishes Structure – Rooftop from Site, and a parcel-centroid placement carries no more locational information than our own modelled point. Rung 1 is therefore not one rung, and the ladder must split on Placement rather than accept an address point wholesale.
| Responding or authoring? | Responding to SCE's solicitation optimises for deployment cost modelling; helping author it optimises for scope definition and lot sizing. Different products. |
| RFP date | Sets how many of the four gap counties are worth chasing — assessor records requests run on their own clock and should start the day the answer arrives. |
| Required deliverable format | If an Esri shop consumes this, the file-geodatabase export is mandatory and worth confirming now rather than at the end. |
Judgement calls that a reviewer could reasonably reject. Each is quantified where a number exists, and each lives in a config file rather than in code, so disagreeing with one costs an edit and a re-run rather than an argument.
method is a spatial-confidence flag as much as a count-confidence flag — a block whose meters are mostly modelled is uncertain in its total and in whether those meters belong to that block at all. A measured count with a modelled location is the normal case in this build today.Older parks commonly run one utility service with the operator sub-billing residents, so the utility sees a single meter where the parcel shows hundreds of homes. Newer parks are increasingly direct-metered. The model splits the difference at 0.5, and that value is a placeholder standing in for a real number rather than an estimate of one — labelled as such in the config file.
It is resolvable: the California HCD Mobilehome Park registry lists parks with their space counts. This is a days-long task, not a research project, and it should be closed before anything ships.
All 620,942 estimated Riverside meters are labelled inferred or modelled, none measured, because the parcel layer's unit count is unavailable on 472,373 of 622,862 parcels and the building table is not yet joined. The register calls Riverside a county that “publishes dwelling-unit counts directly”; in practice it publishes them for a minority of parcels.
The labelling is correct and the pipeline demoted them honestly. The register's tier description is what needs revising.
Commercial, industrial, institutional and agricultural parcels are all modelled at one service each. That understates multi-tenant retail, where each tenancy is often separately metered, and overstates a parcel that is merely a car park. Agricultural understates a holding running several wells on separate services and overstates bare pasture.
Two related decisions run the other way and are worth as much: hotels and institutions carry per_unit: 0 because the assessor reports rooms and beds as “units”. In Los Angeles that single choice avoids 76,573 phantom meters — 52,782 hotel rooms and 23,791 institutional beds. Deleting either line inflates one county by more than the entire mobile-home question.
Multifamily parcels of five or more units are modelled as units plus one house meter for common load — corridors, lifts, pumps, laundry. It is a defensible default and it is also the single largest structural modelling choice in the file, adding one service to every apartment parcel in the territory.
It matters less than it looks, because multifamily is the class where meter rooms, escorts and scheduling drive deployment difficulty. The flag that a parcel is multifamily at all is worth more to the index than the exact count.
unmapped, which silently means zero metersAcross the counties with a seeded crosswalk vocabulary, 506 of 829 code rows are still unmapped, covering 1,129,947 parcels — San Bernardino and Ventura entirely, Tulare 84%, Mono 70%. The two counties that have been through the model are essentially complete by contrast: Los Angeles 0.51% unmapped, Riverside 0.06%.
The design is right — an unmatched code returns zero and is counted separately in the report rather than quietly inheriting a residential rate — but a zero that means “not yet classified” and a zero that means “vacant lot” are indistinguishable in the output column. Any interim rollup over an unclassed county reads as a real and very wrong answer.
Parcels classed single-family, condominium, duplex or multifamily that carry a zero unit count from the assessor. The pipeline counts them rather than absorbing them, which is right, but no decision has been made about what they should become — a floor of one unit, a demotion to modelled, or genuine zeros representing demolished or pre-construction lots.
Left as zero they suppress roughly 6% of the county's residential parcel count. Given a floor of one they add up to 74,993 meters. The truth is somewhere between, and it is a decision, not a bug.
Kern's median parcel sits 1,154 m from the nearest section and its 99th percentile is 39,797 m; San Bernardino's furthest is 65 km. Every one of those was assigned anyway. The reasoning is sound — discarding the distance is irreversible, and the right threshold is an argument to have against the measured distribution rather than a constant guessed in advance — but the argument has not yet been had.
section_dist_m is on every row, so the threshold can be applied at query time. Until one is chosen, rural rollups include parcels that are plausibly served by a different utility entirely.
| Entity | Area | The risk |
|---|---|---|
| Eastside Power Authority erased | 1,426 km² | The second-largest erase in the build, on a CEC classification that has not been confirmed. If it is a generation or transmission joint powers authority rather than a retail distributor, territory was deleted that SCE actually serves. |
| LADWP kept | 457 km² | LADWP's city core is already excluded by SCE's own boundary; the residual is Owens Valley aqueduct territory in Inyo and Mono where SCE does serve retail customers. Kept because the false negative is the more damaging error — but that should be decided on parcel counts, not area. |
Nobody outside SCE holds historical deployment cost data, so the weights that combine density, multifamily share, fire tier, disadvantaged-community share, access and vintage into a single index cannot be fitted. They live in a config file, not in code, and the methodology discloses them as assumptions.
Roughly a hundred historical work orders with actual hours would convert every one of them into a fitted parameter. That is worth asking for explicitly, and worth saying in the deliverable whether or not the answer arrives.
Resolved. California parcel geometry is a public record under the California Public Records Act: in Sierra Club v. Superior Court (Orange County) (2013) the California Supreme Court held that a county parcel base map is disclosable at the cost of duplication, and that access may not be conditioned on a restrictive licence. All 4,133,590 parcels inside net SCE territory are therefore published, at parcel grain.
Citation is the condition, so it is not optional. Every shipped artifact names the county as author with its endpoint and retrieval date, generated from the harvest manifests rather than maintained by hand. The scope is county-authored parcel geometry only — it does not extend to Overture or the National Address Database, which carry their own separately recorded terms. Where a county is served through a third-party host (Kings via an Esri proxy, Fresno via the Fresno COG regional view) the record is still the county's: cite the county, not the host.
An earlier version of this register argued the opposite and withheld the layer. The licence column in the source register still reports what each publisher states — several publish nothing — because that is a fact about the source, not a conclusion about the law.