PDF/UA-1-Report-Shadow: Slice-F-Apple-Viewer-Nachweis
- Datum: 28. August 2026
- Issue: #333 bleibt offen
- Entscheidung: ADR-0064
- Branch:
codex/pdf-ua-viewer-slice-f - Basis: Slice-E-Evidenz-Merge
969fd4130c359c8ec4c3dc0cbffcfdc56608abda - Implementierungscommit:
e1e3e587973947d37fbbaada734d27cefb5a936b - Pull Request: #543
- Merge-Commit:
e998d3e42886adef491eb489f5c8a874aca652a3 - Produktionsdeployment:
dpl_D4fhMzmmwCDvhGrTcAN3Mm3TMcEL
Aussagegrenze
Slice F ergänzt den bestehenden Vier-Tier-veraPDF-/Poppler-Vertrag um einen automatisierten Lauf durch Apple PDFKit und Quartz. Die Prüfung lädt die vier im selben lokalen QA-Lauf erzeugten synthetischen PDF/UA-Dateien, liest deren Seiten, Text und Linkannotationen und rendert alle Seiten in Graustufen.
Der automatisierte Slice-F-Lauf ist keine manuelle Apple-Vorschau-, Chrome/PDFium- oder VoiceOver-Abnahme. Die nachgelagerte manuelle Prüfung vom 4. September 2026 ist unten getrennt protokolliert. Der Shadow verwendet keine echten Karten oder gespeicherten Nutzerreports, aktiviert keinen öffentlichen PDF/UA-Renderer und behauptet keinen PDF/UA-Produktrollout. Der Release belegt ausschließlich den automatisierten Apple-Stack auf dem synthetischen, previewgeschützten Shadow und dessen unverändert geschlossene Produktionsgrenze.
Implementierter Vertrag
- macOS-only Zusatzgate innerhalb von
npm run qa:pdf:ua-shadow; - vier Tiers in fester Reihenfolge:
free,standard,premium,planer; - je acht Seiten, zwei Linkannotationen und acht seitenspezifische Textmarker;
- pro Seite mindestens 100 Zeichen aus der von PDFKit gelesenen Textschicht;
- 32 Quartz-Raster mit 1.190 × 1.684 Pixeln, 8-Bit-Graustufe und weißem Seitenhintergrund;
- dieselben fail-closed Rastergrenzen wie im Poppler-Vertrag für Helligkeit, helle Ränder, Schwarzflächen und sichtbaren Body-Ink;
- expliziter Nicht-macOS-Hinweis statt eines fälschlich grünen Apple-Checks;
- automatische Entfernung aller kurzlebigen PDFs und Rasterdateien.
Lokale Verifikation
Die integrierte Prüfung lief auf:
- macOS 26.6.2, Build 25G83;
- Apple Vorschau 11.0 als installierter Systemviewer; die GUI wurde nicht manuell bedient;
- Apple Swift 6.3.3 auf arm64-apple-macosx26.0;
- Apple PDFKit und Quartz aus demselben Systemstand;
- veraPDF 1.30.2 sowie beiden vorhandenen Poppler-Renderern.
npm run qa:pdf:ua-shadow bestand vollständig:
| Tier | Seiten | Linkannotationen | PDFKit-Textzeichen je Seite | PDF-SHA-256 |
|---|---|---|---|---|
free | 8 | 2 | 749, 1385, 1094, 1380, 597, 487, 1042, 1350 | 655ef939e5b66b7fadd7f976df81346ddfc8b116855491d429f0bc919d2c30ae |
standard | 8 | 2 | 757, 1389, 1098, 1384, 601, 853, 1046, 1354 | bf50ecc776d41d89852af7638d9adf34c96894fdfffb24b569667a1df6ba18df |
premium | 8 | 2 | 755, 1388, 1097, 1383, 600, 851, 1045, 1353 | 92f41c419732c98e44bf1ce82eec2879eb82f556209d60b9d4a6d1d90ea71079 |
planer | 8 | 2 | 753, 1387, 1096, 1382, 599, 493, 1044, 1352 | ded5d8e948f8166653589310470fcb29cad8abaef3f094a7f92203e552f83d07 |
PDFKit lud damit 4/4 Dateien und 32/32 Seiten. Quartz erzeugte 32/32 Graustufenraster. Die mittlere Seitenhelligkeit lag zwischen 245,13 und 251,63; der sichtbare Body-Ink zwischen 2,800 % und 7,428 %. Alle vorhandenen Grenzen für helle Seitenränder und Schwarzflächen bestanden ebenfalls.
Die drei gezielten Script-Testdateien bestanden mit 28/28 Tests. Sie binden Plattformgate, Swift-Quelle, Parser, fehlende Tiers, Seiten, Linkannotationen und Textschicht sowie den prozesslosen Nicht-macOS-Pfad.
Release-Verifikation
Der Implementierungs-CI-Lauf
33166935667
lief exakt auf e1e3e587973947d37fbbaada734d27cefb5a936b vollständig grün:
verify (Job 98834480435), PDF-UA-Feasibility (Job 98834480234) und
PDF-Poppler-Regression (Job 98834480477) bestanden. Der geschützte Preview
dpl_5NCcXGThbbpocRGCsfhS2VsZMg5H lieferte denselben Commit.
Alle sechs aktualisierten Dokuportalseiten antworteten im Preview mit HTTP
200, private, no-store, noindex und den erwarteten Slice-F-Markern. Die
vier Tier-POSTs lieferten application/pdf, private, no-store,
slice-e-1, keine Auth.js-Cookies und je acht Seiten. veraPDF 1.30.2 bestand
je Datei 106/106 Regeln. Die gemessenen Preview-Dateien waren:
| Tier | Bytes | Checks | PDF-SHA-256 | Renderer / Finalisierung / Gesamt | Vercel-Request-ID |
|---|---|---|---|---|---|
free | 130.162 | 24.130 | 977cedff43ccb0138f920f2e3ccc21c0289a17ba64732b17750751ea80b845e4 | 1.120,5 / 220,5 / 1.341,2 ms | fra1::iad1::2sm2x-1787916464857-0a6bda2f0850 |
standard | 131.727 | 24.990 | 083ea21590fd84957b6a77651d0c5af342f7b68206261ef8280df180af7f540b | 848,3 / 177,4 / 1.025,8 ms | fra1::iad1::gzv9l-1787916469460-6b8067d782be |
premium | 131.742 | 24.910 | 0a01e513ef7559059b14e14e61ac6c7daaa09f6112045297e22b26f9e544916b | 705,4 / 93,9 / 799,4 ms | fra1::iad1::7b4nr-1787916473282-8328fa0900c1 |
planer | 130.161 | 24.255 | 70b018ebdb006bb6e0205d9fe41263f3ac128179c9b135383babeddfa976127a | 720,1 / 117,2 / 837,3 ms | fra1::iad1::p27xs-1787916476735-0a8b72928c68 |
Apple PDFKit und Quartz prüften anschließend genau diese vier deployten Preview-Dateien: 4/4 PDFs, 32/32 Seiten, je zwei Linkannotationen und dieselben seitenspezifischen Textzeichen wie im lokalen Lauf. Die mittlere Helligkeit lag erneut zwischen 245,13 und 251,63, der sichtbare Body-Ink zwischen 2,800 % und 7,428 %; helle Ränder und Schwarzflächen bestanden ebenfalls. Damit ist der Apple-Viewercheck nicht nur gegen lokal erzeugte, sondern auch gegen tatsächlich aus Vercel ausgelieferte Shadow-Dateien belegt.
PR #543 wurde als e998d3e42886adef491eb489f5c8a874aca652a3
gemergt. Das produktive Deployment dpl_D4fhMzmmwCDvhGrTcAN3Mm3TMcEL ist
READY, trägt exakt diesen Commit und beliefert www.landnutzen.at. Dort
antworteten Entscheidung, Nachweis, Report-Output, Report-Contract,
Feature-Seite und Status mit HTTP 200, private, no-store, noindex und den
erwarteten Slice-F-Markern. Alle vier Tier-POSTs sowie ein GET der internen
Shadow-Route blieben leer 404, private, no-store und ohne Cookies. Der
schreibfreie öffentliche Guard POST /api/v1/report mit {} blieb bei
400 address_missing und trug denselben X-Deploy-Commit.
Der Main-CI-Lauf
33167769423
bestand vollständig auf exakt diesem Merge-Commit: verify (Job 98837184168,
11:53 Minuten), PDF-UA-Feasibility (Job 98837183958, 1:47 Minuten) und
PDF-Poppler-Regression (Job 98837184138, 0:51 Minuten) waren grün.
Manuelle Apple-Vorschau- und VoiceOver-Abnahme
Am 4. September 2026 wurde exakt die bereits aus dem geschützten Preview geladene Premium-Datei manuell mit Apple Vorschau 11.0 auf macOS 26.6.2 (Build 25G83) geprüft:
- Datei:
landnutzen-pdf-ua-slice-f-premium.pdf; - Größe: 131.742 Byte;
- SHA-256:
0a01e513ef7559059b14e14e61ac6c7daaa09f6112045297e22b26f9e544916b; - alle acht A4-Seiten im Einzelseitenmodus vollständig sichtbar, ohne leere, abgeschnittene oder überlagerte Inhalte;
- Seite 1 bis 8 mit aktivem VoiceOver per Tastatur erreichbar;
- nativer Accessibility-Baum mit 19 Überschriften, sieben Tabellen samt Zellen, sechs Listen, drei informativen Abbildungen mit inhaltlichen Alternativtexten und zwei benannten Links;
- die Links wurden als „LandNutzen-Methodik zur Standortprüfung öffnen“ und „LandNutzen-Datenschutzerklärung öffnen“ exponiert; sie wurden nicht aktiviert, damit die Prüfung keine externe Navigation auslöst;
- VoiceOver wurde unmittelbar vor der Prüfung aktiviert und danach wieder auf
den vorherigen Zustand
auszurückgestellt.
Damit sind die manuelle Apple-Vorschau-Prüfung und die VoiceOver-Stichprobe für den synthetischen Premium-Shadow abgeschlossen. Der Nachweis ist weiterhin keine Chrome/PDFium-Abnahme, kein Test echter Karteninhalte, kein kontrollierter Produktrollout und kein PDF/UA-Live-Readback eines echten Nutzerreports.
Die Dokumentation dieser manuellen Abnahme wurde mit PR #545 als
2e3f10b0ddab12df0977894f8b50ea9dd8d67b02 nach main gemergt. Der
Main-CI-Lauf
33903176899
bestand auf diesem Merge-Commit vollständig: verify (Job 101121813336),
PDF-UA-Feasibility (Job 101121813243) und PDF-Poppler-Regression (Job
101121812926) waren grün. Das produktive Deployment
dpl_BjuqsrnJrhT5AG2C1U8WQJ9tCq3Z war READY, trug exakt denselben Commit
und belieferte www.landnutzen.at.
Entscheidung, Nachweis, Report-Output, Report-Contract, Feature-Seite und
Status antworteten dort mit HTTP 200, private, no-store, noindex und den
erwarteten Markern „4. September 2026“, „VoiceOver“ und „Chrome/PDFium“.
Damit ist auch der veröffentlichte Dokumentationsstand der manuellen Abnahme
commitgebunden rückgelesen.
Offene Produktabnahme
| Bereich | Stand |
|---|---|
| Apple PDFKit / Quartz, automatisiert, vier Tiers | abgeschlossen: lokal und Preview 32/32 grün |
| veraPDF und beide Poppler-Renderer | lokal, Preview und CI grün |
| manuelle Apple-Vorschau-Abnahme, synthetischer Premium-Shadow | abgeschlossen: 8/8 Seiten am 4. September 2026 |
| manuelle VoiceOver-Stichprobe, synthetischer Premium-Shadow | abgeschlossen: Semantik und 8/8 Seiten |
| Chrome/PDFium-Abnahme | offen |
| echte Karteninhalte und kontrollierter Produktrollout | offen |
| PDF/UA-Live-Readback eines echten Nutzerreports | offen |
Issue #333 bleibt bis zum Abschluss der Produktgates offen.