gap: the Kadaster verdict measured the BGT side with the ghost-version filter #250
Labels
No labels
agent
agent:ci
agent:done
agent:failed
agent:needs-input
agent:refined
agent:refining
agent:running
agent:shipped
agent:skip
autonomous
autopilot
driven
local
plan
proposal
qa
qa-gap
research
retro
ship
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jeroen/cartopolis#250
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What I did
QA of what #187 shipped (
4f96f4c, docs-only:docs/notes/kadaster-parcels.md+the
docs/direction.mdrow). Re-ran every measurement in the note against thelive services on 2026-09-01.
Everything on the Kadaster side reproduced exactly — the five feature counts,
all four paging traps, 34 requests / 30.4 MB, and 313.1 km of
KadastraleGrensagainst the note's 312.4 km (0.2 %, three days of daily refresh).
The one number that did not hold is the other half of the comparison, the
surveyed-boundary length the verdict is measured against.
What happened
The note (line 30-34) says:
termination_datealone is the filtersurveyed-street-objects.md
documents as insufficient, in the section that calls it "the one that silently
ruins an extract — twice":
That is the ghost-version bug fixed in
19383b1— up to 7 coplanar copies of onefootway, "the map's worst z-fight". The kadaster measurement was taken with the
pre-fix filter.
Walking
scheiding_lijnover the note's own bbox(
6.555,53.207,6.580,53.222), 2,514 versions returned:lokaal_idtermination_dateempty only — the note'sThe note's 1,232/21.9 km reproduces exactly, so this is the filter and not drift.
Note the third row is 1,072 features over 1,072 ids — the clean one-version-per-id
partition surveyed-street-objects.md describes; the note's row carries 120
superseded duplicates.
Narrower still: of that 16.2 km, only the forms the client actually draws count.
Current
scheiding_lijnby type in this box:No
heg/haagat all, soLineKind::Hedgedraws nothing here. Drawn length is≈9.2 km, not 21.9 km. (The exact
type->LineKindmapping lives incartopy's
bgt.ts, which this container cannot read, so 9.2 km is bounded fromthe BGT types rather than pinned from the mapping.)
Why it matters, and why it is not urgent
The verdict is unaffected and in fact strengthened. The gap goes from the
note's 93 % to ~95 % against current features, or ~97 % against drawn ones. Every
error runs in the conservative direction, so #187's "not taken" stands on its own.
What is worth fixing is that the note teaches the wrong method. Its "How every
number above was measured" section is written to be re-run, and a reader who
re-runs it inherits the exact filter the codebase spent a fix removing. Worse, the
note reconciles its inflated figure — it calls 21.9 km "consistent with the ~18
km at the worst" — so the one cross-check that would have caught the inflation was
used to wave it through. With the correct filter, 16.2 km sits under that ~18 km
rather than 22 % over it.
What a reader would expect instead
A note citing a BGT feature count to state the filter the repo actually uses, and
for two notes written the same day (both dated 2026-08-29) not to disagree about
what "current" means.
Where the seam is
docs/notes/kadaster-parcels.mdlines 30-34 (the figure and its reconciliation)and the measurement block at the bottom.
docs/direction.md, the Kadaster row: "21.9 km of surveyed fence, wall andhedge" and the derived "93 %".
docs/notes/surveyed-street-objects.md, "The APIbehaves nothing like the BAG WFS next door".
crates/cartopolis/src/systems/map/surveyed.rsand cartopy'sitems()already apply the both-fields rule; only the notes are stale.Suggested fix: 21.9 -> 16.2 km in both files, drop the false "consistent with ~18
km" reconciliation, and say
termination_dateandeind_registratiein themethod block. Optionally add the ≈9.2 km drawn-forms figure, which is the honest
like-for-like against a cadastral line.
How to reproduce
Filed by the QA pass on #249.
docs/qa/targets.md— 14 of 14 passes re-verified a shipped ticket, 9 of them documentation-only verdicts #280