Changelog

Versionsverlauf der aiat-barrierefrei-engine — automatisch aus der Entwicklungs-Historie erzeugt.

Aktuelle Version v0.11.0 · Stand f0d171d (2026-07-08) · 658 Änderungen ausgewertet.

v0.11.0 in Entwicklung

Überblick

Dieses Release macht die Prüf-Urteile ehrlich und nachvollziehbar: Das Gesamturteil ist jetzt hart an alle drei Prüfstränge gebunden (Konformanz, WCAG-Qualität, Inhaltstreue), die Ergebnisseite zeigt ein primäres Verdikt statt elf konkurrierender Anzeigen, und ein neuer maschinenlesbarer AAVS-Prüfbericht (137 Matterhorn-Kriterien) ist per API abrufbar.

Technische Änderungen

Neue Funktionen (29)
  • CI-gated judge graduation + calibration identity — #521 eval,pipeline,sidecar 3efac6a
  • repair corrupt ToUnicode (ligature→U+FFFD) via cross-font recovery + ligature fallbacks — #534 tag 8f07084
  • tag link and widget annotations on the overlay route — #536 tag 6ea31d4
  • PAC proxy behind hard agreement gate + dev calibration harness (#544) report,eval 20f72ae
  • AAVS report SSOT serializer + audit view + download repositioning (#542, #543, #535, #532) report,ui 6651bea
  • honest evidence localization + IA collapse — 1 verdict, 4 layers (#540, #541) ui,api 8e658fc
  • detect corrupt ToUnicode text layer (ligature → U+FFFD) that veraPDF passes — #530 quality f6996c8
  • emit abstention_report vector into persisted record (#520) run-record 6595912
  • honest customer-facing verdict/score text (#527) quality,ui e1bcd5a
  • honest disclaimer basis + not_covered_by_profile badge rendering (#527, #519) quality,ui 5500338
  • risk-coverage/AURC report + migrate #404 trend to register-versioned vector (#520) eval 26d0f67
  • additive AbstentionBlock + surface NOT_COVERED_BY_PROFILE badge on /evaluate (#519, #520) sidecar ee4e875
  • 5 deterministic SR checks + gate doc-title autofix (#527) quality 8a4b970
  • versioned abstention criteria register + 3-way per-criterion status (#520) pipeline 1f1b236
  • add NOT_COVERED_BY_PROFILE passive badge state (#519) matterhorn,sidecar 8bd0ace
  • bind aavs.verdict to the dual gate; out_of_scope:forms; aavs-block caveat (#516, #517) aavs f8f9dc1 Breaking
  • AcroForm interactive parity — lost form fields are CONTENT_LOSS (#517) quality 9a1d23a
  • #427 positive overflow-routing telemetry + operator docs api,ops 92593c1
  • #506 flip REFLOW_READING_ORDER_RECONCILE default ON merge,config 1fb4433
  • #512 calibrate _BAND_GAP_FACTOR to gap-distribution outlier merge b580e55
  • #508 categorical borderless-table admission + #506 stacked-multicol fixture parse,eval 723f181
  • #500 one-click HITL sign-off + #501 verdict consolidation + #502 result-page IA ui 75f8f16
  • #498 MACHINE_VERIFIED post-hoc + #499 AAVS confidence-gated auto-release quality f8e0ce4
  • #507 segregate bottom-margin furniture + footnotes before column flow merge 3629c5d
  • #501 caption the two 0-100 scores as diagnostic sub-metrics ui 852530a
  • #497 honest human-checklist framing — split engine-addressed from genuinely-open ui 2d3c8b4
  • #427 route large born-digital docs to arq overflow + dedup double-triage pipeline 9a71e82
  • #462 corpus fill — forms-de 11→68, scanned-de 38→55, broad-web capped+documented eval 08165e6
  • #488 configurable Art-13 gate-cookie lifetime (USERNAME_GATE_COOKIE_MAX_AGE_S) api 8e670b3
Fehlerbehebungen (15)
  • bound PacCalibration agreement fields to [0,1] — fail-closed on unit bugs (#544, D5-P2-1) report a24f4dd
  • guard page-number monotonicity on unset page-map + boundary tests (#527) quality b5a29ce
  • lang-span-coverage — no false positives on monolingual non-German docs (#531) quality 3160715
  • add German SC label for MULTIPLE_WAYS (2.4.5) (#527) quality 6c8de3f
  • strip source marked-content before overlay re-wrap; font route-switch (#524) tag,pipeline b62aa08
  • fail-closed provenance fold — advisory never reads calibrated on the wire (#518) aavs 4820335
  • register GitLab deployment via curl (glab absent on box) — #285 deploy b371e89
  • #496 split hosted-allowlist manifest (committed vs local) + wrap E501 — unmask test+lint jobs ci 4b93efc
  • #496 unblock main pipeline — allowlist Python test fixtures + raise gitleaks timeout ci 797e928
  • guard committed render-compare κ artifact from --limit partial-run overwrite (AAG-005) eval 6e7de2c
  • #489 disambiguate BMF harvest doc_id year-collisions (degrade-never-raise) eval 5a7e1c9
  • bound VLM call by total wall-clock deadline, not just inter-chunk idle parse 73ddc62
  • auditor report describes the DELIVERED output, not the input (#469-class, L2-1 + OBS-1) api 54eb363
  • per-page ToUnicode granularity gate — one bad page no longer collapses whole-doc structure tag ba0627b
  • #484 reconcile data_table_vs_layout κ — dedicated live re-measure at max_pages=3 eval f84cbad
Refactoring (intern) (9)
  • lane-neutral font-gate name + register invariance guard + roundtrip test (#520, #524) overlay,pipeline 0dbd515
  • certifies->assesses backend wording sweep (#527) quality,pipeline,api 57c7aee
  • #513 leaf extraction + template hardening + test pins quality,pipeline,merge,api 8992180
  • #492 extract shared VLM-HTTP seam + deadline-bounded retry machinery ai 1e890b0
  • #491 decompose inject.py hotspots — _build_struct_tree 32→6, _page_structures_from_tree 28→15 tag 22cac7e
  • #493 lift legal-heading vocabulary to a pipeline SSOT + close 17-token merge gap headings bea9fef
  • #438 route remaining 5 call sites through chat_completions_url SSOT (close #95 footgun) ai f0d68d4
  • #490 bundle page-context scalars into _PageCtx to narrow fast helper seams parse 71c1ba4
  • #485 decompose _parse_page F(72)→C(12) + _wrap_page_content D(30)→A(2) parse,tag 0f46123
Dokumentation (10)
  • normative evidence bundle schema + BaFG retention counterpart — #523 compliance 055a12e
  • honest seam state — download consumes the serializer, page migration pending (#546) report 23ea1d9
  • result-page refactor + AAVS report PRD — Epic #538 (P0-P4) prd bb1f7f9
  • honest wording (certifies->assesses) + Matterhorn 137 reconciliation (#527, #519) aavs 0679600
  • AAVS deep-audit 2026-07-08 — consolidated report + preserved retest baseline research 4453325
  • #511 record prod flip AAVS_PER_DIM_JUDGE_ENABLED + HITL_REVIEW_ENABLED (2026-07-06) adr-018 c72a1d3
  • surface + drift-canary the VLM retry/timeout tuning family (#492 follow-up) config 0152a73
  • #503 reframe overclaimed autonomy → autonome Remediation + dokumentierte Restprüfung copy e1a514b
  • reconcile AC7/arq/SR-NVDA drift + add AAVS cross-link architecture 8b8aef5
  • #486 reconcile 58 stale markers against closed issues + code evidence backlog 284350b
Tests (10)
  • pin #524 font-gate open in spine tree-threading tests (#548) overlay f0d171d
  • close D5 QA gaps — remediation-lane serializer, prod Jinja-global guard, gate boundaries (#538) report,ui e8d0e5d
  • cover load_criterion_samples parser + nested /OC strip pairing (#520, #524) eval,overlay 3ea6bbb
  • measure product-judge κ transfer on served qwen3.6 — link_purpose 0.6007, alt_text 0.0032 eval eecd5fb
  • refresh eng-6.1 veraPDF before/after evidence — no conformance regression e2e 641f074
  • close W4-review coverage gaps + fix OCR-retry validator docstring drift config,vlm-http 5cf4c83
  • refresh eng-6.1 veraPDF before/after evidence — no conformance regression (session #491/#492/#493) e2e e827acf
  • #495 pin triage-memo / tounicode / delivered-rules / client-path invariants (advisory) hardening e0c848d
  • refresh eng-6.1 veraPDF before/after evidence (W4 conformance proof) e2e a0b273e
  • cover _detect_tables/get_image_info degrade paths + link tie-break (L3) parse 8081fc9

v0.10.0 2026-07-05

Überblick

Dieses Release macht die automatisierte Barrierefreiheits-Prüfung (AAVS) für externe Tester nutzbar: eine neue In-App-Hilfeseite erklärt die Nutzung und die Bedeutung der Prüf-Urteile, ergänzt um dokumentierte API-Zugänge für den Tester-Audit-Pfad.

Technische Änderungen

Neue Funktionen (88)
  • #487 SIDECAR_REQUIRE_AUTH fail-fast + gated-public exposure prep sidecar 16083a5
  • in-app /help page (Einzel/Bulk/API) + AAVS verdict explainer + footer links ui 6a28a12
  • #480 tag-tree reconciliation signal → render-compare heading_mistag κ off the floor eval 6c5be1c
  • #427 per-document VERY_SLOW->arq overflow routing + ADR-031 pipeline 9c53e15
  • #451 enrich render-compare gold with 25 RIS-scan negatives (roster 3->28) eval c4e4902
  • #477 Qwen3-VL-8B alt-text baseline (n=11, CLIP+judge) closes EU local field eval d994933
  • #473 loud air-gap-deviation WARN when hosted VLM provider selected pipeline 6dfebc3
  • #447 veraPDF/PAC/AAVS agreement-matrix for Gemini bench eval e5321e4
  • #448 AAVS 3-state scoring of Gemini-bench pipeline outputs eval c483eb9
  • #443 wire Gemini google-openai-compat into alt-text leg eval f1911b9
  • #441 capture prompt/total tokens in OCR pagelevel harness eval e084949
  • #471 agreement-matrix records mode for arbitrary-N corpus eval f623b06
  • #471 stratified CATALOG subset selector + driver --subset mode eval 1e6d1e9
  • veraPDF<->PAC<->AAVS agreement-matrix driver (retro #3) eval 1bb99be
  • #468 corpus-evidence run driver — abstain records + tagged outputs + AAVS 3-state eval 3ee890c
  • #468 abstain-rate distribution harness + CT-exclusion prototype quality b72058d
  • #464 measurement-preflight full 7-trap suite eval 66ea011
  • #457 evidence-bundle HTTP endpoint + HTML render + soft-leg SSOT evidence c7bcc5c
  • #457 exportable AAVS evidence-bundle core (JSON, air-gap-first) evidence 858c134
  • #453 abstention-rate as first-class trended metric + advisory doc-gate quality 4d97dab
  • #467 wire WCAG 1.4.11 non-text-contrast CT dimension into scorecard.dimensions scoring 1a63f60
  • #458 inseparable honesty caveat on every verdict-carrying response verdict 63f7611
  • #456b durable per-criterion provenance map on JobResult pipeline 03312ed
  • #441 OCR bakeoff harness — Gemini labels + configurable path/key eval 1e7e603
  • #456a persist per-doc conformance evidence on JobResult pipeline 9e8f068
  • #440 hosted-endpoint PII guard + public-only allowlist manifest eval dd5a3ac
  • #438 provider-agnostic OpenAI-compat VLM seam + configurable chat-completions path parse c8c1207
  • h2h hard-set measurement driver (resumable, per-doc isolation) eval b03fada
  • #428 wrap orphan content as /Artifact (Matterhorn 01-005) tag 9944433
  • #420 note-id + LI-renest augment passes, #425 per-table span ordinal, #426 rolemap resolver tag a8704f7
  • grid-normalize augment-route tables incl. nested and rowspan (#419) tag 2dfb3a6
  • rectangularize written table grids on the reflow chain (#419) tag 5ca778a
  • occupancy-grid table engine — build/diagnose/plan_repairs with convergence guarantee (#419) merge c8bd9ec
  • struct_f1 h2h honesty upgrades — substantive aggregate, dup-reference flag, gold_n_nodes (#397) eval 5bf4554
  • #417 expose /Artifact image membership in TagTreeFacts — reconcile figure-alt FP on artifacted-only docs quality 291bfdc
  • struct_f1 head-to-head spot-check harness (#397) eval 5c3a306
  • STRUCTTREE-walk gold builder for bake-off struct_f1 (#397) eval 78e3056
  • oversized-prior heading-promotion guard, DEFAULT-OFF (#415) parse fb21e37
  • vendor golden-validated PP-DocLayout-L ONNX air-gap backend (#413) layout 8dda63d
  • usage-weight ToUnicode line-gate by painted content-stream codes (#412) overlay a733194
  • flip overlay_rich_tree_enabled default-ON after 21-doc A/B GO (#406) config 2e16284
  • #410 ToUnicode-presence gate on rich-tree granularity overlay 1ebcece
  • DSGVO Art-5(1)(e) retention purge for throttle buckets (#386) ratelimit db55e71
  • pdfa-eng-wds HF-streaming harvester scaffold (#407) corpus 3ddb434
  • rich-tree /Reference shim + multi-page nested /L; fix flat-path cross-page /L fusion (#405) overlay ba1b66d
  • per-item page channel for multi-page list routing (#405) merge e618023
  • gated rich-tree structure emission on prod-default overlay path (#402) overlay 565b2d6
  • trend uncapped AAVS quality_score instead of flat-49 composite (#404) eval-learn 2cfaffe
  • #401 produce-side def-lists (gap 1) + recurring-image artifact e2e (gap 5) merge 7662262
  • #400 PDF/UA tag-write gaps — table /TH·ID+/TD·Headers e2e + render-side for def-list/footnote/nested/recurring-image tag 4fa2388
  • PAC-2026 large-doc poll fix + 3-oracle evidence on public outputs (#209) eval 3958a52
  • endpoint-active regen mode + --regen-aiat guard (#391, #397) eval f63bb13
  • public doc_id-layout cov_precision_driver + EU-active hardening — citable struct_cov_f1 (#391, #397) eval 0c82383
  • #361 Art-17 ip_hash erasure + gate/audit doc-nits pilot 0e1f7f8
  • reconcile PAT contribution bundle schema + taxonomy bridge (#281) eval f3abba6
  • per-doc flavour routing in sweeps + pinned-config regen harness (#390, #391) eval f1fe7bf
  • per-doc UA-1/UA-2 flavour auto-detect on /evaluate (#390) sidecar d46e6a4
  • surface discriminative AAVS quality_score on /evaluate (#396) sidecar 72d41f3
  • #318 Internet Archive recipes harvester (PD-by-age acceptance) eval 7bbd25a
  • #318 fix NASA NTRS pagination — POST page.from returns distinct ids eval 3197ab5
  • gate actor persistence on username-gate + ship #306 prod-flip LIA and runbook (#306) throttle 2f3ef8b
  • #209 real Windows-PAC GOLD evidence + delta analysis over engine outputs eval f857b1f
  • #318 IA-manuals + NASA-NTRS harvesters + real-harvest bug fixes — corpus breadth eval bffe0e8
  • #375 POST /evaluate/coverage — coverage-F1 verdict reusing the hardened struct_cov_f1 core sidecar 420a2b5
  • #376 PAC-Oracle as 3rd bakeoff oracle + agreement matrix (fail-soft) eval 4df9e43
  • #318 reflow-gold generator + arXiv corpus breadth (SSRF/traversal-guarded) eval 895a45a
  • #371 content-stream prose-coalescing lever (default-OFF) — measured exhaustion verdict merge 7a38fa4
  • automated real-PAC verdict oracle via headless Windows VM (#209) eval 0338cf6
  • #318 arXiv OAI-PMH harvester for multi-column reflow corpus eval ca362fd
  • #318 OpenStax + GovInfo Federal Register harvesters (educational-en, legal-en-regulatory) eval 50e29f6
  • #366/#339 reflow reading-order reconcile spike — measure-first NULL, default-OFF merge 2161cac
  • #367 line-granularity for merge-tree write-path — /LI 30→106 overlay a89d136
  • #354 persist SrChecklist on JobResult for re-derivable Stufe-2 verdict verdict 6298501
  • #366 struct_cov_f1 precision driver + measure-first reversal (stale-bytes artifact) eval 026bfb4
  • #364 per-item /LI emission from item_bboxes — default-OFF overlay 3240e11
  • #364 Direction-1 granular-split proof-spike — default-OFF (refuted) parse 2d462ff
  • #364 per-item list bbox channel (additive, exclude=True) merge 73610cd
  • #364 granularity-tolerant struct_cov_f1 metric + honest re-baseline eval f584ada
  • #364 AT-safe ALL-CAPS heading precision guard — struct_f1 +0.0426 parse e0dc18b
  • #362 merge-tree write-path — bbox re-threading + A/B measure → NULL verdict, DEFAULT-OFF overlay af74b63
  • #339 overlay_asis struct_f1 measurement driver + #360 Fixture A — frozen ratchet 155->161 eval c24eb40
  • #316 PP-DocLayout ONNX-vendoring wiring — sha256 fail-closed, default-off layout 143b341
  • #360 column-aware space-above prior + drawn-rule raise-direction pin parse 0f778d4
  • #360 frame-aware partial-ruled veto + #345 sparse-grid N-col tables & above-caption form labels parse 4d091fd
  • #297/#306 live-hardening + #353 SR-elevation wiring pilot ce4468f
  • #353 append-only no-PII SR-elevation audit trail quality 370b920
  • #358 recover body-size numbered/keyword headings in _classify_block parse fd004a7
  • #357 veto partial-ruled find_tables fragments before borderless segmenter parse ba63f59
Fehlerbehebungen (53)
  • #482 CAS-guard the reconcile terminal FAIL (close TOCTOU) + config drift comment pipeline 5ad5d1b
  • #482 reconcile leaked-QUEUED arq rows + global-arq rollback — close silent data-loss pipeline 9ef574d
  • #479 review-fixes — QueueTarget enum + CHECK, CAS-loser spool-guard, ADR-031 resolved pipeline e292553
  • #479 hybrid crash-recovery — atomic set_running CAS + queue_target recovery partition pipeline 2800442
  • #451 bridge dangling-symlink guard + CWE-22 containment regression tests eval 4c16388
  • #427 overflow-handoff degrade + threshold floor + honest ADR (review-fixes) pipeline b770b62
  • #451 fix symlink-containment dropping scan negatives + re-measure kappa → provably-advisory eval ef36f4e
  • #475 guest-agent health-probe + reconnect ladder → 12/12 PAC coverage pac bd87769
  • #476 flag degraded veraPDF-sidecar verdict (compliant=false/0-failed_checks) as measurement-invalid eval 0e496a1
  • #472 host-side pre-push PAC.exe kill clears pre-existing orphan lock pac 441e5c8
  • #472 guest-side PAC.exe cleanup between runs via try/finally KillPac pac 968fc3d
  • #436 read-your-writes grace on GET /jobs/{id} api c516a42
  • #469 conformance-of-record must describe the delivered artifact pipeline 5210623
  • route only JUDGED_DIMENSIONS through the calibrated judge (#467 follow-up) sidecar 1434de8
  • #466 bound VeraPdfReportArtifact.decode() gzip decompression security e19c4fd
  • wire #440 hosted-endpoint guard into bakeoff harnesses + close path traversal security db73eab
  • veraPDF evidence PII filter denylist->fail-closed allowlist (#456a hardening) security 0d34b16
  • #439 provider-aware slow-backend gate + factory wiring + harness hardening pipeline 8c9e139
  • #459 honest contrast abstention — 0-runs CT + 1.4.11 abstain-rate fold quality 7a05865
  • #455 bounded degrade reasons + judge.degraded/stage_degraded split + stream budget judge 594f333
  • #435 job heartbeat prevents reclaim false-positive jobstore bc05ed2
  • #434 worker-healthcheck timeout + doc-complexity triage ops 4dbcead
  • #430 degraded_page_numbers list[int] SSOT pipeline dd62fe4
  • #429 WAL-init race hardening across sister stores store 1be9f51
  • #424 WAL-init race hardening + #422 periodic reclaim loop jobstore 737d86a
  • harden table-grid normalizer — span cap, empty-TR pad, duplicate /A owners (#419) tag 1faaf16
  • #418 ia_recipes cursor persistence + negative cache — break the page-1 saturation at 153 corpus a8d67a5
  • #416 bounded re-enqueue of crash-interrupted jobs instead of hard-FAIL jobs ae02e37
  • dual-gate correctness — notdef/incomplete-ToUnicode block via WCAG 1.1.1; doc-title audit reconcile quality 994c10e
  • consume layout priors air-gap for the ppdoc backend (#413 #140) pipeline c0d9ce4
  • repair openstax CMS resolution + govinfo issue-XML enumeration (#408) corpus ad73eea
  • de-rotate layout priors into unrotated parse space (#295) parse 1bb40b9
  • repair footnote /NonStruct→/Link wrapper for veraPDF UA-1 7.18.5 (#403) tag 61fc05a
  • reconstruct equal-size bullet/dash nested lists (#401 gap 2) parse 2ac432a
  • structfix _tag_footnote_link unique /Note /ID (#401 gap-3 enabler) tag 84b6b70
  • per-page degrade must not mask a silently-dropped page in the accessible verdict (#398) pipeline 1700761
  • harden resource-bounds & per-page error-isolation on the default path (#383) pipeline 5f20460
  • capability-gate inline_language + fontTools guard for the test job (#389) ci b067e5f
  • bulletproof commitlint non-fatal + CI-robust async-poll for speak tests (#389) ci 50e861e
  • correct commitlint script — colon/GH-syntax broke GitLab CI schema (#389) ci 924ab1e
  • green test/lint stages — git in test job, openapi-import env, skipif optional-dep guards (#389) ci 5105685
  • notdef false-positive from TJ-kerning bytes(int) phantom glyphs (#395) quality 0c9c0ce
  • green the test stage — eval/tagging extras + git in commitlint (#389) ci 6c001c8
  • match trivy 0.66 misconfig id form (AVD-DS-0002) in the scoped DS-0002 suppression ci 35ee464
  • #378 derive dc:title from document structure, not the filename slug tag 29bcd5f
  • bump pypdf/starlette/pydantic-settings/msgpack to close pip-audit CVE gate (#381) deps 22b4ca0
  • open /Artifact BMC at graphics-object start so overlay output passes PAC PDF-Syntax (#377) overlay e681120
  • #367 apply Tm scale in _scan_text_groups baseline accumulation — /LI bind 106→635 overlay 829b965
  • #365 AT-safe ALL-CAPS guard over-demotes English legal headings — extend exemption parse b415ea3
  • #368 make committed OpenAPI snapshot env-independent openapi e069676
  • #364 harden struct_cov_f1 against order/dup/noise gaming eval f6c7e94
  • #364 recover nested list sub-items in merge-tree /LI path overlay f421473
  • add demo_url + health_path so the dashboard probes the live demo portfolio bc6c83a
Performance-Verbesserungen (1)
  • #433 list re-nest O(M²)→O(M); #431 RoleMap resolver SSOT tag fd7ad5e
Refactoring (intern) (37)
  • kill tag->merge up-import + de-dup footnote-label normalizer merge d783b50
  • #432 consolidate render_html/write_tagged_pdf collectors into RenderCollectors tag ae1f570
  • extract structfix_tables; structfix.py is now a re-export shim (#382) tag 18247f1
  • extract structfix_figures Layout /BBox pass (#382) tag 38ba542
  • extract structfix_footnotes promotion pass (#382) tag e08fad1
  • extract structfix_toc promotion pass (#382) tag ede501e
  • extract structfix_spans /Lang + /E pass (#382) tag b99018e
  • extract structfix_lists numbering + nested-list passes (#382) tag be2755d
  • extract structfix_artifacts orphan-marked-content pass (#382) tag fb7e064
  • finish html.py decomposition into flat siblings (#382) tag 8f65368
  • extract structfix_common tree-walk primitives (#382) tag a5966a3
  • extract html_tables.py from html.py (#382) tag 4986609
  • extract html_lists.py from html.py (#382) tag 489ec28
  • extract html_common.py from html.py (#382) tag 6d4f7a6
  • extract stages/spine.py — orchestrator now thin coordinator (#382) pipeline 286e3a7
  • extract stages/parse.py from orchestrator (#382) pipeline 703163d
  • extract stages/scorecard.py from orchestrator (#382) pipeline c316f48
  • extract stages/result.py from orchestrator (#382) pipeline 8a2d2a3
  • extract span reconstruction; reduce entry to shim (#382) parse 2743199
  • extract stages/validate.py from orchestrator (#382) pipeline c66c250
  • extract create_job + create_batch write-routes to src/api/jobs_create.py (#382) api 14ea039
  • extract gutter segmenter into tables_borderless_gutter (#382) parse 4d5668b
  • extract stages/fidelity.py from orchestrator (#382) pipeline cd5b665
  • extract N-column detector into tables_borderless_ncol (#382) parse 289b926
  • extract stages/advisory.py from orchestrator (#382) pipeline 7c51639
  • extract 2-column detector into tables_borderless_twocol (#382) parse 5426db7
  • extract stages/abstention.py from orchestrator (#382) pipeline e50fdc2
  • extract DATA-vs-TOC guards into tables_borderless_guards (#382) parse 8a378ef
  • extract borderless segment primitives into tables_borderless_segments (#382) parse 0bdc456
  • extract stages/_helpers.py from orchestrator (#382) pipeline 9d089b2
  • extract page-content-loss gate into verdict.py + direct falsifiable tests (#398) pipeline 9e55ba5
  • decompose main.py routes (jobs_read/review/sr_checklist) + sync-path job-timeout (#382, #398) api 02d702f
  • decompose parse/fast.py god-file + extract safe main.py routers + fidelity param-object (#382) arch c602435
  • #382 split orchestrator._run_pipeline into 10 stage helpers pipeline aa3f0af
  • #382 extract meta/health/admin/dashboard routers from main.py god-module api 864a6c5
  • extract struct_cov_f1 core into src/scoring/, drop eval+scipy from sidecar image (#379) scoring f5ce2ea
  • #355 migrate orchestrator + check_only onto verdict_inputs SSOT leaf verdict df065d3
Dokumentation (54)
  • v0.10.0 rollout runbook deploy 6e6999d
  • document POST /jobs task=check AAVS tester path + verdict-field vocabulary api 26275cb
  • #483 flip heading_mistag PROJECTED->MEASURED (kappa 0.955 live) + W1 drift/integrity fixes eval 21c26a6
  • #481 refresh aavs-spec render-compare κ (heading_mistag −0.045→0.9548, gold-scarcity retired) eval 4cd761f
  • #397 document EU-regen status (blocked) + ready one-command recipe eval 5b0083a
  • #477/#444/#475 refresh EU-parity scorecard — Qwen3-VL row, cross-repo Gemini, PAC 12/12 bench e9c1026
  • #446 EU-sovereignty-parity scorecard — Gemini bench synthesis bench 93a24d8
  • #471 abstain_rate provably non-gate-able → permanent-advisory aavs e5d1f16
  • #468 record non-discriminative abstain finding — advisory kept aavs 4447d11
  • veraPDF<->PAC<->AAVS agreement matrix on 9 fresh outputs (retro #3) eval bfe6ad7
  • #454 advisory->gate graduation tracker judge db3ad89
  • #450 reconcile spec with shipped judge (gpt-oss->qwen3.6) + instantiate §2.3 abstain-bound aavs dbf7efb
  • Gemini model bench — 4 Google models vs EU endpoint (#437) prd 137899f
  • 2026-07-03 retrospective — issue cleanup, M7/M8, prioritization retro d9fb790
  • GitHub-SSOT header + retro checkbox sync (#107/#118/#162) backlog f488f1e
  • document AAVS north star in README + judge-model drift banner in spec aavs f193cf7
  • add EAA PDF requirements §10/§11 triage and AAVS evidence slate (#465) reference 1d868f2
  • add EAA PDF requirements §10/§11 triage and AAVS evidence slate (#461) reference 546d339
  • deep-3 session handover — s3 measurement + VLM-infra strategy (#427) eval 9aa703d
  • #419 verification addendum — veraPDF 10/13 (was 6/13), struct_f1 unchanged, #421 resolved eval 4d83105
  • h2h readiness report — fresh 13-doc hard-set measurement (#397) eval c89922c
  • measurement-integrity report — fresh-container 8/8 re-baseline + discipline (#397) eval 642b6fb
  • correct partner head-to-head — engine remediates 8/8, prior 3/8 was a measurement bug (#397 #399) eval f4e9e7d
  • #414 layout-prior measurement — priors change parse, no metric detects; keep #140 OFF eval d8a37ed
  • Tier-B layout-flip decision — keep LAYOUT_ENABLED off (#295) eval 3fe0fb0
  • sync DSGVO docs to shipped purge + 06-27 flip (#386) compliance f11c34a
  • #386 back-link the 4 DSGVO docs to the #306 closure tracker compliance 580df75
  • #404 serializer deploy-prep checklist for aiat-poc-01 ops 670b3d8
  • #406 corpus A/B — NO-GO, gated on #408 corpus breadth (#406) overlay 0f55385
  • local-model eval-truth — #404 serializer verified on HEAD + discriminative AAVS scorecard (#397 #404 #396) eval 2a83d2a
  • RateLimiter-DB retention draft + LIA sign-off for #306 throttle (#386) compliance 21d7d09
  • module map for #382 God-Module decomposition (5 files → 31 modules) arch 056ddeb
  • DSGVO RoPA/DPIA/Art-13 drafts for the #306 throttle flip — owner-gated (#386) compliance bd7c9b3
  • where-we-stand snapshot (3-oracle, public BGBl) + #394 table_teds root-cause eval 995da1d
  • #384 record pdf-ua-tool code-convergence (owner 2026-06-29) — NDA customer-data firewall unchanged ip b52ed18
  • parse/fast package + main.py decomposition + resource-bounds (#382, #383, #385, #387, #361) arch 2dbac87
  • integration findings + E2E correction + scorecard CLI note (#390, #391, #392, #393, #395) eval ff0a00f
  • end-to-end eval run 2026-06-28 — findings + gap list (#390-#396) eval ca49161
  • record #306 controller PROCEED + live-verified prod-flip in the LIA sign-off (#306) compliance 73e0138
  • session-6 measurement-instrument hardening + #371 exhaustion verdict eval e64f7b0
  • #370 /Span-lever exhaustion verdict + #339 frontier update eval b06f6d1
  • #339/#366 bank the measure-first reversal — stale-bytes artifact, engine beats PAT eval 84a54c1
  • #198 definitive a11y-tree-in-CI root-cause + advisory recommendation sr-rail 5808339
  • #339 definitive Struktur-Erhalt frontier verdict (2026-06-25) backlog d298dda
  • #339 definitive PAT head-to-head + W4 adversarial evidence eval b828903
  • #339 PAT struct_cov_f1 re-baseline proxy — gold-provenance confound eval d456ebb
  • #360/#316/#339/#318 deep-3 measurement + verdict (BACKLOG + CHANGELOG) 47c32e5
  • promote v0.9.0 from [Unreleased] to versioned [0.9.0] - 2026-06-23 changelog c890358
  • make /docs auth description mode-aware (#66) + explicit Authentifizierung section api 7b57d48
  • #345/#360/#316/#318 tables-forms-frontier measurement + BACKLOG 19311fa
  • #297 IDENTITY_HMAC_PEPPER provisioned on prod (.env.production) + dev .env.local ops 5d0de04
  • #297/#306 prod-readiness + DSGVO-flip checklist ops 6dbbd88
  • #339 struct-erhalt measurement (table_teds 0.214->0.944, struct_f1 0.636->1.0) + BACKLOG 36ba1a7
  • materialize v0.9.0 release section changelog c3efe13
Tests (35)
  • #482/#480 hardening — RenderCompareVerifier.__call__ + set_running CAS thread-race guards pipeline 2fc1d26
  • #474 MockTransport coverage for gemini_client (100%) + #441 token-capture assert eval d4d05f2
  • #453/#466 W4 coverage gaps — abstain-gate FAILED-immunity + decode boundaries + abstain producer/trend quality 63909d4
  • #450 spec<->config judge-name drift guard judge ed5af40
  • #451 pin render-compare multi-page union + honest reliability doc eval 139e0b1
  • #452 dynamic model-swap recalibration guard judge 55d734e
  • close QA-review HIGH gaps — openrouter air-gap, reasoning override, guard NDA signals quality a469d51
  • committable table-geometry fixtures + veraPDF-gated validity checks (#419) fixtures c66b5c6
  • restore CI-visibility for ppdoc backend + add boundary coverage (#413 #415 #408) layout 4575ab3
  • #363 cover _run_ppdoc_inference — (N,6)/rescale/cls-guard + label parity layout 7bbb3ee
  • #411 deflake test_speak_async_283 via persistent client portal tts 917e98c
  • add broad-web to category-enum test (#407) corpus bc3ceef
  • #406 broad A/B harness + NO-GO record + both-arms flip safety test (#406) overlay 932e80c
  • parser-detected def-list + footnote /Reference E2E fixtures (#409) overlay c4a66dd
  • address W4 review findings — negative-gate + degrade-fallback + verdict-firing coverage (#402 #403 #404) quality 663a097
  • regression-lock #401 produce-side wiring + log def-list degrade (#401) merge ad56577
  • characterize def-list + form render before html.py split (#382) tag ccf85d3
  • add run_pipeline characterization net before #382 decompose pipeline 9c24932
  • pin main.py describe-access + lifespan-pepper + re-export anchors before #382 decompose api 2b722b6
  • harden async-poll window for CI parallel-worker contention (#389 follow-up) tts 86bfc7e
  • add degraded_pages to the JobResult model_dump key-set contract (#398) pipeline 2e3ad8b
  • cover #400 gap-5 recurring-image produce/render + extracted FAILED fragment branch (#400, #382) tag bd2226d
  • #400 struct assertions + fixtures — gap-4/gap-5 e2e, render-side units, honest deferral (#401) tag af577d2
  • characterization tests pinning parse_fast + resource-bounds seams (#382, #383) safety-net 6d154db
  • host-independent struct_f1 absolute-floor fixture (#368) scorecard 2d417e7
  • #318 add recipes-en to the catalog category enum (SPEC B follow-up) eval 810f1b2
  • #378 cover dc:title structure-derivation upgrade + slug fallback tag 7942b0a
  • air-gap the BAD tier so struct_f1 discrimination is host-independent (#380) eval f98fb4f
  • #372 CI ratchet + #373 PDFUA_GOLD_DIR gate + #374 typed CovCorpusError for struct_cov_f1 driver eval fbe97c0
  • add sr_checklist to JobResult model_dump key-set contract (#354 drift) verdict 100e37b
  • #316 lock layout-prior memo dedup (extract_calls==1) + refresh stale comment pipeline 23a50ff
  • bind version assertions to the SSOT — drift-proof, no hardcoded literal observability b60249a
  • update roster guards for rl_heading_numbered_genuine (11th case) eval 4779f0b
  • #357 #358 boundary tests + pymupdf pin hardening (W4 review closure) parse a28e260
  • #358 #318 add rl_heading_numbered_genuine gold fixture + promote frozen baseline (138→143) eval dcf3506
Code-Style (2)
  • fix 3 pre-existing ruff E501 line-length violations 5051370
  • drop unused orchestrator imports after #382 stage re-pointing tests f5b912f

v0.9.0 2026-06-23

Überblick

Diese Version bringt 118 neue Funktionen, 40 Fehlerbehebungen, 86 weitere Änderungen.

Technische Änderungen

Neue Funktionen (118)
  • #345 alignment-invariant borderless segmenter + unlabelled-form label-recovery parse bf633c1
  • #342 headless AT-SPI2 SR-verification rail — WORKS-IN-CI feasibility eval 2407bcd
  • #341 HITL-SR-checklist unlocks Stufe-2 "AT-verifiziert" verdict quality d2dfc38
  • overlay default-ON + bare-AcroForm triage-guard + ua1-clean product forms — #349 #336 #333 pipeline ff029c0
  • #345 borderless N-col spanning-header segmenter — table_teds ratchet parse e1b43d2
  • verdict-truth measure+metric — overlay-delta + FP/FN trust + held-out bakeoff + #347 CLEAR — #343 #340 #347 #344 eval fcabac5
  • doc-snapshot API versioning + drift-gates (ADR-028) docs 4e4a0b0
  • measure #335 prod-transfer (link REF κ=0.525 → HOLD) + held-out leakage + thinking-toggle — #335 #312 #334 judge 9b02386
  • graduate link+REF lever + wire selective-abstention layer (default-OFF) — #334 judge 8941e94
  • augment /Form ua1 — struct-tree bootstrap + page /Tabs + /TU synth (default-OFF) — #333 #336 tag 5f78dec
  • N-col borderless span-segmenter recovers rl_table_spanning — #332 parse c0989ef
  • measure built levers — link+REF graduate-ready, heading+TICK held (leakage-suspect) — #312 #313 #315 judge 7f720c6
  • harden parse/merge structural extraction — lists/forms/tables capability ratchet — #328 #329 #330 #331 engine 0326534
  • harden RIS harvester — CLI + Retry-After + polite default + gated fresh-IP runner — #314 eval 78f81c7
  • synthetic edge-case/adversarial PDF benchmark — capability-ceiling tracker — #320 #321 #322 #323 #324 #325 #326 #327 eval e5c7f4e
  • multi-source corpus harvesters + catalog registry — #318 #319 eval 69ff1bf
  • BgblPdf scanned-gazette harvest support — #318 eval c698c53
  • selective-abstention/escalation scaffold (default-OFF) — #315 judge 8af7611
  • TICK atomic-checklist lever (default-OFF) — #313 judge 15378cb
  • FAST guard consumes layout region-prior (#132/#135/#136, default-OFF) — #295 parse 55221af
  • Tier-B layout-prior measurement runner (LAYOUT on/off delta) — #295 eval e15509a
  • PP-DocLayout 2nd LayoutClient adapter (default-OFF) — #295 layout 5c3cb9b
  • graduated throttle model (default-OFF) — username-hard-cap + IP-soft→async-queue — #306 api f06075b
  • thread ActorContext through the async/arq job path — #307 usage 3f25744
  • extract_tagged_pdf v2 patch_meta — close 3 deterministic ODL-tagged ua1 gaps — #310 eval 357b3a8
  • ODL-tagged remediation route + measured engine-vs-ODL head-to-head — #191 eval 70e0dc0
  • reproducible publisher-reliability report (8→118 docs) + CLI write-path test eval a158802
  • rejudge subcommand + OpenDataLoader pdfuaid:part XMP patch — #281 #191 eval 363c80f
  • admin dashboard /admin + Art-17 retention + demo-throttle allowlist + review hardening — #302 #303 #304 usage,api 4db0326
  • server-side username-gate (422) + Art-13 notice + admin edge-gate snippet — #301 #303 usage,api 663a1b0
  • emit_usage_event orchestrator seam (actor) + admin-dashboard render layer — #300 #303 usage,ui 7dde90d
  • config+HMAC, UsageStore (sqlite, job_id join) + DSGVO artefacts — #298 #299 #305 usage 5c882f4
  • wire shippable ML triage-router behind default-OFF flag — #296 triage eec3e6f
  • robust triage-router ship verdict + eval hardening + alt-text bakeoff — #285 #287 #276 #281 eval 3eddb66
  • sampled before/after page comparisons — 3 stratified samples — #290 #291 #292 #293 #294 pipeline,ui 406ab43
  • vision-first layout priors for routing (default-OFF) + honest audit fidelity — #140 #154 layout,pipeline f8e4761
  • stream + async /speak, fix tagged-PDF TTL, lock endpoint caps — #283 #284 #280 #282 tts 1c26960
  • triage-router label-quality fix + honest #159 verdict — #278 #159 #279 #265 #276 eval b601a56
  • own-models foundation — RIS data-engine #157, Opus HITL panel #158, triage-router experiment #159 eval,ai e483ebc
  • add UI changelog page + git-derived dual-audience generator + commit-lint changelog b30ac2d
  • EU-sovereign judge retarget — language gated, heading honestly advisory — #275 eval e35b329
  • EU-endpoint judge prep + narratable verdict + AAVS verdict UI eval,quality,ui 304f30c
  • AAVS judge-quality verdict — CoT + 120b scale both fail to lift judge-limited dims; per-dim CoT gate + append-only experiment log — #275 #269 eval,quality 6056ab8
  • non-gazette corpus unblocks per-dim calibration — table/link/alt now discriminative — #273 #274 eval 8b23559
  • qwen-3.6-27b-nothink as VL standard via EU endpoint — ADR-018, #265 (#270) ai df8e047
  • AAVS gold enrichment unblocks per-dim calibration — language calibrated κ=1.000 — #272 #269 eval,quality 8a72a5d
  • probe + calibrate EU retrieval models (embedding + reranker) eval 5b6292c
  • AAVS calibration integrity + deterministic reading-order + /jobs hardening — #266 #267 #271 #268 eval,quality,ops 10a2d67
  • AAVS refinement — calibrated heading judge κ=0.803 + de-confounded render-compare + 20b→120b cascade — #255 #257 #256 eval,pipeline,quality 7dca39f
  • rotatable cross-judge challenger panel for hard alt-text tests — MVP-262 (#262) eval afc1bb6
  • figure-type-aware alt-text — self-routing chart prompt + rubric cap (#260) tag,eval 2b2fd41
  • AAVS gold corpus reviewed — Opus crop-inspection + bbox repair + F9 correction (#258 #263) eval 223e006
  • AAVS faithfulness metric-spine — CLIP fix (F5) + multimodal judge (F6) + 3-state verdict + run.py subset flags (#259 #261) eval d15e98d
  • AAVS W4 — calibration measurements (κ vs independent gold) + judge bake-off + findings (#249 #253) eval ac43142
  • AAVS W3 — B4 calibrated abstention + three-state verdict + abstain-rate (#248) quality,pipeline f17191e
  • AAVS W2 — B2 render-and-compare VLM engine [the differentiator] (#246) quality,pipeline 5d06a16
  • AAVS W1 foundation — B5 gold corpus + κ-infra (#249) + #253 evidence-enforcement parity + B2 design + D2 spec scaffold (#250) eval,pipeline,docs 0f22656
  • AAVS W3 — quality_score dampening + F5 judge-adapter + F6 regression gate — #240 #241 #243 #244 #247 scoring,pipeline,eval b9f3d6b
  • AAVS F2+F3 discriminative dimensions + B3 reading-order verifier — #240 #241 #247 scoring,quality 39a968a
  • AAVS F4 composite split + B1 na_facts /AA gap — restore discrimination — #242 #245 scoring,quality 6b9bb53
  • #226 hardening — typed AcceptedJob 202-body + _DEGRADE_REASON dedup + boundary tests sidecar e7b1724
  • box-trust cluster — fidelity-gate deploy-guard + audit composite-honesty cap + tag_facts DoS visited-set + notdef spike — #234 #235 #236 #233 pipeline,sidecar,quality c465190
  • ship overlay default-ON flip — decouple #231 font-ceiling, AC7 90.4→95.61%, HIGH-DoS fix — #205 #229 #230 #231 #232 overlay,quality,eval 576ad8c
  • close #205 flip-blockers — residual-conditions honesty gate + AC7 ragged-table fix — #227 #228 overlay,verdict f7e4b5a
  • close epic #205 ACs — born-digital fixtures + shared heading-core + flag-ON hardening + WCAG-0-headings gate + corpus PASS-rate — #220 #223 #222 #221 #219 overlay,quality,eval 6f3fd8f
  • eval-sidecar Phase-2 — async/202 + audit-log + bilingual + schema-contract seams (default-OFF) — #224 #225 #211 #212 #214 sidecar,quality 45c47b0
  • eval-sidecar Phase-1 MVP — POST /evaluate over audit_pdf — #208 sidecar e34a508
  • productize overlay tagging adapter (default-OFF) + augment + TOC discriminator — #205 #218 #206 overlay,parse,merge cb4166d
  • data-table fidelity lever — honest gold denominator + row-collapse re-segment + legal-TOC routing — #216 #217 #215 parse,merge,eval a2e0133
  • local OCR A/B (PaddleOCR-VL vs GLM-OCR) + honest table-TEDS scorer + ODL chores — #72 #207 #191 eval 2c22b6a
  • M6 Klartext-Fusion & Verdikt-Vollendung — Verdikt-Stufe-2/3-Wiring LIVE + BFIT/MinerU-Baselines + Multi-Page-Judge quality,pipeline,eval 1298290
  • M6 engine-quality — 3-stage verdict SSOT + BFIT generators + bug/eval lanes — #183 #189 #195 #163 #190 #153 #193 #194 #197 quality,tag,merge,pipeline,parse,eval 111945a
  • audible-truth — Piper screen-reader dry-run over SpokenView + SR-rail matrix — #149 #174 #185 #186 tts,api,ci f978807
  • table chain + gold-gate green without baseline — #175 #125 #121 #176 #171 #128 #178 tag,quality,pipeline,eval 0ff46bd
  • public reference corpora — veraPDF-corpus fixtures, UA Reference Suite anchor, opendataloader second baseline — #187 eval,tests 8be223e
  • PAT↔AI:AT bake-off on the Klartext corpus — 4-dimension report — #181 #34 eval 0e8af8e
  • score-as-is mode — score foreign tagged PDFs without re-remediation — #180 eval 92f405d
  • structure-family checks + BFIT capability baseline — #182 quality,eval 1da62d8
  • 3-stage accessibility verdict as FROZEN contract leaf — #183 quality df6f85b
  • StructTree-walk gold adapter — foreign tagged PDF/UA → StructuralGold — #179 eval/gold 469ab7e
  • Acrobat Reader + NVDA validation rail (workflow_dispatch-only) — #185 sr-rail 3ece424
  • Matterhorn-1.1 SSOT + condition-index reporting + human-conditions registry + gold-null gate + SR rail — #165 #166 #167 #168 #169 #172 #148 matterhorn,quality,eval,report 21a6e05
  • M5 TTS-readiness core — SpokenView + D9 dimension + per-span /Lang + /E + ToUnicode KPIs + transcript metrics — #142 #143 #144 #145 #146 #147 #161 #162 scoring,quality,tag,merge,eval 20db92b
  • Fidelity-Kette komplett — Raster-Einbettung + dHash + Visual-Judge + Page-Map — #150 #151 #138 #155 #139 #127 #126 #152 tag,parse,quality,pipeline,ui 6cad132
  • eval-learning loop — per-job run-records + trend harness + housekeeping wiring telemetry,eval decf191
  • M1 fidelity & layout integrity — fidelity gate + layout-destruction chain fixes — #137 #132 #133 #134 #135 #119 #136 quality,parse,pipeline,merge,ui d5a050a
  • Caption→Figure association — nearest-anchor transfer onto Figure.caption — #120 parse e971dde
  • W3 — ordinal <ol value> list rendering + @page margin-box artifact emission + structfix pikepdf passes (orphan-MCID artifact-wrap, ListNumbering) — #110 #112 tag 70e6f08
  • W2 — #109 stitch gap-tolerance + TH-demotion, #110 header-pattern artifacts, #112 list grouping + heading reclassify + list_labels, #111 title extraction + doc-title-meaningful, #113 alt-text bounded retry, #115 favicon — #109 #110 #111 #112 #113 #115 merge,tag,quality,api 4a59a04
  • W4 quality — honest #93 evidence at scale (99 gold docs) + meta-row veraPDF truth + boundary tests — #93 #104 #106 eval,test 6d4e977
  • W2+W3 — #104 TagTreeFacts seam + xfail flips, #93 docker scale-run + rollup, #105 consumed-count refactor, #106 test-debt — #104 #93 #105 #106 scoring,eval,pipeline,test 3363d2e
  • #93 extended judge evidence — surviving full-run swept the manifest — #93 eval 5ee60db
  • #93 scale-run evidence — T1 at scale + stratified judge sample n=16 — #93 eval 1defea8
  • W3 — #98 hybrid-corpus agreement + #73 bake-off verdict + ADR-009 per-job math + CSP report-only pilot note — #98 #73 #103 #101 eval,docs,deploy 6af0531
  • W2 — #103 per-job VLM budget + #98 hybrid tagged routes + #93 corpus/scale-runner + #73 CLIP wiring + #101 metering — #103 #98 #93 #73 #101 pipeline,eval,test,scripts 0d63781
  • W3 — #98 engine-route fact-lock + throttle-leak conftest fix + updated_at drop + billed-mode runbook — #98 #100 eval,test,docs b7c2814
  • W2 — enqueue seam lift + CSP unsafe-eval drop + #98 tagged route + #100 QA tests — ENG-AI #100 #98 #17 api,security,eval,test 0d182ad
  • narrative pilot opt-in — public visibility + README-only sources + repo denylist (#99) portfolio b584e4e
  • W3 — #85 backlog admission into seam + #30 live Caddy headers/CSP + AI-path docs — ENG-7.3 #85 #30 #91 api,ops,docs fba3932
  • W2 — #91 Mistral-ready frugality caps + ai-gpu vLLM profile + ai_smoke harness + #85 run_one_job SSOT + #2 python rules — ENG-AI-2 #91 #85 #2 ai,queue,ops 5e40738
  • W3 — #92 HITL review endpoints + WCAG-AA review UI + hygiene docs — ENG-6.10 #92 #95 #96 api,ui,docs 75ca6a5
  • W2 — #92 review contract + #88 link-finding dedup + #87-rest alt-undetermined — ENG-6.10 ENG-6.8 ENG-6.6 #92 #88 #87 pipeline,quality e6f69d6
  • W3 — Check-only audit mode + scorecard report surface + task switch — ENG-6.11 #90 ui,api 12dc3ef
  • W2 — impact-weighted scorer + dual-gate + render-checks + calibration corpus — ENG-6.11 ENG-8.2 #90 scoring,quality 4f80b5a
  • W1 — #94 A/B/C coverage matrix + scoring rubric ADR-007 + frozen dual-gate/scorer contract — ENG-8.20 ENG-6.11 #94 #90 scoring 9a910b6
  • structured no-PII tracing for the alt-text/raster path obs 3e62e36
  • link-purpose gate checks + tagged <a> output + #87 hardening — ENG-6.8 #88 #87 quality,tag 169a314
  • inline DocLink contract + link extraction (FAST get_links + SLOW markdown) — ENG-6.8 #88 parse,merge 998d2d6
  • wire WCAG-AA gate into remediation loop + report surface — ENG-6.5 #86 quality,api fbcca1c
  • deterministic WCAG 2.1 AA quality-gate module — ENG-6.5 #86 quality 27f22cb
  • compose topology + arq orchestration behind --profile full — ENG-7.4 #47 ops 61fdb38
  • bulk/folder upload + batch dashboard — ENG-3.4 #46 ui,api b0e1376
  • observability domain metrics + deploy runbook + #83 eval/QA cleanup — #41 #83 ops,eval 5efbbb2
  • Helm chart for BRZ/OpenShift — arbitrary-UID, air-gap default, probes — #37 ops 4019a69
  • Dockerfile.ubi — RHEL UBI9 image for BRZ/OpenShift, arbitrary-UID-safe — #36 ops 69abc94
  • German alt-text eval harness — the VLM slot's real job — #73 eval 34a4f13
  • report view — failed rules grouped by Matterhorn checkpoint — #11 ui a25f509
  • reasoning-VLM safety — reasoning_effort + reasoning_content fallback — #71 ocr c83f09f
Fehlerbehebungen (40)
  • #356 refresh stale OpenAPI snapshot (SR-checklist endpoints) api f7e20a3
  • #350 table_comprehension → ADVISORY_ONLY — construct-invalid gold, not a calibratable judge judge bad4441
  • #337 Docker dep-drift — build-time dep-parity smoke + loud fidelity degrade ops b5a178a
  • close read-store conn-leak + batch hard-block on overflow + P1 tests — #288 #306 api,tts af933c8
  • programmatic Acrobat Setup-Assistant dismiss + 64-bit hive pre-seed — #198 sr-rail df983e7
  • cut /speak synth latency + make audio errors visible — #149 tts d29913a
  • cap VLM pages/figures per job for the public open endpoint — #280 deploy 28ed310
  • harden public endpoint — per-file /batch throttle, jobstore parse guard, OpenAPI/XFF doc accuracy api a31a619
  • externalize Swagger UI init so it renders under the CSP docs 4cd79b9
  • self-host Swagger UI + ReDoc so /docs renders behind the CSP docs b8972d0
  • reasoning_effort + reasoning_content parity with slow.py — #264 alt-text 6ba9611
  • gold corpus cleanup — F1 bbox fix + F2 text-page relocation (#258) eval 584938e
  • AAVS #239 — wire veraPDF flavour-auto-detect into the product audit path pipeline,sidecar cc193a7
  • AAVS W4 — flavour-aware regression gate (per-doc pdfuaid:part) restores full-set discrimination — #238 #244 eval 4f5196f
  • restore German umlauts/ß in portfolio.yaml manifest (#143) content 512e9e4
  • #237 route-conditional fidelity disclaimer — stop labelling overlay output "(Reflow)" pipeline,ui 16740b5
  • #198 suppress Acrobat Accessibility Setup Assistant — iWizardRun=1 before launch ci e9b55ae
  • default overlay-ON in BRZ/Helm + ADR-015 + born-digital PRESERVED guard helm,fidelity dffde82
  • #118 hardening — vlm_alt_text_max_retries validator + Roman /ListNumbering config,tag 880a3b2
  • detect borderless RIS data tables, reject Amtssignatur + TOC over-tagging — #210 parse b39604f
  • make CI-environment-sensitive eval tests skip instead of fail — green main tests 5816520
  • force+verify Acrobat foreground before NVDA read — observed focus theft — #185 sr-rail 70ed95f
  • Acrobat rail installs Reader via choco — winget absent on windows-2022 runners — #185 sr-rail a2a1259
  • re-enable pdf.js in Playwright Firefox — file:// PDF nav triggered download instead of render — #148 sr-rail 2ab40e5
  • skip-guard calibration-PDF-dependent spoken_view/flip tests in CI — PY-005 tests c75cee2
  • suppress bandit B104 false-positive on _LOCAL_HOSTS literal telemetry ec3a06c
  • SLOW-page observability — slow.page_ok/slow.page_error events (class+latency, no PII) — #128 parse 19fdcc9
  • HORIZON chain — re-do page-space guard + FAST-only skip, spine_error_type third UI state, D2/D8 degrade abstain, structfix orphan-THead→TBody demote (7.2-14: 49→0), keyvalue autofix SSOT — #122 #123 #124 #117 remediate,pipeline,scoring,tag,quality,ui 0f2063a
  • W5 — list ordinal continuity via counter-set (WeasyPrint ignores li value for /Lbl) + render-side keyvalue-header guard (quality autofix re-promotes after merge demotion) — #109 #112 tag fd61775
  • W4 quality — masthead dc:title refinement, keyvalue-TH demotion, sync-job durable persistence (multi-worker 404 fix), structfix visited-guard + tmp cleanup, quadratic-scan precondition + 16 boundary tests — #109 #111 #112 #116 merge,tag,api 81df426
  • audit-path figure-alt false-positive — tag-tree wins over visual re-parse in the fold — #108 scoring e376afa
  • alt-text runner tests patch _resolve_raster — hermetic vs gitignored source PDFs (CI #5410) — #73 test 4cb9c8f
  • W4 — CLIP transformers-5 pooler fix + simplify pass + runbook per-job-budget note + validator rejection test — #73 #103 #101 eval,test,docs 7c3fccc
  • throughput harness measures pure capped OCR — spine off, alt-text no-op, single-pass — #17 #103 scripts 494915b
  • serialize shared sqlite connection access — torn-read race — #100 store c88275e
  • de-fang fake bearer literal — sk- prefix tripped the gitleaks CI gate (#5357) test d3b8dc0
  • Session-K #84 follow-ups + batch backlog all-or-nothing boundary — #84 #46 api,ops 15cf06d
  • harden Helm chart to readOnlyRootFilesystem — fixes Trivy AVD-KSV-0014 — #37 ops cc5ba47
  • W5 audit fixes — runbook metric names, veraPDF SHA parity, queue-depth test, chart MODEL_API_KEY ops 2b33b56
  • page-number regex for Seite-N-von-M + roman footers; document reconcile_page — #56 merge e45e815
Refactoring (intern) (4)
  • shared prior-cache + LayoutDetector seam — kill double-VLM-pass (default-OFF) — #316 layout 8917d6c
  • move async-synth lifecycle into main.py lifespan + close prune-leak — #288 tts 92dd42f
  • drop gpt-oss defaults — qwen3.6-nothink as EU judge default — #275 eval d55c2d4
  • explicit tagging_enabled gate + split alt_text raster/driver — #59 tag 685646f
Dokumentation (54)
  • capability-frontier session — BACKLOG status + FINDINGS (#337 #345 #336 #333 #349 #350) 4c4ff26
  • #347 heading+TICK leakage adjudication findings — CLEAR verdict judge 2679fbc
  • #339 overlay reconcile + ADR-029 WCAG-first/Verb-Disziplin + trust narrative — #339 #346 verdict-truth 15e1ddb
  • PRD — synthetic edge-case/adversarial PDF benchmark — #320 eval 44354db
  • generator-provider comparison bake-off — tiered-portfolio verdict — #318 #319 eval d113b70
  • correct mistral heading to full-confirm κ=0.588 (near-miss, below gate) — #312 judge 63a10a0
  • judge-bottleneck leverage findings + cross-model bakeoff — #312 judge 3e55a96
  • amend ADR-023 (follow-ups a/b/c implemented) + FINDINGS + BACKLOG — vision-layout arc — #295 #311 #281 4ad2c8c
  • #281-P4 tagger-taxonomy gap map (PAT strengths → tag-write seam) — #281 tagger 005a482
  • record session shipping — BACKLOG + FINDINGS + ADR-025 graduated throttle — #306 #310 #309 389508a
  • record #198 CI verification — ASA suppressed, a11y-tree still blank — #198 sr-rail 0503c93
  • add Usage-Tracking/Audit-Log/Admin-Dashboard PRD — #297 prd 4078475
  • record deep-session-2 (endpoint hardening + Swagger + pdf-ua-tool corpus) changelog acb3c80
  • W3 EU-sovereign judge verdict + sprint-review talking points — #275 eval df1701f
  • AAVS κ measurement evidence — product-judge heading 0.803 (calibrated) + render-compare data_table +0.090 — #255 #257 eval 416a008
  • ADR-012 §Verbleibend A–D Klartext-confirmed — close #211/#212/#213/#214 adr e0aa465
  • qwen default + optional gemma-4-31B-it@EU alt-text backend — #262 adr ef44147
  • W2 discrimination proof — metric now separates models + good-vs-bad (#259 #263) eval 15e65cb
  • correct F9 — photo "hallucinations" refuted by direct crop inspection (#263) eval 5f45b17
  • Gemma-4 weakness catalog + counter-measures (#263 research) eval 315b2f4
  • alt-text A/B findings register (#252) — eval-pipeline gaps + gold cleanup eval 04a127f
  • ADR-016 + AAVS standard design — automated 3-state accessibility verdict (#238) eval c2cf59c
  • #173 document fast-langdetect UBI-size fallback for lingua merge 7838b51
  • fidelity-scan-gap measurement — scans are 4% of corpus, #140 parked, overlay is the real lever research ba03482
  • add 2026-06-14 eval-state report — engine vs PAT bake-off + conformance/fidelity verdict — #234 #235 research 0779c93
  • finalize ADR-012 eval-sidecar contract — lock 7 decisions (Owner deep-10) adr de5b54a
  • #170 overlay-spike findings + ADR-011 spike-result + follow-up epic drafts adr,research fd67b07
  • #170 correct overstated fidelity claim in spike_overlay docstring spike cf799d0
  • deep-3 session record — table chain + gold-gate proof — #175 #125 #121 #176 #171 #128 #178 #177 changelog,backlog,architecture,readme 7ae30a2
  • M6 session record — eval goes foreign-tool-capable — #179 #180 #181 #182 #183 #184 #185 #187 changelog,backlog da75fc6
  • eval-sidecar contract ADR + PDFium sight-rail evidence — #184 #185 adr,research e5d5ad8
  • record repo-governance decision — main-push-guard for team onboarding — #188 changelog c96c2b6
  • Klartext PAT fusion analysis + M6 eval-finalization plan — #179-#187, rescopes #34/#130 research,backlog 14196ee
  • SR-NVDA first-run evidence — 197/200 phrases, heading/table/link semantics verified by real NVDA — #148 research,backlog 2010a36
  • W5 session record — Matterhorn SSOT + condition-index + human registry + gold-null gate first proof — #165 #166 #167 #168 #169 #172 #148 changelog,backlog,architecture,readme 578c78a
  • W5 — M5 TTS-core session record + ADR-011 overlay spike-first decision + ADR-007 D9 amendment — #141 #142 #143 #144 #145 #146 #147 #161 #162 changelog,backlog,architecture,adr,readme e4f81e1
  • fix box-fetch recipe — records live in the named volume, not /home/deploy/data eval 356137c
  • W5 — deep-4 Session-Record: Fidelity-Kette + Judge + Sanitize + Page-Map — #150 #151 #138 #155 #139 #127 #126 #152 changelog,backlog,architecture,adr,readme de0507e
  • W5 — M1 session record + ADR-010 fidelity gate — #137 #132 #133 #134 #135 #119 #136 changelog,backlog,architecture,adr,readme 18a3f7b
  • add M5 TTS-readiness work package — research SSOT + issues #142-#149 backlog,research ff19ffc
  • demo held 2026-06-11 — lift 3300-container freeze, structure all 21 open issues into work-package milestones M1-M4 (fidelity-first via #137) changelog,roadmap,mvp,backlog baaded1
  • W5 — HORIZON-chain session record: fixes, E2E numbers, descoped #117 items as proven residual limits — #122 #123 #124 #117 changelog,readme,backlog,architecture 774a86a
  • W5 — Session U record: verified facts (veraPDF 0/24685, 11/11 re-verify gate), honest residual limits, 8-pass merge-chain invariants matrix + structfix post-pass — #109 #110 #111 #112 #113 #114 #115 #116 readme,changelog,backlog,architecture c56228d
  • demo-verified restructure — business intro, two-mode table, techie pipeline walkthrough, honest limits — #108 #109 #110 #111 #112 #113 readme,changelog f9ca4f2
  • W5 — Session T CHANGELOG/BACKLOG + ARCHITECTURE inline-scoring stage + ADR-007 tag_facts addendum + precedence docstring — #93 #104 #105 #106 session,adr e2add68
  • W5 — Session S CHANGELOG/BACKLOG — #103 #98 #93 #73 #101 session ef42027
  • W5 — Session R CHANGELOG/BACKLOG + Caddy bind-mount inode trap runbook note — #100 #98 #17 session,deploy c1ba4ae
  • W5 — ADR-009 production AI-endpoint policy + CHANGELOG/BACKLOG Session Q — ENG-AI-2 #91 #85 #30 #2 session,adr c6bedd1
  • W5 — ADR-008 HITL non-destructive certification + CHANGELOG/BACKLOG/README — ENG-6.10 #92 #89 session,adr 27ee29d
  • W5 — finalize Session O docs + make calibration corpus empirically honest — ENG-8.2 ENG-8.21 #90 #94 session,eval 2b214db
  • close Deep Session N — link-purpose (WCAG 2.4.4) + #87 gate-hardening record — ENG-6.8 #88 #87 session 3f0867f
  • ADR-005 WCAG-AA gate + CHANGELOG/README + fix stale E5 BACKLOG markers — ENG-6.5 #86 quality bafbbf1
  • CHANGELOG + BACKLOG for Deep Session K + W5 audit reports — #36 #37 #41 #83 #82 session 8b94a0c
  • CHANGELOG [Unreleased] + BACKLOG for Deep Session J — #71 #59 #74 #56 #11 #73 session 59fdcef
Tests (18)
  • defensive follow-up tests from pilot-hardening review — #311 usage,eval c204c8a
  • latex-UA corpus calibration sweep + struct_assertions ClassMap resolution — #281 eval 2a5d28d
  • integrate pdf-ua-tool public corpora + structural tag-assertion suite fixtures 5f23edf
  • add boundary coverage for throttle/batch/content-length/JSON edge cases api a110c2d
  • corpus test asserts reviewed status after W2 gold review (#258 #260) eval a670aa0
  • #107 hardening — FigureFact boundary + _iter_kids cleanup + eval-clip mypy scoring,eval 84d8653
  • #196 container positive-proof for /Caption path + WeasyPrint-69 crash doc tag,caption 8f833a9
  • W4 — quality audits + tagtree degrade tests + dead-param drop + stage missed harness — #100 #98 #17 quality,api ee04149
  • checkpoint eval-lane WIP — sha-backfill, alt-text baseline + OCR page-level raws — #72 #73 eval 269e3a5
  • W4 — #85 QA-gap tests + #91 remote-resilience suite + /v1 startup guard + cap-integration tests — ENG-AI-2 #91 #85 quality,config d0fdafc
  • W4 — non-destructive certification + #89 veraPDF E2E lock + HITL hardening — ENG-6.10 ENG-6.9 #92 #89 quality,pipeline 7810c25
  • W4 — 148 scorer/gate/UI tests + close calibration loop — ENG-6.11 ENG-8.2 #90 scoring,quality,eval 105737c
  • link-purpose + #87 test suites; fix FAST link-rect drop + list-leak + scheme allowlist — ENG-6.8 #88 #87 quality,parse 68e9911
  • real-doc differential + WCAG-gate integration/air-gap depth — ENG-6.5 #86 quality,merge 9ca7c89
  • W5 audit gap-closing + live-smoke topology fixes — #46 #47 #84 batch,ops c669e6f
  • pin roman-footer 1-99 cap boundary + WeasyPrint degrade; fix doc — #56 #59 merge 551c4e5
  • cross-cutting integration depth for Deep Session J — #71 #59 #11 quality 8e9ec1a
  • promote vlm_bakeoff to maintained asset — harness tests + corpus — #74 eval acaab66
Build-System (3)
  • bake Piper extra + de_DE voice into the demo image behind ARG TTS=1 — #149 #200 tts 77ae6ee
  • lock piper-tts into uv.lock so `uv run --extra tts` is churn-free — #149 tts 623ca83
  • add opt-in 'tts' extra (piper-tts) — durable local enablement — #149 tts 748308b
Sonstiges (7)
  • qualify corpus (1482/1482 tractable) + merge host-named RIS dirs + harden catalog — #318 #319 eval 3b8bfcc
  • corpus catalog snapshot — 1482 PDFs across 7 categories (DE+EN) — #318 #319 eval a5f45b2
  • integrate #273 calibration-completion with PR #270 qwen36 VL standard 1317c86
  • #129 measure-first merge-baseline harness — NO-GO/defer on VLM-assist merge 80652cd
  • #170 add --granularity {group,line} mode-compare — semantic-richness boundary tag,overlay f70d03a
  • #170 overlay-tagging spike — in-place MCID+StructTree on born-digital BGBl reaches veraPDF ua1 PASS at pixel-perfect fidelity tag,overlay 6327820
  • enable TTS on the demo box — TTS=1 build-arg + TTS_ENABLED — #149 #200 aiat-poc 44d1fe6

v0.8.0 2026-06-08

Überblick

Diese Version bringt 31 neue Funktionen, 11 Fehlerbehebungen, 29 weitere Änderungen.

Technische Änderungen

Neue Funktionen (31)
  • capstone baseline + docs + security hardening + coverage — #34 release v0.8.0 eval 8670df8
  • composite + reliability + linearizer + eval-as-a-service — #79 #80 #81 eval 34cbf33
  • Tier-2 judge + persona-panel gold + live κ reliability — #78 ENG-8.12 eval 74d1953
  • OSS reuse layer + Tier-1 completion — #76 #77 ENG-8.14 ENG-8.17 eval 0575ddf
  • independent gold corpus + harness/artifact separation — #75 ENG-8.11 eval 46171ce
  • hybrid PaddleOCR-VL routing + per-page parallelization + lean Markdown — #68 #69 ocr f61825d
  • async job queue + sqlite store — non-blocking POST /jobs (202+poll) — #67 #6 jobs 2f508e7
  • aiat-poc live-pilot build-on-box runbook + Caddy vhost + env example — ENG-7.5 #64 deploy 72087ae
  • accessible dashboard (WCAG 2.1 AA) + BYOK/Admin key UX — ENG-3.5 #63 ui e1f1933
  • tiered AI backend (Anon/BYOK/Admin) + rate-limit + config align — ENG-AI-1 ENG-8.8 #62 #61 ai-tiers 658292f
  • PAT-slot label + throughput harness (s/page, peak-RSS) — ENG-8.4 ENG-8.5 #34 #35 eval 80b206b
  • scorecard CLI + proven quality discrimination + DE-model & FT decisions — ENG-8.3 ENG-8.6 ENG-8.7 #33 #45 #53 eval 9c91904
  • scorecard metric primitives — veraPDF/struct-F1/TEDS/Kendall-τ/alt-text-CLIP — ENG-8.3 #33 eval 2ce9c56
  • scorecard scaffold + graded-triplet generator + metrics research — ENG-8.2 ENG-8.3 #32 #33 eval f60339d
  • v0.1 hardening backlog + WeasyPrint fontconfig under arbitrary UID — ENG-1.7 ENG-OPS #52 #58 hardening ef6870d
  • Prometheus /metrics (RED) + hardened /ready + structured no-PII logging — ENG-10.1 ENG-10.2 #39 #40 obs e066095
  • serve the remediated PDF — download endpoint + temp-file reaper + before/after UI — ENG-6.6 #57 api 6bfc367
  • tagging-capable Docker image + real wired E2E veraPDF PASS proof — ENG-6.5 ENG-6.1 ops 31c5d6d
  • German figure alt-text + hallucination gate, wired into the spine — ENG-6.4 #27 tag 225bc70
  • wire remediation spine into run_pipeline behind WeasyPrint capability-gate — ENG-6.1 ENG-6.3 pipeline 86b7310
  • remediation spine — merge + tag-write + loop (ENG-5.1–5.6, 6.1, 6.3) pipeline f95ab76
  • SLOW VLM-OCR path + ParseBackend Protocol + confidence/cache_key — ENG-4.3 ENG-4.4 pipeline 9d56e40
  • FAST PyMuPDF parse path → per-page ParseResult at orchestrator seam — ENG-4.2 pipeline ccb4531
  • per-page ParseResult schema (FAST/SLOW shared contract) — ENG-4.1 pipeline 6a4915a
  • mlx-vlm 2-port serving launcher + health-probe + runbook — ENG-4.6 ops 8b738f5
  • router quality-gate — demote garbage text layers to SLOW — ENG-1.4 pipeline 67dc391
  • accessible HTMX dashboard — upload → veraPDF score → report — ENG-3.1 ui 9fd0d03
  • POST /jobs multipart/urls/base64 upload, pydantic + SSRF-safe — ENG-1.1 api cd5e810
  • parse real veraPDF 1.30.2 JSON + map rules to pages — ENG-2.1 ENG-2.2 eval 2595dbb
  • triage cache-key + hardened FAST/SLOW routing — ENG-1.2 pipeline a8793fb
  • bundle veraPDF 1.30.2 in image (pinned + sha256, air-gapped) — ENG-2.3 ops a8a221b
Fehlerbehebungen (11)
  • dedicated vlm_timeout_s + correct MODEL_ENDPOINT_URL convention ai 50e7c37
  • harden public pilot — ocr_note slow_pages-gate, per-IP /jobs throttle, XFF, job-id — #62 #64 live ec7dda1
  • close W4 scorecard review findings — measurement-null, air-gap CLIP, normalize SSOT — ENG-8.3 #33 eval f198001
  • close W4 security/arch findings + integration-test gaps — #57 #39 #40 #52 review a2a48da
  • figure-raster megapixel guard + keep base64 off the structure SSOT (review fixes) tag 2e54333
  • thread figure alt-text into the remediation loop via injected refine_tree hook — ENG-6.4 pipeline acdd7ba
  • generalize reading-order to N-column + y-sort full-width pages — close #55 merge 8386b2b
  • harden SLOW path + reading-order tie-break + pin httpx<0.29 (+43 tests) — ENG-4.3 ENG-1.5 parse 279506e
  • pin validated IP on PDF fetch — close DNS-rebinding TOCTOU — ENG-1.5 security 61ce0e5
  • constant-time auth compare + stop pydantic error leak — SEC-004 SEC-009 security fdeee84
  • green toolchain — ruff/mypy/pytest clean — ENG-0.2 7ad3e43
Refactoring (intern) (2)
  • single backend selector + degrade-on-spine-failure (review fixes) pipeline 22192cd
  • extract run_pipeline orchestrator + typed JobResult — ENG-1.6 pipeline 6a122a2
Dokumentation (17)
  • add RIS-verified Austrian legal anchor (§8) — WZG vs BaFG → EN 301 549 Clause 10 → WCAG 2.1 AA eval 7db31d1
  • plan reliable accessibility eval-engine v2.1 — ENG-8.11..8.17 + tracking #82 eval 319cc3d
  • v0.7.0 servable-AI — OpenAPI #66 + CHANGELOG/BACKLOG + M1 multipart size-gate release e1e0855
  • W1 AI-pipeline-performance research + pinned contract — #67 #6 #68 #69 research 18dc04b
  • CHANGELOG v0.6.0 + BACKLOG/ROADMAP/MVP + sync deploy artifacts to live reality release b108bf9
  • GitHub README intro + dev API.md (dos/don'ts) + dashboard /docs link — ENG-DOC-1 ENG-DOC-2 #65 #66 onboarding 392e681
  • engineering DPIA draft + data-flow diagram — ENG-9.3 #38 compliance 63779e9
  • deep-session-G W1 discovery — aiat-poc deploy recon, a11y/UX, AI-tiers contract, DPIA + onboarding research b0a6ccd
  • record v0.4.0 — serve the output, observability, hardening, supply-chain, live-VLM + Docker proof 7230d93
  • record v0.3.0 — spine wired end-to-end, figure alt-text, N-column reading-order, tagging Docker image + real wired veraPDF PASS 2edc132
  • alt-text (ENG-6.4) design note — PDF/UA-1 + German VLM + hallucination gate — #27 research 01f8262
  • record v0.2 parse stage — CHANGELOG 0.2.0, MVP-004 done, BACKLOG/ROADMAP bf10aa9
  • verified mlx-vlm serving run — Qwen3-VL-8B @77.8 tok/s German OCR — ENG-4.6 ops 878dd13
  • anchor fine-tuning strategy as ENG-8.7 decision-gate (measure-before-tune) — ENG-8.7 76ab44f
  • mark v0.1 Session A delivered (ROADMAP/BACKLOG/ADR-002/CHANGELOG/MVP) b986983
  • ENG-6.0 reflow→WeasyPrint settles ADR-002 — real BGBl reaches veraPDF PASS — ENG-6.0 spike c052567
  • iterative version roadmap (v0.1–v3.0) + tag-write pivot (ADR-002) e134324
Tests (10)
  • VLM bake-off — Qwen3-VL-8B vs Gemma-4 verdict + clean-gold harness eval 253b321
  • #54 parse-stage test-depth + fix(ui): #70 pass_rate never 100% when non-compliant parse a12d5e2
  • make config-default + dashboard air-gap tests hermetic vs .env 298d8ba
  • close W4 coverage gaps + docs + real Hetzner scorecard proof — ENG-8.3 ENG-8.5 #33 #35 eval 4fd99de
  • ENG-4.7 parse-stage depth — heading levels, header/footer band, caption/column boundaries, SLOW JSON-extract + decode-error paths (+37) — #54 parse d30b3eb
  • live end-to-end SLOW integration vs mlx-vlm (skip-guarded) — ENG-4.3 parse ee784b6
  • OCR bake-off harness + verified Paddle/Qwen3-VL verdict + TCO model eval ad2e5c0
  • harden veraPDF/triage/URL coverage + tighten weak assertions — W5 QA 04edf5d
  • air-gapped docker-compose integration — veraPDF offline — ENG-7.1 ops 6305b8e
  • add public-domain Austrian BGBl PDF fixtures — ENG-8.1 corpus 5c6b744