Changelog v0.15.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.15.0 in Entwicklung

Überblick

Diese Version sagt „noch keine Aussage“, wo sie bisher geraten hat: Prüfpunkte ohne belastbaren Befund enthalten sich ausdrücklich, statt eine Bewertung zu erfinden. Dazu kommen ein zweiter, EU-lokaler Texterkenner samt Herkunftsangabe auf der Ergebnisseite, Messläufe über ganze Dokumentbestände statt Einzelfälle, und eine Weboberfläche, die auf allen Seiten dieselbe Sprache spricht.

Technische Änderungen (für Entwickler:innen)

Neue Funktionen (48)
  • measure Option C on 80 gazettes, and find that a FAILED judge is what binds two of three verdicts eval 7a79371
  • name the cause a run-record row could not decide on — #1089 telemetry ff598ce
  • read both Option-C arms out of one run, by writing at the seam instead of guessing eval 8cdb0d7
  • messe die Trennschaerfe des Ja/Nein gegen 306 ua:*-Gold, und benenne, was daran tautologisch ist eval 473f9bf
  • make the heading judge name its finding, and check the name against the bytes eval f4f1fcd
  • kalibriere die Stellschrauben um den Ueberschriften-Judge herum eval 97034c1
  • let a decided criterion failure bind the document verdict, as the spec always said verdict d5dce8a
  • make the 80-document abstention measuring rail reproducible eval d58973c
  • compute the five dimensions the composite routes to Tier 1 — #1083 eval c32d611
  • carry the nine produced-but-unrecorded signals into the run record telemetry 57992df
  • let a run-record name the arm it ran under telemetry e2b98c4
  • say what is armed, and refuse to boot a stage that cannot run ready 747607c
  • a reliability number that carries its denominator and refuses a degenerate gold eval fa4b4d5
  • one decision on the upload form — 213 visible words down to 84 ui 0e3b0c8
  • say Ja, Nein or Noch keine Aussage — one vocabulary instead of two ui 8a94a45
  • measure the check-only verdict against the UA gold, and name which half of it is a tautology eval 7347304
  • put the answer above the form and make the focus actually land on it ui 96cb952
  • say which model read the document, and with which capability, on the surfaces a consumer sees provenance e1d3f31
  • measure the class the guard cannot see, and find it is not the class the router excludes eval 7a73cea
  • measure the reading order against the bytes the box delivers, not the tree it keeps eval 678beb8
  • make a corpus run say what to fix next — and when it measured nothing at all eval 0244a11
  • drive a whole corpus through the real pipeline, resumably ops 364098e
  • let the other reader read the same page, and measure where the two disagree parse 9490e02
  • give the second OCR endpoint its own series, instead of a label on the first observability 276dd16
  • record WHICH weights answered, so an alias stops passing for an identity eval 9434eb4
  • measure fabrication where there is no gold, and find the consensus is the layer eval 8fcac05
  • measure the table axis against the page's own text layer, and find the gap is loss, not binding eval 57e5f1f
  • route both parse passes through the occupant switch, and let the chart flip it ocr db71350
  • give the second reader its own triple, its own latch, and a switch that ships off ocr 4dbe516
  • give the undecodable HTML table a counter, and tell a refusal from a fault observability 9c7ad42
  • give LightOnOCR its own conditions, and find its preprocessor caps the resolution at 1540 px eval 0906e4d
  • read the table dialect LightOn actually speaks, and count what an OCR page cost parse 0c06e25
  • count VLM tokens where the round-trip is, not where the terminal row is observability d7019c3
  • let the text axis say "not measured" on the wire, not only in the log fidelity 04c8dd1
  • measure whether either OCR model rewrites a statute name, and give the zero a positive control eval efa19b7
  • run both lanes of a #954-repatriated document side by side, at one named commit eval 14423fa
  • make the paddle endpoint reachable, and prove it with a live test ocr 78674aa
  • let the text axis abstain instead of certifying a scan it never read fidelity ff40ba4
  • tell the matcher's own offset apart from the headings that never transferred — refs #963 #896 eval fc3a7d0
  • hold a gate-rejected fixture out by declaration, not by shrinking the pool — #980 eval 1268290
  • give VLM token spend an alerting surface and a billing column — #1014 metrics 31b90d3
  • measure where the text-layer guard cannot decide, and score the two candidate stand-ins eval 59fc350
  • give D5 a reference point outside the level it scores scoring 4d34fdc
  • measure the three Paddle routing exclusions, and freeze the testset that did it eval 88b48bc
  • give the Paddle endpoint a state, so 403, 502 and timeout stop being one error health d456bcf
  • wire the delivered-placement census into the fidelity report, advisory quality fba941a
  • name the untagged grid the #1038 drop left silent — refs #1051 #1038 #726 quality 016b7b1
  • make the WeasyPrint tagging degrade loud instead of silent ops 5dd634f
Fehlerbehebungen (65)
  • gate the audit-lane veraPDF ratchet on the binary, and host it where the binary is tests 752c495
  • make the Option-C control count documents, not seam calls — it read 20 of 108 where the corpus has 78 eval 43cd519
  • re-pin the skip ceiling on a derived reserve, and make the guard count what it claims ci 8936b92
  • answer per criterion on the audit lane instead of shipping an empty verdict map pipeline 3f73bab
  • read the stack's verdict from the bound gate, not the raw veraPDF leg batch 6b58365
  • abstain on a heading-less tag tree instead of stamping a defect it cannot prove scoring f79300e
  • anchor the hermeticity guard to the sweep, not to a later moment tests 77f5f46
  • abstain 1.4.3 when the background is not provably white, instead of assuming it quality 15b196d
  • fill the second fixture raster the #1078 fix left behind tests fa7bbd1
  • fold the decided contrast rows, not only their abstentions — #1085 pipeline 04e2ed7
  • abstain the heading corroboration when nothing aligned, instead of failing — #1083 eval b0d231c
  • send the model id the endpoint actually serves, and ask it at boot ocr 1a741be
  • keep the sentence that explains the verdict next to the verdict ui 600fc38
  • the sentence that revokes a PASS must not read as a contradiction quality 6ad1af2
  • bind the abstention tests to the app's Jinja env, and finish the jargon removal in the admin banner tests e8018a3
  • drop the TTS engine's name from the page and from the runtime labels ui b716e0d
  • the last three internal words on the result surface ui 731c722
  • collapse the developer half of the changelog by default ui 2923497
  • a crashed condition reducer must not certify zero violations scoring 8fcead6
  • raw identifiers out of the surface, and the a11y defects in the a11y tool ui 782e232
  • reject invisible and non-latin-1 names on the unauthenticated gate POST security b617f85
  • arm the production auth riegel and write down who carries the auth security 22215e0
  • sweep expired tagged PDFs on a path the async deployment actually runs pipeline 1e65005
  • react to the swap that actually delivers the result, not the one that starts it ui 5a59845
  • make the gold content hash document-specific — v2.2 could not tamper-check 16 % of docs eval 897d915
  • fill the fixture raster the abstention test claims it keeps — #1078 tests 05e6d9a
  • guard the last endpoint field that could still swallow a doubled /v1 config 4ff8047
  • read the shadow roll-up the shadow lane actually writes, not the shape we guessed eval 064fcef
  • let the two FAST-OCR backends wrap the instrumented reader, not the narrow one observability 62fc2cd
  • ask whether the FAST-OCR slot has an occupant, not whether Paddle is configured routing 36c6558
  • stop the overlay spike from reading an abstained 1.0 as a measurement spike 446974c
  • adopt the base's usage twin in the crop stage, instead of probing for a keyword observability aa4bf40
  • let the one place that says 'do not deliver' be the place every consumer asks tag b069171
  • let the chart aim the endpoints it can already arm helm b69b102
  • stop scoring a scan's own page raster as a lost image fidelity ac4b9df
  • stop reporting an answered-but-undecodable OCR call as an outage parse 7e9c9dd
  • decide once whether a raster is the page or sits on it — #1054 merge d58685d
  • strip internal issue references from the sidecar's own published OpenAPI sidecar 6631500
  • make an empty baseline window visible in the machine sidecar eval 8330516
  • let a heading family's numbering level the whole family, not only its children merge 08f2ee7
  • stop restoring a once-only masthead on every delivered page tag 7ad4ef8
  • name the five degrades in the FAST path, so a fault stops looking like a result parse bd794a5
  • teach the consumers to read the named degrade, starting with the silent denominator eval 07ee8a9
  • enrich the two hand-appended findings so their tags reach the wire check 688c3da
  • stop two wave-3 tests from asserting their own environment test 4a91285
  • let a hierarchical section number beat the H6 level floor parse cdcd912
  • make the column split check that both sides are populated, as its docstring claimed parse d93616c
  • let the OCR witness reach the resolution its own comment promises quality 6793cb9
  • stop the #1052 gate test from splitting the src.tag.overlay module graph test 1b4e6d3
  • de-fang the degrade test's PII bait and pin its historical gitleaks finding security ce097d3
  • thread the #1037 source filename into two dead harnesses, and gate the blindness — refs #1037 #1043 eval 8c034b9
  • tag the two live checks the map silently omitted — refs #1051 #1043 quality 63dafb4
  • recognise an index whose printed leader is not a dot — refs #1050 #695 #705 quality 418d072
  • stop delivering a bilevel scan as 8-bit RGB tag 1442a02
  • cap the figure raster to the page so a scan is not delivered half off-sheet tag b86b258
  • pass the uploaded filename to the doc-title reconcile pipeline 7b2e0aa
  • read the queue-depth gauge from the durable store, and decouple the tag gate ops 1a0102e
  • make the BGBl citation rule survive its own punctuation collapse eval e7d1264
  • give four archetype-scoped rules this repo's real surface rules 96f2e70
  • compare the delivered title against the filename stem scorecard daa78cf
  • stop discarding a present input text layer blindly parse 3d20857
  • restore PyMuPDF's process-global glyph-height flag after every fast parse parse bd862a6
  • bind the tag-stage capability gate to the route that needs it pipeline 0cf8229
  • make the degrade total, and make it say that it degraded quality 108235b
  • deliver the six security headers on the K8s path, not only on the box helm 2780b57
Performance-Verbesserungen (3)
  • reserve the result viewport inside the click, so the swap shifts nothing ui d1f800b
  • build the docling freeze fixture repo once per module, not once per test test 492cba9
  • narrow each page's /Resources /XObject to what the page actually draws tag f6691b6
Refactoring (intern) (3)
  • expose the link-purpose judgement as a carrier-agnostic seam — #1083 eval 66cdf2b
  • one page shell and one navigation for twelve pages ui af8930b
  • one answer on the result page, nineteen numbers on the audit page ui b8cf2fc
Dokumentation (39)
  • MD-015 — read the artifact's own justification before calling it a defect rules 3dbc21e
  • re-measure Gate 3 instead of citing a two-day-old count launch-gate f567765
  • correct the engine's self-report against HEAD — #1083 eval 807c341
  • regenerate the 0.15.0 window — 40 features, 56 fixes, 63 other changes changelog b5ecd84
  • record the three arming repairs and their measurements — #1081 changelog 5102241
  • the autonomous path to AAVS, and the misreading that hid it plan 039cc02
  • state the full denominator in the header, not only in the addendum eval 4487cb6
  • close the before/after measurement at the full denominator, 80 of 80 eval a2dbca2
  • measure the FAST/SLOW seam and name what tunes, what does not, and what must not eval 4b9858e
  • name the fifth constant dimension, where the control inverts eval b44c458
  • replace the quoted reliability numbers with measured ones, denominator attached eval bffe283
  • point gate 5.1 at the measured licence inventory and the open decision launch-gate 563e491
  • write down which licences we actually ship, instead of the ones we claimed compliance cd61e39
  • decide all 19 boxes against evidence, not against hope launch-gate 768bc36
  • record the second red gate and the measured blast radius of the v2.3 hash change eval 7821eb0
  • re-measure the decision numbers on the checkpoint that is actually served eval 28b41b5
  • make the LightOn switch operable, and name the gate that is still Paddle's ops 61c99aa
  • correct two docstrings that outlived what they assert truth e0a9d65
  • write the 3-criteria ADR gate into the template its citations point at adr 631e775
  • decide the model on the axis a wrong statute name lives on, not on conformance or CER adr aabde1e
  • measure the axis a tagging engine is actually paid for, and find one arm delivers 66 headings and the other 0 eval 9c8ff6e
  • measure what the three #954-repatriated documents actually deliver, on both lanes eval e472fd8
  • measure the LUMI-served OCR pair against the local baseline, and find one arm that never repeats itself eval f411251
  • catalogue the two token counters, and re-count a claim that had drifted by three metrics b2fe63e
  • ratify that the unframed section index is a list, not a table — #957 adr 9037598
  • stop citing #969 for the heading work it never covered refs 0c6bd44
  • read the baseline marker before the flag count, the second blind consumer loop 49480b7
  • preserve a parallel session's LightOnOCR-2 vs PaddleOCR-VL head-to-head eval 499c4d8
  • record why the no-text-layer exclusion stays, and which of its reasons did not parse 4cb9fdd
  • the xdist OOM veto was a half-quote, and the line number was unfalsifiable rejected 81fb6d2
  • MODEL_NAME is read by the Paddle path, the comment claimed the opposite env f3efb08
  • price the duplicated 150-dpi page render, and record why it stays parse e42e70b
  • write the 0.15.0 unreleased window from its own commit bodies changelog bc0ec9b
  • correct the four claims the scorecard adapter outlived — refs #1037 pipeline f29a4fc
  • record Pass B's measured blast radius and its order sensitivity tag 2ce7cec
  • record what welle 1 delivered, and re-cut what it only half delivered backlog e3b30e2
  • name the pre-registration scope in the criterion heading too research e5c0179
  • measure what the scan reflow actually delivers — CCITT, page count, routing research cf31da8
  • write down the four version-coupled artifacts and their order release 739256e
Tests (19)
  • mutate the tag tree of real gazettes to test whether the synthetic heading numbers transfer eval 39c981d
  • show that the heading judge fails because it is blind, not because it cannot judge eval 58d13c7
  • derive the env hermeticity from Settings instead of a 9-key hand list conftest fc0a941
  • prove whether the contrast screen can say NO, instead of assuming it quality 35cedb9
  • measure the eval slice's decided cells instead of asserting them — #1083 eval 18310a7
  • assert that T2 ran, not that the developer has the corpus on disk eval-api c502c28
  • pin the boot probe to its own short timeout, not the inference one arming 7e87738
  • assert the German reading, and that the raw token is gone evidence c676d5d
  • move the FAST-OCR patch surface to the factory the code now calls parse 2a639de
  • pin the resource-prune wiring, not just the function tag d28aaf5
  • re-seat the amsldoc heading-level pins, four subsections moved 6 to 2 parse e26b558
  • derive the check_id coverage guard from the tree, not from a list — refs #566 #1008 quality 066d72e
  • bind two stale test premises back to the contracts they pin pipeline 6d581d6
  • drop an unused helper from the Pass B test module tag 84c6eee
  • measure which cause moves the statistik_wohnen composite — and which one does not eval 0e0bac1
  • census the byte-identical fixtures instead of deleting one of them eval 44d4746
  • hold the frozen judge bundles against the gold they came from eval b53a3ff
  • close the filename chain from run_pipeline to JobResult.filename pipeline 7709ef1
  • derive the _garbage_reason consumer list instead of maintaining it triage 4b5cebc
Build-System (1)
  • assert the router runtime at build time, not at an operator boot docker cf45815
Code-Style (6)
  • unyoda the verdict-calibrating set comparison eval 97d590b
  • finish the token set, then dark mode costs fourteen lines ui 2410dd2
  • wrap four docstring lines that quote the new verdict strings tests ad36f8f
  • name the exception the air-gap test is actually asserting test 3885a65
  • satisfy ruff line-length and formatting on Pass B tag 04618d1
  • drop a noqa for a rule this repo does not select test 4bab834
Sonstiges (1)
  • open the 0.15.0 unreleased window the 0.14.0 tag never opened a372aad

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.