QA: what #187 shipped — Kadaster parcels: is it worth wiring in? #249

Closed
opened 2026-09-01 00:33:07 +00:00 by viberfox-agent · 2 comments
Collaborator

Issue #187 (“Kadaster parcels: is it worth wiring in?”) was built and merged by the unattended lane, and nobody has used it. Walk what it delivered as a player would meet it.

This is a QA pass, not a build. Change no code and open no pull request on this
ticket — the deliverables are findings.

  1. Exercise it for real. Run what a player would touch, headlessly: cargo run -p cartopolis_simulator with a client or a wire/HTTP probe for anything online, the
    loopback tests, cargo run -p cartopolis -- --shot … --dump-state for anything with
    geometry. CLAUDE.md lists every harness. If part of this genuinely needs a screen, a
    phone or a microphone, verify the half a machine can reach and name the half it cannot.
  2. Walk the user's journey, not the happy path. At each step ask what a real user
    would obviously expect to be able to do next — then try exactly that. A refusal or an
    absence that would surprise a user is a finding even when every implemented piece
    works: registration worked, claiming a house worked, and a registered account still
    could not claim a house. No test failed; a user hit a wall.
  3. File each real gap as its own issue: title starting gap:, label qa-gap, with
    what you did, what happened, what a user would expect instead, and where in the code
    the seam is. Use the Forgejo API with the FORGEJO_TOKEN in your environment. Do not
    label them autonomous — a person decides which gaps become work.
  4. Report and close. Your final message: what you exercised, what held, what you
    filed. Nothing found after a genuine pass is a good outcome — say what you checked.
    Then close this ticket through the API; a QA pass has no branch to merge.

Decide it yourself. Nobody is watching this ticket; a question asked here is a
ticket that stops. Judge by what a reasonable player would expect, verify before
claiming, and never post credentials or file contents from outside the repository.

Filed by the autopilot.

Issue #187 (“Kadaster parcels: is it worth wiring in?”) was built and merged by the unattended lane, and nobody has used it. Walk what it delivered as a player would meet it. **This is a QA pass, not a build.** Change no code and open no pull request on this ticket — the deliverables are findings. 1. **Exercise it for real.** Run what a player would touch, headlessly: `cargo run -p cartopolis_simulator` with a client or a wire/HTTP probe for anything online, the loopback tests, `cargo run -p cartopolis -- --shot … --dump-state` for anything with geometry. CLAUDE.md lists every harness. If part of this genuinely needs a screen, a phone or a microphone, verify the half a machine can reach and name the half it cannot. 2. **Walk the user's journey, not the happy path.** At each step ask what a real user would obviously expect to be able to do next — then try exactly that. A refusal or an absence that would surprise a user is a finding even when every implemented piece works: registration worked, claiming a house worked, and a registered account still could not claim a house. No test failed; a user hit a wall. 3. **File each real gap as its own issue**: title starting `gap:`, label `qa-gap`, with what you did, what happened, what a user would expect instead, and where in the code the seam is. Use the Forgejo API with the `FORGEJO_TOKEN` in your environment. Do not label them `autonomous` — a person decides which gaps become work. 4. **Report and close.** Your final message: what you exercised, what held, what you filed. Nothing found after a genuine pass is a good outcome — say what you checked. Then close this ticket through the API; a QA pass has no branch to merge. **Decide it yourself.** Nobody is watching this ticket; a question asked here is a ticket that stops. Judge by what a reasonable player would expect, verify before claiming, and never post credentials or file contents from outside the repository. <sub>Filed by the autopilot. <!-- autopilot:qa-reverify-187 --></sub>
Author
Collaborator

🤖 Picked this up — working on branch feat/249-qa-what-187-shipped in a fresh worktree on the VPS. I'll report back here when I'm done.

Label an issue agent:skip to keep me off it, or driven to keep it in a session you are driving.

🤖 Picked this up — working on branch `feat/249-qa-what-187-shipped` in a fresh worktree on the VPS. I'll report back here when I'm done. <sub>Label an issue `agent:skip` to keep me off it, or `driven` to keep it in a session you are driving.</sub>
Author
Collaborator

#187 shipped no code, so there is nothing a player can meet. What it shipped is a research verdict, and the only way to QA that is to re-run it. I did, against the live services on 2026-09-01. No commits on this branch — QA pass, as the ticket says.

What #187 delivered

4f96f4c, two files: docs/notes/kadaster-parcels.md (new, 135 lines) and one row moved in docs/direction.md from "Candidates, unverified" to "Checked and not taken". No crate touched.

What held

Everything on the Kadaster side reproduced, most of it exactly:

Claim Note Measured today
Licence / fees CC0 1.0, none same, off GetCapabilities
Perceel / KadastraleGrens 8,855 / 30,459 exact
Bebouwing / Nummeraanduidingreeks / OpenbareRuimteNaam 7,148 / 7,263 / 387 exact
Cumulative numberMatched trap 941 / 1919 / 2755 exact
count=5000 byte-identical to count=1000 yes exact
Inner bbox returns more than the box containing it 972 vs 941 973 vs 941
PagingIsTransactionSafe FALSE same
Full walk 30,459 returned, 29,676 unique, 34 requests, 30.4 MB exact
Cadastral boundary length 312.4 km 313.1 km (0.2 %, daily refresh)

All four paging traps are real and land as described. In-repo cross-references all resolve: LineKind::{Fence,Wall,Hedge} at crates/geo/src/furniture.rs:957, build_line_meshes, surveyed::surveyed_lines, BGT_ZOOM = 14, the 3.8 MB paving figure, the value-1 and value-6 numbering in direction.md, and both note links. Front-matter matches docs/notes/README.md.

What I filed

#250 gap: the Kadaster verdict measured the BGT side with the ghost-version filter (qa-gap)

The one number that did not hold is the other half of the comparison. The note cites "21.9 km of surveyed physical boundary … after the termination_date filter" — which is the filter surveyed-street-objects.md documents, on the same date, as insufficient. It is the ghost-version bug fixed in 19383b1. Over the note's own bbox:

  • termination_date empty only → 1,232 features / 1,112 ids / 21.9 km (reproduces the note exactly, so it is the filter, not drift)
  • both fields empty, the repo's actual rule → 1,072 / 1,072 / 16.2 km — the clean one-version-per-id partition

Narrower still: no heg/haag exists in this box, and the bank protections (kademuur, walbescherming, damwand) are dropped on purpose, so the length in forms the client actually draws is ≈9.2 km.

The verdict is unaffected and strengthened — the gap widens from 93 % to ~95 %, or ~97 % against drawn forms. Every error runs conservative. What is worth fixing is that the note teaches the method: its measurement block is written to be re-run, and it reconciles the inflated figure by calling 21.9 km "consistent with the ~18 km at the worst", so the one cross-check that would have caught it was used to wave it through. With the right filter, 16.2 km sits under that ~18 km instead of 22 % over it.

Unverified

  • The exact type → LineKind mapping lives in cartopy's bgt.ts, which this container's token cannot read — so 9.2 km is bounded from the BGT types, not pinned from the mapping.
  • Nothing needed a screen. There is no geometry to capture and no wire surface, so no --shot or loopback run applies.

For you to decide

#250 is a docs correction in two files with no code behind it. Worth noting the failure mode is not specific to this note: three other "checked and not taken" verdicts were written the same week and any that measured a BGT layer may share the filter. I did not audit those — say the word and I will.

No commits were made.


🤖 viberfox issue agent on the VPS — 38 turns · $3.09 · session c44e7a1b-7f0a-43ee-ba68-1bbeff7b52dc. Reply with @agent to continue this session.

#187 shipped no code, so there is nothing a player can meet. What it shipped is a research verdict, and the only way to QA that is to re-run it. I did, against the live services on 2026-09-01. **No commits on this branch** — QA pass, as the ticket says. ## What #187 delivered `4f96f4c`, two files: `docs/notes/kadaster-parcels.md` (new, 135 lines) and one row moved in `docs/direction.md` from "Candidates, unverified" to "Checked and not taken". No crate touched. ## What held Everything on the Kadaster side reproduced, most of it exactly: | Claim | Note | Measured today | |---|---|---| | Licence / fees | CC0 1.0, none | same, off GetCapabilities | | `Perceel` / `KadastraleGrens` | 8,855 / 30,459 | **exact** | | `Bebouwing` / `Nummeraanduidingreeks` / `OpenbareRuimteNaam` | 7,148 / 7,263 / 387 | **exact** | | Cumulative `numberMatched` trap | 941 / 1919 / 2755 | **exact** | | `count=5000` byte-identical to `count=1000` | yes | **exact** | | Inner bbox returns more than the box containing it | 972 vs 941 | 973 vs 941 | | `PagingIsTransactionSafe` | FALSE | same | | Full walk | 30,459 returned, 29,676 unique, 34 requests, 30.4 MB | **exact** | | Cadastral boundary length | 312.4 km | 313.1 km (0.2 %, daily refresh) | All four paging traps are real and land as described. In-repo cross-references all resolve: `LineKind::{Fence,Wall,Hedge}` at `crates/geo/src/furniture.rs:957`, `build_line_meshes`, `surveyed::surveyed_lines`, `BGT_ZOOM = 14`, the 3.8 MB paving figure, the value-1 and value-6 numbering in `direction.md`, and both note links. Front-matter matches `docs/notes/README.md`. ## What I filed **[#250](https://code.garage44.eu/jeroen/cartopolis/issues/250) `gap:` the Kadaster verdict measured the BGT side with the ghost-version filter** (`qa-gap`) The one number that did not hold is the other half of the comparison. The note cites "21.9 km of surveyed physical boundary … after the `termination_date` filter" — which is the filter `surveyed-street-objects.md` documents, on the same date, as insufficient. It is the ghost-version bug fixed in `19383b1`. Over the note's own bbox: - `termination_date` empty only → 1,232 features / 1,112 ids / **21.9 km** (reproduces the note exactly, so it is the filter, not drift) - both fields empty, the repo's actual rule → 1,072 / 1,072 / **16.2 km** — the clean one-version-per-id partition Narrower still: no `heg`/`haag` exists in this box, and the bank protections (`kademuur`, `walbescherming`, `damwand`) are dropped on purpose, so the length in forms the client actually draws is **≈9.2 km**. **The verdict is unaffected and strengthened** — the gap widens from 93 % to ~95 %, or ~97 % against drawn forms. Every error runs conservative. What is worth fixing is that the note teaches the method: its measurement block is written to be re-run, and it *reconciles* the inflated figure by calling 21.9 km "consistent with the ~18 km at the worst", so the one cross-check that would have caught it was used to wave it through. With the right filter, 16.2 km sits under that ~18 km instead of 22 % over it. ## Unverified - The exact `type` → `LineKind` mapping lives in cartopy's `bgt.ts`, which this container's token cannot read — so 9.2 km is bounded from the BGT types, not pinned from the mapping. - Nothing needed a screen. There is no geometry to capture and no wire surface, so no `--shot` or loopback run applies. ## For you to decide #250 is a docs correction in two files with no code behind it. Worth noting the failure mode is not specific to this note: three other "checked and not taken" verdicts were written the same week and any that measured a BGT layer may share the filter. I did not audit those — say the word and I will. _No commits were made._ --- <sub>🤖 viberfox issue agent on the VPS — 38 turns · $3.09 · session `c44e7a1b-7f0a-43ee-ba68-1bbeff7b52dc`. Reply with **@agent** to continue this session.</sub>
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jeroen/cartopolis#249
No description provided.