Changelog v0.10.0

Eine einzelne Version, vollständig — mit allen Änderungen dieser Version.

Aktuelle Version v0.15.0 · Stand 752c495 (2026-08-17) · 1175 Änderungen ausgewertet.

Zurück zur Versionsübersicht

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 (für Entwickler:innen)

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

Frühere Versionen

Jede dieser Versionen ist vollständig abrufbar — mit allen Änderungen, unverkürzt. Hier steht nur der Überblick; der Link führt auf die ganze Version.