The binding constraint on this platform is not modelling skill or computing power. It is access. A source that needs an account cannot be part of UK GroundTruth, because the whole proposition is that a government body can reproduce every number without asking anyone’s permission.
So the research began by testing access rather than by reading documentation. 101 endpoints were probed from a clean client — no account, no key, no subscription, no cookie. 69 returned HTTP 200. Everything downstream follows from that result.
This site explains UK GroundTruth. It does not run it. The working system — the public, admin and mobile interfaces, reading figures computed from the live sources — is deliberately not published: it is built and served locally, so the operator holds the data and can reproduce every number without depending on anyone else hosting it.
git clone https://github.com/mosesdex/uk-open-data-systems cd uk-open-data-systems/platform python3 -m venv .venv && ./.venv/bin/pip install -r requirements.txt ./.venv/bin/python -m groundtruth.cli run --fetch ./.venv/bin/python -m groundtruth.cli serve
The server binds to 127.0.0.1 only and is not reachable from the network.
This is the single most important finding in the study.
Ordnance Survey documentation steers you to the OS Data Hub, which wants an account. The downloads path does not. A range request against it returned HTTP 206 and real archive bytes with no key of any kind.
That releases the entire free portfolio — including OS Open UPRN and, critically, OS Open Linked Identifiers, which is exactly the property-to-street-to-topographic crosswalk the place spine needs.
| Product | Format | Size | Role |
|---|---|---|---|
| OS Open UPRN | CSV | 618.5 MB | Every property reference in GB, with coordinates |
| OS Open Linked Identifiers | CSV | 672.0 MB | The crosswalk: property ↔ street ↔ topographic |
| OS Open USRN | GeoPackage | 296.9 MB | Street references |
| OS Open TOID | CSV | 1.4 MB | Topographic identifiers |
| Code-Point Open | CSV | 14.5 MB | Postcode centroids |
| OS Open Names | CSV | 103.3 MB | Place and street gazetteer |
| Boundary-Line | Shapefile | 736.9 MB | Administrative boundaries |
| OS Open Roads | Shapefile | 606.1 MB | Road network |
Four of the six network operators publish through a full query API, anonymously.
UK Power Networks, SP Energy Networks, Northern Powergrid and Electricity North West each expose an Opendatasoft catalogue with filtering, aggregation and geospatial querying. UK Power Networks alone publishes 137 datasets, including its embedded capacity register.
This corrects the premise Junction was built on. The gap is not access. The gap is that each operator computes “available capacity” on its own basis, so the published numbers cannot be compared with each other.
A direct upgrade to Bulwark.
The Environment Agency asset-management interface answers anonymously and carries condition, last inspection date, asset type, primary purpose and protection type per asset.
That means the overdue-inspection question and the coverage-qualified condition statistic can both be answered today, rather than being a future ambition.
Measured while building the entity spine, and it corrects an earlier claim.
The premise was that a Gazette notice always carries a structured company number, so exposure questions never need name matching. Parsing the live feed shows that is true of 70% of notices, not all of them.
It splits cleanly by notice type. Every appointment of liquidators carries the number, as does every meeting of creditors. But notices to creditors carry it in none of the cases sampled, and notices of intended dividends in almost none. The notice types that mark an actual insolvency event are the reliable ones, which is why the system still works — but the blanket claim was wrong.
The notices missing a number still print a registered address. Feeding that postcode to the place spine lifts coverage from 70% to 93%. The two spines cover each other’s gaps, which is an argument for one platform rather than thirteen.
The trap case, and the reason the audit was worth running.
The energy performance register returns HTTP 200 to an anonymous client — and serves a sign-in page. A system built on documentation alone would have shipped with a dependency that silently returns nothing.
It was removed rather than assumed to work. Lastmile now uses Price Paid Data, which carries a new-build flag at address level and is genuinely open.
Computed from the full school register on 17 August 2026 — 52,486 establishments, of which 27,167 are open.
| Measure | Value | Meaning |
|---|---|---|
| Open schools | 27,167 | The denominator |
| Carrying a property reference | 96.5% | The where link is nearly solved here |
| Carrying coordinates | 97.7% | |
| Carrying an organisation identifier | 45.4% | The who link is barely half solved |
| Total capacity | 9,928,858 | places |
| Pupils on roll | 8,857,132 | |
| National utilisation | 89.2% | |
| Distinct academy trusts | 2,185 | Largest runs 96 schools |
Joining those authorities to the national boundary set by name matched 152 of 316 districts.
The thirty that fail are two-tier counties — Kent, Lancashire, Hampshire, Essex, Surrey, Norfolk, Staffordshire and others — whose schools are planned across several districts at once.
That is not a data-cleaning nuisance. It is exactly the defect Catchment exists to fix: school planning happens on a geography that is published nowhere and does not line up with the administrative geography everything else uses. The prototype shows this on click rather than papering over it.
A system that quietly drops a source it cannot reach is a system whose coverage figures cannot be trusted. These are published in the platform’s own console.
| Source | Response | Position |
|---|---|---|
| Care regulator syndication | 401 | Needs a key. The published location file is still free — use that. |
| Charity register interface | 401 | Needs a key. Bulk extracts remain downloadable. |
| Bus open data service | 401 | Needs a free account — still excluded by the rule. |
| Energy performance register | 200 | Serves a sign-in page anonymously. Replaced by Price Paid Data. |
| Communications coverage data | 403 | Blocks automated retrieval; needs a manual step. |
| School register download page | 403 | Page blocks automation — but the underlying file is directly reachable. |
| Benefits statistics interface | 503 | Account required. |
| Local land charges search | 403 | Search service blocks automation. |
Never published in UK procurement data. This kills the entire family of price-based collusion tests, so Sentinel relies on structural signals instead — shared directors, shared owners, framework concentration.
Held in a structured system covering over 2,000 responses a year, and published nowhere. Sightline cannot use it until it is released.
Not reachable without signing in, so it cannot serve as the national completion signal.
Blocked to machines. Usable, but only with a manual download step.
Excluded by design rather than by capability. Compass forecasts from published aggregates and touches no personal record.
Keeps the platform inside the licensing line permanently.
Nothing merges silently. Low-confidence links go to a human queue.
“73.7% unknown” is a finding, not something to hide.
A source that starts failing must show as failing, not quietly produce a smaller number.
Same inputs, same commit, same outputs — because a government buyer will eventually be challenged on a number by a named company.
Every system: sources, logic, data in and out, architecture, automation, security.
What a full run produces, the rules the code enforces, and the traps worth knowing.
The status every endpoint returned, and the script that regenerates it.