PDF/UA Slice H: Parzellengeometrie-Nachweis

Stand: 4. September 2026. Issue #550; Parent #333 bleibt offen.

Implementiert

ADR-0066 wurde vor der Implementierung geschrieben. Ein typisierter interner Geometrieeingang verwendet denselben Reportkontext, Consumer und atomaren BEV-Export wie der bestehende PDF-Pfad. Ein prozesslokales, nicht serialisierbares Token bindet Geometrie und Herkunft an den SHA-256 des vollständigen Reportstands. BEV-Tokens gelten höchstens 60 Sekunden und müssen unmittelbar vor dem Rendern aufgelöst werden. Reportänderungen während des Auflösens werden abgelehnt.

Polygon und MultiPolygon werden proportional mit metrischer Näherung und Norden oben projiziert. Der Treffer ist grün, Nachbarn sind hell. Innenringe, Selbstüberschneidungen, leere/degenerierte Ringe, ungültige Koordinaten, Coverage-Überschreitungen und übergroße Eingaben sind fail-closed. Fehlende Geometrie ergibt zwei statt drei Figures. BEV-Attribution, Änderungs-/Vermessungshinweise und Non-Endorsement stehen auf Seite 6, Quellen-/Lizenzlinks auf Seite 8; Alt-Text und Figure bleiben auf Seite 1.

Herkunft der positiven Referenz

SYNTHETIC_PARCEL_COLLECTION in lib/report/pdf-ua/parcel-input.mjs ist eine repository-eigene synthetische Testgeometrie: eine unregelmäßige Trefferparzelle und ein dreieckiger Nachbar. Sie ist ausdrücklich kein BEV-Ausschnitt und keine reale Lagekarte. Ihre Koordinaten liegen zum Test der bestehenden Coverage innerhalb der Pilot-BBox. Die kanonische Serialisierung (JSON.stringify(collection, null, 2) plus Zeilenumbruch) hat SHA-256 0c71d3c3374263d0b561d53bd79585a548e483d89d610890e62f526e4833ee79. Die Zahlen sind keine Vermessung und die 1800 Quadratmeter der älteren Report-Fixture sind keine aus dieser Testgeometrie abgeleitete Fläche.

Der reale BEV-Rechtebeleg und der aktivierte Exportkanal werden wiederverwendet. Ein konkreter freigegebener echter Geometrieausschnitt mit Hash fehlt als positiver Produktbeleg weiterhin. Der PM bestätigte, die Implementierung mit synthetischen Positivfällen fortzuführen und dieses Gate ausdrücklich offen zu lassen. Es gab keine neuen Importe oder Nutzerreports.

Lokal geprüft

Der inhaltliche Rotlauf meldete zwei fehlgeschlagene Positivtests und zwölf bestandene Negativtests: Der noch fehlende Projektionspfad konnte weder Polygonvarianten noch MultiPolygon als verfügbar ausgeben. Nach der Implementierung bestanden dieselben 14 Fälle. Ein zweiter inhaltlicher Rotlauf identifizierte fünf widersprüchliche Lookup-/Degraded-/Quellen-/ Identitäts-/Punktfälle (5 rot, 20 grün); nach Härtung bestanden alle 25 Adapterfälle. Der PM fand zusätzlich den veralteten Chrome-Sollwert 19 statt 20 Überschriften. Positives H-Profil und negative Fehlrollenfälle scheiterten zunächst in zwei Fällen und bestehen nach der Korrektur. Der echte Standardviewer bleibt weiterhin semantisch unvollständig.

Die weitere Suite prüft gefälschte/serialisierte Tokens, Reportänderung, Tokenablauf, Quellen-/Release-Mismatch, Consumer-Sperre, alle negativen Exportzustände, Providerfehler und mutationsfreie Übergabe. Ein gemockter, explizit synthetischer BEV-Eingang durchläuft den echten serverseitigen Adapter und Stored-Report-Renderer bis zur finalisierten Figure mit vier semantischen Links. Dies ist kein produktiver BEV-Datenabruf.

Der Vier-Tier-Lauf bestand veraPDF 1.30.2 mit je 106 Regeln, beide Poppler- Renderer und Apple PDFKit/Quartz sowie Chrome/PDFium 148.0.7778.96 mit je 32/32 Seiten. Chrome exponiert weiterhin keine Tabellen-/Listen-/Bildrollen; sein Semantikgate bleibt offen. Der gesamte lokale Testlauf bestand mit 3.563 Tests (43 umgebungsgebundene Tests übersprungen), dazu vier PostgreSQL-Roundtrip-Tests in einem isolierten lokalen Schema. Vollständiger Typecheck, ESLint und Next-Produktionsbuild bestanden mit Node 24.19.0; der Build nutzte ausschließlich eine lokale unerreichbare Dummy-DB-URL. Auch der Abwesenheitsfall bestand veraPDF mit 106 Regeln und 25.159 Checks bei zwei Figures.

Apple Vorschau zeigt die unregelmäßige Trefferform und den dreieckigen Nachbarn, die Figure mit ihrem Alt-Text vor Caption und Steckbrief sowie die Attribution auf Seite 6. Layout und Lesereihenfolge wurden im echten Viewer geprüft; das ist keine neue umfassende VoiceOver-Produktabnahme.

TierLokaler PDF-SHA-256veraPDF-Checks
free838a9b6bfddf68ac256476fe9330c5e698c95aceb02ee10731e1cf5b8db0b39d24572
standard068064e611a1309ff2e8866f3b1858735e1ca55dfa6acbd03fe81dc8d947325025432
premium1d71cbe9db308ba567ed0cf91f73639e3500dc7d778239d623dbb95006f8119f25352
planer0e3647939d97f549f62bb3e4f01311901ba50f983a976147052c2a58c6058b0c24697

CI und gebauter Preview

Implementierung: PR #551, Commit 4d5336a63687b0e9078912bacfc1bb9128e9a42e. Der vollständige PR-CI-Lauf 33920628625 bestand mit verify, PDF-UA-Feasibility und PDF-Poppler-Regression. Das Chrome-Artefakt 9954928847 ist an den geprüften PR-Mergeref 9af740d2ca06e95b9c4596234c9334df280dcbb7 gebunden und enthält 32 Seitenbilder, vier Accessibility-Bäume und die Messzusammenfassung. Linux bestätigt denselben offenen Semantikbefund. Der geschützte Preview dpl_Amx6HnyhwvwLCXgwyTGBdRGkZdUL war READY und lieferte exakt diesen Implementierungscommit. Der anfangs durch den Ignore Build Step abgebrochene ältere Build zählte nicht als Abnahme.

Die vier tatsächlich ausgelieferten PDFs bestanden veraPDF 1.30.2 mit je 106 Regeln, beide Poppler-Renderer sowie Apple PDFKit/Quartz und Chrome/PDFium 148.0.7778.96 mit je 32/32 Seiten. Alle 32 Chrome-Raster stimmen bytegenau mit dem lokalen Nachweis überein. Der native Viewer bestätigte die unregelmäßige Trefferform, den dreieckigen Nachbarn und Figure/Alt-Text; der Quellenblock auf Seite 6 wurde zusätzlich am vollständig gerenderten Previewblatt überprüft.

TierBytesPreview-PDF-SHA-256veraPDF-Checks
free130771475a43747c7734f4eed24b3a9ab6fe0b6e8fef776093ff077cc805d7eb7e424f24572
standard1322917ed5e2cd600eb1696eb8505ae738c50e22096f408511c9a44f45e244d46eaaf725432
premium132305624c31999c47b93c8d9ddbe574d0ae4112d36331206a9a92a21111b2c876e43a25352
planer130770997e24afda38ad8d7acbec5803d907b0b87cef84e1008dd3676e504eee07f08a24697

Zwölf HTTP-Vertragschecks bestanden: sechs Dokuportalseiten mit HTTP 200, privaten No-Store-/Noindex-Headern und Slice-H-Markern; vier private, cookie-freie PDF-Antworten; leeres privates GET 404; adressloser öffentlicher Report-Guard mit 400 address_missing und exaktem X-Deploy-Commit. Die bestehenden Auth.js-CSRF-/Callback-Cookies auf Dokuportal und öffentlichem Guard sind vom Cookie-Verbot der Shadow-Routen getrennt.

Chrome exponiert weiterhin nur 18 heuristische Überschriften und zwei Links, keine Tabellen-, Listen- oder Bildrollen. Das strikte Semantikgate bleibt entsprechend rot; sein korrektes positives Slice-H-Sollprofil verlangt 20 Überschriften, sieben Tabellen, sechs Listen, drei Bilder und zwei Links.

Produktion und schreibfreier Live-Readback

PR #551 wurde als c0918058a44328e7473e8b06d949bea47d9e456f gemergt. Main-CI 33922229456 bestand vollständig auf diesem Merge-Commit. Der frühere Lauf 33921764592 wurde durch den erneuten Push-Lauf auf demselben Commit abgebrochen; er ist kein grüner Abnahmebeleg. Produktionsdeployment dpl_B2k1nMBLePHjfkDZ8KyEwWrXA4pL war READY, trug exakt denselben Commit und belieferte www.landnutzen.at.

Der schreibfreie Produktionsreadback bestand zwölf Checks: sechs Dokuportalseiten mit HTTP 200, privaten No-Store-/Noindex-Headern und den Slice-H-Markern; alle vier Tier-POSTs und ein GET auf die interne Shadow-Route mit leeren privaten 404-Antworten ohne Cookies; der öffentliche Guard mit 400 address_missing und exaktem X-Deploy-Commit. Die Vertragsseite wurde zusätzlich im produktiven Browser gelesen. Damit sind Implementierung und Dokumentation ausgeliefert und die Produktionstrennung belegt. Das ist kein Rollout des PDF/UA-Renderers, keine reale BEV-Geometrieabnahme und kein Live-Readback eines echten Nutzerreports.

Offene Produktgates

Echter autorisierter Geometriebeleg; Chrome-Tag-Semantik; weitere echte Karteninhalte; kontrollierter Produktrollout; PDF/UA-Live-Readback eines echten Nutzerreports. Der öffentliche Renderer bleibt React-PDF. #333 bleibt offen.